/* ===== Sparkle Soft Systems — brand additions ===== */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");

:root {
  --ss-primary: #3a55a5;
  --ss-primary-dark: #26346b;
  --ss-mid: #5d78c9;
  --ss-light: #eef1fb;
  --ss-gold: #f2b705;
  --ss-ink: #2c2c2e;
}

/* Single site-wide font: Segoe UI everywhere, on every page. */
* {
  font-family: "Segoe UI", "Segoe UI Emoji", Tahoma, Geneva, Verdana, sans-serif !important;
}

/* Type pairing: Poppins carries headings/display, Inter carries body copy —
   reads calmer and more professional at paragraph length than Poppins does. */
body {
  font-family: "Inter", Arial, sans-serif;
  color: var(--ss-ink);
}

h1, h2, h3, h4, h5, h6,
.hero-title, .nav-link, .btn, .brand-logo,
.rating-value, .counter, .stats-label {
  font-family: "Poppins", Arial, sans-serif;
}

p, li, .testimonial-text, .accordion-body, .hero-desc {
  font-family: "Inter", Arial, sans-serif;
  line-height: 1.7;
}

.nav-link.active {
  position: relative;
  opacity: 1 !important;
}

.nav-link.active::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -6px;
  height: 3px;
  border-radius: 3px;
  background: var(--ss-gold);
}

.brand-logo img.logo-img {
  height: 50px;
  width: auto;
  object-fit: contain;
  filter: drop-shadow(0 1px 8px rgba(255, 255, 255, 0.55));
}

.brand-logo {
  background: transparent;
  border-radius: 10px;
  padding: 6px 0;
  box-shadow: none;
  display: inline-flex;
  align-items: center;
}

.footer-section .logo img.logo-img,
.footer-section img.logo-img {
  height: 36px;
  width: auto;
  max-width: 160px;
  object-fit: contain;
}

/* icon tiles used instead of stock photography */
.icon-tile {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: inherit;
}

.star-accent {
  color: var(--ss-gold);
}

.badge-tech {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--ss-light);
  color: var(--ss-primary);
  font-weight: 600;
  font-size: 0.78rem;
  padding: 5px 12px;
  border-radius: 20px;
  letter-spacing: 0.3px;
}

.tech-stack-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

.tech-stack-strip span {
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  padding: 6px 14px;
  border-radius: 8px;
  font-size: 0.8rem;
  font-weight: 600;
}

/* process steps (used on Why Us / Services) */
.process-step {
  text-align: center;
  padding: 10px;
}

.process-num {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--ss-mid), var(--ss-primary-dark));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  margin: 0 auto 12px;
}

/* industry pill on solutions page */
.industry-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 18px;
  border-radius: 30px;
  background: #fff;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
  font-weight: 600;
  color: var(--ss-primary-dark);
}

/* ===== Professional polish pass ===== */

/* Consistent, softer card elevation + lift-on-hover across content cards */
.feature-item,
.blog-card,
.testimonial-box,
.industry-pill,
.equal-img,
.why-img,
.team-card,
.pricing-card {
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.feature-item:hover,
.blog-card:hover,
.pricing-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 18px 40px rgba(38, 52, 107, 0.1);
}

/* Give photography consistent treatment: rounded corners + a hairline
   border so images read as intentional, not dropped-in stock photos */
.hero-img,
.testimonial-img,
.blog-img,
.equal-img,
.why-img,
.team-img {
  border: 1px solid rgba(255, 255, 255, 0.6);
}

.blog-img {
  border-radius: 14px 0 0 14px;
  object-fit: cover;
}

/* Accessible, visible keyboard focus (site had none) */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.nav-link:focus-visible {
  outline: 3px solid var(--ss-gold);
  outline-offset: 2px;
}

/* Tighter, calmer section headings */
.blog-tag,
.faq-tag,
.tag {
  letter-spacing: 0.4px;
  text-transform: uppercase;
  font-size: 0.78rem;
}

@media (prefers-reduced-motion: reduce) {
  .feature-item,
  .blog-card,
  .pricing-card {
    transition: none;
  }
}

/* ===== Site-wide consistency pass ===== */

/* The "Contact Us" pill in the header must look identical on every page,
   regardless of what a given page's local stylesheet does to .btn. */
.main-nav .btn,
.offcanvas .btn {
  background: var(--ss-light) !important;
  color: var(--ss-primary) !important;
  border: none;
  border-radius: 8px;
  font-weight: 600;
  box-shadow: none;
}

