/* Itinerary Planner — GTM builder */

.ipl-builder-page .dash-bottom-nav {
  display: none;
}

.ipl-builder-page .dash-main--desktop {
  display: flex !important;
}

.ipl-builder-page .dash-main--mobile {
  display: none !important;
}

.ipl-builder-page .dash-content {
  padding: 0;
  max-width: none;
}

.ipl-builder {
  min-height: calc(100vh - var(--dash-header-height, 0px));
  background: color-mix(in srgb, var(--color-outline-variant) 35%, var(--color-surface-container-low));
  background-image: radial-gradient(color-mix(in srgb, var(--color-outline) 25%, transparent) 1px, transparent 1px);
  background-size: 20px 20px;
}

.ipl-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  background: var(--color-surface-container-lowest);
  border-bottom: 1px solid var(--color-outline-variant);
  position: sticky;
  top: 0;
  z-index: 20;
}

.ipl-toolbar__left {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  min-width: 0;
}

.ipl-toolbar__title {
  margin: 0;
  font-size: var(--font-size-headline-sm);
  color: var(--color-primary);
}

.ipl-toolbar__divider {
  width: 1px;
  height: 1.5rem;
  background: var(--color-outline-variant);
}

.ipl-toolbar__subtitle {
  margin: 0;
  color: var(--color-on-surface-variant);
}

.ipl-toolbar__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs);
}

.ipl-btn-outline {
  display: inline-flex;
  align-items: center;
  gap: var(--space-base);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-lg);
  background: var(--color-surface-container-lowest);
  color: var(--color-on-surface-variant);
  padding: var(--space-xs) var(--space-sm);
  font-family: var(--font-family-base);
  font-size: var(--font-size-label-md);
  font-weight: var(--font-weight-label-md);
  cursor: pointer;
  min-height: 2.5rem;
  text-decoration: none;
}

.ipl-btn-outline:hover {
  background: var(--color-surface-container-low);
}

.ipl-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-base);
  border: none;
  border-radius: var(--radius-lg);
  background: var(--color-primary-container);
  color: var(--color-on-primary);
  padding: var(--space-xs) var(--space-md);
  font-family: var(--font-family-base);
  font-size: var(--font-size-label-md);
  font-weight: var(--font-weight-label-md);
  cursor: pointer;
  min-height: 2.5rem;
  box-shadow: var(--shadow-card);
}

.ipl-canvas {
  padding: var(--space-md) var(--space-sm) calc(var(--space-xl) + var(--space-md));
  display: flex;
  justify-content: center;
}

.ipl-canvas__inner {
  width: min(100%, 56rem);
}

.ipl-lead-banner {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  margin-bottom: var(--space-md);
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface-container-lowest));
  border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
  border-radius: var(--radius-xl);
}

.ipl-lead-banner .material-symbols-outlined {
  color: var(--color-primary);
}

.ipl-resume-banner {
  margin: 0 var(--space-md) var(--space-md);
  max-width: calc(var(--ipl-canvas-max, 960px) + var(--space-md) * 2);
}

@media (min-width: 768px) {
  .ipl-resume-banner {
    margin-left: auto;
    margin-right: auto;
  }
}

.ipl-progress {
  margin-bottom: var(--space-md);
}

.ipl-progress__labels {
  display: flex;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: var(--font-size-label-sm);
  font-weight: 700;
}

.ipl-progress__labels span:first-child {
  color: var(--color-primary);
}

.ipl-progress__labels span:last-child {
  color: var(--color-on-surface-variant);
}

.ipl-progress__bar {
  display: flex;
  gap: var(--space-xs);
  height: 0.375rem;
}

.ipl-progress__segment {
  flex: 1;
  border-radius: var(--radius-full);
  background: var(--color-surface-container-highest);
}

.ipl-progress__segment--active {
  background: var(--color-primary);
  box-shadow: 0 0 8px color-mix(in srgb, var(--color-primary) 35%, transparent);
}

.ipl-card {
  background: var(--color-surface-container-lowest);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

.ipl-card__header {
  padding: var(--space-md);
  border-bottom: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-low);
}

.ipl-card__header h2 {
  margin: 0 0 var(--space-base);
}

.ipl-card__header p {
  margin: 0;
  color: var(--color-on-surface-variant);
}

.ipl-card__body {
  padding: var(--space-md);
}

.ipl-section {
  margin-bottom: var(--space-lg);
}

.ipl-section:last-child {
  margin-bottom: 0;
}

.ipl-section__head {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}

.ipl-section__icon {
  width: 2rem;
  height: 2rem;
  border-radius: var(--radius-lg);
  background: var(--color-primary-fixed);
  color: var(--color-on-primary-fixed-variant);
  display: flex;
  align-items: center;
  justify-content: center;
}

.ipl-section__head h3 {
  margin: 0;
}

.ipl-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-md);
}

.ipl-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-base);
}

.ipl-field--full {
  grid-column: 1 / -1;
}

.ipl-field label {
  font-size: var(--font-size-label-sm);
  font-weight: 700;
  color: var(--color-on-surface-variant);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.ipl-control {
  width: 100%;
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-lg);
  background: var(--color-surface-container-lowest);
  padding: var(--space-xs) var(--space-sm);
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-md);
  color: var(--color-on-surface);
  box-sizing: border-box;
  min-height: 2.75rem;
}

.ipl-control:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 14%, transparent);
}

.ipl-input-icon {
  position: relative;
}

