/* Checkout keeps nopCommerce's native accordion, AJAX endpoints and forms.
   This layer only turns those existing steps into a guided task flow with a
   compact, persistent server-rendered order summary. */

.checkout-page {
  min-width: 0;
}

.checkout-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(var(--filter-column-width), var(--checkout-sidebar-width));
  align-items: start;
  gap: var(--space-2xl);
}

.checkout-flow,
.checkout-sidebar {
  min-width: 0;
}

.checkout-sidebar {
  position: sticky;
  top: calc(var(--header-height) + var(--space-md));
  padding: var(--space-lg);
  border-top: var(--space-3xs) solid var(--color-action);
  background-color: var(--color-surface);
}

.checkout-sidebar__title {
  margin: 0 0 var(--space-md);
  font-size: var(--font-size-xl);
  line-height: var(--line-height-tight);
}

.checkout-sidebar .cart-list__header,
.checkout-sidebar .cart-options,
.checkout-sidebar .checkout-buttons,
.checkout-sidebar .addon-buttons,
.checkout-sidebar .terms-of-service,
.checkout-sidebar .cross-sells {
  display: none;
}

.checkout-sidebar .cart-panel {
  padding: 0;
  background: transparent;
}

.checkout-sidebar .cart-item {
  grid-template-columns: var(--order-thumbnail-width) minmax(0, 1fr) auto;
  gap: var(--space-sm);
  padding-block: var(--space-xs);
}

.checkout-sidebar .cart-item__cover {
  width: var(--order-thumbnail-width);
}

.checkout-sidebar .cart-item__quantity {
  color: var(--color-muted);
  font-size: var(--font-size-xs);
}

.checkout-sidebar .cart-item__quantity::before {
  content: "\00d7";
}

.checkout-sidebar .cart-item__subtotal,
.checkout-sidebar .cart-item__remove {
  display: none;
}

.checkout-sidebar .cart-item__title {
  font-size: var(--font-size-sm);
}

.checkout-sidebar .cart-footer {
  display: block;
  margin-top: var(--space-md);
}

.checkout-sidebar .totals {
  padding-top: var(--space-sm);
  border-top: 1px solid var(--color-border);
}

.checkout-sidebar .cart-total {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-xs);
}

.checkout-sidebar .cart-total td {
  padding-block: var(--space-2xs);
  border-bottom: 1px solid var(--color-border);
}

.checkout-sidebar .cart-total-right {
  text-align: right;
}

.checkout-sidebar .order-total td {
  padding-top: var(--space-sm);
  border-bottom: 0;
  font-size: var(--font-size-md);
}

.opc {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

.opc .tab-section {
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background-color: var(--color-canvas);
}

.opc .step-title {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  min-height: var(--tap-target);
  padding: var(--space-sm) var(--space-md);
  background-color: var(--color-surface);
  color: var(--color-muted);
}

.opc .allow .step-title {
  color: var(--color-ink);
  cursor: pointer;
}

.opc .active .step-title {
  border-bottom: 1px solid var(--color-border);
  background-color: var(--color-brand-soft);
}

.opc .step-title .number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 var(--tap-target);
  width: var(--tap-target);
  height: var(--tap-target);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background-color: var(--color-canvas);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-bold);
}

.opc .active .step-title .number {
  border-color: var(--color-action);
  background-color: var(--color-action);
  color: var(--color-footer-ink);
}

.opc .step-title .title {
  margin: 0;
  font-size: var(--font-size-md);
  line-height: var(--line-height-tight);
}

.opc .step {
  padding: var(--space-xl);
}

.opc .checkout-data,
.opc .enter-address,
.opc .section {
  min-width: 0;
}

