/**
 * AffordaCalc Mobile Optimizations
 * 
 * This CSS provides optimizations for mobile devices including:
 * - Enhanced tap targets
 * - Better touch feedback
 * - Improved spacing and readability
 * - Mobile-specific layout adjustments
 */

/* Apply mobile-specific optimizations */
.mobile-device {
  /* Better touch feedback */
  --tap-highlight-color: rgba(0, 0, 0, 0.1);
  --active-state-opacity: 0.7;
  --touch-target-min: 44px;
  
  /* Mobile-friendly fonts */
  --mobile-font-scale: 1.05;
  --mobile-line-height: 1.5;
  
  /* Enhanced spacing for touch */
  --mobile-spacing-scale: 1.25;
}

/* Base element adjustments */
.mobile-optimized body {
  -webkit-tap-highlight-color: var(--tap-highlight-color);
  touch-action: manipulation;
  -webkit-touch-callout: none;
}

/* Typography adjustments for mobile */
.mobile-optimized h1 {
  font-size: calc(1.75rem * var(--mobile-font-scale));
  line-height: var(--mobile-line-height);
}

.mobile-optimized h2 {
  font-size: calc(1.5rem * var(--mobile-font-scale));
  line-height: var(--mobile-line-height);
}

.mobile-optimized h3 {
  font-size: calc(1.25rem * var(--mobile-font-scale));
  line-height: var(--mobile-line-height);
}

.mobile-optimized p, 
.mobile-optimized li, 
.mobile-optimized label {
  font-size: calc(1rem * var(--mobile-font-scale));
  line-height: var(--mobile-line-height);
}

/* Form controls optimization */
.mobile-optimized input,
.mobile-optimized select,
.mobile-optimized textarea {
  min-height: var(--touch-target-min);
  font-size: calc(1rem * var(--mobile-font-scale));
  line-height: normal;
}

/* Number input specific styles */
.mobile-optimized input[type="number"] {
  transition: width 0.2s ease;
}

.mobile-optimized input[type="number"].mobile-input-expanded {
  width: 160px;
  background-color: #f8f9fa;
}

/* Button enhancements */
.mobile-optimized button,
.mobile-optimized .btn,
.mobile-optimized [role="button"] {
  min-height: var(--touch-target-min);
  min-width: var(--touch-target-min);
  touch-action: manipulation;
  padding: calc(0.5rem * var(--mobile-spacing-scale)) calc(1rem * var(--mobile-spacing-scale));
  position: relative;
  overflow: hidden;
}

/* Active state feedback */
.mobile-optimized button:active,
.mobile-optimized .btn:active,
.mobile-optimized [role="button"]:active,
.mobile-optimized .mobile-touch-active {
  opacity: var(--active-state-opacity);
  transform: scale(0.98);
  transition: transform 0.1s, opacity 0.1s;
}

/* Enhanced touch ripple effect */
.mobile-optimized button::after,
.mobile-optimized .btn::after,
.mobile-optimized [role="button"]::after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.4) 10%, transparent 10.01%);
  background-repeat: no-repeat;
  background-position: 50%;
  pointer-events: none;
  transform: scale(10, 10);
  opacity: 0;
  transition: transform 0.5s, opacity 0.5s;
}

.mobile-optimized button:active::after,
.mobile-optimized .btn:active::after,
.mobile-optimized [role="button"]:active::after,
.mobile-optimized .mobile-touch-active::after {
  transform: scale(0, 0);
  opacity: 0.3;
  transition: 0s;
}

/* Link enhancements */
.mobile-optimized a:not(.btn):not([role="button"]) {
  padding: 0.15rem 0.1rem;
  margin: -0.15rem -0.1rem;
}

/* Fix iOS form styling */
.mobile-optimized input[type="text"],
.mobile-optimized input[type="number"],
.mobile-optimized input[type="email"],
.mobile-optimized input[type="tel"],
.mobile-optimized input[type="password"],
.mobile-optimized select {
  -webkit-appearance: none;
  border-radius: 6px;
}