.ipl-input-icon .material-symbols-outlined {
  position: absolute;
  left: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-outline);
  pointer-events: none;
}

.ipl-input-icon .ipl-control {
  padding-left: calc(var(--space-md) + var(--space-sm));
}

.ipl-travelers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-sm);
}

.ipl-traveler-input {
  position: relative;
}

.ipl-traveler-input span {
  position: absolute;
  left: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.625rem;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--color-on-surface-variant);
}

.ipl-traveler-input .ipl-control {
  padding-left: 4.5rem;
  text-align: right;
}

.ipl-duration {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.ipl-duration input[type="range"] {
  flex: 1;
  accent-color: var(--color-primary);
}

.ipl-duration__value {
  min-width: 2.5rem;
  text-align: center;
  font-weight: 700;
  padding: var(--space-base) var(--space-xs);
  border-radius: var(--radius-default);
  background: var(--color-primary-fixed);
  color: var(--color-on-primary-fixed-variant);
}

.ipl-room-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-sm);
}

.ipl-room-grid label {
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
}

.ipl-toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-sm);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-lg);
  background: var(--color-surface-container-lowest);
  max-width: 28rem;
  margin-left: auto;
}

.ipl-toggle {
  position: relative;
  width: 2.75rem;
  height: 1.5rem;
  flex-shrink: 0;
}

.ipl-toggle input {
  opacity: 0;
  width: 0;
  height: 0;
}

.ipl-toggle__track {
  position: absolute;
  inset: 0;
  background: var(--color-surface-container-highest);
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: background 0.2s;
}

.ipl-toggle__track::after {
  content: '';
  position: absolute;
  width: 1.25rem;
  height: 1.25rem;
  left: 2px;
  top: 2px;
  background: var(--color-surface-container-lowest);
  border-radius: var(--radius-full);
  transition: transform 0.2s;
  box-shadow: var(--shadow-card);
}

.ipl-toggle input:checked + .ipl-toggle__track {
  background: var(--color-primary);
}

.ipl-toggle input:checked + .ipl-toggle__track::after {
  transform: translateX(1.25rem);
}

.ipl-meals {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-sm);
}

.ipl-meal-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  padding: var(--space-md) var(--space-sm);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  text-align: center;
}

.ipl-meal-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.ipl-meal-card .material-symbols-outlined {
  font-size: 1.75rem;
  color: var(--color-outline);
}

.ipl-meal-card span:last-child {
  font-size: var(--font-size-label-md);
  font-weight: 700;
}

.ipl-meal-card:has(input:checked) {
  border-color: var(--color-primary);
  background: var(--color-primary-fixed);
}

.ipl-meal-card:has(input:checked) .material-symbols-outlined {
  color: var(--color-primary);
}

.ipl-meal-card__check {
  position: absolute;
  top: var(--space-xs);
  right: var(--space-xs);
  opacity: 0;
  color: var(--color-primary);
  font-size: 1rem;
}

.ipl-meal-card:has(input:checked) .ipl-meal-card__check {
  opacity: 1;
}

.ipl-card__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-md);
  border-top: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-lowest);
}

.ipl-btn-cancel {
  display: inline-flex;
  align-items: center;
  gap: var(--space-base);
  border: none;
  background: transparent;
  color: var(--color-on-surface-variant);
  font-family: var(--font-family-base);
  font-size: var(--font-size-label-md);
  font-weight: 700;
  cursor: pointer;
  padding: var(--space-xs);
}

.ipl-btn-next {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  border: none;
  border-radius: var(--radius-lg);
  background: var(--color-primary-container);
  color: var(--color-on-primary);
  padding: var(--space-sm) var(--space-lg);
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-md);
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--shadow-card);
}

.ipl-helper {
  margin-top: var(--space-md);
  text-align: center;
  color: var(--color-on-surface-variant);
  max-width: 32rem;
  margin-left: auto;
  margin-right: auto;
}

.ipl-autosave {
  position: fixed;
  right: var(--space-md);
  bottom: var(--space-md);
  font-size: 0.6875rem;
  font-weight: 500;
  padding: var(--space-base) var(--space-xs);
  border-radius: var(--radius-default);
  background: color-mix(in srgb, var(--color-surface-container-highest) 80%, transparent);
  color: var(--color-on-surface-variant);
  backdrop-filter: blur(4px);
}

.ipl-step {
  display: none;
}

.ipl-step--active {
  display: block;
}

.ipl-step-legacy {
  padding: var(--space-md);
}

.ipl-step-legacy .card {
  background: var(--color-surface-container-lowest);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  padding: var(--space-md);
}

@media (max-width: 900px) {
  .ipl-form-grid,
  .ipl-room-grid,
  .ipl-meals {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ipl-toggle-row {
    margin-left: 0;
    max-width: none;
  }
}

@media (max-width: 560px) {
  .ipl-toolbar__subtitle,
  .ipl-toolbar__divider {
    display: none;
  }

  .ipl-form-grid,
  .ipl-travelers,
  .ipl-room-grid,
  .ipl-meals {
    grid-template-columns: 1fr;
  }

  .ipl-canvas {
    padding-left: var(--space-xs);
    padding-right: var(--space-xs);
  }
}

/* Step 2 — Day-wise Planning */

.ipl-step2-layout {
  display: flex;
  min-height: calc(100vh - 4rem);
}

.ipl-step2-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.ipl-step2-header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  background: var(--color-surface-container-lowest);
  border-bottom: 1px solid var(--color-outline-variant);
}

