/* Final responsive stabilization layer.
 * Loaded after max-ui-v3.css on purpose. The fidelity layer owns the look;
 * this file owns resilient geometry, viewport behavior and overflow rules.
 */

html[data-max-ui-fidelity="zip-v1"],
html[data-max-ui-fidelity="zip-v1"] body {
  width: 100%;
  min-width: 280px;
  min-height: 100%;
}

html[data-max-ui-fidelity="zip-v1"] body {
  min-height: 100svh;
  min-height: 100dvh;
  overflow-x: clip;
}

html[data-max-ui-fidelity="zip-v1"] :where(
  .app-shell,
  #content,
  .app-view,
  .page-heading,
  .heading-line,
  .section-heading,
  .secondary-view,
  .service-grid,
  .service-card,
  .profile-card,
  .profile-copy,
  .fidelity-profile-actions,
  .ui-profile-menu,
  .fidelity-submit-wizard,
  .fidelity-step-panel,
  .fidelity-step-card,
  .fidelity-kind-grid,
  .fidelity-deck-grid,
  .fidelity-card-list,
  #my-lots-content,
  #subscriptions-content,
  .flow-lot,
  .flow-lot > *,
  .active-auction,
  .active-details,
  .upcoming-section,
  .upcoming-list,
  .upcoming-row,
  .lot-detail-root,
  .lot-detail-body
) {
  min-width: 0;
  max-width: 100%;
}

html[data-max-ui-fidelity="zip-v1"] :where(img, picture, video, canvas) {
  display: block;
  max-width: 100%;
}

