/* =======================
   Impulso Digital EC — Branding
   ======================= */
:root{
  --brand-primary:#1a3c8d;
  --brand-secondary:#0c76bd;
  --brand-accent:#ef5c21;
  --brand-dark:#0b1220;
  --brand-muted:#eef2ff;
  --brand-bg:#ffffff;
  /* Map to Bootstrap */
  --bs-primary: var(--brand-primary);
  --bs-secondary: var(--brand-accent);
  --bs-dark: var(--brand-dark);
  --bs-light: #ffffff;
}

/* Accessibility: reduce motion */
@media (prefers-reduced-motion: reduce){
  *{animation:none!important; transition:none!important; scroll-behavior:auto!important;}
}

/* Back to top */
.back-to-top {
  position: fixed;
  display: none;
  right: 30px;
  bottom: 30px;
  z-index: 99;
}

.fw-medium { font-weight: 500; }

/*** Spinner ***/
#spinner {
  opacity: 0;
  visibility: hidden;
  transition: opacity .5s ease-out, visibility 0s linear .5s;
  z-index: 99999;
}
#spinner.show { transition: opacity .5s ease-out, visibility 0s linear 0s; visibility: visible; opacity: 1; }

/*** Buttons ***/
.btn { transition: .3s; font-weight: 500; }
.btn-primary, .btn-outline-primary:hover { color: var(--bs-light); }
.btn-secondary, .btn-outline-secondary:hover { color: var(--bs-dark); }
.btn-square { width: 38px; height: 38px; }
.btn-sm-square { width: 32px; height: 32px; }
.btn-lg-square { width: 48px; height: 48px; }
.btn-square, .btn-sm-square, .btn-lg-square { padding: 0; display: flex; align-items: center; justify-content: center; border-radius: 50px; font-weight: normal; }

.icon-box-primary, .icon-box-light { position: relative; padding: 0 0 10px 10px; z-index: 1; }
.icon-box-primary i, .icon-box-light i { font-size: 60px; line-height: 0; }
.icon-box-primary::before, .icon-box-light::before {
  position: absolute; content: ""; width: 35px; height: 35px; left: 0; bottom: 0; border-radius: 35px; transition: .5s; z-index: -1;
}
.icon-box-primary::before { background: var(--bs-primary); }
.icon-box-light::before { background: var(--bs-light); }