.ipl-step2-breadcrumb {
  display: flex;
  align-items: center;
  gap: var(--space-base);
  margin-bottom: var(--space-xs);
  color: var(--color-on-surface-variant);
}

.ipl-step2-breadcrumb__current {
  color: var(--color-primary);
  font-weight: 700;
}

.ipl-step2-header h2 {
  margin: 0 0 var(--space-base);
}

.ipl-step2-header p {
  margin: 0;
  max-width: 36rem;
}

.ipl-step2-progress {
  min-width: min(100%, 15rem);
}

.ipl-step2-progress__labels {
  display: flex;
  justify-content: space-between;
  margin-bottom: var(--space-xs);
}

.ipl-step2-progress__bar {
  height: 0.5rem;
  background: var(--color-surface-container-highest);
  border-radius: var(--radius-full);
  overflow: hidden;
}

.ipl-step2-progress__fill {
  height: 100%;
  background: var(--color-primary);
  border-radius: var(--radius-full);
  transition: width 0.4s ease;
}

.ipl-step2-canvas {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-lg);
}

.ipl-timeline {
  max-width: 56rem;
  margin: 0 auto;
  position: relative;
}

.ipl-timeline::before {
  content: '';
  position: absolute;
  left: 1.4375rem;
  top: 2.5rem;
  bottom: var(--space-md);
  width: 2px;
  background: var(--color-outline-variant);
  z-index: 0;
}

.ipl-day-row {
  display: flex;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
  position: relative;
}

.ipl-day-badge {
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  margin-top: var(--space-sm);
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-headline-sm);
  font-weight: 700;
  z-index: 1;
  background: var(--color-surface-container-lowest);
  border: 2px solid var(--color-outline-variant);
  color: var(--color-on-surface-variant);
}

.ipl-day-badge--active {
  background: var(--color-primary-container);
  border-color: var(--color-primary-container);
  color: var(--color-on-primary);
  box-shadow: 0 4px 12px color-mix(in srgb, var(--color-primary) 25%, transparent);
}

.ipl-day-card {
  flex: 1;
  background: var(--color-surface-container-lowest);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: border-color 0.2s;
}

.ipl-day-card:hover {
  border-color: color-mix(in srgb, var(--color-primary) 35%, var(--color-outline-variant));
}

.ipl-day-card__body {
  padding: var(--space-md);
}

.ipl-day-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}

.ipl-day-card__head h3 {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
}

.ipl-day-date {
  font-size: var(--font-size-label-md);
  font-weight: 400;
  color: var(--color-on-surface-variant);
  background: var(--color-surface-container);
  padding: var(--space-base) var(--space-sm);
  border-radius: var(--radius-full);
}

.ipl-day-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-md);
}

.ipl-day-grid__full {
  grid-column: 1 / -1;
}

.ipl-select-wrap {
  position: relative;
}

.ipl-select-wrap .material-symbols-outlined {
  position: absolute;
  right: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-on-surface-variant);
  pointer-events: none;
  font-size: 1.25rem;
}

.ipl-select-wrap select {
  appearance: none;
  padding-right: calc(var(--space-md) + var(--space-sm));
}

.ipl-sightseeing-empty,
.ipl-sightseeing-loading {
  grid-column: 1 / -1;
  text-align: center;
  padding: var(--space-md);
  color: var(--color-on-surface-variant);
}

.ipl-sightseeing-error {
  grid-column: 1 / -1;
  color: var(--color-error);
  padding: var(--space-sm);
}

.ipl-activity-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.ipl-activity-row {
  display: grid;
  grid-template-columns: 10rem 1fr auto;
  gap: var(--space-sm);
  align-items: flex-start;
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  padding: var(--space-sm);
  background: var(--color-surface-container-lowest);
}

.ipl-activity-main {
  min-width: 0;
}

.ipl-activity-main__row {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.ipl-priority-pill {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  padding: var(--space-base) var(--space-xs);
  border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--color-tertiary-fixed) 35%, transparent);
  color: var(--color-on-tertiary-fixed);
  font-size: var(--font-size-label-sm);
  font-weight: 700;
}

.ipl-priority-pill--medium {
  background: #fff4cc;
  color: #7a5c00;
}

.ipl-priority-pill--high {
  background: #dcfce7;
  color: #166534;
}

.ipl-priority-pill--low {
  background: #fee2e2;
  color: #991b1b;
}

.ipl-activity-custom-inline {
  min-width: 12rem;
  flex: 1;
}

.ipl-meal-suggestion {
  margin-top: var(--space-xs);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
}

.ipl-meal-suggest-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-base);
  border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, var(--color-outline-variant));
  border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--color-secondary-container) 20%, transparent);
  color: var(--color-on-secondary-container);
  padding: var(--space-base) var(--space-sm);
  font-family: var(--font-family-base);
  font-size: var(--font-size-label-sm);
  font-weight: 700;
  cursor: pointer;
}

.ipl-meal-suggest-btn .material-symbols-outlined {
  font-size: 1rem;
}

.ipl-meal-suggest-btn--night {
  border-color: color-mix(in srgb, var(--color-primary) 30%, var(--color-outline-variant));
  background: color-mix(in srgb, var(--color-primary-fixed) 35%, transparent);
  color: var(--color-primary);
}

.ipl-activity-error {
  margin: var(--space-base) 0 0;
  font-size: var(--font-size-label-sm);
  color: var(--color-error);
}

.ipl-activity-issue {
  margin: var(--space-base) 0 0;
  font-size: var(--font-size-label-sm);
  line-height: 1.4;
  border-radius: var(--radius-md);
  padding: var(--space-xs) var(--space-sm);
}

