/*
 * Weloved Mobile Optimizations
 * Mobile-first responsive enhancements and touch-friendly interactions
 */

/* ==========================================================================
   Touch Optimization
   ========================================================================== */

/* Ensure all interactive elements meet minimum touch target size (44x44px) */
a,
button,
input[type="submit"],
input[type="button"],
.btn,
.nav-toggle,
.mobile-nav-close {
  min-width: 44px;
  min-height: 44px;
}

/* Larger tap targets for primary actions on mobile */
@media (max-width: 767px) {
  .btn-primary,
  .btn-secondary {
    width: 100%;
    padding: var(--space-4) var(--space-6);
    min-height: 52px;
  }

  .btn-block {
    width: 100%;
  }
}

/* Prevent iOS text size adjustment */
html {
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* Smooth scrolling for mobile */
@media (max-width: 767px) {
  html {
    scroll-behavior: smooth;
  }
}

/* Touch action for better scrolling performance */
body {
  touch-action: pan-y;
  -webkit-overflow-scrolling: touch;
}

/* ==========================================================================
   Form Input Optimization (Prevent iOS Zoom)
   ========================================================================== */

/* Ensure inputs are at least 16px to prevent iOS auto-zoom */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="search"],
input[type="url"],
textarea,
select {
  font-size: 16px;
}

@media (max-width: 767px) {
  .field-input,
  .field-textarea,
  .field-select,
  .form-input,
  .form-textarea,
  .search-input {
    font-size: 16px;
    padding: var(--space-3) var(--space-4);
  }

  /* Full-width form elements on mobile */
  .field-input,
  .field-textarea,
  .field-select,
  .form-input,
  .form-textarea {
    width: 100%;
  }
}

/* ==========================================================================
   Hero Section Mobile Optimization
   ========================================================================== */

@media (max-width: 767px) {
  .hero {
    min-height: 400px;
    max-height: 600px;
  }

  .hero-content {
    padding: var(--space-8) var(--space-4) var(--space-6);
  }

  .hero-name {
    font-size: 2rem;
    margin-bottom: var(--space-2);
  }

  .hero-dates {
    font-size: 0.875rem;
    margin-bottom: var(--space-3);
  }

  .hero-tagline {
    font-size: 1rem;
    line-height: var(--leading-normal);
  }
}

/* ==========================================================================
   Typography Mobile Adjustments
   ========================================================================== */

@media (max-width: 767px) {
  /* Ensure readable line lengths on mobile */
  body {
    font-size: 16px;
  }

  /* Slightly smaller headings on mobile for better fit */
  h1 {
    font-size: clamp(1.75rem, 5vw, 2rem);
  }

  h2 {
    font-size: clamp(1.375rem, 4vw, 1.5rem);
  }

  h3 {
    font-size: clamp(1.125rem, 3.5vw, 1.25rem);
  }

  /* Optimize body text for mobile reading */
  p {
    font-size: 16px;
    line-height: 1.6;
  }
}

/* ==========================================================================
   Layout Utilities - Mobile Stacking
   ========================================================================== */

@media (max-width: 767px) {
  /* Stack flex items vertically on mobile */
  .flex-mobile-col {
    flex-direction: column;
  }

  /* Full width on mobile */
  .mobile-full-width {
    width: 100%;
  }

  /* Center content on mobile */
  .mobile-center {
    text-align: center;
    align-items: center;
  }

  /* Reduce padding on mobile */
  .mobile-px-4 {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }

  /* Flex direction */
  .flex {
    flex-wrap: wrap;
  }

  .gap-4 {
    gap: var(--space-3);
  }
}

/* ==========================================================================
   Navigation Mobile Enhancements
   ========================================================================== */

/* Ensure nav toggle is easily tappable */
.nav-toggle {
  padding: var(--space-3);
  margin: calc(var(--space-2) * -1);
}

/* Improve mobile nav accessibility */
@media (max-width: 767px) {
  .mobile-nav a {
    font-size: 1.125rem;
    padding: var(--space-4) 0;
    min-height: 44px;
    display: flex;
    align-items: center;
  }
}

/* ==========================================================================
   Card Mobile Optimization
   ========================================================================== */

@media (max-width: 767px) {
  .card {
    padding: var(--space-4);
    margin-bottom: var(--space-4);
  }

  .contribution-card {
    padding: var(--space-4);
    margin-bottom: var(--space-6);
  }

  .contribution-photos {
    grid-template-columns: 1fr;
    gap: var(--space-2);
  }

  .contribution-photos img {
    height: auto;
    max-height: 300px;
  }
}

/* ==========================================================================
   Page Section Mobile Spacing
   ========================================================================== */

@media (max-width: 767px) {
  .page-section {
    padding: var(--space-8) 0;
  }

  .section {
    padding: var(--space-6) var(--space-4);
  }

  .container {
    padding: 0 var(--space-4);
  }
}

