@tailwind base;
@tailwind components;
@tailwind utilities;

:root {
  --background: #ffffff;
  --foreground: #171717;
  --card: #f9fafb;
  --card-border: #e5e7eb;
  --muted: #6b7280;
  --primary: #3b82f6;
}

.dark {
  --background: #0a0a0a;
  --foreground: #ededed;
  --card: #1a1a2e;
  --card-border: #2d2d44;
  --muted: #9ca3af;
  --primary: #60a5fa;
}

body {
  background: var(--background);
  color: var(--foreground);
  font-family: system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-size: 16px; /* prevent auto-zoom on iOS */
  max-width: 100vw;
  overflow-x: hidden;
}

/* Mobile-first base */
* {
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="datetime-local"],
textarea,
select {
  font-size: 16px; /* Prevent zoom on iOS */
}

/* Touch targets - minimum 44px for accessibility */
@media (max-width: 768px) {
  button,
  a,
  [role="button"] {
    min-height: 44px;
  }
}

@layer utilities {
  .scrollbar-hide {
    -ms-overflow-style: none;
    scrollbar-width: none;
  }
  .scrollbar-hide::-webkit-scrollbar {
    display: none;
  }

  .text-muted {
    color: var(--muted);
  }
}

/* Smooth scrolling with snap */
.snap-x {
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.snap-center {
  scroll-snap-align: center;
}
.snap-mandatory {
  scroll-snap-type: x mandatory;
}

/* Bottom navigation responsive */
@media (max-width: 640px) {
  .bottom-nav {
    display: flex;
  }
  .desktop-sidebar {
    display: none;
  }
}
@media (min-width: 641px) {
  .bottom-nav {
    display: none;
  }
}

/* Safe area for notched devices */
.safe-area-bottom {
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

/* Smooth page transitions */
main {
  animation: fadeIn 0.15s ease-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Slide-in animations for drawer */
@keyframes slideInRight {
  from {
    transform: translateX(100%);
  }
  to {
    transform: translateX(0);
  }
}

.animate-slideInRight {
  animation: slideInRight 0.25s ease-out;
}

/* Swipe overlay animations */
@keyframes slideOverlayLeft {
  0% {
    opacity: 0;
    transform: translateX(40px) scale(0.9);
  }
  30% {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
  70% {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateX(-20px) scale(0.95);
  }
}

@keyframes slideOverlayRight {
  0% {
    opacity: 0;
    transform: translateX(-40px) scale(0.9);
  }
  30% {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
  70% {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateX(20px) scale(0.95);
  }
}

.animate-slideOverlayLeft {
  animation: slideOverlayLeft 0.6s ease-out forwards;
}

.animate-slideOverlayRight {
  animation: slideOverlayRight 0.6s ease-out forwards;
}

/* Content slide animations for group switch */
@keyframes slideContentLeft {
  0% {
    opacity: 0.3;
    transform: translateX(30px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideContentRight {
  0% {
    opacity: 0.3;
    transform: translateX(-30px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.animate-slideContentLeft {
  animation: slideContentLeft 0.3s ease-out;
}

.animate-slideContentRight {
  animation: slideContentRight 0.3s ease-out;
}

/* Fade-in for backdrop */
@keyframes fadeInBackdrop {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.animate-fadeIn {
  animation: fadeInBackdrop 0.2s ease-out;
}

/* Mobile overscroll behavior */
@media (max-width: 640px) {
  html {
    overscroll-behavior-y: contain;
  }
}


/* Mobile modal fix */
.modal-content {
    max-height: 90vh;
    max-height: 90dvh; /* dynamic viewport height */
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

/* Ensure modal buttons visible above keyboard */
@media (max-width: 640px) {
    .modal-content {
        max-height: 85vh;
        max-height: 85dvh;
    }
}

/* Selection color */
::selection {
  background: rgba(59, 130, 246, 0.3);
}

/* ============================
   FullCalendar Mobile Layout Fix
   ============================ */

/* Base toolbar styles - compact */
.fc .fc-toolbar {
  flex-wrap: wrap;
  gap: 4px 8px;
  row-gap: 6px;
  font-size: 14px;
}

/* Title: prevent vertical text wrapping */
.fc .fc-toolbar-title {
  font-size: 18px !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Compact buttons */
.fc .fc-button {
  padding: 4px 10px !important;
  font-size: 13px !important;
  line-height: 1.4 !important;
}

/* Button group: no extra gaps */
.fc .fc-button-group {
  gap: 0;
}

/* Mobile breakpoint: stack toolbar rows */
@media (max-width: 640px) {
  .fc .fc-toolbar {
    flex-direction: column;
    align-items: center;
    gap: 6px;
  }

  .fc .fc-toolbar-chunk {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4px;
    width: 100%;
  }

  /* Title on its own row, centered, smaller */
  .fc .fc-toolbar-title {
    font-size: 15px !important;
    text-align: center;
    width: 100%;
    order: -1;
  }

  /* Smaller buttons on mobile */
  .fc .fc-button {
    padding: 3px 8px !important;
    font-size: 12px !important;
    min-height: 32px !important;
  }

  /* View switcher as pill buttons */
  .fc .fc-button-group .fc-button {
    border-radius: 0 !important;
  }
  .fc .fc-button-group .fc-button:first-child {
    border-radius: 9999px 0 0 9999px !important;
  }
  .fc .fc-button-group .fc-button:last-child {
    border-radius: 0 9999px 9999px 0 !important;
  }

  /* Reduce page padding */
  .fc {
    font-size: 12px;
  }

  /* Time grid slot labels smaller */
  .fc .fc-timegrid-slot-label {
    font-size: 10px;
  }

  /* Day header smaller */
  .fc .fc-col-header-cell-cushion {
    font-size: 12px;
    padding: 4px 2px;
  }
}

/* Small mobile (< 400px) - even tighter */
@media (max-width: 400px) {
  .fc .fc-toolbar-title {
    font-size: 13px !important;
  }

  .fc .fc-button {
    padding: 2px 6px !important;
    font-size: 11px !important;
    min-height: 28px !important;
  }
}