.opc .checkout-data {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.opc .section {
  margin: 0;
}

.opc .select-billing-address,
.opc .select-shipping-address {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
}

.opc-select-address-container {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: end;
  gap: var(--space-2xs);
}

.opc-select-address-container .styled-select {
  min-width: 0;
}

.checkout-page .checkout-delete-address-button {
  border-color: var(--color-danger);
  color: var(--color-danger);
}

.opc .buttons {
  padding-top: var(--space-md);
  border-top: 1px solid var(--color-border);
}

.opc .back-link {
  margin: 0 auto 0 0;
}

.opc .back-link a,
.checkout-page .terms-of-service .read,
.checkout-page .details-link a {
  color: var(--color-muted);
  font-size: var(--font-size-xs);
  text-underline-offset: var(--space-3xs);
}

.opc .please-wait {
  color: var(--color-muted);
  font-size: var(--font-size-xs);
}

.method-list {
  display: grid;
  gap: var(--space-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

.method-list > li {
  padding: var(--space-md);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background-color: var(--color-canvas);
}

.method-name,
.payment-details {
  min-width: 0;
}

.method-name,
.payment-details,
.use-reward-points,
.ship-to-same-address .selector,
.terms-of-service {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2xs);
}

.method-name input,
.use-reward-points input,
.ship-to-same-address input,
.terms-of-service input {
  flex: 0 0 auto;
  width: var(--space-md);
  height: var(--space-md);
  margin-top: var(--space-3xs);
  accent-color: var(--color-action);
}

.method-description,
.payment-description,
.multiple-locations,
.min-amount-warning {
  margin-top: var(--space-2xs);
  color: var(--color-muted);
  font-size: var(--font-size-xs);
  line-height: var(--line-height-normal);
}

.checkout-page .terms-of-service {
  flex-wrap: wrap;
  padding: var(--space-md);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background-color: var(--color-surface);
  font-size: var(--font-size-sm);
}

.checkout-page .message-error,
.checkout-page .message-failure {
  padding: var(--space-sm);
  border-left: var(--space-3xs) solid var(--color-danger);
  background-color: var(--color-surface);
}

.order-progress ul {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  margin: 0 0 var(--space-xl);
  padding: 0;
  overflow-x: auto;
  list-style: none;
}

.order-progress li {
  flex: 0 0 auto;
}

.order-progress a {
  display: block;
  padding: var(--space-2xs) var(--space-sm);
  border-radius: var(--radius-pill);
  background-color: var(--color-surface);
  color: var(--color-muted);
  font-size: var(--font-size-xs);
  text-decoration: none;
}

.order-progress .active-step a {
  background-color: var(--color-brand-soft);
  color: var(--color-ink);
  font-weight: var(--font-weight-bold);
}

.checkout-page:not(:has(.checkout-workspace)) .page-body,
.order-completed-page .page-body {
  max-width: var(--technical-form-max);
}

.order-completed-page .order-completed {
  padding: var(--space-xl);
  border-top: var(--space-3xs) solid var(--color-action);
  background-color: var(--color-surface);
}

.order-completed-page .order-completed > .title {
  margin: 0 0 var(--space-md);
  font-size: var(--font-size-xl);
}

.order-completed-page .details {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
}

@media (hover: hover) and (pointer: fine) {
  .opc .allow .step-title:hover,
  .order-progress a:hover {
    background-color: var(--color-brand-soft-hover);
    color: var(--color-ink);
  }

  .opc .back-link a:hover,
  .checkout-page .terms-of-service .read:hover,
  .checkout-page .details-link a:hover {
    color: var(--color-action-hover);
  }

  .checkout-page .checkout-delete-address-button:hover {
    border-color: var(--color-danger-hover);
    background-color: var(--color-danger);
    color: var(--color-footer-ink);
  }
}

@media (max-width: 61.9375rem) {
  .checkout-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

  .checkout-sidebar {
    position: static;
    order: 2;
  }
}

@media (max-width: 36.25rem) {
  .opc .step {
    padding: var(--space-md);
  }

  .opc .step-title {
    padding: var(--space-xs);
  }

  .opc-select-address-container {
    grid-template-columns: minmax(0, 1fr);
  }

  .opc .buttons {
    align-items: stretch;
    flex-direction: column-reverse;
  }

  .opc .back-link {
    margin: 0;
    text-align: center;
  }

  .opc .buttons .button-1,
  .opc .buttons .button-2 {
    width: 100%;
  }

  .checkout-sidebar .cart-item {
    grid-template-columns: calc(var(--order-thumbnail-width) - var(--space-sm)) minmax(0, 1fr) auto;
  }
}