.ipl-activity-issue--error {
  color: var(--color-error);
  background: color-mix(in srgb, var(--color-error) 8%, transparent);
}

.ipl-activity-issue--warning {
  color: color-mix(in srgb, var(--color-on-surface) 85%, #b45309);
  background: color-mix(in srgb, #f59e0b 12%, transparent);
}

.ipl-activity-issue[role="button"] {
  cursor: pointer;
  min-height: 2.75rem;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-xs);
}

.ipl-activity-issue[role="button"]:hover {
  filter: brightness(0.97);
}

.ipl-activity-issue__link {
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

body.ipl-modal-open {
  overflow: hidden;
}

.ipl-schedule-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.ipl-schedule-modal[hidden] {
  display: none !important;
}

.ipl-schedule-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgb(0 0 0 / 45%);
}

.ipl-schedule-modal__panel {
  position: relative;
  width: 100%;
  max-height: 90vh;
  overflow: auto;
  background: var(--color-surface);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
}

.ipl-schedule-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-md);
  border-bottom: 1px solid var(--color-outline-variant);
}

.ipl-schedule-modal__title {
  margin: 0;
  font-size: var(--font-size-title-md);
  font-weight: 600;
}

.ipl-schedule-modal__close {
  border: none;
  background: transparent;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--color-on-surface-variant);
}

.ipl-schedule-modal__close:hover {
  background: var(--color-surface-container);
}

.ipl-schedule-modal__body {
  padding: var(--space-md);
}

.ipl-schedule-modal__footer {
  padding: var(--space-md);
  border-top: 1px solid var(--color-outline-variant);
}

.ipl-schedule-modal__section-title {
  margin: 0 0 var(--space-sm);
  font-size: var(--font-size-label-lg);
  font-weight: 600;
}

.ipl-schedule-modal__activity {
  margin-bottom: var(--space-md);
  padding: var(--space-sm);
  border-radius: var(--radius-md);
  background: var(--color-surface-container-low);
}

.ipl-schedule-modal__activity-time {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-md);
  font-size: var(--font-size-body-md);
}

.ipl-schedule-modal__table-wrap {
  overflow-x: auto;
}

.ipl-schedule-modal__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-body-md);
}

.ipl-schedule-modal__table th,
.ipl-schedule-modal__table td {
  padding: var(--space-sm);
  text-align: left;
  border-bottom: 1px solid var(--color-outline-variant);
}

.ipl-schedule-modal__row--current {
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
}

.ipl-schedule-modal__status--closed {
  color: var(--color-error);
  font-weight: 500;
}

.ipl-schedule-modal__status--open {
  color: var(--color-on-surface);
}

@media (min-width: 768px) {
  .ipl-schedule-modal {
    align-items: center;
    padding: var(--space-md);
  }

  .ipl-schedule-modal__panel {
    max-width: 32rem;
    border-radius: var(--radius-xl);
    max-height: 85vh;
  }
}

.ipl-activity-remove {
  border: none;
  background: transparent;
  color: var(--color-on-surface-variant);
  width: 2rem;
  height: 2rem;
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  margin-top: calc(var(--space-md) + 2px);
}

.ipl-activity-remove:hover {
  background: var(--color-error-container);
  color: var(--color-error);
}

.ipl-activity-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}

.ipl-step2-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-md) var(--space-lg);
  background: var(--color-surface-container-lowest);
  border-top: 1px solid var(--color-outline-variant);
}

.ipl-step2-footer__right {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.ipl-step2-footer__hint {
  font-style: italic;
}

.ipl-step2-sidebar {
  display: none;
  width: 20rem;
  flex-shrink: 0;
  padding: var(--space-md);
  background: var(--color-surface-container-lowest);
  border-left: 1px solid var(--color-outline-variant);
  overflow-y: auto;
}

.ipl-step2-sidebar h3 {
  margin: 0 0 var(--space-md);
}

.ipl-summary-card {
  background: var(--color-surface-container-low);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  padding: var(--space-md);
  margin-bottom: var(--space-md);
}

.ipl-summary-card__head {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}

.ipl-summary-card__icon {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--color-primary) 12%, transparent);
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
}

.ipl-summary-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.ipl-summary-row {
  display: flex;
  justify-content: space-between;
  gap: var(--space-sm);
  font-size: var(--font-size-body-md);
}

