body {
  font-family: Outfit, sans-serif;
  background: linear-gradient(145deg, #fff, #f0f9ff);
}
.glass-card {
  background: hsla(0, 0%, 100%, 0.9);
  backdrop-filter: blur(2px);
  border: 1px solid rgba(56, 189, 248, 0.3);
  transition: all 0.25s ease;
}
.glass-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 25px 35px -12px rgba(2, 132, 199, 0.25);
  border-color: #38bdf8;
}
.bg-gradient-hero {
  background: radial-gradient(
    circle at 80% 20%,
    rgba(56, 189, 248, 0.15) 0,
    rgba(251, 113, 133, 0.05) 70%
  );
}
.btn-shadow {
  box-shadow: 0 8px 20px -6px rgba(56, 189, 248, 0.4);
}
.badge-glow {
  background: linear-gradient(115deg, #e0f2fe, #bae6fd);
  box-shadow: 0 2px 8px rgba(56, 189, 248, 0.3);
}
::selection {
  background: #38bdf8;
  color: #fff;
}
#inicio {
  position: relative;
  isolation: isolate;
}
.hero-bg-blur {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  background-size: cover;
  background-position: 50%;
  background-repeat: no-repeat;
  filter: brightness(0.95) saturate(1.1);
  transform: scale(1.03);
  opacity: 0.4;
  transition: background-image 0.8s ease, opacity 0.5s ease;
  pointer-events: none;
}
.hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    hsla(0, 0%, 100%, 0.82),
    rgba(240, 249, 255, 0.74) 40%,
    rgba(224, 242, 254, 0.68) 70%,
    hsla(0, 0%, 100%, 0.84)
  );
  z-index: 1;
}
#inicio .container {
  position: relative;
  z-index: 10;
}
.dynamic-title-line {
  transition: all 0.3s ease;
}
.dynamic-description {
  transition: opacity 0.4s ease, transform 0.4s ease;
}
@keyframes gentlePop {
  0% {
    opacity: 0;
    transform: translateY(12px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.text-slide-animate {
  animation: gentlePop 0.5s cubic-bezier(0.2, 0.9, 0.4, 1.1) forwards;
}
.badge-slide-change {
  transition: background-color 0.3s, color 0.3s;
}
.feature-tag {
  transition: all 0.2s ease;
}
.feature-tag:hover {
  transform: translateY(-2px);
  color: #0284c7;
}
@keyframes softShine {
  0% {
    text-shadow: 0 0 0 rgba(56, 189, 248, 0);
  }
  50% {
    text-shadow: 0 0 6px rgba(56, 189, 248, 0.3);
  }
  to {
    text-shadow: 0 0 0 rgba(56, 189, 248, 0);
  }
}
.highlight-text {
  animation: softShine 3s infinite;
}
.carousel-slide {
  opacity: 0;
  transform: translateX(100%);
  z-index: 1;
}
.carousel-slide.active {
  opacity: 1 !important;
  transform: translateX(0) !important;
  z-index: 10;
}
.carousel-slide.prev-hidden {
  opacity: 0;
  transform: translateX(-100%) !important;
  z-index: 1;
}
.carousel-slide.next-hidden {
  opacity: 0;
  transform: translateX(100%) !important;
  z-index: 1;
}
.group {
  transition: all 0.4s cubic-bezier(0.2, 0.9, 0.4, 1.1);
}
.group:hover {
  box-shadow: 0 25px 40px -12px rgba(56, 189, 248, 0.25);
}
@keyframes cardReveal {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.grid > div {
  animation: cardReveal 0.6s ease backwards;
}
.grid > div:first-child {
  animation-delay: 0.05s;
}
.grid > div:nth-child(2) {
  animation-delay: 0.1s;
}
.grid > div:nth-child(3) {
  animation-delay: 0.15s;
}
.grid > div:nth-child(4) {
  animation-delay: 0.2s;
}
.grid > div:nth-child(5) {
  animation-delay: 0.25s;
}
.grid > div:nth-child(6) {
  animation-delay: 0.3s;
}
@media (max-width: 768px) {
  .grid > div {
    animation-delay: 0s;
  }
}
#lightbulbCanvasContainer {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
#lightbulbCanvas {
  width: 100%;
  height: 100%;
  display: block;
  opacity: 0.9;
}
.hover\:rotate-x-2:hover {
  transform: rotateX(2deg) rotateY(1deg);
}
.group:hover .group-hover\:rotate-3 {
  transform: rotate(3deg);
}
.group:hover .group-hover\:-rotate-2 {
  transform: rotate(-2deg);
}
@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.animate-fade-in-up {
  animation: fadeInUp 0.7s ease-out forwards;
}
.light-bubble {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  filter: blur(0.5px);
  animation: floatUp linear infinite;
  opacity: 0;
}
@keyframes floatUp {
  0% {
    transform: translateY(100vh) scale(0.3) rotate(0deg);
    opacity: 0;
  }
  10% {
    opacity: 0.6;
  }
  90% {
    opacity: 0.5;
  }
  to {
    transform: translateY(-20vh) scale(1.1) rotate(1turn);
    opacity: 0;
  }
}
.bg-gradient-to-br {
  transition: background 0.5s ease;
}
.perspective-1000 {
  perspective: 1000px;
}
.hover\:rotate-x-2:hover {
  transform: rotateX(2deg) rotateY(1deg) translateY(-4px);
}
.transform-gpu {
  transform-style: preserve-3d;
  backface-visibility: hidden;
}
.carousel-logo-slide {
  transition: opacity 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.carousel-logo-slide.active-logo {
  opacity: 1;
  z-index: 10;
}
.carousel-logo-slide:not(.active-logo) {
  opacity: 0;
  z-index: 5;
}
.carousel-dot-quienes.active-dot {
  background-color: #38bdf8;
  width: 1.5rem;
  box-shadow: 0 0 6px rgba(56, 189, 248, 0.5);
}
@keyframes fadeSlideUp {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
#quienes-somos .flex-1 {
  animation: fadeSlideUp 0.6s ease-out forwards;
}
#quienes-somos .flex-1:first-child {
  animation-delay: 0.1s;
}
#quienes-somos .flex-1:last-child {
  animation-delay: 0.2s;
}
.group:hover .absolute {
  transition: all 0.5s ease;
}
@media (max-width: 768px) {
  .hover\:rotate-x-2:hover {
    transform: rotateX(0deg) rotateY(0deg);
  }
}
body {
  background: linear-gradient(
    135deg,
    #fff,
    #e0f2fe 20%,
    #fefce8 50%,
    #f0f9ff 80%,
    #fff
  );
  background-attachment: fixed;
  background-size: 200% 200%;
  animation: gradientShiftSmooth 15s ease infinite;
  position: relative;
}
@keyframes gradientShiftSmooth {
  0% {
    background-position: 0 0;
  }
  25% {
    background-position: 50% 100%;
  }
  50% {
    background-position: 100% 50%;
  }
  75% {
    background-position: 50% 0;
  }
  to {
    background-position: 0 0;
  }
}
body:before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(
    ellipse at 30% 40%,
    rgba(56, 189, 248, 0.08),
    rgba(251, 113, 133, 0.04),
    transparent 60%
  );
  pointer-events: none;
  z-index: 0;
}
section {
  background-color: transparent !important;
  position: relative;
  z-index: 1;
}
footer,
header {
  background-color: hsla(0, 0%, 100%, 0.95) !important;
  backdrop-filter: blur(8px);
}
.bg-white,
.bg-white\/80,
.bg-white\/90,
.bg-white\/95 {
  background-color: hsla(0, 0%, 100%, 0.88) !important;
  backdrop-filter: blur(2px);
}
.hero-bg-overlay {
  background: linear-gradient(
    135deg,
    hsla(0, 0%, 100%, 0.85),
    rgba(224, 242, 254, 0.8) 50%,
    hsla(0, 0%, 100%, 0.85)
  ) !important;
}
#carreras,
#contacto,
#instituto,
#quienes-somos {
  background: transparent !important;
}
body {
  transition: background-position 0.3s ease;
}
.gradient-dot {
  position: fixed;
  width: 2px;
  height: 2px;
  background: rgba(56, 189, 248, 0.3);
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}
.text-gray-500,
.text-gray-600,
.text-gray-700 {
  text-shadow: 0 1px 0 hsla(0, 0%, 100%, 0.5);
}
@media (max-width: 768px) {
  body {
    animation-duration: 10s;
  }
}
.backdrop-blur-md,
.backdrop-blur-sm {
  backdrop-filter: blur(8px);
}
.footer-parallax {
  position: relative;
  overflow: hidden;
  background: linear-gradient(
    135deg,
    #0f172a,
    #1e3a5f 30%,
    #2d4a6e 60%,
    #0f172a
  );
  background-size: 200% 200%;
  animation: footerGradientMove 12s ease infinite;
}
@keyframes footerGradientMove {
  0% {
    background-position: 0 0;
  }
  50% {
    background-position: 100% 100%;
  }
  to {
    background-position: 0 0;
  }
}
.footer-parallax-bg {
  top: -20%;
  left: -10%;
  width: 120%;
  height: 140%;
  background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 800"><circle cx="200" cy="150" r="80" fill="url(%23grad)"/><circle cx="900" cy="500" r="120" fill="url(%23grad)"/><circle cx="600" cy="700" r="60" fill="url(%23grad)"/><circle cx="100" cy="600" r="40" fill="url(%23grad)"/><circle cx="1100" cy="200" r="90" fill="url(%23grad)"/></svg>');
  background-size: cover;
  background-repeat: no-repeat;
  background-position: 50%;
  opacity: 0.5;
  transition: transform 0.1s ease-out;
  will-change: transform;
}
.footer-parallax-bg,
.footer-parallax-bg-2 {
  position: absolute;
  pointer-events: none;
  z-index: 0;
}
.footer-parallax-bg-2 {
  bottom: -10%;
  right: -5%;
  width: 80%;
  height: 80%;
  background: radial-gradient(
    circle,
    rgba(56, 189, 248, 0.12),
    rgba(251, 113, 133, 0.08),
    transparent
  );
  filter: blur(40px);
  transition: transform 0.15s ease-out;
}
.footer-content {
  position: relative;
  z-index: 2;
}
.footer-link {
  transition: all 0.3s cubic-bezier(0.2, 0.9, 0.4, 1.1);
  display: inline-block;
}
.footer-link:hover {
  transform: translateX(5px);
  color: #38bdf8;
}
.social-icon {
  transition: all 0.3s ease;
  background: rgba(56, 189, 248, 0.15);
  backdrop-filter: blur(4px);
  border: 1px solid rgba(56, 189, 248, 0.3);
}
.social-icon:hover {
  transform: translateY(-4px) scale(1.1);
  background: linear-gradient(135deg, #38bdf8, #fb7185);
  border-color: transparent;
  box-shadow: 0 8px 20px rgba(56, 189, 248, 0.4);
}
.footer-heading {
  position: relative;
  display: inline-block;
  margin-bottom: 1rem;
}
.footer-heading:after {
  content: "";
  position: absolute;
  bottom: -8px;
  left: 0;
  width: 40px;
  height: 3px;
  background: linear-gradient(90deg, #38bdf8, #fb7185);
  border-radius: 3px;
  transition: width 0.3s ease;
}
.footer-column:hover .footer-heading:after {
  width: 60px;
}
.footer-glow-text {
  text-shadow: 0 2px 10px rgba(56, 189, 248, 0.3);
}
.footer-divider {
  background: linear-gradient(
    90deg,
    transparent,
    #38bdf8,
    #fb7185,
    #fde047,
    transparent
  );
  height: 2px;
  border: none;
  margin: 2rem 0 1.5rem;
}
.footer-list li {
  margin-bottom: 0.5rem;
  transition: all 0.2s ease;
}
.footer-list li:hover {
  transform: translateX(4px);
}
.contact-item i {
  transition: all 0.3s ease;
  width: 24px;
  display: inline-block;
}
.contact-item:hover i {
  transform: scale(1.1);
  color: #fde047;
}
@media (max-width: 768px) {
  .footer-parallax-bg {
    opacity: 0.3;
  }
  .footer-heading:after {
    width: 30px;
  }
  .footer-column:hover .footer-heading:after {
    width: 50px;
  }
}
.footer-particle {
  position: absolute;
  background: radial-gradient(circle, rgba(56, 189, 248, 0.4), transparent);
  border-radius: 50%;
  pointer-events: none;
  animation: floatParticle 8s ease-in-out infinite;
  z-index: 0;
}
@keyframes floatParticle {
  0%,
  to {
    transform: translateY(0) translateX(0) scale(1);
    opacity: 0.3;
  }
  50% {
    transform: translateY(-30px) translateX(20px) scale(1.2);
    opacity: 0.6;
  }
}
