/* =============================================================
   iPad & iPad mini Responsive Overrides
   Target breakpoints:
     iPad mini  : 744px  × 1133px  (portrait) / 1133px × 744px  (landscape)
     iPad (10th): 820px  × 1180px  (portrait) / 1180px × 820px  (landscape)
     iPad Air   : 820px  × 1180px  (portrait)
     iPad Pro 11: 834px  × 1194px  (portrait)
   All covered by max-width: 1194px + touch-specific rules.
   ============================================================= */

/* ── 1. Global touch-friendly baseline ── */
@media (pointer: coarse), (max-width: 1194px) {
  /* Minimum 44px touch targets on interactive elements */
  .btn,
  .nav-link,
  .dropdown-item,
  input[type="checkbox"],
  input[type="radio"],
  .form-check-input {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }

  /* Slightly larger form controls for finger input */
  .form-control,
  .form-select {
    min-height: 44px;
    font-size: 1rem;
  }

  /* Prevent double-tap zoom on buttons */
  button,
  a {
    touch-action: manipulation;
  }
}

/* ── 2. Navbar — collapse at iPad widths ── */
@media (max-width: 1024px) {
  .navbar-collapse .navbar-nav .nav-link {
    padding: 0.75rem 1rem;
    font-size: 1rem;
  }

  .navbar-collapse {
    padding-bottom: 0.5rem;
  }
}

