@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800&family=Inter:wght@400;500;600&display=swap');

:root{
  --rsg-navy:#09247c;
  --rsg-navy-dark:#071b5e;
  --rsg-red:#e20613;
  --rsg-red-dark:#b8050f;
  --rsg-gray:#61615f;
  --rsg-gray-light:#9a9a97;
  --rsg-white:#ffffff;
  --font-display:'Archivo', sans-serif;
  --font-body:'Inter', sans-serif;
}

.rsg-footer, .rsg-footer *{ box-sizing:border-box; }

.rsg-footer{
  position:relative; overflow:hidden;
  background:linear-gradient(175deg, var(--rsg-navy-dark) 0%, #050f3e 100%);
  color:rgba(255,255,255,.72);
  padding:88px 24px 32px;
}

/* Línea superior: eco del trazo de ruta del hero */
.rsg-footer__top-line{
  position:absolute; top:0; left:0; height:2px; width:0%;
  background:linear-gradient(90deg, var(--rsg-red), rgba(226,6,19,0));
  transition:width 1.1s cubic-bezier(.22,1,.36,1);
}
.rsg-footer.is-visible .rsg-footer__top-line{ width:100%; }

.rsg-footer__bg{
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(circle at 1.5px 1.5px, rgba(255,255,255,.06) 1.5px, transparent 0) 0 0/26px 26px;
  mask-image:linear-gradient(180deg, #000 0%, transparent 70%);
  -webkit-mask-image:linear-gradient(180deg, #000 0%, transparent 70%);
}

/* Ruta decorativa: retoma el trazo del hero, cierra el recorrido de la página */
.rsg-footer__route{
  position:absolute; z-index:0; right:2%; top:0; height:100%; width:auto;
  max-width:280px; opacity:.5; pointer-events:none;
}
.rsg-footer__route-path{
  fill:none; stroke:rgba(255,255,255,.14); stroke-width:2; stroke-linecap:round;
  stroke-dasharray:1100; stroke-dashoffset:1100;
  transition:stroke-dashoffset 1.8s cubic-bezier(.65,0,.35,1) .2s;
}
.rsg-footer.is-visible .rsg-footer__route-path{ stroke-dashoffset:0; }
.rsg-footer__route-dot{ fill:rgba(255,255,255,.4); }
.rsg-footer__route-end circle:not(.rsg-footer__route-pulse){ fill:var(--rsg-red); }
.rsg-footer__route-pulse{ fill:none; stroke:var(--rsg-red); stroke-width:2; opacity:0; }
.rsg-footer.is-visible .rsg-footer__route-pulse{
  animation:rsg-footer-pulse 2.2s ease-out 1.9s infinite;
}
@keyframes rsg-footer-pulse{
  0%{ opacity:.6; transform:scale(1); }
  100%{ opacity:0; transform:scale(2.8); }
}
@media (max-width:960px){ .rsg-footer__route{ display:none; } }

.rsg-footer__inner{ position:relative; z-index:1; max-width:1280px; margin:0 auto; }

.rsg-footer__grid{
  display:grid; grid-template-columns:1.3fr .85fr .95fr 1.15fr; gap:48px;
  padding-bottom:48px;
}
@media (max-width:960px){
  .rsg-footer__grid{ grid-template-columns:1fr 1fr; row-gap:40px; }
  .rsg-footer__col--brand{ grid-column:1 / -1; }
}
@media (max-width:640px){
  .rsg-footer__grid{ grid-template-columns:1fr; gap:36px; }
}

.rsg-footer__col{
  opacity:0; transform:translateY(16px);
  transition:opacity .6s ease, transform .6s ease;
}
.rsg-footer.is-visible .rsg-footer__col{ opacity:1; transform:translateY(0); }
.rsg-footer.is-visible .rsg-footer__col:nth-child(1){ transition-delay:.05s; }
.rsg-footer.is-visible .rsg-footer__col:nth-child(2){ transition-delay:.15s; }
.rsg-footer.is-visible .rsg-footer__col:nth-child(3){ transition-delay:.25s; }
.rsg-footer.is-visible .rsg-footer__col:nth-child(4){ transition-delay:.35s; }

/* Marca */
.rsg-footer__brand{ display:inline-flex; align-items:center; gap:12px; text-decoration:none; margin-bottom:20px; }
.rsg-footer__logo{ height:40px; width:auto; border-radius: 4px; }
.rsg-footer__brand-text{
  font-family:var(--font-display); font-weight:700; font-size:16px; color:var(--rsg-white); letter-spacing:.2px;
}
.rsg-footer__brand-text em{ font-style:normal; font-weight:400; opacity:.65; }
.rsg-footer__desc{
  font-family:var(--font-body); font-size:14.5px; line-height:1.7; max-width:36ch; margin:0 0 26px;
  color:rgba(255,255,255,.6);
}
.rsg-footer__social{ display:flex; gap:10px; }
.rsg-footer__social-link{
  width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.06); color:rgba(255,255,255,.85);
  transition:background .2s ease, transform .2s ease, color .2s ease;
}
.rsg-footer__social-link svg{ width:15px; height:15px; }
.rsg-footer__social-link:hover{
  background:var(--rsg-red); color:var(--rsg-white); transform:translateY(-3px);
}

/* Títulos de columna */
.rsg-footer__title{
  font-family:var(--font-display); font-weight:700; font-size:14px; color:var(--rsg-white);
  letter-spacing:.2px; margin:0 0 20px; position:relative; padding-bottom:13px;
}
.rsg-footer__title::after{
  content:''; position:absolute; left:0; bottom:0; width:26px; height:2px; background:var(--rsg-red);
}

/* Enlaces */
.rsg-footer__links{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.rsg-footer__links a{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-body); font-size:14.5px; color:rgba(255,255,255,.62); text-decoration:none;
}
.rsg-footer__links a::before{
  content:''; width:5px; height:5px; border-radius:50%; background:rgba(255,255,255,.3); flex-shrink:0;
  transition:background .2s ease, transform .2s ease;
}
.rsg-footer__links a span{ transition:transform .2s ease, color .2s ease; display:inline-block; }
.rsg-footer__links a:hover span{ color:var(--rsg-white); transform:translateX(3px); }
.rsg-footer__links a:hover::before{ background:var(--rsg-red); transform:scale(1.5); }

/* Contacto */
.rsg-footer__contact{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:18px; }
.rsg-footer__contact li{ display:flex; align-items:flex-start; gap:13px; font-family:var(--font-body); font-size:14.5px; line-height:1.55; }
.rsg-footer__contact-icon{
  flex-shrink:0; width:32px; height:32px; border-radius:50%; margin-top:1px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(226,6,19,.14); color:var(--rsg-red);
}
.rsg-footer__contact-icon svg{ width:15px; height:15px; }
.rsg-footer__contact a{ color:rgba(255,255,255,.62); text-decoration:none; }
.rsg-footer__contact a:hover{ color:var(--rsg-white); }

/* Bottom bar */
.rsg-footer__bottom{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px;
  padding-top:28px; border-top:1px solid rgba(255,255,255,.08);
  opacity:0; transform:translateY(10px); transition:opacity .6s ease .45s, transform .6s ease .45s;
}
.rsg-footer.is-visible .rsg-footer__bottom{ opacity:1; transform:translateY(0); }
.rsg-footer__copy{ font-family:var(--font-body); font-size:13px; color:rgba(255,255,255,.45); margin:0; }
.rsg-footer__legal{ display:flex; align-items:center; flex-wrap:wrap; gap:0; margin-right:auto; }
.rsg-footer__legal a{
  font-family:var(--font-body); font-size:13px; color:rgba(255,255,255,.45); text-decoration:none;
  padding:0 14px; position:relative;
}
.rsg-footer__legal a:not(:last-child)::after{
  content:''; position:absolute; right:0; top:2px; bottom:2px; width:1px; background:rgba(255,255,255,.14);
}
.rsg-footer__legal a:hover{ color:var(--rsg-white); }

/* Botón volver arriba */
.rsg-footer__top{
  width:38px; height:38px; border-radius:50%; flex-shrink:0;
  border:1px solid rgba(255,255,255,.16); background:transparent; color:rgba(255,255,255,.75);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .2s ease, border-color .2s ease, transform .2s ease, color .2s ease;
}
.rsg-footer__top svg{ width:15px; height:15px; }
.rsg-footer__top:hover{ background:var(--rsg-red); border-color:var(--rsg-red); color:var(--rsg-white); transform:translateY(-2px); }

@media (max-width:640px){
  .rsg-footer{ padding:64px 20px 24px; }
  .rsg-footer__bottom{ flex-direction:column; align-items:flex-start; }
  .rsg-footer__legal{ margin-left:-14px; margin-right:0; }
  .rsg-footer__top{ align-self:flex-end; margin-top:-46px; }
}

.rsg-footer a:focus-visible,
.rsg-footer button:focus-visible{ outline:2px solid var(--rsg-red); outline-offset:2px; }

@media (prefers-reduced-motion:reduce){
  .rsg-footer *{ transition:none !important; animation:none !important; }
  .rsg-footer__col, .rsg-footer__bottom{ opacity:1 !important; transform:none !important; }
  .rsg-footer__top-line, .rsg-footer__route-path{ stroke-dashoffset:0 !important; width:100% !important; }
}