/* quote-builder.css — the public /quote/ wizard.
   Reuses tokens.css variables, base.css's .btn/.note hooks and
   components.css's .field/.hp hooks; adds only what's specific to this page
   (option rows, estimate panel). No new color, no new type scale. */

.quote-builder fieldset {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: var(--space-5);
  margin: 0 0 var(--space-5);
  max-width: var(--measure);
}
.quote-builder legend {
  font-family: var(--font-display);
  font-size: var(--text-h3);
  padding: 0 var(--space-2);
}
.quote-builder .option {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding-block: var(--space-2);
  font-size: var(--text-sm);
  color: var(--ink-2);
}
.quote-builder .option input[type="number"] {
  width: 5rem;
  font: inherit;
  padding: 0.4em 0.6em;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--surface);
}
.quote-builder .muted {
  color: var(--ink-3);
  font-size: var(--text-sm);
}
/* Package cards: name + radio on the first row, "what's included" wrapping
   to its own line beneath. Gated (disabled) property packages dim out. */
.quote-builder .tier-option {
  flex-wrap: wrap;
}
.quote-builder .tier-included {
  flex-basis: 100%;
  margin-left: calc(var(--space-3) + 1rem);
}
.quote-builder .tier-option:has(input:disabled) {
  opacity: 0.5;
}
.quote-builder fieldset.tiers[hidden] {
  display: none;
}

.quote-estimate {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: var(--space-5);
  margin-bottom: var(--space-5);
  max-width: var(--measure);
}
.quote-estimate h2 {
  margin-top: 0;
  font-size: var(--text-h3);
}
.quote-estimate ul {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-3);
  color: var(--ink-2);
}
.quote-estimate .price {
  font-family: var(--font-display);
  font-size: 1.4rem;
  margin: 0;
}

#quote-status {
  font-size: var(--text-sm);
  color: var(--ink-2);
}