.ipl-summary-tip {
  background: color-mix(in srgb, var(--color-primary) 6%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
  border-radius: var(--radius-xl);
  padding: var(--space-md);
}

.ipl-summary-tip h4 {
  margin: 0 0 var(--space-xs);
  display: flex;
  align-items: center;
  gap: var(--space-base);
}

.ipl-summary-tip p {
  margin: 0;
}

@media (min-width: 1200px) {
  .ipl-step2-sidebar {
    display: flex;
    flex-direction: column;
  }
}

@media (max-width: 900px) {
  .ipl-day-grid {
    grid-template-columns: 1fr;
  }

  .ipl-activity-row {
    grid-template-columns: 1fr;
  }

  .ipl-step2-footer__hint {
    display: none;
  }
}

@media (max-width: 560px) {
  .ipl-timeline::before {
    display: none;
  }

  .ipl-day-row {
    flex-direction: column;
    gap: var(--space-xs);
  }

  .ipl-day-badge {
    margin-top: 0;
    width: 2.5rem;
    height: 2.5rem;
  }

  .ipl-activity-main__row {
    flex-direction: column;
    align-items: stretch;
  }

  .ipl-step2-header,
  .ipl-step2-canvas,
  .ipl-step2-footer {
    padding-left: var(--space-sm);
    padding-right: var(--space-sm);
  }
}

.ipl-autocomplete {
  position: relative;
}

.ipl-autocomplete__list {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  z-index: 40;
  max-height: 14rem;
  overflow-y: auto;
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}

.ipl-autocomplete__option {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  padding: var(--space-sm);
  border: none;
  border-bottom: 1px solid var(--color-outline-variant);
  background: transparent;
  text-align: left;
  cursor: pointer;
  min-height: 2.75rem;
}

.ipl-autocomplete__option:last-child {
  border-bottom: none;
}

.ipl-autocomplete__option:hover,
.ipl-autocomplete__option:focus-visible {
  background: var(--color-surface-container);
  outline: none;
}

.ipl-autocomplete__option-title {
  font-size: var(--font-size-body-md);
  color: var(--color-on-surface);
}

.ipl-autocomplete__option-meta {
  font-size: var(--font-size-label-sm);
  color: var(--color-on-surface-variant);
}

.ipl-travel-loading {
  margin: 0;
  color: var(--color-on-surface-variant);
}

.ipl-travel-error {
  display: flex;
  gap: var(--space-sm);
  align-items: flex-start;
  padding: var(--space-md);
  border-radius: var(--radius-lg);
  border: 1px solid color-mix(in srgb, var(--color-error) 25%, var(--color-outline-variant));
  background: color-mix(in srgb, var(--color-error) 6%, var(--color-surface));
}

.ipl-travel-error__icon {
  color: var(--color-error);
  font-size: 1.75rem;
  flex-shrink: 0;
}

.ipl-travel-error__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  min-width: 0;
}

.ipl-travel-error__title {
  margin: 0;
  color: var(--color-on-surface);
}

.ipl-travel-error__message {
  margin: 0;
  color: var(--color-on-surface-variant);
}

.ipl-travel-error__retry {
  align-self: flex-start;
}

.ipl-travel-route {
  margin: 0 0 var(--space-sm);
}

/* Step 4 — Vehicle Selection */

.ipl-step3-layout {
  display: flex;
  min-height: calc(100vh - 4rem);
}

.ipl-step3-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.ipl-step3-header {
  padding: var(--space-lg) var(--space-lg) var(--space-md);
  border-bottom: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-lowest);
}

.ipl-step3-header h2 {
  margin: var(--space-sm) 0 var(--space-xs);
}

.ipl-step3-header p {
  margin: 0;
}

.ipl-step3-progress {
  max-width: 20rem;
}

.ipl-step3-progress__labels {
  display: flex;
  justify-content: space-between;
  margin-bottom: var(--space-xs);
}

.ipl-step3-progress__bar {
  height: 0.375rem;
  border-radius: var(--radius-full);
  background: var(--color-surface-container-high);
  overflow: hidden;
}

.ipl-step3-progress__fill {
  height: 100%;
  border-radius: inherit;
  background: var(--color-primary);
}

.ipl-step3-canvas {
  flex: 1;
  padding: var(--space-lg);
  overflow-y: auto;
}

.ipl-vehicle-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
  padding: var(--space-md);
  border-radius: var(--radius-xl);
  border: 1px solid color-mix(in srgb, var(--color-outline-variant) 70%, transparent);
  background: color-mix(in srgb, var(--color-surface-container-lowest) 80%, transparent);
  backdrop-filter: blur(12px);
}

.ipl-vehicle-filters__pills {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  overflow-x: auto;
}

.ipl-vehicle-pill {
  border: none;
  border-radius: var(--radius-full);
  padding: var(--space-xs) var(--space-md);
  background: var(--color-surface-container-high);
  color: var(--color-on-surface-variant);
  font-size: var(--font-size-label-md);
  font-weight: 500;
  white-space: nowrap;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}

.ipl-vehicle-pill:hover {
  background: var(--color-surface-container-highest);
}

.ipl-vehicle-pill--active {
  background: var(--color-primary);
  color: var(--color-on-primary);
  box-shadow: var(--shadow-sm);
}

.ipl-vehicle-search {
  position: relative;
  width: 100%;
  max-width: 20rem;
}

.ipl-vehicle-search .material-symbols-outlined {
  position: absolute;
  left: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-on-surface-variant);
  font-size: 1.125rem;
  pointer-events: none;
}

.ipl-vehicle-search .ipl-control {
  border-radius: var(--radius-full);
  padding-left: calc(var(--space-md) + 1.25rem);
  background: var(--color-surface-container-low);
  border: none;
}

.ipl-vehicle-loading,
.ipl-vehicle-error {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-lg);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-low);
}

.ipl-vehicle-loading[hidden],
.ipl-vehicle-error[hidden],
.ipl-vehicle-grid[hidden] {
  display: none !important;
}

.ipl-vehicle-loading .material-symbols-outlined {
  animation: ipl-spin 1s linear infinite;
}

.ipl-vehicle-error .material-symbols-outlined {
  color: var(--color-error);
  font-size: 1.75rem;
}

.ipl-vehicle-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-md);
}

.ipl-vehicle-card {
  display: flex;
  flex-direction: column;
  border-radius: var(--radius-xl);
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--color-outline-variant) 70%, transparent);
  background: color-mix(in srgb, var(--color-surface-container-lowest) 80%, transparent);
  backdrop-filter: blur(12px);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.ipl-vehicle-card:hover {
  border-color: color-mix(in srgb, var(--color-primary) 40%, var(--color-outline-variant));
}

