﻿/* ================================================================
   Tech Dream Africa — Premium Design System v2.0
   ================================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,400&display=swap');

/* ================================================================
   1. CSS Custom Properties (Design Tokens)
   ================================================================ */
:root {
  --clr-primary:        #1E40AF;
  --clr-primary-hover:  #1E3A8A;
  --clr-primary-subtle: #EFF6FF;
  --clr-secondary:      #0F172A;
  --clr-accent:         #DC2626;
  --clr-accent-hover:   #B91C1C;
  --clr-success:        #10B981;
  --clr-warning:        #F59E0B;
  --clr-error:          #EF4444;

  --bg-page:      #F8FAFC;
  --bg-card:      #FFFFFF;
  --bg-dark:      #0F172A;
  --bg-dark-card: #1E293B;
  --bg-muted:     #F1F5F9;

  --txt-primary:       #0F172A;
  --txt-secondary:     #475569;
  --txt-muted:         #94A3B8;
  --txt-on-dark:       #F8FAFC;
  --txt-on-dark-muted: #CBD5E1;

  --border-color: #E2E8F0;
  --border-dark:  #1E293B;

  --shadow-xs: 0 1px 2px 0 rgb(0 0 0/.05);
  --shadow-sm: 0 1px 3px 0 rgb(0 0 0/.06),0 1px 2px -1px rgb(0 0 0/.06);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0/.07),0 2px 4px -2px rgb(0 0 0/.07);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0/.07),0 4px 6px -4px rgb(0 0 0/.07);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0/.08),0 8px 10px -6px rgb(0 0 0/.08);
  --shadow-2xl:0 25px 50px -12px rgb(0 0 0/.15);

  --r-sm:   0.375rem;
  --r-md:   0.625rem;
  --r-lg:   0.875rem;
  --r-xl:   1.25rem;
  --r-2xl:  1.75rem;
  --r-full: 9999px;

  --transition-fast: 150ms ease;
  --transition:      250ms ease;
  --transition-slow: 400ms ease;
}

/* ================================================================
   2. Dark Mode Overrides (disabled — class is never added)
   ================================================================ */
html.dark-disabled {
  --bg-page:      #0F172A;
  --bg-card:      #1E293B;
  --bg-muted:     #0F172A;
  --txt-primary:  #F8FAFC;
  --txt-secondary:#CBD5E1;
  --txt-muted:    #64748B;
  --border-color: #1E293B;
  --shadow-md:    0 4px 6px -1px rgb(0 0 0/.3),0 2px 4px -2px rgb(0 0 0/.3);
  --shadow-lg:    0 10px 15px -3px rgb(0 0 0/.3),0 4px 6px -4px rgb(0 0 0/.3);
  --shadow-xl:    0 20px 25px -5px rgb(0 0 0/.3),0 8px 10px -6px rgb(0 0 0/.3);
}

/* ================================================================
   3. Base Reset & Defaults
   ================================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  background-color: var(--bg-page);
  color: var(--txt-primary);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color var(--transition), color var(--transition);
}

img { max-width: 100%; display: block; }
a { text-decoration: none; }

::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg-muted); }
::-webkit-scrollbar-thumb { background: var(--clr-primary); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: var(--clr-primary-hover); }

/* ================================================================
   4. Typography Scale
   ================================================================ */
.display-xl { font-size: clamp(2.5rem, 6vw, 4.5rem); font-weight: 800; letter-spacing: -0.04em; line-height: 1.1; }
.display-lg { font-size: clamp(2rem, 4.5vw, 3.5rem);  font-weight: 800; letter-spacing: -0.035em; line-height: 1.15; }
.heading-xl  { font-size: clamp(1.75rem, 3.5vw, 2.75rem); font-weight: 700; letter-spacing: -0.03em; line-height: 1.2; }
.heading-lg  { font-size: clamp(1.375rem, 2.5vw, 2rem);   font-weight: 700; letter-spacing: -0.025em; }
.heading-md  { font-size: 1.375rem; font-weight: 700; letter-spacing: -0.02em; }
.body-lg     { font-size: 1.0625rem; line-height: 1.75; }
.body-sm     { font-size: 0.875rem; }
.caption     { font-size: 0.8125rem; letter-spacing: 0.04em; text-transform: uppercase; font-weight: 600; }

/* ================================================================
   5. Navigation
   ================================================================ */
