/**
 * @file
 * Ascent mobile foundation — shared Phase 1 responsive hardening.
 *
 * Canonical breakpoints: 768 (tablet), 1024 (desktop).
 * Touch target floor: 44×44 CSS px (2.75rem at 16px root).
 */

:root {
  --bp-md: 768px;
  --bp-lg: 1024px;
  --touch-min: 2.75rem;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-right: env(safe-area-inset-right, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left, 0px);
}

/* Prevent chrome overflow from widening the page past the viewport */
html {
  overflow-x: clip;
}

body {
  overflow-x: clip;
  max-width: 100%;
}

/* Safe-area padding on chrome — add to existing gutters, never replace them */
.site-header {
  padding-top: calc(1.5rem + var(--safe-top));
  padding-left: calc(var(--container-pad, 1.5rem) + var(--safe-left));
  padding-right: calc(var(--container-pad, 1.5rem) + var(--safe-right));
}

.page-content {
  padding-left: calc(var(--container-pad, 1.5rem) + var(--safe-left));
  padding-right: calc(var(--container-pad, 1.5rem) + var(--safe-right));
}

.site-footer {
  padding-left: calc(var(--container-pad, 1.5rem) + var(--safe-left));
  padding-right: calc(var(--container-pad, 1.5rem) + var(--safe-right));
  padding-bottom: calc(var(--safe-bottom));
}

/* Prefer dynamic viewport height on front shell */
.layout-container--front {
  min-height: 100vh;
  min-height: 100dvh;
}

/* Contained horizontal scroll for dense tables (fallback) */
.ascent-table-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

/* Sticky bottom action bars (forms / multi-step) */
.ascent-sticky-actions,
.job-tracker-form .form-actions,
.bidforge-upload-page .form-actions,
.bidforge-upload-bid-form .form-actions,
.bidforge-upload-rfp-form .form-actions,
.career-soft-skills-form .form-actions,
.interview-practice-form .form-actions {
  position: sticky;
  bottom: 0;
  z-index: 10;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1.5rem;
  padding: 1rem 0 calc(0.75rem + var(--safe-bottom));
  border-top: 1px solid var(--color-border, rgb(26 28 30 / 12%));
  background: color-mix(in srgb, var(--color-bg, #fbfbf9) 92%, transparent);
  backdrop-filter: blur(8px);
}

@media (max-width: 767px) {
  /* iOS zoom prevention: controls must compute to ≥16px */
  input[type="text"],
  input[type="email"],
  input[type="password"],
  input[type="search"],
  input[type="tel"],
  input[type="url"],
  input[type="number"],
  input[type="date"],
  input[type="datetime-local"],
  input[type="time"],
  select,
  textarea {
    font-size: 1rem !important;
  }

  /* Minimum touch targets for common interactive chrome */
  .btn,
  .button,
  a.button,
  .tabs a,
  .form-actions input[type="submit"],
  button[type="submit"],
  .job-tracker-tabs__tab,
  .bidforge-pipeline-tabs__tab,
  .job-tracker-discover__chip,
  .site-account__item {
    min-height: var(--touch-min);
    box-sizing: border-box;
  }

  .btn,
  .button,
  a.button,
  .form-actions input[type="submit"],
  button[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-block: 0.75rem;
  }

  /* Marketing hero: hierarchy handled in ascent.css — don't inflate tertiary link */
  .hero__actions .hero__text-link {
    min-height: var(--touch-min);
    padding-block: 0.65rem;
  }

  .hero__actions .hero__cta-primary.btn--lg {
    padding-block: 0.85rem;
  }

  .hero__actions .hero__cta-secondary {
    padding-block: 0.75rem;
  }

  /* Declutter header: hub + guest CTAs live in the drawer on phones */
  .site-header__actions .site-header__hub-link {
    display: none;
  }

  /* Keep residual header CTAs compact if any remain visible */
  .site-header__actions .btn {
    min-height: 2.5rem;
    padding-block: 0.5rem;
    padding-inline: 0.9rem;
  }

  /* Primary nav open: lock page scroll */
  body.ascent-nav-open {
    overflow: hidden;
  }

  /* Full-width primary CTAs in dense module headers */
  .job-tracker__actions .button,
  .job-tracker__actions a.button {
    flex: 1 1 auto;
    min-width: min(100%, 10rem);
  }
}

/* Prefer focus-visible parity with hover for interactive surfaces */
@media (hover: hover) and (pointer: fine) {
  /* Desktop hover styles remain in component CSS. */
}

@media (pointer: coarse) {
  a:focus-visible,
  button:focus-visible,
  .btn:focus-visible,
  .button:focus-visible {
    outline: 2px solid var(--color-brand-sage, #4a6741);
    outline-offset: 2px;
  }
}
