@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');

/* Import fonts - update to variable font */
/* Import our animations */
/* Button interactions */
.button-hover-effect {
  transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
  position: relative;
  overflow: hidden;
}
.button-hover-effect::after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: rgba(255, 255, 255, 0.1);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.button-hover-effect:hover::after {
  opacity: 1;
}
/* Loading states */
.loading-shimmer {
  position: relative;
  overflow: hidden;
}
.loading-shimmer::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 200%;
  height: 100%;
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0),
    rgba(255, 255, 255, 0.2),
    rgba(255, 255, 255, 0)
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  transform: translateX(-100%);
}
@keyframes shimmer {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(50%);
  }
}
/* Fade in animations */
.fade-in-up {
  animation: fadeInUp 0.5s ease forwards;
  opacity: 0;
}
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.fade-in {
  animation: fadeIn 0.5s ease forwards;
  opacity: 0;
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/* Slide in animations */
.slide-in-left {
  animation: slideInLeft 0.5s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
  opacity: 0;
}
@keyframes slideInLeft {
  from {
    opacity: 0;
    transform: translateX(-40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
.slide-in-right {
  animation: slideInRight 0.5s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
  opacity: 0;
}
@keyframes slideInRight {
  from {
    opacity: 0;
    transform: translateX(40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
/* Scale animations */
.scale-in {
  animation: scaleIn 0.5s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
  opacity: 0;
}
@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
/* Staggered animation delays */
.stagger-delay-1 { animation-delay: 0.1s; }
.stagger-delay-2 { animation-delay: 0.2s; }
.stagger-delay-3 { animation-delay: 0.3s; }
.stagger-delay-4 { animation-delay: 0.4s; }
.stagger-delay-5 { animation-delay: 0.5s; }
/* Micro interactions */
.hover-lift {
  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1), box-shadow 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: var(--card-hover-shadow, 0px 12px 24px rgba(0, 0, 0, 0.12));
}
.hover-scale {
  transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.hover-scale:hover {
  transform: scale(1.03);
}
.hover-scale:active {
  transform: scale(0.98);
}
/* Text gradient effect */
.text-gradient {
  background-image: var(--primary-gradient, linear-gradient(135deg, var(--primary-main, #2563eb) 0%, var(--secondary-main, #7c3aed) 100%));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-fill-color: transparent;
}
/* 3D effects */
.card-3d {
  transition: transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);
  transform-style: preserve-3d;
  perspective: 1000px;
}
.card-3d:hover {
  transform: rotateX(3deg) rotateY(3deg) scale(1.01);
}
/* Pulse animation */
.pulse {
  animation: pulse 2s infinite;
}
@keyframes pulse {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
  }
}
/* Blurred backdrop effect */
.backdrop-blur {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.backdrop-blur-sm {
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}
.backdrop-blur-lg {
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}
/* Page transition animations */
.page-enter {
  opacity: 0;
  transform: translateY(20px);
}
.page-enter-active {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.4s, transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.page-exit {
  opacity: 1;
  transform: translateY(0);
}
.page-exit-active {
  opacity: 0;
  transform: translateY(-20px);
  transition: opacity 0.4s, transform 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);
}
/* Import markdown styles */
/* @import './styles/markdown.css'; */
/* CSS Reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* Base HTML and Body Styles */
html, body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color 0.3s, color 0.3s;
}
#root {
  min-height: 100%;
  width: 100%;
  max-width: 100%;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  margin: 0;
  padding: 0;
  overflow-x: hidden;
  position: relative;
  contain: layout;
}
code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
    monospace;
}
/* No-scroll utility class */
.no-scroll {
  overflow: hidden !important;
  overflow-x: hidden !important;
  overflow-y: hidden !important;
  height: 100% !important;
  width: 100% !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
}
/* Public Pages Scroll Container - allows inner content to scroll */
.public-page-scroll-container {
  height: calc(100vh - var(--navbar-height));
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0;
  margin: 0;
  position: relative;
}
/* Ensure app container takes full height */
#root, .App {
  height: 100%;
  width: 100%;
}
/* Clear previous, potentially conflicting styles */
#root.public-page, 
.App.public-page, 
.public-page .app-container {
  height: 100vh;
  width: 100vw;
  overflow: hidden;
  position: fixed;
}
/* Global classes */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
/* Basic link styling with smooth transitions */
a {
  color: inherit;
  text-decoration: none;
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
/* Apple-style Scroll Animation Base Styles - uses the Apple cubic-bezier curve */
.scroll-animation {
  opacity: 0;
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
  backface-visibility: hidden; /* Prevents flickering on some browsers */
  perspective: 1000px; /* Improves rendering performance */
}
/* Specific Animation Types with improved values for Apple-like feel */
.scroll-animation.fadeIn {
  transform: translateZ(0); /* Basic fade with hardware acceleration */
}
.scroll-animation.fadeInUp {
  transform: translateY(40px); /* Start 40px down - Apple uses larger offsets */
}
.scroll-animation.fadeInLeft {
  transform: translateX(60px); /* Start 60px right - more dramatic */
}
.scroll-animation.fadeInRight {
  transform: translateX(-60px); /* Start 60px left - more dramatic */
}
.scroll-animation.fadeInScale {
  transform: scale(0.92); /* Start slightly smaller - more noticeable */
  opacity: 0.8; /* Not fully transparent for better effect */
}
/* Visible State with enhanced performance */
.scroll-animation.is-visible {
  opacity: 1;
  transform: translateZ(0) translateX(0) translateY(0) scale(1); /* Return to original position */
}
/* Parallax effect - Apple uses subtle parallax */
.parallax-scroll {
  transform: translateY(0);
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
/* Additional modern styles */
.sticky-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  background-color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.03);
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.frosted-glass {
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
  background-color: rgba(255, 255, 255, 0.75);
  border-radius: 12px;
  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
.dark .frosted-glass {
  background-color: rgba(30, 30, 30, 0.75);
  border: 1px solid rgba(80, 80, 80, 0.3);
}
/* Blog styles */
.blog-post-link:hover {
  color: #3b82f6; /* MUI primary blue - will be overridden by theme.palette.primary.main in dark mode */
}
/* Resizable handle styles */
.resizable-handle {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 6px;
  cursor: col-resize;
  background-color: transparent;
  transition: background-color 0.2s;
  z-index: 10;
}
.resizable-handle:hover,
.resizable-handle:active {
  background-color: rgba(59, 130, 246, 0.5); /* Light blue when active */
}
/* Horizontal resizable handle */
.resizable-handle-horizontal {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 6px;
  width: 100%;
  cursor: row-resize;
  background-color: transparent;
  transition: background-color 0.2s;
  z-index: 10;
}
.resizable-handle-horizontal:hover,
.resizable-handle-horizontal:active {
  background-color: rgba(59, 130, 246, 0.5); /* Light blue when active */
} 