/*
  utilities.css — lightweight design-system extensions
  - Responsive container helper
  - Skeleton loading utility (reduced-motion friendly)
  - Soft badge variants
  - Surface and elevation helpers
  - Skip-link accessibility helper
*/

/* Responsive container: pairs well with existing Tailwind but usable in plain templates too */
.container-responsive {
  max-width: 80rem; /* ~1280px */
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
}
@media (min-width: 640px) { /* sm */
  .container-responsive { padding-left: 1.5rem; padding-right: 1.5rem; }
}
@media (min-width: 1024px) { /* lg */
  .container-responsive { padding-left: 2rem; padding-right: 2rem; }
}

/* Skeleton loading placeholder */
.skeleton {
  position: relative;
  overflow: hidden;
  background-color: rgba(0,0,0,0.06);
}
.dark .skeleton { background-color: rgba(255,255,255,0.08); }

.skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background-image: linear-gradient(
    90deg,
    rgba(255,255,255,0) 0,
    rgba(255,255,255,0.55) 50%,
    rgba(255,255,255,0) 100%
  );
  animation: skeleton-shimmer 1.2s infinite;
}
.dark .skeleton::after {
  background-image: linear-gradient(
    90deg,
    rgba(255,255,255,0) 0,
    rgba(255,255,255,0.25) 50%,
    rgba(255,255,255,0) 100%
  );
}

@keyframes skeleton-shimmer {
  100% { transform: translateX(100%); }
}

@media (prefers-reduced-motion: reduce) {
  .skeleton::after { animation: none; }
}

/* Soft badge variants */
.badge-soft {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: 9999px;
  line-height: 1.25rem;
}

.badge-soft-primary { color: #1d4ed8; background: rgba(59,130,246,0.15); }
.dark .badge-soft-primary { color: #93c5fd; background: rgba(37,99,235,0.18); }

.badge-soft-success { color: #166534; background: rgba(34,197,94,0.16); }
.dark .badge-soft-success { color: #86efac; background: rgba(22,163,74,0.2); }

.badge-soft-warning { color: #92400e; background: rgba(250,204,21,0.22); }
.dark .badge-soft-warning { color: #fde68a; background: rgba(217,119,6,0.22); }

.badge-soft-danger { color: #991b1b; background: rgba(248,113,113,0.18); }
.dark .badge-soft-danger { color: #fecaca; background: rgba(220,38,38,0.22); }

.badge-soft-neutral { color: #374151; background: rgba(156,163,175,0.22); }
.dark .badge-soft-neutral { color: #d1d5db; background: rgba(107,114,128,0.22); }

/* Surface and elevation helpers */
.surface {
  background-color: var(--surface-color, #ffffff);
}
.dark .surface {
  --surface-color: #1f2937; /* gray-800 */
}

.elevate-hover {
  transition: box-shadow 200ms ease, transform 200ms ease;
}
.elevate-hover:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
}

@media (prefers-reduced-motion: reduce) {
  .elevate-hover, .elevate-hover:hover { transition: none; transform: none; }
}

/* Skip link helper for keyboard users */
.skip-link {
  position: absolute;
  left: 0.5rem;
  top: -40px;
  z-index: 10000;
  padding: 0.5rem 0.75rem;
  background: #111827; /* gray-900 */
  color: #ffffff;
  border-radius: 0.375rem;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.skip-link:focus {
  top: 0.5rem;
  outline: 2px solid #3b82f6; /* blue-500 */
}

/* Default avatar styling - for when user has no profile picture */
.avatar-default {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #ffffff;
  font-weight: 600;
  text-transform: uppercase;
  user-select: none;
}

.dark .avatar-default {
  background: linear-gradient(135deg, #4c51bf 0%, #553c9a 100%);
}

/* Avatar with fallback icon */
.avatar-icon-fallback {
  background: linear-gradient(135deg, #a0aec0 0%, #718096 100%);
  color: #ffffff;
}

.dark .avatar-icon-fallback {
  background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%);
}

/* Fixed navbar scroll padding adjustments */
html {
  scroll-behavior: smooth;
  /* Use dynamic value when available, fallback to 5rem */
  scroll-padding-top: var(--scroll-padding-top, 5rem);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

/* Ensure fixed navbar stays full width and properly positioned */
.site-header nav {
  width: 100%;
}

/* Additional safe area for mobile devices with notches/dynamic islands */
@supports (padding-top: env(safe-area-inset-top)) {
  .site-header nav {
    padding-top: env(safe-area-inset-top);
  }
}

/* Prevent content jump on pages with scrollbars */
html {
  overflow-y: scroll;
}