/* ── 3. Container padding on iPad ── */
@media (max-width: 1024px) {
  .container-fluid {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

/* ── 4. Dashboard stat cards — 2-up on iPad mini portrait ── */
@media (max-width: 820px) {
  .col-md-3 {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

/* ── 5. Form grid — THE critical fix ──
   The form editor/execute/preview use a fixed 12-column grid where
   each column is 72px wide (total ≈ 920px + gaps).
   On iPads this overflows horizontally.
   Solution: scale the grid using CSS custom properties + clamp()
   so it always fits within the viewport while maintaining proportions.
   ─────────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  /* Override the fixed cell width with a fluid value */
  :root {
    --grid-cols: 12;
    --grid-gap: 8px;
    /* Each cell = (available_width - 11 gaps) / 12 columns */
    --cell-w-fluid: calc((min(96vw, 900px) - 11 * var(--grid-gap)) / var(--grid-cols));
  }

  /* Execute & preview .form-grid */
  .form-grid {
    grid-template-columns: repeat(12, var(--cell-w-fluid)) !important;
    width: 100% !important;          /* remove max-content so it fills container */
    overflow-x: visible !important;
  }

  /* Row height scales proportionally: original ratio was 52/72 ≈ 0.72 */
  .form-grid {
    grid-auto-rows: calc(var(--cell-w-fluid) * 0.72) !important;
  }

  /* Cells: let font scale with viewport */
  .fg-cell .field-lbl {
    font-size: clamp(0.6rem, 1.2vw, 0.74rem) !important;
  }

  .fg-cell .form-control,
  .fg-cell .form-select {
    font-size: clamp(0.65rem, 1.3vw, 0.76rem) !important;
    min-height: unset; /* override the 44px rule inside grids — cells are constrained */
    padding: 0.15rem 0.35rem !important;
  }

  /* insp-body / preview-body scroll container */
  .insp-body,
  .preview-body {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 1rem !important;
  }
}

/* ── 6. Form editor layout — sidebar panels ── */
@media (max-width: 1024px) {
  /* Editor uses a 3-column CSS grid: sidebar | canvas | properties.
     On iPad: stack canvas below sidebars, or let sidebars collapse. */
  .editor-layout {
    grid-template-columns: 1fr !important;
    grid-template-rows: auto 1fr auto !important;
  }

  .editor-sidebar-left,
  .editor-sidebar-right {
    max-height: 220px;
    overflow-y: auto;
  }
}

/* ── 7. Tables ── */
@media (max-width: 1024px) {
  /* Ensure all tables have horizontal scroll */
  .table-responsive {
    -webkit-overflow-scrolling: touch;
  }

  /* Tables not wrapped in .table-responsive */
  table:not(.tbl-field) {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    width: 100%;
  }

  /* Table action buttons — stack vertically if needed */
  td .btn + form,
  td .btn + .btn {
    margin-top: 4px;
    display: block;
  }
}

/* ── 8. Cards & layout — improve spacing ── */
@media (max-width: 820px) {
  /* Full-width cards on narrow iPad portrait */
  .col-md-6[class*="offset-"],
  .col-md-8[class*="offset-"] {
    margin-left: 0 !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
  }

  .card-body {
    padding: 1rem;
  }

  /* Page header action buttons — stack on small iPads */
  .col-md-4.text-end.d-flex {
    flex-wrap: wrap;
    gap: 0.5rem !important;
    justify-content: flex-start !important;
  }
}

/* ── 9. Inspection execute — header & footer ── */
@media (max-width: 1024px) {
  .insp-wrap {
    padding: 0 0.5rem 5rem !important;
  }

  .insp-header {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 0.75rem !important;
    padding: 1rem !important;
    border-radius: 12px 12px 0 0;
  }

  .insp-header .d-flex.gap-2 {
    flex-wrap: wrap;
    width: 100%;
  }

  .insp-footer {
    flex-direction: column;
    align-items: stretch !important;
    gap: 0.5rem !important;
    padding: 0.75rem 1rem !important;
  }

  .insp-footer .btn {
    width: 100%;
    justify-content: center;
  }

  /* Flag Issue button — full width on small screens */
  .insp-header .btn {
    flex: 1;
    justify-content: center;
  }
}

/* ── 10. Preview header ── */
@media (max-width: 1024px) {
  .preview-wrap {
    padding: 0.5rem 0.5rem 3rem !important;
    margin-top: 0.5rem !important;
  }

  .preview-header {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 0.75rem !important;
    padding: 1rem !important;
  }
}

/* ── 11. Modals — full width on iPad mini ── */
@media (max-width: 768px) {
  .modal-dialog {
    margin: 0.5rem;
    max-width: calc(100vw - 1rem);
  }
}

/* ── 12. Rating stars — tap targets sized to grid cell, not oversized ── */
@media (pointer: coarse) {
  /* Inside the inspection form grid, stars must stay compact to fit their cell.
     The grid cell height is ~50px; 1.6rem stars at 44px each would overflow. */
  .rating-stars button {
    font-size: 1rem;       /* fits within grid cell rows */
    padding: 0.15rem;
    min-height: unset;     /* do not enforce 44px — cell height controls this */
    min-width: unset;
  }

  /* Outside the grid (e.g. standalone forms), keep comfortable tap targets */
  :not(.form-grid) .rating-stars button {
    font-size: 1.4rem;
    padding: 0.2rem;
  }

  /* Upload zone — compact inside grid, comfortable outside */
  .upload-zone {
    min-height: 44px;      /* reduced from 80px — fits grid cell */
  }

  /* Signature pad — taller for finger drawing */
  .signature-pad-wrap {
    min-height: 120px !important;
  }

  /* Sig clear button — larger touch target */
  .sig-clear {
    padding: 0.3rem 0.6rem !important;
    font-size: 0.75rem !important;
  }
}

/* ── 13. Facility view action buttons row ── */
@media (max-width: 1024px) {
  .col-md-4.text-end {
    text-align: left !important;
    margin-top: 0.75rem;
  }
}

/* ── 14. Reports — filter bar ── */
@media (max-width: 820px) {
  .row.g-3 .col-md-3,
  .row.g-3 .col-md-4,
  .row.g-3 .col-md-2 {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

/* ── 15. Checklist items in legacy inspect view ── */
@media (max-width: 1024px) {
  .checklist-item {
    padding: 0.75rem !important;
  }

  .rating-option {
    min-width: 44px;
    min-height: 44px;
  }
}

/* ── 16. Prevent subpixel rendering issues on Retina displays ── */
@media (-webkit-min-device-pixel-ratio: 2) {
  .card,
  .modal-content {
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
}

/* ── 17. Safe-area insets (iPad with home indicator) ── */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
  .insp-footer,
  .container-fluid {
    padding-bottom: max(0.75rem, env(safe-area-inset-bottom));
  }
}