@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap');

/* ==========================================================================
   1. RESET Y CONFIGURACIÓN BASE
   ========================================================================== */
:root {
  --color-brand-50: #f0f7ff;
  --color-brand-100: #e0effe;
  --color-brand-500: #0284c7;
  --color-brand-600: #0265d2;
  --color-brand-900: #0c4a6e;

  /* Loader Variables (Light Theme) */
  --loader-bg: #ffffff;
  --loader-text: #0f172a;
  --accent: #0284c7;
  --success: #10b981;
}

*, ::before, ::after {
  box-sizing: border-box;
  border-width: 0;
  border-style: solid;
  border-color: #e2e8f0;
  -webkit-tap-highlight-color: transparent !important;
}

html {
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-family: 'Plus Jakarta Sans', sans-serif;
}

body {
  margin: 0;
  line-height: inherit;
  font-family: 'Plus Jakarta Sans', sans-serif;
  background-color: #ffffff;
  color: #1e293b;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  transition: background-color 300ms, color 300ms;
}

/* Bloquea el scroll mientras el loader esté activo */
html:has(#loader:not(.hidden)),
body:has(#loader:not(.hidden)) {
  overflow: hidden !important;
}


/* Evitar parpadeos al cambiar de tema en contenedor principal */
html, body, main, footer {
  transition: none !important;
}

/* Transiciones suaves en elementos interactivos */
a, button {
  transition: color 0.15s ease, background-color 0.15s ease;
  cursor: pointer;
}

/* Selección de Texto */
::selection {
  background-color: var(--color-brand-500);
  color: #ffffff;
}

/* ==========================================================================
   2. SOPORTE DE MODO OSCURO (DARK MODE CLASS)
   ========================================================================== */
html.dark body {
  background-color: #020617; /* slate-950 */
  color: #f8fafc; /* slate-100 */
}

html.dark, [data-theme="dark"] {
  --loader-bg: #020617;
  --loader-text: #ffffff;
  --accent: #38bdf8;
  --success: #34d399;
}

/* ==========================================================================
   3. ESTILOS ESPECÍFICOS DEL LOADER
   ========================================================================== */
#loader {
  position: fixed;
  inset: 0;
  background: var(--loader-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  overflow: hidden;
  transition: opacity .4s ease, visibility .4s ease;
}

#loader.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loader-grid {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(var(--accent) 1px, transparent 1px),
    linear-gradient(90deg, var(--accent) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.08;
  mask-image: radial-gradient(circle at center, black 40%, transparent 80%);
  -webkit-mask-image: radial-gradient(circle at center, black 40%, transparent 80%);
  animation: gridMove 6s linear infinite;
}

@keyframes gridMove {
  from { transform: translateY(0); }
  to { transform: translateY(40px); }
}

.loader-box {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
}

.loader-logo {
  font-family: 'Velocity BC', 'Plus Jakarta Sans', system-ui, sans-serif;
  font-size: 2.6rem;
  letter-spacing: 6px;
  color: var(--loader-text);
  position: relative;
}

.loader-logo::after {
  content: "SDRYPSE";
  position: absolute;
  inset: 0;
  color: var(--accent);
  filter: blur(12px);
  opacity: 0.6;
}

.loader-bar {
  width: 180px;
  height: 3px;
  background: rgba(0, 0, 0, 0.08);
  border-radius: 10px;
  overflow: hidden;
}

html.dark .loader-bar, [data-theme="dark"] .loader-bar {
  background: rgba(255, 255, 255, 0.08);
}

.loader-progress {
  width: 40%;
  height: 100%;
  background: linear-gradient(
    90deg,
    var(--accent),
    var(--success),
    var(--accent)
  );
  background-size: 200% auto;
  animation: progressMove 1.2s linear infinite;
}

@keyframes progressMove {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(250%); }
}

#mainContent {
  opacity: 0;
  transition: opacity .3s ease;
}

/* ==========================================================================
   4. ESTILOS REUTILIZABLES DE MAQUETACIÓN Y LAYOUT
   ========================================================================== */