.ipl-vehicle-card--selected {
  border-color: color-mix(in srgb, var(--color-primary) 35%, var(--color-outline-variant));
  box-shadow: var(--shadow-md);
}

.ipl-vehicle-card__media {
  position: relative;
  height: 12rem;
  overflow: hidden;
  background: var(--color-surface-container);
}

.ipl-vehicle-card__image {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 0.4s ease;
}

.ipl-vehicle-card:hover .ipl-vehicle-card__image {
  transform: scale(1.05);
}

.ipl-vehicle-card__placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: color-mix(in srgb, var(--color-on-surface-variant) 25%, transparent);
}

.ipl-vehicle-card__placeholder .material-symbols-outlined {
  font-size: 4rem;
}

.ipl-vehicle-card__badge {
  position: absolute;
  top: var(--space-sm);
  right: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-full);
  font-size: var(--font-size-label-sm);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.ipl-vehicle-card__badge--available {
  background: color-mix(in srgb, var(--color-surface-container-lowest) 92%, transparent);
  color: var(--color-primary);
}

.ipl-vehicle-card__badge--demand {
  background: color-mix(in srgb, var(--color-surface-container-lowest) 92%, transparent);
  color: var(--color-primary);
}

.ipl-vehicle-card__badge--featured {
  background: var(--color-primary);
  color: var(--color-on-primary);
}

.ipl-vehicle-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--space-md);
}

.ipl-vehicle-card__title {
  margin: 0 0 var(--space-xs);
}

.ipl-vehicle-card__meta {
  margin: 0 0 var(--space-md);
  color: var(--color-on-surface-variant);
}

.ipl-vehicle-card__specs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  margin-bottom: var(--space-md);
  color: var(--color-on-surface-variant);
}

.ipl-vehicle-card__spec {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--font-size-label-md);
}

.ipl-vehicle-card__spec .material-symbols-outlined {
  font-size: 1.125rem;
}

.ipl-vehicle-card__select {
  margin-top: auto;
  width: 100%;
  border: none;
  border-radius: var(--radius-lg);
  padding: var(--space-sm) var(--space-md);
  font-weight: 700;
  cursor: pointer;
  background: var(--color-surface-container-high);
  color: var(--color-on-surface);
  transition: background 0.15s ease, color 0.15s ease, transform 0.1s ease;
}

.ipl-vehicle-card__select:hover {
  background: var(--color-surface-container-highest);
}

.ipl-vehicle-card__select--active {
  background: var(--color-primary);
  color: var(--color-on-primary);
}

.ipl-vehicle-card__select:active {
  transform: scale(0.98);
}

.ipl-vehicle-card__select:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.ipl-vehicle-empty {
  margin: var(--space-lg) 0 0;
  text-align: center;
}

.ipl-step3-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border-top: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-lowest);
}

.ipl-step3-footer__right {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.ipl-step3-footer__summary {
  display: none;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-xs);
}

.ipl-vehicle-toast {
  position: fixed;
  right: var(--space-lg);
  bottom: 6rem;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-lg);
  background: var(--color-inverse-surface);
  color: var(--color-inverse-on-surface);
  box-shadow: var(--shadow-lg);
  z-index: 60;
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.ipl-vehicle-toast[hidden] {
  display: none;
}

.ipl-vehicle-toast.is-visible {
  display: flex;
}

.ipl-vehicle-toast .material-symbols-outlined {
  color: var(--color-tertiary-fixed);
}

.ipl-step-legacy__actions {
  display: flex;
  gap: var(--space-sm);
  margin-top: var(--space-md);
}

@keyframes ipl-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@media (max-width: 1100px) {
  .ipl-vehicle-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 768px) {
  .ipl-step3-header,
  .ipl-step3-canvas,
  .ipl-step3-footer {
    padding-left: var(--space-md);
    padding-right: var(--space-md);
  }

  .ipl-vehicle-filters {
    flex-direction: column;
    align-items: stretch;
  }

  .ipl-vehicle-search {
    max-width: none;
  }

  .ipl-vehicle-grid {
    grid-template-columns: 1fr;
  }

  .ipl-step3-footer__summary {
    display: none;
  }
}

@media (min-width: 1024px) {
  .ipl-step3-footer__summary {
    display: flex;
  }
}

/* Step 5 — Pricing & Finalize */

.ipl-step5-layout {
  display: flex;
  min-height: calc(100vh - 4rem);
}

.ipl-step5-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.ipl-step5-header {
  padding: var(--space-lg);
  border-bottom: 1px solid var(--color-outline-variant);
  background: color-mix(in srgb, var(--color-surface-container-low) 60%, transparent);
}

.ipl-step5-header__top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
}

.ipl-step5-badge {
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-full);
  background: var(--color-primary-container);
  color: var(--color-on-primary-container);
  font-weight: 700;
}

.ipl-step5-progress {
  margin-top: var(--space-sm);
  width: min(100%, 28rem);
  height: 0.5rem;
  border-radius: var(--radius-full);
  background: var(--color-surface-container-highest);
  overflow: hidden;
}

.ipl-step5-progress__fill {
  width: 100%;
  height: 100%;
  background: var(--color-primary);
  border-radius: inherit;
}

.ipl-step5-canvas {
  flex: 1;
  padding: var(--space-lg);
  overflow-y: auto;
}

