// Customer dispense/result layout measured from the prototype's device screen.
.vm-customer-canvas .vm-dispense-screen {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;

  .vm-dispense-brand {
    display: flex;
    flex: 0 0 80px;
    align-items: center;
    padding: 0 var(--vm-customer-gutter);
    .vm-customer-brand {
      gap: 8px;
    }
    .vm-customer-monogram {
      flex-basis: 36px;
      width: 36px;
      height: 36px;
      font-size: 14px;
      line-height: 20px;
    }
    .vm-customer-brand-name {
      font-size: 16px;
      line-height: 24px;
      color: rgba(36, 28, 63, 0.7);
    }
  }
  .vm-dispense-heading {
    flex-shrink: 0;
    padding: 8px var(--vm-customer-gutter) 16px;
    h1 {
      font-size: 44px;
      line-height: 1.05;
    }
    p {
      max-width: 38ch;
      margin-top: 12px;
      color: rgba(36, 28, 63, 0.7);
      font-size: 20px;
      line-height: 1.375;
    }
  }
  .vm-dispense-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-anchor: none;
    padding: 0 var(--vm-customer-gutter) 24px;
  }
  .vm-dispense-progress-card {
    border: 1px solid rgba(36, 28, 63, 0.1);
    border-radius: 24px;
    padding: 20px 24px;
    background: #fff;
  }
  .vm-dispense-counter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 8px 16px;
  }
  .vm-dispense-counter {
    font-family:
      "Vending Bricolage Grotesque", "Vending DM Sans", "PingFang SC",
      "Microsoft YaHei", sans-serif;
    font-size: 56px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.02em;
    span {
      color: rgba(36, 28, 63, 0.35);
    }
  }
  .vm-dispense-dropped {
    padding-bottom: 4px;
    color: rgba(36, 28, 63, 0.6);
    font-size: 18px;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
  }
  .vm-dispense-segments {
    display: flex;
    gap: 6px;
    margin-top: 20px;
  }
  .vm-dispense-segment {
    flex: 1;
    min-width: 0;
    height: 12px;
    border-radius: 999px;
    background: rgba(36, 28, 63, 0.1);
    transition: background-color 200ms;
  }
  .vm-dispense-segment-success {
    background: var(--vm-customer-primary);
  }
  .vm-dispense-segment-dispensing {
    background: var(--vm-primary-hover);
    animation: vm-dispense-pulse 1.5s ease-in-out infinite;
  }
  .vm-dispense-segment-failed {
    background: #dc454f;
  }
  .vm-dispense-segment-uncertain {
    background: #d68a17;
  }
  .vm-dispense-items {
    overflow: hidden;
    margin: 16px 0 0;
    padding: 0;
    list-style: none;
    border: 1px solid rgba(36, 28, 63, 0.1);
    border-radius: 24px;
    background: #fff;
  }
  .vm-dispense-item {
    display: flex;
    align-items: center;
    min-height: 76px;
    gap: 16px;
    padding: 12px 20px;
    border-bottom: 1px solid rgba(36, 28, 63, 0.1);
    background: #fff;
    // The active gradient must disappear together with its underlying theme color.
    transition: none;
    &:last-child {
      border-bottom: 0;
    }
  }
  .vm-dispense-item-icon {
    display: flex;
    flex: 0 0 44px;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    font-size: 24px;
  }
  .vm-dispense-item-copy {
    flex: 1;
    min-width: 0;
  }
  .vm-dispense-item-title {
    overflow-wrap: anywhere;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.4;
  }
  .vm-dispense-item-specification {
    margin-inline-start: 6px;
    color: rgba(36, 28, 63, 0.7);
    font-size: 16px;
    font-weight: 400;
  }
  .vm-dispense-item-status {
    margin-top: 2px;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.375;
  }
  .vm-dispense-item-message {
    margin-top: 4px;
    color: rgba(36, 28, 63, 0.7);
    font-size: 15px;
    line-height: 1.4;
    overflow-wrap: anywhere;
  }
  .vm-dispense-item-success .vm-dispense-item-icon {
    background: var(--vm-customer-accent);
  }
  .vm-dispense-item-dispensing {
    background: var(--vm-customer-soft);
    .vm-dispense-item-icon {
      background: var(--vm-customer-primary);
      color: var(--vm-primary-foreground);
    }
    .vm-dispense-item-status {
      color: var(--vm-customer-primary);
    }
  }
  .vm-dispense-item-pending {
    .vm-dispense-item-icon {
      background: rgba(36, 28, 63, 0.08);
      color: rgba(36, 28, 63, 0.4);
    }
    .vm-dispense-item-title {
      color: rgba(36, 28, 63, 0.6);
    }
    .vm-dispense-item-status {
      color: rgba(36, 28, 63, 0.5);
    }
  }
  .vm-dispense-item-failed {
    .vm-dispense-item-icon {
      background: #fde9eb;
      color: #bb2636;
    }
    .vm-dispense-item-status {
      color: #bb2636;
    }
  }
  .vm-dispense-item-uncertain {
    .vm-dispense-item-icon {
      background: #fff3d6;
      color: #9a640d;
    }
    .vm-dispense-item-status {
      color: #9a640d;
    }
  }
  .vm-dispense-collection-note {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    margin-top: 16px;
    padding: 16px 20px;
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.7);
    color: rgba(36, 28, 63, 0.85);
    font-size: 18px;
    line-height: 1.375;
    > div {
      flex: 1;
      min-width: 0;
    }
  }
  .vm-dispense-note-icon {
    display: flex;
    flex: 0 0 36px;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    margin-top: 2px;
    border-radius: 50%;
    background: var(--vm-customer-soft);
    color: var(--vm-customer-primary);
    font-size: 20px;
  }
  .vm-dispense-attention .vm-dispense-note-icon {
    background: #fde9eb;
    color: #bb2636;
  }
  .vm-dispense-summary {
    margin-top: 8px;
    font-weight: 600;
  }
  .vm-dispense-order {
    margin-top: 6px;
    color: rgba(36, 28, 63, 0.55);
    font-size: 14px;
  }
  .vm-dispense-preparing {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 24px;
    border-radius: 24px;
    background: #fff;
    font-size: 20px;
    .vm-prototype-icon {
      color: var(--vm-customer-primary);
      font-size: 28px;
    }
  }
  .vm-prototype-icon-loader-circle {
    animation: vm-dispense-spin 1s linear infinite;
  }
  .vm-dispense-footer {
    display: flex;
    flex-shrink: 0;
    flex-direction: column;
    gap: 12px;
    padding: 16px var(--vm-customer-gutter) max(32px, env(safe-area-inset-bottom, 0px));
    border-top: 1px solid rgba(0, 0, 0, 0.05);
    background: var(--vm-customer-page-bg);
  }
  .vm-dispense-countdown {
    color: rgba(36, 28, 63, 0.5);
    font-size: 16px;
    font-variant-numeric: tabular-nums;
    line-height: 24px;
    text-align: center;
  }
  .vm-dispense-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    width: 100%;
    min-height: 72px;
    padding: 12px 20px;
    border: 0;
    border-radius: 16px;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.5;
    .vm-prototype-icon {
      font-size: 28px;
    }
  }
  .vm-dispense-button-primary {
    background: var(--vm-customer-primary);
    color: var(--vm-primary-foreground);
    &:hover {
      background: var(--vm-primary-hover);
    }
    &:active {
      background: var(--vm-primary-active);
    }
  }
  .vm-dispense-pickup {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 16px 20px;
    border-radius: 24px;
    background: var(--vm-customer-ink);
    color: #fff;
    > div {
      min-width: 0;
    }
  }
  .vm-dispense-pickup-icon {
    display: flex;
    flex: 0 0 48px;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--vm-customer-accent);
    color: var(--vm-customer-ink);
    font-size: 28px;
  }
  .vm-dispense-pickup-title {
    font-size: 18px;
    font-weight: 600;
    line-height: 1.375;
  }
  .vm-dispense-wait {
    margin-top: 4px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 16px;
    line-height: 1.375;
  }
  .vm-dispense-contact {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border: 1px solid var(--vm-primary-border);
    border-left: 4px solid var(--vm-customer-primary);
    border-radius: 24px;
    background: #fff;
    color: var(--vm-customer-ink);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.4;
    text-align: left;
    p {
      flex: 1;
      min-width: 0;
      overflow-wrap: anywhere;
    }
  }
  .vm-dispense-contact-icon {
    display: flex;
    flex: 0 0 44px;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--vm-customer-soft);
    color: var(--vm-customer-primary);
    font-size: 26px;
  }
  .vm-dispense-pickup-pending {
    padding: 24px;
    .vm-dispense-pickup-icon {
      flex-basis: 64px;
      width: 64px;
      height: 64px;
      font-size: 36px;
    }
    .vm-dispense-pickup-title {
      font-size: 22px;
    }
  }
}

@container vending-customer (max-width: 620px) {
  .vm-customer-canvas .vm-dispense-screen {
    overflow-y: auto;

    .vm-dispense-content {
      min-height: 160px;
    }
    .vm-dispense-heading h1 {
      font-size: 32px;
    }
    .vm-dispense-heading p {
      font-size: 18px;
    }
    .vm-dispense-progress-card {
      padding: 16px;
    }
    .vm-dispense-counter {
      font-size: 40px;
    }
    .vm-dispense-item {
      gap: 12px;
      padding-inline: 16px;
    }
    .vm-dispense-contact {
      gap: 12px;
      padding: 12px;
      font-size: 16px;
    }
    .vm-dispense-pickup {
      gap: 12px;
      padding: 12px;
    }
  }
}

@keyframes vm-dispense-spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes vm-dispense-pulse {
  50% {
    opacity: 0.5;
  }
}
@media (prefers-reduced-motion: reduce) {
  .vm-customer-canvas .vm-dispense-screen {
    .vm-prototype-icon-loader-circle,
    .vm-dispense-segment-dispensing {
      animation: none;
    }
  }
}