.flex-grow { flex-grow: 1; }
.relative { position: relative; }
.absolute { position: absolute; }
.fixed { position: fixed; }

.inset-0 {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

.z-10 { z-index: 10; }
.z-40 { z-index: 40; }
.z-50 { z-index: 50; }

.w-full { width: 100%; }
.h-screen { height: 100vh; }
.min-h-screen { min-height: 100vh; }

.max-w-xs { max-width: 20rem; }
.max-w-2xl { max-width: 42rem; }
.max-w-4xl { max-width: 56rem; }
.max-w-7xl { max-width: 80rem; }

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.my-6 {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

.mb-3 { margin-bottom: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-6 { margin-bottom: 1.5rem; }
.mb-10 { margin-bottom: 2.5rem; }
.mr-1 { margin-right: 0.25rem; }
.mr-8 { margin-right: 2rem; }
.mt-0\.5 { margin-top: 0.125rem; }

.p-2 { padding: 0.5rem; }
.p-3\.5 { padding: 0.875rem; }
.p-4 { padding: 1rem; }
.p-6 { padding: 1.5rem; }

.px-2\.5 { padding-left: 0.625rem; padding-right: 0.625rem; }
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.px-5 { padding-left: 1.25rem; padding-right: 1.25rem; }
.px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }

.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
.py-2\.5 { padding-top: 0.625rem; padding-bottom: 0.625rem; }
.py-3\.5 { padding-top: 0.875rem; padding-bottom: 0.875rem; }
.py-12 { padding-top: 3rem; padding-bottom: 3rem; }

.pt-2 { padding-top: 0.5rem; }
.pt-6 { padding-top: 1.5rem; }
.pt-12 { padding-top: 3rem; }
.pb-8 { padding-bottom: 2rem; }

/* ==========================================================================
   5. FLEXBOX & GRID
   ========================================================================== */
.h-20 { height: 5rem; }
.flex { display: flex; }
.inline-flex { display: inline-flex; }
.grid { display: grid; }
.hidden { display: none !important; }
.block { display: block !important; }

.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-end { justify-content: flex-end; }
.flex-shrink-0 { flex-shrink: 0; }
.flex-1 { flex: 1 1 0%; }

.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

.gap-2 { gap: 0.5rem; }
.gap-3 { gap: 0.75rem; }
.gap-3\.5 { gap: 0.875rem; }
.gap-4 { gap: 1rem; }
.gap-6 { gap: 1.5rem; }
.gap-8 { gap: 2rem; }

.space-y-2\.5 > * + * { margin-top: 0.625rem; }
.space-y-2 > * + * { margin-top: 0.5rem; }
.space-y-3 > * + * { margin-top: 0.75rem; }
.space-y-4 > * + * { margin-top: 1rem; }
.space-y-6 > * + * { margin-top: 1.5rem; }
.space-y-8 > * + * { margin-top: 2rem; }

/* ==========================================================================
   6. TIPOGRAFÍA Y TEXTOS
   ========================================================================== */
.text-center { text-align: center; }

.text-xs { font-size: 0.75rem; line-height: 1rem; }
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
.text-base { font-size: 1rem; line-height: 1.5rem; }
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
.text-xl { font-size: 1.25rem; line-height: 1.75rem; }
.text-2xl { font-size: 1.5rem; line-height: 2rem; }
.text-3xl { font-size: 1.875rem; line-height: 2.25rem; }

.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }
.font-extrabold { font-weight: 800; }

.uppercase { text-transform: uppercase; }
.tracking-tight { letter-spacing: -0.025em; }
.tracking-wider { letter-spacing: 0.05em; }
.leading-relaxed { line-height: 1.625; }

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Colores de texto */
.text-white { color: #ffffff; }
.text-slate-400 { color: #94a3b8; }
.text-slate-500 { color: #64748b; }
.text-slate-600 { color: #475569; }
.text-slate-700 { color: #334155; }
.text-slate-800 { color: #1e293b; }
.text-slate-900 { color: #0f172a; }
.text-brand-500 { color: var(--color-brand-500); }
.text-emerald-500 { color: #10b981; }
.text-indigo-500 { color: #6366f1; }

html.dark .dark\:text-white { color: #ffffff; }
html.dark .dark\:text-slate-100 { color: #f8fafc; }
html.dark .dark\:text-slate-200 { color: #e2e8f0; }
html.dark .dark\:text-slate-300 { color: #cbd5e1; }
html.dark .dark\:text-slate-400 { color: #94a3b8; }

/* ==========================================================================
   7. BORDES Y SOMBRAS
   ========================================================================== */
.border { border-width: 1px; }
.border-b { border-bottom-width: 1px; }
.border-t { border-top-width: 1px; }

.border-slate-200 { border-color: #e2e8f0; }
.border-brand-500\/30 { border-color: rgba(2, 132, 199, 0.3); }

html.dark .dark\:border-slate-800 { border-color: #1e293b; }
html.dark .dark\:border-slate-800\/80 { border-color: rgba(30, 41, 59, 0.8); }

.rounded-md { border-radius: 0.375rem; }
.rounded-lg { border-radius: 0.5rem; }
.rounded-xl { border-radius: 0.75rem; }
.rounded-2xl { border-radius: 1rem; }
.rounded-full { border-radius: 9999px; }

/* ==========================================================================
   8. FONDOS (BACKGROUNDS)
   ========================================================================== */
.bg-white { background-color: #ffffff; }
.bg-slate-50 { background-color: #f8fafc; }
.bg-slate-50\/50 { background-color: rgba(248, 250, 252, 0.5); }
.bg-slate-100 { background-color: #f1f5f9; }
.bg-slate-200 { background-color: #e2e8f0; }
.bg-brand-500 { background-color: var(--color-brand-500); }
.bg-brand-500\/10 { background-color: rgba(2, 132, 199, 0.1); }

html.dark .dark\:bg-slate-700 { background-color: #334155; }
html.dark .dark\:bg-slate-800 { background-color: #1e293b; }
html.dark .dark\:bg-slate-900\/30 { background-color: rgba(15, 23, 42, 0.3); }
html.dark .dark\:bg-slate-900\/40 { background-color: rgba(15, 23, 42, 0.4); }
html.dark .dark\:bg-slate-900\/60 { background-color: rgba(15, 23, 42, 0.6); }
html.dark .dark\:bg-slate-950 { background-color: #020617; }

/* ==========================================================================
   9. COMPONENTES Y TRANSICIONES
   ========================================================================== */
a { color: inherit; text-decoration: inherit; }
button { background: transparent; cursor: pointer; }
.overflow-hidden { overflow: hidden !important; }

.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.duration-300 { transition-duration: 300ms; }

/* Efectos Hover */
.hover\:bg-brand-600:hover { background-color: var(--color-brand-600); }
.hover\:text-brand-500:hover { color: var(--color-brand-500); }
.hover\:text-brand-600:hover { color: var(--color-brand-600); }
.hover\:text-slate-900:hover { color: #0f172a; }
.hover\:border-brand-500:hover { border-color: var(--color-brand-500); }
.hover\:border-brand-500\/50:hover { border-color: rgba(2, 132, 199, 0.5); }
.hover\:border-emerald-500:hover { border-color: #10b981; }

.group:hover .group-hover\:text-brand-500 { color: var(--color-brand-500); }
.group:hover .group-hover\:translate-x-1 { transform: translateX(0.25rem); }

html.dark .dark\:hover\:text-white:hover { color: #ffffff; }

/* Tamaños de Íconos */
.w-4 { width: 1rem; }
.h-4 { height: 1rem; }
.w-5 { width: 1.25rem; }
.h-5 { height: 1.25rem; }
.w-6 { width: 1.5rem; }
.h-6 { height: 1.5rem; }
.w-7 { width: 1.75rem; }
.h-7 { height: 1.75rem; }
.w-\[24px\] { width: 24px; }
.h-\[40\.28px\] { height: 40.28px; }

.object-contain { object-fit: contain; }

/* Selector de Tema */
#theme-toggle {
  padding: 0;
  margin: 0;
  border: none;
  background: transparent;
  border-radius: 0;
  clip-path: none;
  box-shadow: none ;
  width: auto;
  height: auto;
  line-height: 0;
}

#theme-toggle svg {
  display: block;
}

#theme-icon {
  pointer-events: none;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.dark #theme-icon {
  transform: rotate(45deg);
}

#sunRays {
  transform-origin: center;
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.dark #sunRays {
  opacity: 0;
  transform: scale(0.5) rotate(-45deg);
}

/* ==========================================================================
   10. FOOTER Y MARCA
   ========================================================================== */
/* --------------------------------------------------------------------------
   Marca (Logo de texto)
   -------------------------------------------------------------------------- */

/* Alineación exacta y control de márgenes del encabezado del footer */
.footer-brand h2 {
  margin: 0;
  line-height: 1;
}

.footer-brand h2 .footer-brand-name,
span.footer-brand-name {
  letter-spacing: 2px;
  font-family: 'Velocity BC', 'Plus Jakarta Sans', sans-serif !important;
  font-size: 28px;
  font-weight: 800;
  line-height: 1; /* Previene espacios no deseados debajo de la fuente */
}

/* Alineación vertical perfecta para el logo */
.footer-logo {
  display: block;
  object-fit: contain;
}

/* Declaración de la fuente personalizada */
@font-face {
  font-family: 'Velocity BC';
  src: url('/fonts/velocity-bc.woff') format('woff'),
       url('/fonts/velocity-bc.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* ==========================================================================
   11. MEDIA QUERIES (RESPONSIVE BREAKPOINTS)
   ========================================================================== */
@media (min-width: 640px) {
  .sm\:px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
  .sm\:px-8 { padding-left: 2rem; padding-right: 2rem; }
  .sm\:py-16 { padding-top: 4rem; padding-bottom: 4rem; }
  .sm\:py-20 { padding-top: 5rem; padding-bottom: 5rem; }
  .sm\:p-8 { padding: 2rem; }
  .sm\:text-base { font-size: 1rem; line-height: 1.5rem; }
  .sm\:text-lg { font-size: 1.125rem; line-height: 1.75rem; }
  .sm\:text-2xl { font-size: 1.5rem; line-height: 2rem; }
  .sm\:text-5xl { font-size: 3rem; line-height: 1; }
  .sm\:space-y-12 > * + * { margin-top: 3rem; }
  .sm\:flex-row { flex-direction: row; }
  .sm\:gap-4 { gap: 1rem; }
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 768px) {
  .md\:hidden { display: none !important; }
  .md\:flex { display: flex !important; }
  .md\:inline-flex { display: inline-flex !important; }
  .md\:text-left { text-align: left; }
  .md\:justify-start { justify-content: flex-start; }
  .md\:items-start { align-items: flex-start; }
  .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .lg\:px-8 { padding-left: 2rem; padding-right: 2rem; }
  .lg\:gap-8 { gap: 2rem; }
  .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

 /* Estilos para la columna de contacto en el Footer */
.footer-column {
    /* Color base de texto compatible con Light / Dark mode */
    color: #475569; /* slate-600 */
}

.dark .footer-column {
    color: #94a3b8; /* slate-400 */
}

/* Ajustes de alineación y transición para los enlaces */
.footer-column a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease-in-out;
}

.footer-column a:hover {
    color: #0284c7; /* brand-500 (o el color primario de Sdrypse) */
}

/* Previene deformaciones en íconos de Font Awesome */
.footer-column i {
    flex-shrink: 0;
}

/* Fix para la lista de contacto del Footer */
.footer-column a {
    color: #475569; /* slate-600 */
    white-space: nowrap; /* Evita que el número o correo rompan línea solos */
}

.dark .footer-column a {
    color: #94a3b8; /* slate-400 */
}

/* Forzar centrado vertical preciso de ícono y texto */
.footer-column a i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    flex-shrink: 0; /* Impide que el ícono se encoja */
}