.main-nav .btn:hover,
.offcanvas .btn:hover {
  transform: translateY(-2px);
  color: var(--ss-primary) !important;
}

/* Extend the same soft elevation + lift-on-hover language used on the
   homepage to every card type across the rest of the site. */
.service-card,
.solution-card,
.team-card,
.why-team-box,
.hiring-card,
.office-card,
.process-step {
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.service-card:hover,
.solution-card:hover,
.team-card:hover,
.why-team-box:hover,
.hiring-card:hover,
.office-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(38, 52, 107, 0.12);
}

.why-team-box {
  background: #fff;
  border-radius: 18px;
  padding: 28px 22px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
  height: 100%;
}

.why-team-box i {
  font-size: 34px;
  color: var(--ss-primary);
}

.team-card {
  background: #fff;
  border-radius: 18px;
  padding: 26px 18px;
  text-align: center;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
  height: 100%;
}

.team-img {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid var(--ss-light);
}

.team-link {
  color: var(--ss-primary);
  font-weight: 600;
  text-decoration: none;
  font-size: 0.9rem;
}

.team-link:hover {
  text-decoration: underline;
}

/* Consistent, on-brand accent for anything that still carries the old
   ad-hoc indigo/violet tint (badges, icon chips, etc. on Careers/Contact) */
.card-badge {
  font-weight: 600;
}

/* Keep the active nav-link's gold underline visible against every header
   background variant used across the site. */
.nav-link.active {
  font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
  .service-card,
  .solution-card,
  .team-card,
  .why-team-box,
  .hiring-card,
  .office-card {
    transition: none;
  }
}

/* ===== Canonical hero-section (single source of truth) =====
   Services / Why Us / Solutions / Team / Careers / Contact all use
   class="hero-section" so every interior-page hero renders identically. */
.hero-section {
  min-height: 70vh;
  padding-top: 120px;
  padding-bottom: 40px;
  position: relative;
  z-index: 1;
  background: linear-gradient(
    180deg,
    #ffffff 0%,
    #eef1fb 20%,
    #c7d0ec 45%,
    #5d78c9 70%,
    #26346b 100%
  );
  display: flex;
  justify-content: center;
  align-items: center;
}

.hero-section .hero-title {
  color: #fff;
  font-weight: 800;
  font-size: 42px;
}

.hero-section .hero-text {
  color: rgba(255, 255, 255, 0.85);
  font-size: 16px;
  max-width: 650px;
  margin: 10px auto 25px;
}

.hero-section .hero-btn {
  background: #fff;
  color: #26346b;
  font-weight: 600;
  border-radius: 10px;
  transition: 0.3s;
  border: none;
  padding: 12px 32px;
  display: inline-block;
}

.hero-section .hero-btn:hover {
  background: rgba(255, 255, 255, 0.9);
  transform: translateY(-2px);
  color: #26346b;
}

/* ===== Icon avatars (replace stock/AI-look photos with clean,
   on-brand pictogram avatars — gender-matched, no photography) ===== */
.icon-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--ss-mid), var(--ss-primary-dark));
  color: #fff;
  flex-shrink: 0;
}

.icon-avatar i {
  color: #fff;
}

.team-img.icon-avatar {
  width: 96px;
  height: 96px;
  font-size: 42px;
  margin: 0 auto;
}

.review-avatar.icon-avatar {
  width: 48px;
  height: 48px;
  font-size: 22px;
}

/* ===== Responsive polish (mobile-first refinements) ===== */
@media (max-width: 991px) {
  .hero-title {
    font-size: 32px !important;
  }

  .appointment-bar {
    margin-top: 20px !important;
  }

  .cta-box,
  .stats-box {
    flex-direction: column;
    text-align: center;
  }
}

@media (max-width: 767px) {
  .hero-section {
    min-height: auto;
    padding-top: 130px;
    padding-bottom: 50px;
  }

  .hero-modern {
    padding: 130px 0 60px;
  }

  .hero-section .hero-title,
  .hero-modern .hero-title {
    font-size: 28px !important;
  }

  .testimonial-content {
    padding: 24px 4px;
  }

  .no-gap .appointment-box {
    border-radius: 22px 22px 0 0 !important;
  }

  .no-gap .equal-img {
    border-radius: 0 0 22px 22px !important;
    height: 220px !important;
  }

  .blog-card {
    flex-direction: column;
  }

  .blog-img {
    width: 100%;
    height: 180px;
    border-radius: 12px 12px 0 0 !important;
  }

  .stats-box .col-md-3 {
    margin-bottom: 18px;
  }

  .footer-section .row > div {
    text-align: center;
  }

  .footer-section .d-flex.justify-content-between {
    flex-direction: column;
    gap: 12px;
    text-align: center;
  }
}