/* ==========================================================================
   Image Optimization
   ========================================================================== */

img {
  max-width: 100%;
  height: auto;
}

@media (max-width: 767px) {
  /* Ensure images don't overflow on small screens */
  img {
    display: block;
  }

  /* Hero images maintain aspect ratio */
  .hero-images img {
    object-fit: cover;
    width: 100%;
    height: 100%;
  }
}

/* ==========================================================================
   Share Component Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .share-input-group {
    flex-direction: column;
    gap: var(--space-3);
  }

  .share-url-input {
    width: 100%;
  }

  .share-buttons {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }

  .share-buttons .btn {
    width: 100%;
  }
}

/* ==========================================================================
   Form Layout Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .form-field {
    margin-bottom: var(--space-4);
  }

  .contribution-form {
    gap: var(--space-4);
  }

  /* Stack form actions vertically */
  .form-actions {
    flex-direction: column;
    gap: var(--space-3);
  }

  .form-actions .btn {
    width: 100%;
  }
}

/* ==========================================================================
   Table Responsiveness
   ========================================================================== */

@media (max-width: 767px) {
  /* Make tables scroll horizontally on mobile */
  table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
}

/* ==========================================================================
   Modals and Overlays Mobile
   ========================================================================== */

@media (max-width: 767px) {
  /* Full screen modals on mobile */
  .modal,
  .modal-content {
    width: 100%;
    max-width: 100%;
    margin: 0;
    border-radius: 0;
  }
}

/* ==========================================================================
   Grid Mobile Optimization
   ========================================================================== */

@media (max-width: 767px) {
  .grid-cols-2,
  .grid-cols-3 {
    grid-template-columns: 1fr;
  }

  /* Auto-fit grids become single column */
  .contribution-photos {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   Faded State Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .faded-banner {
    padding: var(--space-6) var(--space-4);
    text-align: center;
  }

  .faded-banner-title {
    font-size: 1.5rem;
  }

  .faded-banner-text {
    font-size: 1rem;
  }

  .restore-prompt {
    padding: var(--space-6) var(--space-4);
  }
}

/* ==========================================================================
   Footer Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .site-footer {
    padding: var(--space-6) var(--space-4);
  }
}

/* ==========================================================================
   Search Page Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .search-page {
    margin: var(--space-6) auto;
    padding: 0 var(--space-4);
  }

  .search-header {
    margin-bottom: var(--space-6);
  }

  .search-input-group {
    flex-direction: column;
    gap: var(--space-3);
  }

  .search-button {
    width: 100%;
    padding: var(--space-3) var(--space-6);
  }

  .search-result-card {
    flex-direction: column;
    padding: var(--space-4);
  }

  .result-thumbnail {
    width: 100%;
    height: 200px;
  }

  .search-pagination {
    flex-direction: column;
    gap: var(--space-3);
  }

  .pagination-link {
    width: 100%;
    text-align: center;
  }
}

/* ==========================================================================
   Home Page Mobile
   ========================================================================== */

@media (max-width: 767px) {
  .home-page-container {
    margin: var(--space-8) auto;
    padding: 0 var(--space-4);
  }

  .home-hero {
    margin-bottom: var(--space-6);
  }

  .home-actions {
    margin-bottom: var(--space-6);
    padding: var(--space-6) 0;
  }

  .home-action-cards {
    display: grid;
    gap: var(--space-4);
  }

  .home-action-card {
    padding: var(--space-6);
  }
}

/* ==========================================================================
   Accessibility Mobile Enhancements
   ========================================================================== */

@media (max-width: 767px) {
  /* Larger focus indicators on mobile */
  :focus-visible {
    outline-width: 3px;
    outline-offset: 3px;
  }

  /* Ensure skip links are visible when focused */
  .skip-link:focus {
    position: fixed;
    top: 0;
    left: 0;
    padding: var(--space-4);
    background: var(--color-accent);
    color: white;
    z-index: 9999;
  }
}

/* ==========================================================================
   Performance Optimizations
   ========================================================================== */

/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ==========================================================================
   Safe Area Insets (for notched devices)
   ========================================================================== */

@supports (padding: env(safe-area-inset-top)) {
  .site-header {
    padding-top: calc(var(--space-4) + env(safe-area-inset-top));
    padding-left: calc(var(--space-4) + env(safe-area-inset-left));
    padding-right: calc(var(--space-4) + env(safe-area-inset-right));
  }

  .site-footer {
    padding-bottom: calc(var(--space-8) + env(safe-area-inset-bottom));
  }
}

/* ==========================================================================
   Landscape Mobile Optimization
   ========================================================================== */

@media (max-width: 767px) and (orientation: landscape) {
  .hero {
    min-height: 300px;
    max-height: 400px;
  }

  .hero-content {
    padding: var(--space-6) var(--space-4) var(--space-4);
  }

  .hero-name {
    font-size: 1.75rem;
  }
}