.nav-glass {
  background: rgba(248,250,252,0.88);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border-color);
  transition: background var(--transition), border-color var(--transition), box-shadow var(--transition);
}
html.dark .nav-glass {
  background: rgba(15,23,42,0.88);
  border-bottom-color: var(--border-dark);
}
.nav-glass.scrolled { box-shadow: var(--shadow-md); }

.nav-link {
  position: relative;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--txt-secondary);
  transition: color var(--transition-fast);
  padding: 0.25rem 0;
  white-space: nowrap;
}
.nav-link::after {
  content: '';
  position: absolute;
  bottom: -2px; left: 0;
  width: 0; height: 2px;
  background: var(--clr-primary);
  border-radius: 99px;
  transition: width var(--transition);
}
.nav-link:hover, .nav-link[aria-current="page"] { color: var(--clr-primary); }
.nav-link:hover::after, .nav-link[aria-current="page"]::after { width: 100%; }

/* ================================================================
   6. Buttons
   ================================================================ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.75rem 1.75rem;
  border-radius: var(--r-full);
  font-size: 0.9375rem; font-weight: 600;
  border: 2px solid transparent;
  cursor: pointer;
  transition: all var(--transition);
  white-space: nowrap;
  line-height: 1;
}
.btn-sm { padding: 0.5rem 1.25rem; font-size: 0.875rem; }
.btn-lg { padding: 1rem 2.25rem; font-size: 1.0625rem; }

.btn-primary { background: var(--clr-primary); color: #fff; border-color: var(--clr-primary); }
.btn-primary:hover {
  background: var(--clr-primary-hover); border-color: var(--clr-primary-hover);
  transform: translateY(-1px);
  box-shadow: 0 8px 25px rgba(30,64,175,.3);
}
.btn-outline {
  background: transparent; color: var(--txt-primary);
  border-color: var(--border-color);
}
.btn-outline:hover { border-color: var(--clr-primary); color: var(--clr-primary); transform: translateY(-1px); }
html.dark .btn-outline { color: var(--txt-on-dark); border-color: #334155; }
html.dark .btn-outline:hover { border-color: var(--clr-primary); color: var(--clr-primary); }

.btn-accent { background: var(--clr-accent); color: #fff; border-color: var(--clr-accent); }
.btn-accent:hover {
  background: var(--clr-accent-hover); border-color: var(--clr-accent-hover);
  transform: translateY(-1px);
  box-shadow: 0 8px 25px rgba(220,38,38,.3);
}
.btn-ghost { background: transparent; color: var(--txt-secondary); border-color: transparent; }
.btn-ghost:hover { background: var(--bg-muted); color: var(--txt-primary); }

/* ================================================================
   7. Cards
   ================================================================ */
.card {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
}
.card:hover { box-shadow: var(--shadow-lg); transform: translateY(-3px); }
html.dark .card { background: var(--bg-dark-card); border-color: var(--border-dark); }

/* ================================================================
   8. Icon Badges
   ================================================================ */
