/*
 * LimoBroker production/responsive hardening layer.
 * Loaded after site.css and black-gold.css so fixes remain isolated and easy to audit.
 */

html {
  min-width: 320px;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  min-width: 320px;
  overflow-x: clip;
}

img,
svg,
video,
canvas,
iframe {
  max-width: 100%;
}

img,
video {
  height: auto;
}

.container,
.container-fluid,
.row,
.row > *,
[class*="col-"] {
  min-width: 0;
}

main,
.admin-main,
.admin-content,
.admin-card,
.form-card,
.admin-section-card,
.metric-card,
.offer-select-card,
.quote-summary {
  min-width: 0;
}

p,
dd,
.alert,
.form-text,
.field-help,
.text-secondary,
.small,
.admin-card,
.form-card {
  overflow-wrap: anywhere;
}

code,
pre {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

input,
select,
textarea,
.form-control,
.form-select,
.input-group {
  min-width: 0;
  max-width: 100%;
}

textarea.form-control {
  resize: vertical;
}

.form-label,
.wizard-input-label {
  display: inline-block;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.input-group > .form-control,
.input-group > .form-select,
.input-group > .form-floating {
  min-width: 0;
}

.btn {
  max-width: 100%;
}

.btn > i,
.btn > .spinner-border {
  flex: 0 0 auto;
}

.skip-link {
  position: fixed;
  top: .5rem;
  left: .5rem;
  z-index: 2000;
  transform: translateY(-150%);
  padding: .65rem .9rem;
  border-radius: .4rem;
  color: #fff;
  background: #111;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .3);
  transition: transform .15s ease;
}

.skip-link:focus {
  transform: translateY(0);
}

[id] {
  scroll-margin-top: 6.5rem;
}

/* Public navigation */
.site-header .navbar-toggler:focus-visible,
.admin-topbar .btn:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible,
.form-check-input:focus-visible {
  outline: 2px solid #e5c982;
  outline-offset: 2px;
}

.site-header .navbar-collapse {
  min-width: 0;
}

.site-main-nav,
.site-nav-actions {
  min-width: 0;
}

.site-nav-actions form {
  margin: 0;
}

.site-footer .d-flex {
  flex-wrap: wrap;
}

/* Public cards and forms */
.form-card,
.admin-card,
.admin-section-card {
  overflow: visible;
}

.form-card > .table-responsive,
.admin-card > .table-responsive,
.admin-section-card > .table-responsive {
  margin: 0;
}

.quote-summary dl,
.form-card dl,
.admin-card dl {
  margin-bottom: 0;
}

.quote-summary dd,
.form-card dd,
.admin-card dd {
  min-width: 0;
}

.offer-select-card {
  display: block;
}

.offer-select-card .price-display {
  white-space: nowrap;
}

.offer-select-card .badge {
  white-space: normal;
  text-align: left;
}


/* Avoid fixed-height media becoming cropped or disproportionately tall on narrow screens. */
.vehicle-main-image img,
.premium-vehicle-image img,
.luxury-vehicle-image img,
.premium-event-card img,
.luxury-event-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Maps and embedded payment widgets */
#vendorRouteMap,
.route-map,
.leaflet-container {
  width: 100%;
  min-height: 260px;
}

.route-map {
  height: 260px;
  overflow: hidden;
  background: #eef1f4;
}

#dropin-container {
  min-height: 110px;
  overflow: hidden;
}

/* Tables remain usable on touch screens without forcing the whole page to overflow. */
.table-responsive {
  width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

.table-modern {
  min-width: 720px;
}

.table-modern th,
.table-modern td {
  vertical-align: middle;
}

.table-modern td:last-child,
.table-modern th:last-child {
  white-space: nowrap;
}

/* Admin shell */
.admin-shell,
.admin-sidebar,
.admin-sidebar .offcanvas-body {
  min-height: 0;
}

.admin-sidebar {
  display: flex;
  flex-direction: column;
}

.admin-sidebar .offcanvas-body {
  height: 100%;
  flex: 1 1 auto;
}

.admin-topbar {
  min-height: 78px;
  height: auto;
}

.admin-topbar > div:first-of-type {
  min-width: 0;
}

.admin-topbar h1 {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.admin-content {
  min-width: 0;
}

.admin-action-bar {
  flex-wrap: wrap;
}

.admin-action-bar .btn-toolbar,
.admin-action-bar .d-flex {
  flex-wrap: wrap;
}

.admin-section-header,
.admin-card .border-bottom,
.filter-bar,
.metric-card {
  min-width: 0;
}

.admin-section-header > *,
.admin-action-bar > *,
.metric-card > * {
  min-width: 0;
}

.tox-tinymce,
.admin-rich-editor {
  max-width: 100% !important;
}

.tox .tox-toolbar__primary {
  flex-wrap: wrap !important;
}

.admin-data-tabs {
  overflow-x: auto;
  flex-wrap: nowrap;
  padding-bottom: .25rem;
  scrollbar-width: thin;
}

.admin-data-tabs .nav-link {
  white-space: nowrap;
}

/* Make browser-native validation and server validation equally visible. */
.input-validation-error,
.form-control.input-validation-error,
.form-select.input-validation-error {
  border-color: #dc3545;
}

.validation-summary-valid,
.field-validation-valid {
  display: none;
}

[data-submit-locked="true"] {
  cursor: wait;
}

[data-submit-locked="true"] button[type="submit"],
[data-submit-locked="true"] input[type="submit"] {
  pointer-events: none;
}

@media (max-width: 1399.98px) {
  .site-header .navbar-collapse {
    max-height: calc(100dvh - 72px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-bottom: 1rem;
  }

  .site-main-nav {
    margin-inline: 0 !important;
  }
}

@media (max-width: 991.98px) {
  .admin-sidebar {
    width: min(88vw, 310px);
  }

  .admin-topbar {
    padding: .75rem 1rem;
  }

  .admin-content {
    padding: 1rem;
  }

  .admin-action-bar {
    margin: -1rem -1rem 1rem;
  }

  .quote-summary {
    position: static;
  }

  .premium-cta,
  .luxury-final-cta {
    align-items: stretch;
  }

  .premium-cta .btn,
  .luxury-final-cta .btn {
    align-self: flex-start;
  }
}

@media (max-width: 767.98px) {
  body {
    font-size: .96rem;
  }

  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea {
    font-size: 16px !important; /* prevents iOS form zoom */
  }

  .form-shell {
    padding-block: 1.25rem;
  }

  .form-card,
  .admin-card,
  .admin-section-card {
    border-radius: .65rem;
  }

  .form-card.p-4,
  .form-card.p-5,
  .admin-card.p-4,
  .admin-section-body {
    padding: 1rem !important;
  }

  .filter-bar {
    padding: .85rem;
  }

  .filter-bar .btn,
  .filter-bar .form-control,
  .filter-bar .form-select {
    min-height: 44px;
  }

  .table-modern {
    min-width: 660px;
  }

  .table-modern thead th,
  .table-modern tbody td {
    padding: .75rem;
  }

  .offer-select-card .d-flex.justify-content-between,
  .offer-select-card .d-flex.flex-wrap.justify-content-between {
    align-items: flex-start;
  }

  .offer-select-card .price-display {
    font-size: 1.55rem;
  }

  #vendorRouteMap,
  .route-map,
  .leaflet-container {
    min-height: 230px;
  }

  .route-map {
    height: 230px;
  }

  .admin-action-bar .action-title,
  .admin-action-bar .btn-toolbar {
    width: 100%;
  }

  .admin-action-bar .btn-toolbar .btn,
  .admin-action-bar .btn-toolbar form,
  .admin-action-bar .btn-toolbar form .btn {
    min-width: 0;
  }

  .admin-section-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .vehicle-main-image {
    height: auto !important;
    aspect-ratio: 4 / 3;
  }

  .premium-feature-panel,
  .luxury-feature-panel {
    min-height: 420px;
  }

  .cms-hero {
    min-height: 360px;
  }

  .modal-dialog {
    margin: .75rem;
  }
}

@media (max-width: 575.98px) {
  .site-header .site-nav-container,
  .black-gold-hero .container,
  main > .container,
  .form-shell > .container,
  .site-footer > .container {
    padding-inline: .85rem;
  }

  .site-header .navbar-brand {
    font-size: 1.3rem;
  }

  .site-header .brand-mark {
    width: 2rem;
    height: 2rem;
  }

  .site-nav-actions {
    gap: .5rem !important;
  }

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

  .wizard-choice-grid-3,
  .wizard-choice-grid-4 {
    grid-template-columns: 1fr;
  }

  .premium-image-stack,
  .luxury-image-stack {
    min-height: 340px !important;
  }

  .premium-image-stack .primary,
  .luxury-image-stack .primary {
    height: 300px !important;
  }

  .premium-image-stack .secondary,
  .luxury-image-stack .secondary {
    height: 155px !important;
    border-width: 5px;
  }

  .premium-event-card,
  .luxury-event-card {
    height: auto !important;
    min-height: 310px;
    aspect-ratio: 4 / 5;
  }

  .wizard-topline {
    gap: .65rem;
  }

  .wizard-step-counter span {
    font-size: 1.9rem;
  }

  .wizard-actions {
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.35fr);
  }

  .wizard-actions .btn {
    width: 100%;
    min-width: 0;
  }

  .wizard-submit {
    grid-column: 2;
  }

  .offer-select-card {
    padding: 1rem !important;
  }

  .offer-select-card > .d-flex {
    gap: .65rem !important;
  }

  .offer-select-card .flex-grow-1 > .d-flex {
    flex-direction: column;
  }

  .offer-select-card .text-end {
    text-align: left !important;
  }

  .price-display {
    font-size: 1.45rem;
  }

  .admin-topbar h1 {
    max-width: 52vw;
    font-size: 1rem;
  }

  .admin-user-menu {
    padding-inline: .25rem;
  }

  .admin-content {
    padding: .75rem;
  }

  .admin-action-bar {
    margin: -.75rem -.75rem .85rem;
    padding: .75rem;
  }

  .admin-action-bar .btn-toolbar {
    grid-template-columns: 1fr !important;
  }

  .admin-action-bar .btn-toolbar .btn,
  .admin-action-bar .btn-toolbar form,
  .admin-action-bar .btn-toolbar form .btn {
    width: 100%;
  }

  .metric-card {
    padding: .9rem;
  }

  .metric-icon {
    width: 2.65rem;
    height: 2.65rem;
  }

  .metric-value {
    font-size: 1.35rem;
  }

  .pagination {
    flex-wrap: wrap;
    gap: .25rem;
  }

  .pagination .page-link {
    border-radius: .35rem !important;
  }

  .btn:not(.btn-sm):not(.btn-close) {
    min-height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .skip-link,
  .btn,
  .form-control,
  .form-select {
    transition: none !important;
  }
}