/* Improve tap targets for checkboxes and radio buttons */
.mobile-optimized input[type="checkbox"],
.mobile-optimized input[type="radio"] {
  width: 22px;
  height: 22px;
  margin-right: 8px;
}

/* Improve form field spacing */
.mobile-optimized .form-group,
.mobile-optimized .form-item,
.mobile-optimized .field-wrapper {
  margin-bottom: calc(1rem * var(--mobile-spacing-scale));
}

/* Card style enhancements */
.mobile-optimized .card,
.mobile-optimized [role="article"],
.mobile-optimized .shadow-card {
  padding: calc(1rem * var(--mobile-spacing-scale));
  margin-bottom: calc(1rem * var(--mobile-spacing-scale));
  border-radius: 8px;
}

/* Fixed position elements adjustment for iOS */
.mobile-optimized .fixed-bottom,
.mobile-optimized .fixed-top {
  -webkit-transform: translateZ(0);
  -webkit-backface-visibility: hidden;
}

/* Smoother scrolling */
.mobile-optimized .scrollable-content {
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}

/* Hide desktop-only elements */
.mobile-optimized .desktop-only {
  display: none !important;
}

/* Fix for iPhone notch areas */
@supports (padding: max(0px)) {
  .mobile-optimized {
    --safe-area-inset-top: env(safe-area-inset-top, 0px);
    --safe-area-inset-right: env(safe-area-inset-right, 0px);
    --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
    --safe-area-inset-left: env(safe-area-inset-left, 0px);
  }
  
  .mobile-optimized body {
    padding-left: var(--safe-area-inset-left);
    padding-right: var(--safe-area-inset-right);
  }
  
  .mobile-optimized .fixed-top {
    padding-top: var(--safe-area-inset-top);
  }
  
  .mobile-optimized .fixed-bottom {
    padding-bottom: var(--safe-area-inset-bottom);
  }
}

/* Media queries for different device sizes */
@media (max-width: 767px) {
  .mobile-optimized .container {
    padding-left: calc(1rem * var(--mobile-spacing-scale));
    padding-right: calc(1rem * var(--mobile-spacing-scale));
  }
  
  .mobile-optimized h1 {
    font-size: calc(1.5rem * var(--mobile-font-scale));
  }
  
  .mobile-optimized h2 {
    font-size: calc(1.3rem * var(--mobile-font-scale));
  }
  
  .mobile-optimized .row {
    margin-left: calc(-0.5rem * var(--mobile-spacing-scale));
    margin-right: calc(-0.5rem * var(--mobile-spacing-scale));
  }
  
  .mobile-optimized [class*="col-"] {
    padding-left: calc(0.5rem * var(--mobile-spacing-scale));
    padding-right: calc(0.5rem * var(--mobile-spacing-scale));
  }
}

/* Optimize UI for very small screens */
@media (max-width: 360px) {
  .mobile-optimized {
    --mobile-font-scale: 0.95;
  }
  
  .mobile-optimized .btn-group .btn {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }
}

/* Specific optimizations for the calculator inputs */
.mobile-optimized .calculator-input-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(0.5rem * var(--mobile-spacing-scale));
}

@media (min-width: 640px) {
  .mobile-optimized .calculator-input-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Results panel optimization */
.mobile-optimized .results-panel {
  font-size: calc(1rem * var(--mobile-font-scale));
}

.mobile-optimized .results-panel h2 {
  font-size: calc(1.3rem * var(--mobile-font-scale));
}

.mobile-optimized .results-panel .result-value {
  font-size: calc(1.1rem * var(--mobile-font-scale));
  font-weight: 600;
}

/* Fix iOS double-tap on buttons */
.mobile-optimized .btn,
.mobile-optimized button {
  cursor: pointer;
  touch-action: manipulation;
}