.icon-badge {
  width: 3.25rem; height: 3.25rem;
  border-radius: var(--r-md);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.375rem; flex-shrink: 0;
}
.ib-blue    { background:#EFF6FF; color:var(--clr-primary); }
.ib-teal    { background:#F0FDFA; color:#0D9488; }
.ib-green   { background:#ECFDF5; color:var(--clr-success); }
.ib-purple  { background:#F5F3FF; color:#7C3AED; }
.ib-orange  { background:#FFF7ED; color:#EA580C; }
.ib-pink    { background:#FDF2F8; color:#DB2777; }
.ib-yellow  { background:#FFFBEB; color:#D97706; }
.ib-indigo  { background:#EEF2FF; color:#4338CA; }
html.dark .ib-blue   { background:rgba(37,99,235,.15); }
html.dark .ib-teal   { background:rgba(20,184,166,.15); }
html.dark .ib-green  { background:rgba(16,185,129,.15); }
html.dark .ib-purple { background:rgba(124,58,237,.15); }
html.dark .ib-orange { background:rgba(234,88,12,.15); }
html.dark .ib-pink   { background:rgba(219,39,119,.15); }
html.dark .ib-yellow { background:rgba(217,119,6,.15); }
html.dark .ib-indigo { background:rgba(67,56,202,.15); }

/* ================================================================
   9. Section Helpers
   ================================================================ */
.section-badge {
  display: inline-flex; align-items: center; gap: 0.375rem;
  padding: 0.3125rem 0.875rem;
  background: var(--clr-primary-subtle); color: var(--clr-primary);
  border-radius: var(--r-full);
  font-size: 0.75rem; font-weight: 700;
  letter-spacing: 0.06em; text-transform: uppercase;
}
html.dark .section-badge { background: rgba(37,99,235,.15); }

.section-title {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  font-weight: 800; letter-spacing: -0.04em; line-height: 1.15;
  color: var(--txt-primary);
}
html.dark .section-title { color: var(--txt-on-dark); }

.section-subtitle {
  font-size: 1.0625rem; color: var(--txt-secondary);
  line-height: 1.75; max-width: 600px;
}
html.dark .section-subtitle { color: var(--txt-on-dark-muted); }

/* ================================================================
   10. Animations
   ================================================================ */
@keyframes fadeUp   { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:none} }
@keyframes fadeIn   { from{opacity:0} to{opacity:1} }
@keyframes fadeLeft { from{opacity:0;transform:translateX(-24px)} to{opacity:1;transform:none} }
@keyframes fadeRight{ from{opacity:0;transform:translateX(24px)} to{opacity:1;transform:none} }
@keyframes scaleIn  { from{opacity:0;transform:scale(.94)} to{opacity:1;transform:scale(1)} }
@keyframes pulse-ring {
  0%{transform:scale(1);opacity:.7}
  100%{transform:scale(1.7);opacity:0}
}
@keyframes marquee  { from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes spin     { to{transform:rotate(360deg)} }

.animate-marquee       { animation: marquee 30s linear infinite; }
.animate-marquee:hover { animation-play-state: paused; }
.animate-spin-slow     { animation: spin 8s linear infinite; }

/* Scroll Reveal */
.reveal        { opacity:0; transform:translateY(24px); transition:opacity .65s ease,transform .65s ease; }
.reveal-left   { opacity:0; transform:translateX(-24px); transition:opacity .65s ease,transform .65s ease; }
.reveal-right  { opacity:0; transform:translateX(24px); transition:opacity .65s ease,transform .65s ease; }
.reveal-scale  { opacity:0; transform:scale(.94); transition:opacity .55s ease,transform .55s ease; }
.reveal.visible, .reveal-left.visible, .reveal-right.visible, .reveal-scale.visible {
  opacity:1; transform:none;
}
.delay-1{ transition-delay:80ms; }
.delay-2{ transition-delay:160ms; }
.delay-3{ transition-delay:240ms; }
.delay-4{ transition-delay:320ms; }
.delay-5{ transition-delay:400ms; }
.delay-6{ transition-delay:480ms; }

/* ================================================================
   11. Hero Section — Solid Colour
   ================================================================ */
.hero-section {
  background: linear-gradient(150deg, #1E3A8A 0%, #1E40AF 55%, #1d4ed8 100%);
  position: relative; overflow: hidden;
}
/* ================================================================
   12. Stats Section
   ================================================================ */
.stat-number {
  font-size:2.5rem; font-weight:800;
  color:var(--clr-primary); letter-spacing:-.05em; line-height:1;
}
html.dark .stat-number { color:#60A5FA; }

/* ================================================================
   13. Trusted By Marquee
   ================================================================ */
.trusted-track {
  display:flex; gap:2rem; align-items:center;
  animation:marquee 28s linear infinite;
  width:max-content;
}
.trusted-track:hover { animation-play-state:paused; }
.trusted-logo {
  padding:.625rem 1.75rem;
  background:var(--bg-card); border:1px solid var(--border-color);
  border-radius:var(--r-lg);
  font-weight:700; font-size:.8125rem; color:var(--txt-muted);
  white-space:nowrap; transition:all var(--transition-fast);
}
.trusted-logo:hover { color:var(--clr-primary); border-color:var(--clr-primary); }
html.dark .trusted-logo { background:var(--bg-dark-card); border-color:var(--border-dark); color:#475569; }

/* ================================================================
   14. Process Steps
   ================================================================ */
.process-step-number {
  width:3rem; height:3rem; border-radius:50%;
  background:var(--clr-primary); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:1rem; font-weight:700;
  flex-shrink:0; position:relative; z-index:1;
}

/* ================================================================
   15. Testimonials Carousel
   ================================================================ */
.testimonial-viewport { overflow:hidden; }
.testimonial-track { display:flex; transition:transform .5s cubic-bezier(.25,.46,.45,.94); }
.testimonial-slide { min-width:100%; padding:0 .25rem; }

/* ================================================================
   16. Tech Stack Tabs
   ================================================================ */
.tech-tab {
  padding:.5rem 1.125rem;
  border-radius:var(--r-full);
  font-size:.8125rem; font-weight:600;
  cursor:pointer;
  border:1.5px solid var(--border-color); color:var(--txt-secondary);
  background:transparent; transition:all var(--transition-fast);
  white-space:nowrap;
}
.tech-tab:hover { border-color:var(--clr-primary); color:var(--clr-primary); }
.tech-tab.active { background:var(--clr-primary); border-color:var(--clr-primary); color:#fff; }
html.dark .tech-tab { border-color:#334155; color:#94A3B8; }
html.dark .tech-tab:hover { border-color:var(--clr-primary); color:var(--clr-primary); }

.tech-panel { display:none; }
.tech-panel.active { display:grid; }

.tech-icon-card {
  background:var(--bg-card); border:1px solid var(--border-color);
  border-radius:var(--r-lg);
  padding:1.25rem .75rem;
  text-align:center;
  transition:all var(--transition);
  cursor:default;
}
.tech-icon-card:hover { border-color:var(--clr-primary); box-shadow:var(--shadow-md); transform:translateY(-2px); }
html.dark .tech-icon-card { background:var(--bg-dark-card); border-color:var(--border-dark); }
.tech-icon { font-size:2rem; margin-bottom:.5rem; }

/* ================================================================
   17. FAQ Accordion
   ================================================================ */
.faq-item {
  border:1px solid var(--border-color); border-radius:var(--r-lg); overflow:hidden;
  transition:border-color var(--transition-fast);
}
html.dark .faq-item { border-color:var(--border-dark); }
.faq-item.open { border-color:var(--clr-primary); }

.faq-btn {
  width:100%; text-align:left;
  padding:1.125rem 1.25rem;
  font-size:.9375rem; font-weight:600; color:var(--txt-primary);
  background:var(--bg-card); border:none; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  transition:background var(--transition-fast);
}
html.dark .faq-btn { background:var(--bg-dark-card); color:var(--txt-on-dark); }
.faq-btn:hover { background:var(--bg-muted); }
html.dark .faq-btn:hover { background:#162032; }

.faq-icon {
  flex-shrink:0; width:1.5rem; height:1.5rem; border-radius:50%;
  background:var(--clr-primary-subtle); color:var(--clr-primary);
  display:flex; align-items:center; justify-content:center;
  font-size:.625rem; transition:transform var(--transition);
}
html.dark .faq-icon { background:rgba(37,99,235,.15); }
.faq-item.open .faq-icon { transform:rotate(45deg); }

.faq-body { max-height:0; overflow:hidden; transition:max-height .35s ease; }
.faq-item.open .faq-body { max-height:500px; }
.faq-inner {
  padding:.125rem 1.25rem 1.125rem;
  color:var(--txt-secondary); font-size:.9375rem; line-height:1.75;
  background:var(--bg-card);
}
html.dark .faq-inner { background:var(--bg-dark-card); color:var(--txt-on-dark-muted); }

/* ================================================================
   18. Portfolio Cards
   ================================================================ */
.portfolio-card {
  background:var(--bg-card); border:1px solid var(--border-color);
  border-radius:var(--r-xl); overflow:hidden;
  transition:box-shadow var(--transition), transform var(--transition);
}
.portfolio-card:hover { box-shadow:var(--shadow-xl); transform:translateY(-4px); }
html.dark .portfolio-card { background:var(--bg-dark-card); border-color:var(--border-dark); }

.portfolio-thumb {
  height:200px; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  font-size:3.5rem;
}

/* ================================================================
   19. Forms
   ================================================================ */
.form-label { display:block; font-size:.875rem; font-weight:600; color:var(--txt-primary); margin-bottom:.375rem; }
html.dark .form-label { color:var(--txt-on-dark-muted); }

.form-input {
  width:100%; padding:.75rem 1rem;
  border:1.5px solid var(--border-color); border-radius:var(--r-md);
  font-size:.9375rem; color:var(--txt-primary);
  background:var(--bg-card); outline:none;
  transition:all var(--transition-fast);
  font-family:inherit;
}
.form-input:focus { border-color:var(--clr-primary); box-shadow:0 0 0 3px rgba(37,99,235,.1); }
html.dark .form-input { background:var(--bg-dark-card); border-color:#334155; color:var(--txt-on-dark); }
html.dark .form-input:focus { border-color:var(--clr-primary); box-shadow:0 0 0 3px rgba(37,99,235,.2); }
.form-input::placeholder { color:var(--txt-muted); }

/* ================================================================
   20. Mobile Menu Drawer
   ================================================================ */
.mobile-menu-overlay {
  position:fixed; inset:0; z-index:200;
  pointer-events:none;
}
.mobile-menu-backdrop {
  position:absolute; inset:0;
  background:rgba(0,0,0,.55);
  opacity:0; transition:opacity .3s ease;
}
.mobile-menu-panel {
  position:absolute; top:0; right:0; bottom:0;
  width:min(300px,88vw);
  background:var(--bg-card);
  box-shadow:var(--shadow-2xl);
  transform:translateX(100%); transition:transform .35s cubic-bezier(.25,.46,.45,.94);
  padding:1.5rem; overflow-y:auto; display:flex; flex-direction:column; gap:.25rem;
}
html.dark .mobile-menu-panel { background:var(--bg-dark-card); }
.mobile-menu-overlay.open { pointer-events:auto; }
.mobile-menu-overlay.open .mobile-menu-backdrop { opacity:1; }
.mobile-menu-overlay.open .mobile-menu-panel { transform:translateX(0); }
.mobile-nav-link {
  display:block; padding:.75rem 1rem; border-radius:var(--r-md);
  font-size:1rem; font-weight:600; color:var(--txt-primary);
  transition:background var(--transition-fast), color var(--transition-fast);
}
html.dark .mobile-nav-link { color:var(--txt-on-dark); }
.mobile-nav-link:hover, .mobile-nav-link[aria-current="page"] {
  background:var(--bg-muted); color:var(--clr-primary);
}
html.dark .mobile-nav-link:hover { background:#162032; }

/* ================================================================
   21. Utility — Back to Top & WhatsApp
   ================================================================ */
#back-to-top {
  position:fixed; bottom:5.5rem; right:1.25rem;
  width:2.75rem; height:2.75rem;
  background:var(--clr-primary); color:#fff;
  border:none; border-radius:50%; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:var(--shadow-lg);
  opacity:0; transform:translateY(12px); pointer-events:none;
  transition:opacity .3s ease, transform .3s ease, background .2s;
  z-index:90; font-size:.875rem;
}
#back-to-top.visible { opacity:1; transform:none; pointer-events:auto; }
#back-to-top:hover { background:var(--clr-primary-hover); }

#whatsapp-float {
  position:fixed; bottom:1.25rem; right:1.25rem;
  width:3.25rem; height:3.25rem;
  background:#25D366; color:#fff; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.625rem; box-shadow:0 4px 20px rgba(37,211,102,.4);
  transition:transform .25s ease, box-shadow .25s ease; z-index:90;
}
#whatsapp-float:hover { transform:scale(1.08); box-shadow:0 6px 28px rgba(37,211,102,.5); }
#whatsapp-float::before {
  content:''; position:absolute;
  width:100%; height:100%; border-radius:50%;
  background:#25D366; opacity:.4;
  animation:pulse-ring 2.2s ease-out infinite;
}

/* ================================================================
   22. Cookie Consent
   ================================================================ */
#cookie-banner {
  position:fixed; bottom:1.25rem; left:1.25rem; right:1.25rem;
  max-width:480px;
  background:var(--bg-dark); color:var(--txt-on-dark);
  border-radius:var(--r-xl); padding:1.25rem 1.5rem;
  box-shadow:var(--shadow-2xl); z-index:150;
  border:1px solid #334155;
  transform:translateY(140%); transition:transform .4s cubic-bezier(.25,.46,.45,.94);
}
#cookie-banner.show { transform:none; }

/* ================================================================
   23. Tags
   ================================================================ */
.tag {
  display:inline-flex; align-items:center;
  padding:.25rem .75rem; border-radius:var(--r-full);
  font-size:.75rem; font-weight:600;
}
.tag-blue   { background:#EFF6FF; color:var(--clr-primary); }
.tag-teal   { background:#F0FDFA; color:#0D9488; }
.tag-green  { background:#ECFDF5; color:var(--clr-success); }
.tag-gray   { background:var(--bg-muted); color:var(--txt-secondary); }
html.dark .tag-blue  { background:rgba(37,99,235,.15); color:#93C5FD; }
html.dark .tag-teal  { background:rgba(20,184,166,.15); color:#5EEAD4; }
html.dark .tag-green { background:rgba(16,185,129,.15); color:#6EE7B7; }
html.dark .tag-gray  { background:#1E293B; color:#94A3B8; }

/* ================================================================
   24. Alert
   ================================================================ */
.alert { display:flex; align-items:flex-start; gap:.75rem; padding:.875rem 1.125rem; border-radius:var(--r-lg); font-size:.9375rem; }
.alert-success { background:#ECFDF5; color:#065F46; border:1px solid #A7F3D0; }
.alert-error   { background:#FEF2F2; color:#991B1B; border:1px solid #FECACA; }
.alert-icon    { font-size:1.125rem; flex-shrink:0; margin-top:.125rem; }

/* ================================================================
   25. Industry Cards & Footer
   ================================================================ */
.industry-card {
  background:var(--bg-card); border:1px solid var(--border-color);
  border-radius:var(--r-xl); padding:1.25rem 1rem;
  text-align:center; transition:all var(--transition);
}
.industry-card:hover { border-color:var(--clr-primary); box-shadow:var(--shadow-md); transform:translateY(-2px); }
html.dark .industry-card { background:var(--bg-dark-card); border-color:var(--border-dark); }

.footer-bg { background:#0F172A; }

/* ================================================================
   Microsoft-Inspired Design System
   ================================================================ */

/* Announcement Bar */
.ms-announce {
  background:#1E40AF; color:#fff;
  padding:.5rem 1rem; font-size:.8rem; font-weight:500;
  position:relative; z-index:110; text-align:center;
}
.ms-announce a { color:#fff; text-decoration:underline; margin-left:.375rem; }
.ms-announce a:hover { opacity:.85; }
#close-announce {
  position:absolute; right:1rem; top:50%; transform:translateY(-50%);
  background:none; border:none; color:rgba(255,255,255,.8); cursor:pointer; font-size:.8rem;
}
#close-announce:hover { color:#fff; }

/* Flat Nav Override */
.ms-nav-flat {
  background:#fff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border-bottom:1px solid #e5e5e5 !important;
}
html.dark .ms-nav-flat { background:#1E293B !important; border-bottom-color:#334155 !important; }
.ms-nav-flat.scrolled { box-shadow:0 2px 6px rgba(0,0,0,.08) !important; }

/* 4-Grid Logo */
.ms-logo-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:2.5px;
  width:1.75rem; height:1.75rem; flex-shrink:0;
}
.ms-logo-grid > div { border-radius:1px; }

/* MS Product Tiles */
.ms-tile {
  background:var(--bg-card); border:1px solid var(--border-color);
  border-radius:4px; overflow:hidden;
  display:flex; flex-direction:column;
  transition:box-shadow .2s ease, border-color .2s ease;
}
.ms-tile:hover { box-shadow:0 4px 20px rgba(0,0,0,.12); border-color:var(--clr-primary); }
html.dark .ms-tile { background:var(--bg-dark-card); border-color:#334155; }
html.dark .ms-tile:hover { border-color:var(--clr-primary); }
.ms-tile-visual { height:180px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.ms-tile-visual-lg { height:260px; }
.ms-tile-body { padding:1.25rem 1.5rem 1.5rem; flex:1; display:flex; flex-direction:column; }
.ms-tile-title { font-size:1.0625rem; font-weight:700; letter-spacing:-.02em; color:var(--txt-primary); margin-bottom:.375rem; line-height:1.3; }
html.dark .ms-tile-title { color:var(--txt-on-dark); }
.ms-tile-desc { font-size:.875rem; color:var(--txt-secondary); line-height:1.6; flex:1; }
html.dark .ms-tile-desc { color:var(--txt-on-dark-muted); }
.ms-tile-link { display:inline-flex; align-items:center; gap:.375rem; margin-top:.875rem; font-size:.875rem; font-weight:600; color:var(--clr-primary); }
.ms-tile-link:hover { text-decoration:underline; }

/* MS Feature Spotlight */
.ms-feature { display:grid; grid-template-columns:1fr 1fr; }
@media(max-width:768px){ .ms-feature { grid-template-columns:1fr; } }
.ms-feature-visual {
  min-height:400px; display:flex; align-items:center;
  justify-content:center; font-size:6rem; color:rgba(255,255,255,.9);
}
@media(max-width:768px){ .ms-feature-visual { min-height:240px; font-size:4rem; } }
.ms-feature-content { display:flex; flex-direction:column; justify-content:center; padding:4rem 3.5rem; background:var(--bg-card); }
html.dark .ms-feature-content { background:var(--bg-dark-card); }
@media(max-width:1024px){ .ms-feature-content { padding:2.5rem 2rem; } }
.ms-feature-tag {
  display:inline-flex; align-items:center; gap:.375rem;
  padding:.25rem .75rem; margin-bottom:1rem;
  background:var(--clr-primary-subtle); color:var(--clr-primary);
  border-radius:2px; font-size:.75rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.06em; width:fit-content;
}
html.dark .ms-feature-tag { background:rgba(30,64,175,.2); }
.ms-feature-title { font-size:clamp(1.5rem,2.5vw,2.25rem); font-weight:800; letter-spacing:-.035em; line-height:1.15; margin-bottom:.875rem; color:var(--txt-primary); }
html.dark .ms-feature-title { color:var(--txt-on-dark); }
.ms-feature-body { font-size:1rem; color:var(--txt-secondary); line-height:1.75; margin-bottom:1.25rem; }
html.dark .ms-feature-body { color:var(--txt-on-dark-muted); }
.ms-feature-checks { list-style:none; margin-bottom:1.75rem; }
.ms-feature-checks li { display:flex; align-items:flex-start; gap:.625rem; font-size:.9375rem; color:var(--txt-secondary); padding:.3rem 0; }
html.dark .ms-feature-checks li { color:var(--txt-on-dark-muted); }
.ms-feature-checks li i { color:var(--clr-primary); margin-top:.25rem; flex-shrink:0; }

/* MS Flat Buttons */
.btn-ms {
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.6875rem 1.375rem; border-radius:2px;
  font-size:.9375rem; font-weight:600; border:1.5px solid transparent;
  cursor:pointer; white-space:nowrap; transition:background .15s, border-color .15s;
  text-decoration:none; line-height:1;
}
.btn-ms-blue { background:var(--clr-primary); color:#fff; border-color:var(--clr-primary); }
.btn-ms-blue:hover { background:var(--clr-primary-hover); border-color:var(--clr-primary-hover); }
.btn-ms-red { background:#DC2626; color:#fff; border-color:#DC2626; }
.btn-ms-red:hover { background:#B91C1C; border-color:#B91C1C; }
.btn-ms-outline { background:transparent; color:var(--clr-primary); border-color:var(--clr-primary); }
.btn-ms-outline:hover { background:var(--clr-primary-subtle); }
html.dark .btn-ms-outline { color:#93C5FD; border-color:#93C5FD; }
html.dark .btn-ms-outline:hover { background:rgba(30,64,175,.2); }
.btn-ms-white { background:#fff; color:var(--clr-primary); border-color:#fff; }
.btn-ms-white:hover { background:#EFF6FF; }

/* MS Stats Bar */
.ms-stat-bar { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--border-color); border-bottom:1px solid var(--border-color); }
@media(max-width:640px){ .ms-stat-bar { grid-template-columns:repeat(2,1fr); } }
html.dark .ms-stat-bar { border-color:var(--border-dark); }
.ms-stat-cell { padding:2.5rem 1.5rem; text-align:center; border-right:1px solid var(--border-color); }
.ms-stat-cell:last-child { border-right:none; }
@media(max-width:640px){
  .ms-stat-cell:nth-child(even){ border-right:none; }
  .ms-stat-cell:nth-child(n+3){ border-top:1px solid var(--border-color); }
}
html.dark .ms-stat-cell { border-color:var(--border-dark); }

/* MS Section Labels */
.ms-label { display:block; font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.1em; color:var(--clr-primary); margin-bottom:.625rem; }
.ms-heading { font-size:clamp(1.75rem,3.5vw,2.5rem); font-weight:800; letter-spacing:-.035em; line-height:1.15; color:var(--txt-primary); }
html.dark .ms-heading { color:var(--txt-on-dark); }
.ms-subtext { font-size:1.0625rem; color:var(--txt-secondary); line-height:1.75; max-width:600px; margin-top:.75rem; }
html.dark .ms-subtext { color:var(--txt-on-dark-muted); }
.ms-lm { display:inline-flex; align-items:center; gap:.375rem; font-size:.9375rem; font-weight:600; color:var(--clr-primary); border-bottom:1.5px solid transparent; transition:border-color .15s; }
.ms-lm:hover { border-bottom-color:var(--clr-primary); }

/* ================================================================
   26. Responsive
   ================================================================ */

/* --- Global: prevent horizontal scroll on all screens --- */
html { overflow-x: hidden; }
body { overflow-x: hidden; max-width: 100vw; }
img, video, iframe, table { max-width: 100%; }

/* --- 768px — tablet and below --- */
@media(max-width:768px){
  /* Feature Spotlight — stack vertically, icon panel first */
  .ms-feature { grid-template-columns: 1fr; }
  .ms-feature > .ms-feature-visual { order: -1; min-height: 220px; font-size: 3.75rem; }
  .ms-feature-content { padding: 2rem 1.5rem; }
  /* Nav glass shrink */
  .nav-glass h1, .nav-glass .heading-xl { font-size: 1.25rem; }
  /* Announcement bar keep single line */
  .ms-announce { white-space: normal; font-size: 0.72rem; padding: 0.4rem 2.5rem 0.4rem 0.75rem; }
  /* Ensure wide tiles don't overflow */
  .ms-tile-visual { height: 160px; }
  .portfolio-thumb { height: 160px; }
  /* Tech panel grid tighter */
  .tech-panel { grid-template-columns: repeat(3, 1fr) !important; }
  .tech-icon { font-size: 1.625rem; }
  /* Industry cards */
  .industry-card { padding: 1rem 0.75rem; }
  /* FAQ font */
  .faq-btn { font-size: 0.875rem; }
}

/* --- 640px — large phone and below --- */
@media(max-width:640px){
  /* Stats bar — 2 wide on small phones */
  .ms-stat-bar { grid-template-columns: repeat(2, 1fr); }
  .ms-stat-cell { padding: 1.75rem 1rem; }
  .stat-number { font-size: 2rem !important; }
  /* Feature spotlight further reduce */
  .ms-feature > .ms-feature-visual { min-height: 180px; font-size: 3rem; }
  .ms-feature-content { padding: 1.75rem 1.25rem; }
  /* Remove large section vertical padding on phone */
  .section-subtitle { font-size: 0.9375rem; }
  /* Tile body tighter */
  .ms-tile-body { padding: 1rem 1.125rem 1.25rem; }
  /* Footer brand text */
  .footer-bg p { font-size: 0.8125rem; }
  /* Mobile menu panel full width */
  .mobile-menu-panel { width: 100vw; }
  /* Process step connector hide */
  .process-connector { display: none; }
  /* Word wrap long URLs / words */
  .faq-inner, .ms-feature-body, .ms-tile-desc, p { overflow-wrap: break-word; word-break: break-word; }
}

/* --- 480px — small phones (iPhone SE etc) --- */
@media(max-width:480px){
  .ms-feature > .ms-feature-visual { min-height: 150px; font-size: 2.5rem; }
  .ms-feature-content { padding: 1.5rem 1rem; }
  /* Scale down MS stat numbers */
  .ms-stat-cell { padding: 1.25rem 0.625rem; }
  .stat-number { font-size: 1.75rem !important; }
  /* Tile visual shorter */
  .ms-tile-visual { height: 140px; }
  .portfolio-thumb { height: 140px; }
  /* Portfolio tech tags wrap */
  .portfolio-card .flex { flex-wrap: wrap; }
  /* Buttons full width in hero CTA stack */
  .hero-cta-stack { flex-direction: column; }
  .hero-cta-stack .btn-ms { width: 100%; justify-content: center; }
  /* Reduce section badge text */
  .section-badge { font-size: 0.6875rem; }
  /* Tighten FAQ */
  .faq-btn { padding: 0.875rem 1rem; font-size: 0.8125rem; }
  .faq-inner { padding-bottom: 0.875rem; }
  /* Tech panel 2 columns on tiny screens */
  .tech-panel { grid-template-columns: repeat(2, 1fr) !important; }
  /* Announcement bar even more compact */
  .ms-announce { font-size: 0.6875rem; }
  /* MS heading scale */
  .ms-heading { font-size: 1.5rem; }
  .ms-feature-title { font-size: 1.375rem; }
  /* Reduce hero logo slightly */
  .hero-logo-img { height: 3.5rem; }
}

/* --- Ensure testimonials and cards don't overflow --- */
@media(max-width:640px){
  .testimonial-slide .card { padding: 1.25rem; }
  .card-inner-lg { padding: 1.25rem; }
}

/* Reduce Motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after {
    animation-duration:.01ms !important;
    transition-duration:.01ms !important;
  }
  .reveal,.reveal-left,.reveal-right,.reveal-scale { opacity:1!important; transform:none!important; }
}