@media (max-width: 575px) {
  .hero-title {
    font-size: 24px !important;
  }

  .appointment-bar .col-md-3,
  .appointment-bar .col-md-2 {
    width: 100%;
  }
}

/* =====================================================================
   Site-wide responsive overhaul
   brand.css loads last on every page, so these rules are the
   single source of truth for cross-page responsive behavior.
   ===================================================================== */

/* Baseline safety net: nothing (image, iframe, embed) should ever be
   able to force horizontal scroll on the page. Class-scoped image
   rules elsewhere (.hero-img, .team-img, .equal-img, etc.) are more
   specific than this and continue to win. */
* {
  box-sizing: border-box;
}

html {
  overflow-x: hidden;
}

img,
svg,
iframe,
embed,
video {
  max-width: 100%;
  height: auto;
}

body {
  overflow-x: hidden;
}

/* Fluid type scale for the main hero/section headings so copy never
   outgrows small screens, without needing a media query per page. */
.hero-title {
  font-size: clamp(24px, 6vw, 38px) !important;
}

.hero-section .hero-title {
  font-size: clamp(26px, 7vw, 42px) !important;
}

.hero-desc,
.hero-section .hero-text {
  font-size: clamp(14px, 3.6vw, 16px);
}

/* Container gutters feel cramped at very small widths under Bootstrap's
   default 12px padding once real content (cards, forms) is involved. */
@media (max-width: 575px) {
  .container {
    padding-left: 18px;
    padding-right: 18px;
  }

  .btn {
    font-size: 0.92rem;
  }
}

/* Nav: keep the burger + logo comfortably tappable and never let the
   header row wrap or overflow on narrow phones. */
@media (max-width: 991px) {
  .main-nav .container {
    flex-wrap: nowrap;
  }

  .brand-logo img.logo-img {
    height: 40px;
  }

  .navbar-toggler i.fs-1 {
    font-size: 1.8rem !important;
  }
}

@media (max-width: 360px) {
  .brand-logo img.logo-img {
    height: 34px;
  }
}

/* Offcanvas mobile menu: comfortable spacing + full-width tap targets. */
.offcanvas .navbar-nav .nav-link {
  padding: 10px 4px;
  font-size: 1.05rem;
}

/* Cards, pills and badges that sit in a flex row should wrap gracefully
   instead of squeezing or overflowing on small screens. */
.tech-stack-strip,
.map-tabs,
.social-icons {
  flex-wrap: wrap;
}

/* Stat / CTA gradient boxes: stack cleanly well before Bootstrap's own
   md breakpoint kicks in, matching how narrow phones actually behave. */
@media (max-width: 575px) {
  .stats-box,
  .cta-box {
    padding: 24px 20px;
  }

  .stats-box .row,
  .stats-box .d-flex {
    text-align: center;
  }
}

/* Footer: comfortable stacked spacing + centered content on phones,
   applied consistently across every page's footer. */
@media (max-width: 767px) {
  .footer-section {
    text-align: center;
  }

  .footer-section .col-12 {
    margin-bottom: 8px;
  }

  .newsletter-box {
    justify-content: center;
  }

  .newsletter-box .d-flex {
    flex-wrap: wrap;
    justify-content: center;
  }

  .social-icons {
    justify-content: center;
    margin-top: 10px;
  }
}

/* Tables (if any) and wide embeds never force a scrollbar on the page
   itself — they scroll internally instead. */
.table-responsive-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Respect notch/safe-area on modern phones for fixed header content. */
@supports (padding: max(0px)) {
  .main-nav {
    padding-left: max(0px, env(safe-area-inset-left));
    padding-right: max(0px, env(safe-area-inset-right));
  }
}
.logo-wrapper {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    padding: 12px 20px;
    border-radius: 18px;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
    transition: all 0.3s ease;
}

.logo-wrapper:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 35px rgba(58, 85, 165, 0.18);
}

.logo-img {
    height: 40px; /* Adjust as needed */
    width: auto;
    display: block;
}