.ipl-step5-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(18rem, 0.9fr);
  gap: var(--space-lg);
  align-items: start;
}

.ipl-step5-col--main {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.ipl-step5-col--side {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  position: sticky;
  top: var(--space-md);
}

.ipl-pricing-loading,
.ipl-pricing-error {
  display: flex;
  align-items: flex-start;
  gap: var(--space-sm);
  padding: var(--space-lg);
  border-radius: var(--radius-xl);
  border: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-low);
  margin-bottom: var(--space-md);
}

.ipl-pricing-loading .material-symbols-outlined {
  animation: ipl-spin 1s linear infinite;
}

.ipl-pricing-error .material-symbols-outlined {
  color: var(--color-error);
  font-size: 1.75rem;
}

.ipl-pricing-loading[hidden],
.ipl-pricing-error[hidden],
.ipl-step5-grid[hidden] {
  display: none !important;
}

.ipl-pricing-card {
  padding: var(--space-md);
  border-radius: var(--radius-xl);
  border: 1px solid color-mix(in srgb, var(--color-outline-variant) 70%, transparent);
  background: color-mix(in srgb, var(--color-surface-container-lowest) 85%, transparent);
  backdrop-filter: blur(12px);
}

.ipl-pricing-card--list {
  padding: 0;
  overflow: hidden;
}

.ipl-pricing-card__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-md);
  border-bottom: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-low);
}

.ipl-pricing-card__head {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin-bottom: var(--space-sm);
  color: var(--color-on-surface-variant);
}

.ipl-pricing-card__hint {
  margin: var(--space-sm) 0 0;
}

.ipl-pricing-mode {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-sm);
  margin-top: var(--space-md);
}

.ipl-pricing-mode__option {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-md);
  border: 2px solid var(--color-outline-variant);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.ipl-pricing-mode__option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.ipl-pricing-mode__option strong {
  display: block;
}

.ipl-pricing-mode__option small {
  display: block;
  color: var(--color-on-surface-variant);
  font-size: var(--font-size-body-sm);
}

.ipl-pricing-mode__option:has(input:checked) {
  border-color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary-container) 12%, transparent);
}

.ipl-pricing-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-md);
}

.ipl-pricing-metric {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.ipl-pricing-metric__input {
  position: relative;
  flex: 1;
}

.ipl-pricing-metric__input .ipl-control {
  padding-right: 2rem;
  font-weight: 700;
  font-size: var(--font-size-headline-sm);
}

.ipl-pricing-metric__input span {
  position: absolute;
  right: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-on-surface-variant);
  font-weight: 700;
}

.ipl-pricing-metric__value {
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-lg);
  background: var(--color-surface-container-high);
  color: var(--color-primary);
  font-weight: 700;
  white-space: nowrap;
}

.ipl-pricing-metric__value--muted {
  color: var(--color-on-surface-variant);
}

.ipl-markup-mode {
  display: flex;
  gap: var(--space-xs);
  margin-bottom: var(--space-sm);
}

.ipl-markup-mode__btn {
  flex: 1;
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-full);
  padding: var(--space-xs) var(--space-sm);
  background: var(--color-surface-container);
  color: var(--color-on-surface-variant);
  font-size: var(--font-size-label-sm);
  font-weight: 600;
  cursor: pointer;
}

.ipl-markup-mode__btn--active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-on-primary);
}

.ipl-pricing-metric--markup {
  align-items: stretch;
}

.ipl-pricing-metric__currency {
  position: absolute;
  left: var(--space-sm);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-on-surface-variant);
  font-weight: 700;
}

#iplMarkupAmountWrap .ipl-control {
  padding-left: 1.75rem;
  font-weight: 700;
  font-size: var(--font-size-headline-sm);
}

#iplMarkupPercentWrap.is-disabled {
  opacity: 0.45;
  pointer-events: none;
}

.ipl-pricing-items {
  display: flex;
  flex-direction: column;
}

.ipl-pricing-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md);
  border-bottom: 1px solid color-mix(in srgb, var(--color-outline-variant) 35%, transparent);
}

.ipl-pricing-item:last-child {
  border-bottom: none;
}

.ipl-pricing-item__left {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  min-width: 0;
}