/*** Navbar ***/
.sticky-top { top: 0; transition: .3s; }
.navbar .navbar-nav .nav-link { margin-right: 35px; padding: 20px 0; color: var(--bs-dark); font-size: 18px; font-weight: 500; outline: none; }
.navbar .navbar-nav .nav-link:hover, .navbar .navbar-nav .nav-link.active { color: var(--bs-primary); }
.navbar .dropdown-toggle::after { border: none; content: "\f107"; font-family: "Font Awesome 5 Free"; font-weight: 900; vertical-align: middle; margin-left: 8px; }
@media (max-width: 991.98px) {
  .navbar .navbar-nav .nav-link { margin-right: 0; padding: 10px 0; }
  .navbar .navbar-nav { margin-top: 15px; border-top: 1px solid #EEEEEE; }
}
@media (min-width: 992px) { .navbar { height: 68px; } }

/*** Header / Carousel ***/
@media (min-width: 992px) { .header-carousel, .page-header { margin-top: -34px; } }
.carousel-caption {
  top: 0; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; background: rgba(3, 27, 78, .3); z-index: 1;
}
.carousel-control-prev, .carousel-control-next { width: 15%; }
.carousel-control-prev-icon, .carousel-control-next-icon {
  width: 3.5rem; height: 3.5rem; border-radius: 3.5rem; background-color: var(--bs-primary); border: 15px solid var(--bs-primary);
}
#header-carousel .carousel-item img{ width:100%; height:100%; object-fit:cover; aspect-ratio:16/9; }
@media (max-width: 767.98px) {
  #header-carousel .carousel-item { position: relative; min-height: 450px; }
  #header-carousel .carousel-item img { position: absolute; width: 100%; height: 100%; object-fit: cover; }
}

/*** Features ***/
.feature-row { box-shadow: 0 0 45px rgba(0, 0, 0, .08); }
.feature-item { border-color: rgba(0, 0, 0, .03) !important; }

/*** About ***/
.about-fact { width: 220px; height: 220px; box-shadow: 0 0 30px rgba(0,0,0,.1); }
@media (min-width: 576px) { .about-fact.mt-n130 { margin-top: -130px; } }

/*** Video Button ***/
.btn-play { position: relative; display: block; box-sizing: content-box; width: 36px; height: 46px; border-radius: 100%; border: none; outline: none!important; padding: 18px 20px 20px 28px; background: var(--bs-primary); }
.btn-play:before { content: ""; position: absolute; z-index: 0; left: 50%; top: 50%; transform: translate(-50%,-50%); display: block; width: 90px; height: 90px; background: var(--bs-primary); border-radius: 100%; animation: pulse-border 1500ms ease-out infinite; }
.btn-play:after { content: ""; position: absolute; z-index: 1; left: 50%; top: 50%; transform: translate(-50%,-50%); display: block; width: 90px; height: 90px; background: var(--bs-primary); border-radius: 100%; transition: all 200ms; }
.btn-play span { display: block; position: relative; z-index: 3; width: 0; height: 0; left: 3px; border-left: 30px solid #FFFFFF; border-top: 18px solid transparent; border-bottom: 18px solid transparent; }
@keyframes pulse-border { 0% { transform: translate(-50%,-50%) scale(1); opacity: 1; } 100% { transform: translate(-50%,-50%) scale(2); opacity: 0; } }

/*** Service ***/
.container-service { position: relative; }
.container-service::before { position: absolute; content: ''; background: var(--bs-light); width: 100%; height: 100%; left: 0; top: 0; clip-path: polygon(0 0, 100% 0, 100% 30%, 0 70%); z-index: -1; }
.service-item { position: relative; height: 100%; padding: 45px 30px; background: var(--bs-white); box-shadow: 0 0 45px rgba(0,0,0,.05); }
.service-item::before { position: absolute; content: ""; width: 100%; height: 0; left: 0; bottom: 0; transition: .5s; background: var(--bs-primary); }
.service-item:hover::before { height: 100%; top: 0; }
.service-item * { position: relative; transition: .5s; z-index: 1; }
.service-item:hover h5, .service-item:hover p { color: var(--bs-white); }
.service-item:hover .icon-box-primary::before { background: var(--bs-dark); }
.service-item:hover .icon-box-primary i { color: var(--bs-white)!important; }

/*** Testimonial (si se añade) ***/
.testimonial-item img { width: 60px !important; height: 60px !important; border-radius: 60px; }
.testimonial-carousel .owl-nav { position: absolute; top: 0; right: 0; display: flex; }
.testimonial-carousel .owl-nav .owl-prev, .testimonial-carousel .owl-nav .owl-next { margin-left: 15px; color: var(--bs-primary); font-size: 30px; line-height: 0; transition: .5s; }
.testimonial-carousel .owl-nav .owl-prev:hover, .testimonial-carousel .owl-nav .owl-next:hover { color: var(--bs-dark); }

/*** Contact separators ***/
@media (min-width: 992px) {
  .contact-info::after { position: absolute; content: ""; width: 0px; height: 100%; top: 0; left: 50%; border-left: 1px dashed rgba(255,255,255,.2); }
}
@media (max-width: 991.98px) {
  .contact-info::after { position: absolute; content: ""; width: 100%; height: 0px; top: 50%; left: 0; border-top: 1px dashed rgba(255,255,255,.2); }
}

/*** Footer ***/
.footer { background: linear-gradient(rgba(3,27,78,.3), rgba(3,27,78,.3)), url(../img/footer.png) center center no-repeat; background-size: contain; }
@media (min-width: 992px) { .footer::after { position: absolute; content: ""; width: 0px; height: 100%; top: 0; left: 50%; border-left: 1px dashed rgba(255,255,255,.2); } }
.footer .btn.btn-link { display: block; margin-bottom: 5px; padding: 0; text-align: left; color: rgba(255,255,255,.75); font-weight: normal; text-transform: capitalize; transition: .3s; }
.footer .btn.btn-link::before { position: relative; content: "\f105"; font-family: "Font Awesome 5 Free"; font-weight: 900; color: rgba(255,255,255,.5); margin-right: 10px; }
.footer .btn.btn-link:hover { color: var(--bs-primary); letter-spacing: 1px; box-shadow: none; }
.copyright { border-top: 1px dashed rgba(255, 255, 255, .2); }
.copyright a { color: var(--bs-white); }
.copyright a:hover { color: var(--bs-primary); }
