/* =========================================================
   Cargador Galopante (el mismo del home) para las páginas internas.
   Uso, primera línea dentro de <head>:
     <link rel="stylesheet" href="css/gp-cargador.css?v=1">
     <script src="js/gp-cargador.js?v=1"></script>
   Tapa la página hasta que cargan todas las imágenes y las fuentes,
   así nada "salta" antes de que arranque la animación.
   ========================================================= */
#gp-boot-loader{position:fixed;inset:0;z-index:2147483647;background:#EB455D;color:#F1F0F0;pointer-events:auto}
#gp-boot-loader[hidden]{display:none!important}
html.gp-booting body{overflow:hidden}
/* Antes de que exista el cargador (primeros milisegundos), el fondo coral ya tapa todo. */
html.gp-booting{background:#EB455D}
html.gp-booting body>*:not(#gp-boot-loader){visibility:hidden!important}
#gp-boot-loader{transition:opacity .35s ease}
#gp-boot-loader.is-leaving{opacity:0}
/* La G oficial permanece fija; su punto coral orbita con una estela sutil. */
#gp-boot-loader .gp-media-loader {
  position:absolute; z-index:3; top:50%; left:50%;
  transform:translate(-50%,-50%); width:124px; padding:12px 14px;
  box-sizing:border-box; border:1px solid rgba(241,240,240,.12);
  border-radius:18px; background:#09121c; color:#F1F0F0;
  box-shadow:0 8px 28px rgba(0,0,0,.12); pointer-events:none; text-align:center;
}
#gp-boot-loader .gp-media-loader[hidden] { display:none!important; }
#gp-boot-loader .gp-media-loader__symbol { position:relative; display:block; width:96px; height:96px; }
#gp-boot-loader .gp-media-loader__mark {
  position:absolute; width:64px; height:57px; top:50%; left:50%;
  transform:translate(calc(-50% + 3.5px),-50%); background:#F1F0F0;
  -webkit-mask:url('../assets/images/isotipo-galopante.png') center/contain no-repeat;
  mask:url('../assets/images/isotipo-galopante.png') center/contain no-repeat;
  /* Separar sólo el punto del archivo original, sin redibujar la letra. */
  clip-path:polygon(0 0,100% 0,100% 78%,81.6% 78%,81.6% 100%,0 100%);
}
#gp-boot-loader .gp-media-loader__orbit {
  position:absolute; inset:0; display:block; animation:gp-point-orbit 1.8s linear infinite;
}
#gp-boot-loader .gp-media-loader__trail {
  position:absolute; inset:0; display:block;
  background:conic-gradient(from 0deg,transparent 0deg 280deg,rgba(235,69,93,0) 280deg,rgba(235,69,93,.06) 305deg,rgba(235,69,93,.4) 350deg,rgba(235,69,93,.65) 359deg,transparent 360deg);
  -webkit-mask:radial-gradient(circle,transparent 41px,#000 42px 44px,transparent 45px);
  mask:radial-gradient(circle,transparent 41px,#000 42px 44px,transparent 45px);
}
#gp-boot-loader .gp-media-loader__dot {
  position:absolute; top:0; left:44px; width:8px; height:8px;
  display:block; border-radius:50%; background:#EB455D;
  box-shadow:0 0 8px rgba(235,69,93,.24);
}
#gp-boot-loader .gp-media-loader__label {
  display:block; margin-top:4px; font-family:Montserrat,Arial,sans-serif;
  font-size:10px; font-weight:500; line-height:1.3; letter-spacing:.04em;
}
@keyframes gp-point-orbit { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) {
  #gp-boot-loader .gp-media-loader__orbit { animation:none; transform:rotate(135deg); }
  #gp-boot-loader .gp-media-loader__trail { display:none; }
}

/* Laboratorio: el cargador aparece sobre el fondo desenfocado del
   laboratorio en vez del coral (<html class="gp-fondo-laboratorio">). */
html.gp-fondo-laboratorio.gp-booting,
html.gp-fondo-laboratorio #gp-boot-loader {
  background: linear-gradient(rgba(9,18,28,.2), rgba(9,18,28,.2)), url('../assets/laboratorio/office-blur.png') center / cover no-repeat #09121C;
}
html.gp-fondo-laboratorio.gp-booting { background-attachment: fixed; }