.ipl-pricing-item__icon {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.ipl-pricing-item__icon--travel { background: color-mix(in srgb, #2563eb 12%, white); color: #2563eb; }
.ipl-pricing-item__icon--hotel { background: color-mix(in srgb, #d97706 12%, white); color: #d97706; }
.ipl-pricing-item__icon--meal { background: color-mix(in srgb, #059669 12%, white); color: #059669; }
.ipl-pricing-item__icon--transport { background: color-mix(in srgb, #7c3aed 12%, white); color: #7c3aed; }

.ipl-pricing-item__title {
  margin: 0;
  font-weight: 600;
}

.ipl-pricing-item__subtitle {
  margin: var(--space-xs) 0 0;
  color: var(--color-on-surface-variant);
  font-size: var(--font-size-body-sm);
}

.ipl-pricing-item__amount {
  text-align: right;
  font-weight: 700;
  font-family: var(--font-family-mono, monospace);
}

.ipl-pricing-item__tag {
  margin: var(--space-xs) 0 0;
  font-size: 0.625rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-outline);
}

.ipl-quotation-card {
  padding: var(--space-lg);
  border-radius: var(--radius-xl);
  background: var(--color-primary);
  color: var(--color-on-primary);
  box-shadow: var(--shadow-lg);
}

.ipl-quotation-card h3 {
  opacity: 0.85;
  margin: 0 0 var(--space-md);
}

.ipl-quotation-card__rows {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.ipl-quotation-row {
  display: flex;
  justify-content: space-between;
  gap: var(--space-sm);
}

.ipl-quotation-row span {
  opacity: 0.85;
}

.ipl-quotation-card__total {
  margin-top: var(--space-md);
  padding-top: var(--space-md);
  border-top: 1px solid color-mix(in srgb, white 20%, transparent);
}

.ipl-quotation-card__amount {
  display: flex;
  align-items: baseline;
  gap: var(--space-xs);
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 700;
  line-height: 1.1;
}

.ipl-quotation-card__amount small {
  font-size: var(--font-size-body-md);
  opacity: 0.75;
}

.ipl-quotation-card__per-person {
  margin: var(--space-xs) 0 0;
  opacity: 0.85;
}

.ipl-quotation-card__note {
  display: flex;
  gap: var(--space-sm);
  align-items: flex-start;
  margin-top: var(--space-md);
  padding: var(--space-sm);
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, white 10%, transparent);
}

.ipl-quotation-card__note .material-symbols-outlined {
  color: var(--color-tertiary-fixed);
}

.ipl-pricing-card--actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.ipl-pricing-action {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  width: 100%;
  padding: var(--space-md);
  border: none;
  border-radius: var(--radius-lg);
  background: var(--color-surface-container);
  cursor: pointer;
  font-weight: 600;
}

.ipl-pricing-action:hover {
  background: var(--color-surface-container-high);
}

.ipl-pricing-save {
  width: 100%;
  justify-content: center;
  gap: var(--space-xs);
}

.ipl-step5-disclaimer {
  margin-top: var(--space-lg);
  text-align: center;
  font-style: italic;
}

.ipl-step5-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border-top: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container-lowest);
}

.ipl-step5-footer__right {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-md);
}

@media (max-width: 1024px) {
  .ipl-step5-grid {
    grid-template-columns: 1fr;
  }

  .ipl-step5-col--side {
    position: static;
  }

  .ipl-pricing-mode,
  .ipl-pricing-metrics {
    grid-template-columns: 1fr;
  }

  .ipl-step5-footer__right p {
    display: none;
  }
}

/* Step 6 — PDF preview */
.ipl-step6-layout {
  min-height: calc(100vh - var(--ipl-toolbar-height, 4.5rem));
  display: flex;
  flex-direction: column;
}

.ipl-step6-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  max-width: 72rem;
  margin: 0 auto;
  width: 100%;
}

.ipl-step6-header {
  padding: var(--space-lg) var(--space-lg) var(--space-md);
  border-bottom: 1px solid var(--color-outline-variant);
}

.ipl-step6-header__top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-md);
  margin-bottom: var(--space-sm);
}

.ipl-step6-badge {
  padding: 0.35rem 0.75rem;
  border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--color-primary) 12%, transparent);
  color: var(--color-primary);
  white-space: nowrap;
}

.ipl-step6-progress {
  width: min(100%, 28rem);
  height: 0.5rem;
  border-radius: var(--radius-full);
  background: var(--color-surface-container-highest);
  overflow: hidden;
  margin-top: var(--space-sm);
}

.ipl-step6-progress__fill {
  width: 100%;
  height: 100%;
  background: var(--color-primary);
  border-radius: inherit;
}

.ipl-step6-canvas {
  flex: 1;
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.ipl-preview-loading[hidden],
.ipl-preview-error[hidden],
.ipl-step6-preview[hidden] {
  display: none !important;
}

.ipl-preview-loading,
.ipl-preview-error {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-xl);
  border-radius: var(--radius-xl);
  background: var(--color-surface-container-low);
  border: 1px solid var(--color-outline-variant);
}

.ipl-preview-loading .material-symbols-outlined,
.ipl-preview-error .material-symbols-outlined {
  font-size: 2rem;
  color: var(--color-primary);
}

.ipl-preview-loading .material-symbols-outlined {
  animation: ipl-spin 1s linear infinite;
}

.ipl-preview-error .material-symbols-outlined {
  color: var(--color-error, #b3261e);
}

.ipl-step6-preview {
  flex: 1;
  min-height: 24rem;
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  overflow: hidden;
  background: #eceff1;
}

.ipl-step6-preview__wrap {
  width: 100%;
  height: min(72vh, 56rem);
  min-height: 24rem;
  overflow: auto;
  padding: 16px;
  box-sizing: border-box;
  display: flex;
  justify-content: center;
  align-items: flex-start;
}

.ipl-step6-preview__scale-host {
  transform-origin: top center;
  flex-shrink: 0;
}

.ipl-step6-preview__frame {
  display: block;
  border: 0;
  background: #eceff1;
}

.ipl-step6-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg) var(--space-lg);
  border-top: 1px solid var(--color-outline-variant);
  flex-wrap: wrap;
}

.ipl-step6-footer__right {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-wrap: wrap;
}

@media (max-width: 640px) {
  .ipl-step6-preview__wrap {
    height: 60vh;
    min-height: 18rem;
    padding: 12px 8px;
  }

  .ipl-step6-footer {
    flex-direction: column;
    align-items: stretch;
  }

  .ipl-step6-footer__right {
    flex-direction: column;
    width: 100%;
  }

  .ipl-step6-footer__right .ipl-btn-outline,
  .ipl-step6-footer__right .ipl-btn-primary {
    width: 100%;
    justify-content: center;
  }
}