html[data-max-ui-fidelity="zip-v1"] :where(
  .card-image,
  .upcoming-image,
  .ui-lot-thumb img,
  .fidelity-card-choice img,
  .fidelity-confirm-media img,
  .profile-avatar img,
  .avatar img,
  .lot-detail-image
) {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

html[data-max-ui-fidelity="zip-v1"] :where(
  h1, h2, h3, p, strong, span, button, label, .auction-name, .flow-lot-title
) {
  overflow-wrap: anywhere;
}

/* Fixed bottom navigation must never cover the last actionable control. */
@media (max-width: 1179px) {
  html[data-max-ui-fidelity="zip-v1"] .app-shell {
    width: min(100%, 780px);
    min-height: 100svh;
    min-height: 100dvh;
    padding-bottom: calc(118px + env(safe-area-inset-bottom));
  }

  html[data-max-ui-fidelity="zip-v1"] .bottom-nav {
    bottom: max(10px, env(safe-area-inset-bottom));
    max-width: calc(100vw - 24px);
  }

  html[data-max-ui-fidelity="zip-v1"] .page-heading,
  html[data-max-ui-fidelity="zip-v1"] .section-heading {
    min-width: 0;
  }

  html[data-max-ui-fidelity="zip-v1"] .page-heading h1,
  html[data-max-ui-fidelity="zip-v1"] .secondary-heading h1,
  html[data-max-ui-fidelity="zip-v1"] .profile-page-title,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-submit-title {
    font-size: clamp(40px, 11vw, 64px);
    line-height: .95;
  }

  html[data-max-ui-fidelity="zip-v1"] .segment,
  html[data-max-ui-fidelity="zip-v1"] .flow-tabs {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
  }

  html[data-max-ui-fidelity="zip-v1"] .segment::-webkit-scrollbar,
  html[data-max-ui-fidelity="zip-v1"] .flow-tabs::-webkit-scrollbar {
    display: none;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-stepper {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-stepper::-webkit-scrollbar {
    display: none;
  }
}

@media (max-width: 599px) {
  html[data-max-ui-fidelity="zip-v1"] .app-shell {
    width: 100%;
    padding-right: max(12px, env(safe-area-inset-right));
    padding-left: max(12px, env(safe-area-inset-left));
  }

  html[data-max-ui-fidelity="zip-v1"] .topbar {
    gap: 8px;
  }

  html[data-max-ui-fidelity="zip-v1"] .identity-button {
    max-width: calc(100% - 96px);
  }

  html[data-max-ui-fidelity="zip-v1"] .identity-copy strong {
    font-size: clamp(21px, 6vw, 27px);
  }

  html[data-max-ui-fidelity="zip-v1"] .page-heading {
    align-items: flex-end;
    gap: 10px;
  }

  html[data-max-ui-fidelity="zip-v1"] #free-slots {
    flex: 0 1 auto;
    min-width: 0;
    padding-inline: 14px;
    white-space: normal;
  }

  html[data-max-ui-fidelity="zip-v1"] #my-lots-content,
  html[data-max-ui-fidelity="zip-v1"] #subscriptions-content,
  html[data-max-ui-fidelity="zip-v1"] .service-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb {
    grid-template-columns: minmax(92px, 31%) minmax(0, 1fr) !important;
    column-gap: 10px !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .ui-lot-thumb {
    width: 100% !important;
    max-width: 126px;
    aspect-ratio: 1 / 1.05;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-kind-grid,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-deck-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-wizard-actions {
    grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr);
  }
}

@media (max-width: 380px) {
  html[data-max-ui-fidelity="zip-v1"] .fidelity-kind-grid,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-deck-grid,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-wizard-actions {
    grid-template-columns: minmax(0, 1fr);
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb {
    grid-template-columns: 82px minmax(0, 1fr) !important;
  }
}

/* Tablet keeps the phone composition but uses the available width. */
@media (min-width: 600px) and (max-width: 1179px) {
  html[data-max-ui-fidelity="zip-v1"] .app-shell,
  html[data-max-ui-fidelity="zip-v1"] .lot-detail-root {
    width: min(calc(100% - 32px), 1040px);
  }

  html[data-max-ui-fidelity="zip-v1"] #my-lots-content,
  html[data-max-ui-fidelity="zip-v1"] #subscriptions-content,
  html[data-max-ui-fidelity="zip-v1"] .service-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-kind-grid,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-deck-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Desktop. The existing v3 layer turns the bottom navigation into a rail.
 * Give the content real desktop width and stop individual cards from using
 * phone-era fixed geometry inside that larger canvas.
 */
@media (min-width: 1180px) {
  html[data-max-ui-fidelity="zip-v1"] {
    --desktop-rail: 198px;
    --desktop-gap: 22px;
  }

  html[data-max-ui-fidelity="zip-v1"] body {
    background-attachment: fixed !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .app-shell {
    width: min(calc(100% - 72px), 1540px) !important;
    max-width: 1540px !important;
    min-height: calc(100dvh - 40px);
    margin: 20px auto !important;
    padding: 28px 34px 44px !important;
  }

  html[data-max-ui-fidelity="zip-v1"] #content,
  html[data-max-ui-fidelity="zip-v1"] .app-view {
    width: 100%;
  }

  html[data-max-ui-fidelity="zip-v1"] .page-heading h1,
  html[data-max-ui-fidelity="zip-v1"] .secondary-heading h1,
  html[data-max-ui-fidelity="zip-v1"] .profile-page-title,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-submit-title {
    font-size: clamp(42px, 3.2vw, 66px);
    line-height: .95;
  }

  html[data-max-ui-fidelity="zip-v1"] .page-heading,
  html[data-max-ui-fidelity="zip-v1"] .section-heading {
    gap: 18px;
  }

  /* Auctions: current auction gets the flexible area, upcoming gets a stable
     readable column instead of squeezing or drifting at intermediate widths. */
  html[data-max-ui-fidelity="zip-v1"] #auction-view {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(360px, 430px);
    column-gap: 26px;
    align-items: start;
  }

  html[data-max-ui-fidelity="zip-v1"] #auction-view > :where(
    .page-heading,
    .segment,
    .calendar-panel,
    .free-slots-panel,
    .rules-strip,
    .info-panel
  ) {
    grid-column: 1 / -1;
  }

  html[data-max-ui-fidelity="zip-v1"] #auction-view > section[aria-labelledby="active-title"] {
    grid-column: 1;
  }

  html[data-max-ui-fidelity="zip-v1"] #auction-view > .upcoming-section {
    grid-column: 2;
  }

  html[data-max-ui-fidelity="zip-v1"] .active-auction,
  html[data-max-ui-fidelity="zip-v1"] #no-active {
    min-height: 150px;
  }

  html[data-max-ui-fidelity="zip-v1"] .upcoming-row {
    grid-template-columns: 82px 58px minmax(0, 1fr) minmax(62px, auto) 18px;
  }

  /* My lots: two flexible cards. Most importantly, keep all textual children
     in column 2 so the thumbnail can never sit on top of the lot number/title. */
  html[data-max-ui-fidelity="zip-v1"] #my-lots-content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 16px !important;
    align-items: stretch;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot {
    width: 100%;
    min-height: 190px;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb {
    grid-template-columns: 128px minmax(0, 1fr) !important;
    grid-template-rows: auto auto auto 1fr auto;
    column-gap: 16px !important;
    align-items: start;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb > :not(.ui-lot-thumb):not(.flow-actions):not(.flow-edit-slot) {
    grid-column: 2 !important;
    min-width: 0;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb > :where(.flow-actions, .flow-edit-slot) {
    grid-column: 1 / -1 !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .ui-lot-thumb {
    grid-column: 1 !important;
    grid-row: 1 / span 4;
    width: 128px !important;
    max-width: 128px;
    aspect-ratio: 1 / 1.05;
    overflow: hidden;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot-title,
  html[data-max-ui-fidelity="zip-v1"] .flow-lot h3 {
    margin-right: 0;
    font-size: clamp(18px, 1.35vw, 25px);
    line-height: 1.08;
  }

  /* Submission: use the full content canvas and distribute choices evenly. */
  html[data-max-ui-fidelity="zip-v1"] #submit-view.fidelity-submit-ready,
  html[data-max-ui-fidelity="zip-v1"] #submit-view .fidelity-submit-wizard {
    width: 100%;
    max-width: none;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-step-card,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-confirm-card {
    width: 100%;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-kind-grid,
  html[data-max-ui-fidelity="zip-v1"] .fidelity-deck-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-card-list {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-wizard-actions {
    grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr);
  }

  /* Subscriptions: equal columns with independent scrolling content; no fixed
     width that lets long card names push the preset column away. */
  html[data-max-ui-fidelity="zip-v1"] #subscriptions-content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 18px !important;
    align-items: start;
  }

  html[data-max-ui-fidelity="zip-v1"] #subscriptions-content > * {
    width: 100%;
    min-width: 0;
  }

  /* Profile: make the two cards a deliberate desktop composition rather than
     leaving most of the screen blank. */
  html[data-max-ui-fidelity="zip-v1"] #profile-view {
    grid-template-columns: minmax(360px, .82fr) minmax(0, 1.35fr) !important;
    column-gap: 22px !important;
    align-items: start;
  }

  html[data-max-ui-fidelity="zip-v1"] #profile-view > .profile-page-title {
    grid-column: 1 / -1;
  }

  html[data-max-ui-fidelity="zip-v1"] #profile-view .profile-card {
    width: 100%;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-profile-actions,
  html[data-max-ui-fidelity="zip-v1"] .ui-profile-menu {
    width: 100%;
    margin: 0 !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .fidelity-profile-action,
  html[data-max-ui-fidelity="zip-v1"] .ui-profile-link {
    grid-template-columns: 34px minmax(0, 1fr) 18px;
  }

  html[data-max-ui-fidelity="zip-v1"] .lot-detail-root {
    width: min(calc(100% - 80px), 1180px) !important;
    max-width: 1180px;
  }
}

@media (min-width: 1180px) and (max-width: 1399px) {
  html[data-max-ui-fidelity="zip-v1"] .app-shell {
    width: min(calc(100% - 40px), 1320px) !important;
    padding-inline: 28px !important;
  }

  html[data-max-ui-fidelity="zip-v1"] #auction-view {
    grid-template-columns: minmax(0, 1fr) minmax(330px, 390px);
    column-gap: 18px;
  }

  html[data-max-ui-fidelity="zip-v1"] .flow-lot.has-ui-thumb {
    grid-template-columns: 106px minmax(0, 1fr) !important;
  }

  html[data-max-ui-fidelity="zip-v1"] .ui-lot-thumb {
    width: 106px !important;
  }
}

/* Motion and expensive effects are reduced when the platform asks for it. */
@media (prefers-reduced-motion: reduce) {
  html[data-max-ui-fidelity="zip-v1"] *,
  html[data-max-ui-fidelity="zip-v1"] *::before,
  html[data-max-ui-fidelity="zip-v1"] *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
