/* Quote preparation: the Atelier system applied to a pricing workspace.
   Tokens only (DESIGN.md): 12 / 14 / 16 px text, control and panel radii, one panel shadow. */
main:has(> .quote-preparation, > .deal-page) { max-width: 1660px; }
.quote-recipient { border-bottom: 1px solid var(--color-line); }
.quote-recipient-summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 10px 0; cursor: pointer; list-style: none; }
.quote-recipient-summary::-webkit-details-marker { display: none; }
.quote-recipient-summary:focus-visible { outline: 2px solid var(--color-ink); outline-offset: 2px; }
.quote-recipient-identity { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.quote-recipient-edit { flex: none; color: var(--color-ink); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
.quote-recipient-close-label, .quote-recipient[open] .quote-recipient-edit-label { display: none; }
.quote-recipient[open] .quote-recipient-close-label { display: inline; }
.quote-preparation { display: flex; flex-direction: column; gap: var(--spacing-gutter); font-size: 14px; line-height: 1.5; }
.quote-preparation :is(section, article) { scroll-margin-top: 24px; }
.quote-preparation > a:first-child { align-self: flex-start; }
.quote-client-summary { margin-top: 16px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding: 16px 0; border-top: 1px solid var(--color-line); border-bottom: 1px solid var(--color-line); }
.quote-client-summary dt { color: var(--color-muted); font-size: 12px; }
.quote-client-summary dd { margin-top: 6px; font-size: 14px; font-weight: 500; overflow-wrap: anywhere; }
.quote-header-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 12px; }
.quote-readiness-jump { color: var(--color-champagne); text-decoration: underline; text-underline-offset: 4px; }
.quote-readiness-jump:hover { text-decoration-thickness: 2px; }

.quote-editor-workspace { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: var(--spacing-section); align-items: start; }
.quote-editor-main { min-width: 0; display: flex; flex-direction: column; gap: var(--spacing-section); }
.quote-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.quote-section-heading > :last-child:not(:first-child) { flex-shrink: 0; }
.quote-hint { margin: 8px 0 16px; color: var(--color-muted); font-size: 14px; }
.quote-empty { padding: 20px; margin-top: 16px; border: 1px dashed var(--color-line); border-radius: var(--radius-control); color: var(--color-muted); }

/* Itinerary */
.quote-itinerary-row { display: flex; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--color-line); }
.quote-leg-number { display: grid; place-items: center; width: 28px; height: 28px; flex-shrink: 0; border: 1px solid var(--color-line); border-radius: var(--radius-control); font-family: var(--font-mono); font-size: 12px; }
.quote-itinerary-row > div:first-of-type { flex: 1; min-width: 0; }
.quote-itinerary-row strong { font-weight: 600; }
.quote-itinerary-row p { font-size: 12px; color: var(--color-muted); margin-top: 2px; }
.quote-leg-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.quote-leg-actions button:disabled { opacity: .45; }
.quote-itinerary-heading { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
.quote-itinerary-heading > span { font-size: 12px; color: var(--color-muted); }
.quote-itinerary-list { margin-top: 16px; overflow: hidden; background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-panel); box-shadow: var(--shadow-panel); }
.quote-itinerary-list > .quote-itinerary-leg { display: grid; grid-template-columns: 28px minmax(0, 1.6fr) minmax(0, 1fr) 72px 120px auto; grid-template-areas: "number route when pax vat actions"; align-items: center; gap: 8px 20px; padding: 18px 20px; }
.quote-itinerary-list > .quote-itinerary-leg:last-child { border-bottom: 0; }
.quote-itinerary-leg > .quote-leg-number { grid-area: number; border: 0; background: var(--color-surface-muted); }
.quote-leg-route { grid-area: route; display: grid; gap: 4px; min-width: 0; }
.quote-leg-codes { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-family: var(--font-mono); font-size: 17px; font-weight: 600; letter-spacing: .02em; }
.quote-leg-places { font-size: 12px; color: var(--color-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.quote-leg-when { grid-area: when; display: grid; gap: 2px; }
.quote-leg-time { font-family: var(--font-mono); font-size: 13px; color: var(--color-muted); font-variant-numeric: tabular-nums; }
.quote-leg-pax { grid-area: pax; display: inline-flex; align-items: center; gap: 6px; font-variant-numeric: tabular-nums; }
.quote-leg-vat { grid-area: vat; }
.quote-itinerary-leg > .quote-leg-actions { grid-area: actions; flex-wrap: nowrap; gap: 4px; }

/* Proposals: one card per alternative, compared row by row. */
.quote-proposal-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
.quote-proposal-add { display: grid; grid-row: span 2; place-content: center; justify-items: center; gap: 8px; min-height: 240px; padding: 20px; border: 1px dashed var(--color-line); border-radius: var(--radius-panel); color: var(--color-muted); font-size: 14px; text-align: center; text-decoration: none; transition: border-color 150ms, color 150ms, background-color 150ms; }
.quote-proposal-add strong { color: var(--color-ink); font-weight: 600; }
/* Shown only on a free column of the last row: hidden once that row is full. */
.quote-proposal-add:nth-child(3n+1):not(:first-child) { display: none; }
.quote-proposal-add:hover, .quote-proposal-add:focus-visible { border-color: var(--color-ink); background: var(--color-surface-muted); color: var(--color-ink); }
/* Cards in a row share their header height, so their figures line up. */
.quote-proposal { display: grid; grid-row: span 2; grid-template-rows: subgrid; row-gap: 0; min-width: 0; border: 1px solid var(--color-line); border-radius: var(--radius-panel); overflow: hidden; background: var(--color-surface); box-shadow: var(--shadow-panel); }
.quote-proposal-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; padding: 16px 20px; background: var(--color-surface-muted); border-bottom: 1px solid var(--color-line); }
.quote-proposal-heading h3 { font-size: 16px; font-weight: 600; white-space: nowrap; }
.quote-proposal-content { display: flex; flex-direction: column; flex: 1; min-width: 0; padding: 0 20px 20px; }
/* A card leads with the price and the margin; the rest opens on demand. */
.quote-proposal-identity { display: grid; flex: 1; gap: 4px; min-width: 0; }
.quote-proposal-heading > :last-child { flex-shrink: 0; }
.quote-proposal-reference { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.quote-proposal-aircraft { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.quote-proposal-aircraft strong { font-weight: 600; }
.quote-proposal-aircraft span { color: var(--color-muted); font-size: 12px; }
.quote-proposal-menu { display: grid; gap: 2px; }
.quote-proposal-menu-item { display: block; width: 100%; padding: 8px 12px; border-radius: var(--radius-control); font-size: 14px; text-align: left; text-decoration: none; color: var(--color-ink); }
.quote-proposal-menu-item:hover { background: var(--color-surface-muted); }
.quote-proposal-menu-danger { color: var(--color-danger); }
.quote-proposal-menu-danger:hover { background: var(--color-danger-soft); }
.quote-readiness:empty { display: none; }
.quote-proposal-summary { display: grid; gap: 12px; padding: 16px 0; }
.quote-proposal-gross { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; padding: 12px 14px; border-radius: var(--radius-control); background: var(--color-surface-muted); }
.quote-proposal-gross span { color: var(--color-muted); font-size: 12px; }
.quote-proposal-gross strong { font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.quote-proposal-figures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; }
.quote-proposal-figures > div { display: grid; align-content: start; gap: 2px; min-width: 0; }
.quote-proposal-figures dt { color: var(--color-muted); font-size: 12px; }
.quote-proposal-figures dd { font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.quote-proposal-figures .quote-margin { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 4px 0 0; padding: 8px 12px; }
.quote-proposal-figures .quote-margin dd { text-align: right; }
.quote-proposal-figures .quote-margin dt { color: inherit; }
.quote-proposal-flights { padding: 12px 0; border-top: 1px solid var(--color-line); }
.quote-proposal-flights-aircraft { margin-top: 8px; font-size: 12px; font-weight: 500; }
.quote-proposal-leg { display: flex; justify-content: space-between; gap: 8px; padding: 2px 0; font-size: 12px; }
.quote-proposal-leg span { font-family: var(--font-mono); }
.quote-proposal-leg strong { font-weight: 500; font-variant-numeric: tabular-nums; white-space: nowrap; }
.quote-proposal-details { margin-bottom: 16px; }
.quote-proposal-disclosure { border-top: 1px solid var(--color-line); }
.quote-proposal-disclosure:last-child { border-bottom: 1px solid var(--color-line); }
.quote-proposal-disclosure > summary { display: flex; align-items: center; justify-content: space-between; min-height: 40px; cursor: pointer; font-size: 12px; font-weight: 500; list-style: none; }
.quote-proposal-disclosure > summary::-webkit-details-marker { display: none; }
.quote-proposal-disclosure > summary::after { content: "▸"; color: var(--color-muted); }
.quote-proposal-disclosure[open] > summary::after { content: "▾"; }
.quote-proposal-disclosure > summary:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.quote-proposal-disclosure-body { display: grid; gap: 8px; padding-bottom: 12px; }
.quote-proposal-disclosure-body .quote-aircraft-prices { padding-top: 8px; }
.quote-proposal-edit { align-self: stretch; margin-top: auto; }
.quote-readiness { padding: 16px 0 0; }
.quote-readiness-subtitle { margin-top: 12px; font-weight: 600; }
.quote-readiness-list { display: grid; gap: 4px; margin-top: 4px; }
.quote-readiness-list a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.quote-readiness-list a:hover { text-decoration-thickness: 2px; }
.quote-offer-change { grid-column: 1 / -1; margin-bottom: 12px; }
.quote-offer-change-facts { display: grid; gap: 2px; }
.quote-offer-change-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.quote-aircraft-empty { margin-top: 16px; color: var(--color-muted); }
.quote-aircraft-empty a { color: var(--color-ink); text-decoration: underline; text-underline-offset: 4px; }

.quote-aircraft-section-label { margin: 0 0 8px; color: var(--color-muted); font-size: 12px; font-weight: 500; }
.quote-covered-leg { border-top: 1px solid var(--color-line); padding: 8px 0; }
.quote-covered-leg:first-of-type { border-top: 0; padding-top: 0; }
.quote-covered-leg strong { font-weight: 500; }
.quote-flight-timing { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 12px 0 4px; }
.quote-flight-timing > div { flex: 1 1 auto; min-width: 0; }
.quote-flight-timing dt { font-size: 12px; color: var(--color-ink); }
.quote-flight-timing dd { margin: 4px 0 0; font-size: 16px; font-weight: 600; color: var(--color-ink); line-height: 1.4; font-variant-numeric: tabular-nums; }
.quote-covered-leg .quote-flight-passengers, .quote-itinerary-row .quote-flight-passengers { font-size: 12px; color: var(--color-muted); margin-top: 4px; }
.quote-thumbnails { display: flex; gap: 8px; height: 64px; margin-top: 12px; overflow-x: auto; }
.quote-thumbnails img { flex: 0 0 calc((100% - 16px) / 3); width: calc((100% - 16px) / 3); height: 64px; object-fit: cover; border-radius: var(--radius-control); }
.quote-aircraft-prices { padding-top: 16px; border-top: 1px solid var(--color-line); }
.quote-prices-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.quote-prices-heading h4 { margin: 0; }
.quote-prices-heading a { margin-left: auto; display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border: 1px solid var(--color-line); border-radius: var(--radius-control); background: var(--color-surface); font-size: 12px; font-weight: 500; }
.quote-prices-heading a:hover { background: var(--color-surface-muted); }
.quote-variant-observations { padding: 16px 0; border-top: 1px solid var(--color-line); }
.quote-variant-observations p { white-space: pre-wrap; overflow-wrap: anywhere; }
.quote-aircraft-prices p, .quote-price-pair { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin: 4px 0; }
.quote-aircraft-prices strong, .quote-price-pair strong { text-align: right; font-weight: 500; font-variant-numeric: tabular-nums; }

/* Margins: the words carry the sign, the tone repeats it. */
.quote-margin { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 12px 0 0; padding: 8px 12px; border-radius: var(--radius-control); font-weight: 600; font-variant-numeric: tabular-nums; }
.quote-margin strong { text-align: right; font-weight: inherit; white-space: nowrap; }
.quote-margin { color: var(--color-success); background: var(--color-success-soft); }
.quote-margin-alert { color: var(--color-warning); background: var(--color-warning-soft); }
.quote-margin-unknown { color: var(--color-muted); background: var(--color-surface-muted); }
.quote-negative { color: var(--color-danger); background: var(--color-danger-soft); }
.quote-margin-preview { margin-top: 16px; padding: 12px; border-radius: var(--radius-control); font-weight: 600; font-variant-numeric: tabular-nums; }
.quote-margin-preview[data-tone="positive"] { color: var(--color-success); background: var(--color-success-soft); }
.quote-margin-preview[data-tone="zero"] { color: var(--color-warning); background: var(--color-warning-soft); }
.quote-margin-preview[data-tone="negative"] { color: var(--color-danger); background: var(--color-danger-soft); }
.quote-margin-preview[data-tone="unknown"] { color: var(--color-muted); background: var(--color-surface); border: 1px solid var(--color-line); font-weight: 400; }

.quote-service-summary { display: grid; gap: 8px; margin-top: 16px; }
.quote-service-summary dt { color: var(--color-muted); font-size: 12px; }
.quote-service-summary dd { font-size: 13px; }
.quote-service-row { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 8px; padding: 8px 0; border-bottom: 1px solid var(--color-line); }
.quote-service-row > div { display: flex; gap: 8px; }
.quote-exceptions-link { padding: 8px 0; }
.quote-exceptions-link:empty { display: none; }
.quote-grand-total { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--color-line); }
.quote-grand-total > span { display: block; color: var(--color-muted); font-size: 12px; font-weight: 500; }
.quote-grand-total strong { display: block; font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
.quote-grand-total p { font-size: 12px; color: var(--color-muted); margin-top: 2px; }

/* Common services, client texts, history */
.quote-common-service { display: grid; gap: 12px; padding: 20px; border: 1px solid var(--color-line); border-radius: var(--radius-panel); background: var(--color-surface); box-shadow: var(--shadow-panel); margin-top: 12px; }
.quote-common-service-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.quote-common-service-title { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; min-width: 0; }
.quote-common-service h3 { font-size: 16px; font-weight: 600; overflow-wrap: anywhere; }
.quote-common-service-description { color: var(--color-muted); white-space: pre-line; }
.quote-common-service-facts { display: flex; flex-wrap: wrap; gap: 12px 32px; }
.quote-common-service-facts div { display: grid; gap: 2px; }
.quote-common-service-facts dt { color: var(--color-muted); font-size: 12px; }
.quote-common-service-facts dd { font-variant-numeric: tabular-nums; font-weight: 500; }
.quote-service-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.quote-service-actions > a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 8px; text-decoration: underline; text-underline-offset: 3px; }
.quote-service-actions > a:hover { background: var(--color-surface-muted); }
.quote-client-content { border: 1px solid var(--color-line); border-radius: var(--radius-panel); background: var(--color-surface); box-shadow: var(--shadow-panel); padding: 20px; margin-top: 12px; }
.quote-client-content > header { display: flex; justify-content: flex-end; gap: 16px; margin-bottom: 16px; }
.quote-client-content h3 { font-size: 16px; font-weight: 600; }
.quote-client-content h4 { font-weight: 600; }
.quote-client-text-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.quote-client-text-grid p { white-space: pre-line; margin-top: 8px; }
.quote-text-action { font-size: 14px; text-decoration: underline; text-underline-offset: 4px; }

/* Editor panel: a sheet over the page, set apart by its rule and the brand veil. */
/* Editor: a wide modal centred over the preparation, room for two or three columns of fields. */
.ui-editor-panel { position: fixed; inset: 0; margin: auto; width: min(1040px, calc(100vw - 48px)); max-width: none; height: fit-content; max-height: calc(100dvh - 48px); padding: 0; border: 1px solid var(--color-line); border-radius: var(--radius-panel); background: var(--color-surface); color: var(--color-ink); font-size: 14px; box-shadow: var(--shadow-panel); }
.ui-editor-panel[open] { display: flex; flex-direction: column; }
.ui-editor-panel > header { display: flex; justify-content: space-between; align-items: start; gap: 20px; padding: 20px 24px; border-bottom: 1px solid var(--color-line); }
.ui-editor-panel h2 { font-size: 20px; font-weight: 600; letter-spacing: -0.01em; }
.ui-editor-panel > header button { min-width: 40px; min-height: 40px; }
.ui-editor-panel > form, .quote-panel-form > form { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.quote-panel-form { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.quote-catalog-picker { flex: 1; min-height: 0; overflow-y: auto; }
.ui-editor-panel footer { display: flex; justify-content: flex-end; gap: 8px; padding: 16px 24px; border-top: 1px solid var(--color-line); background: var(--color-canvas); }
.quote-panel-fields { flex: 1; overflow-y: auto; padding: 24px; display: flex; flex-direction: column; gap: 16px; }
.quote-panel-fields h3 { font-weight: 600; margin-top: 8px; padding-top: 16px; border-top: 1px solid var(--color-line); }
.quote-panel-fields > p { font-size: 12px; }
.quote-panel-fields label:has(> input[type=checkbox]) { display: flex; align-items: center; gap: 8px; min-height: 40px; }
.quote-panel-fields input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--color-accent); }
.quote-client-panel { width: min(920px, calc(100vw - 48px)); }
.quote-client-creation-panel { width: min(640px, calc(100vw - 48px)); }
.quote-client-panel footer, .quote-client-creation-panel footer { background: var(--color-surface); }
.quote-client-intro { color: var(--color-muted); font-size: 14px; line-height: 1.5; }
.quote-client-entity { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding: 20px; border: 1px solid var(--color-line); border-radius: var(--radius-control); background: var(--color-surface-muted); }
.quote-client-entity > a { flex-shrink: 0; }
.quote-client-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.quote-client-column { min-width: 0; }
.quote-client-billing { padding-left: 24px; border-left: 1px solid var(--color-line); }
.quote-client-fields h3 { margin: 0; padding: 0; border: 0; font-size: 16px; line-height: 1.4; }
.quote-client-detail-group { margin-top: 18px; }
.quote-client-detail-group + .quote-client-detail-group { margin-top: 28px; }
.quote-client-detail-group h4 { margin-bottom: 10px; font-size: 14px; font-weight: 600; }
.quote-client-section-hint { margin: 6px 0 14px; color: var(--color-muted); font-size: 12px; }
.quote-client-options { display: grid; gap: 8px; }
.quote-client-options label { overflow-wrap: anywhere; }
.quote-client-send-hint { margin-top: 12px; padding: 14px 16px; border-radius: var(--radius-control); background: var(--color-surface-muted); color: var(--color-muted); font-size: 12px; line-height: 1.5; }
.quote-client-empty { padding: 12px 14px; border: 1px dashed var(--color-line); border-radius: var(--radius-control); color: var(--color-muted); font-size: 14px; }
.quote-field-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.quote-margin-target { margin-top: 16px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.quote-margin-target > :last-child { grid-column: span 2; }
.quote-margin-target-field { position: relative; }
.quote-margin-target-field [data-controller="ui--popover"] { position: absolute; top: 4px; right: 4px; bottom: 4px; display: flex; }
.quote-margin-target-trigger { height: 100%; width: auto; gap: 4px; border-left: 1px solid var(--color-line); border-radius: 0; text-decoration: none; color: var(--color-muted); }
.quote-variant-offers { display: grid; gap: 8px; }
.quote-variant-offers form { display: block; }
.quote-variant-offer { display: grid; width: 100%; gap: 4px; padding: 16px; border: 1px solid var(--color-line); border-radius: var(--radius-control); background: var(--color-surface); text-align: left; transition: background-color 150ms ease-out, border-color 150ms ease-out; }
.quote-variant-offer:hover { background: var(--color-surface-muted); border-color: var(--color-accent); }
.quote-variant-offer:disabled { opacity: .6; }
.quote-variant-offer-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.quote-variant-offer-heading strong { font-size: 16px; font-weight: 600; }
.quote-variant-offer-operator, .quote-variant-offer-route { color: var(--color-muted); font-size: 12px; }
.quote-variant-offer-used { justify-self: start; margin-top: 4px; }
.quote-variant-offer--used { border-style: dashed; background: var(--color-surface-muted); }
.quote-variant-offer--used .quote-variant-offer-heading strong, .quote-variant-offer--used .quote-variant-offer-price { color: var(--color-muted); }
.quote-variant-used { display: grid; gap: 12px; margin-top: 12px; }
.quote-variant-used > p { font-size: 12px; }
.quote-variant-offer-price { font-weight: 600; font-variant-numeric: tabular-nums; }
.quote-catalog-empty { display: grid; justify-items: start; gap: 12px; padding: 16px; border: 1px dashed var(--color-line); border-radius: var(--radius-control); color: var(--color-muted); }
.quote-panel-more { border-top: 1px solid var(--color-line); padding-top: 12px; }
.quote-panel-more > summary { font-weight: 600; min-height: 40px; display: flex; align-items: center; justify-content: space-between; list-style: none; }
.quote-panel-more > summary::-webkit-details-marker { display: none; }
.quote-panel-more > summary::after { content: ""; width: 8px; height: 8px; margin-right: 4px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 150ms ease-out; }
.quote-panel-more[open] > summary::after { transform: rotate(-135deg); }
.quote-panel-more[open] > summary { margin-bottom: 12px; }
.quote-panel-more > * + * { margin-top: 16px; }
.quote-photos-link { display: inline-flex; align-items: center; min-height: 36px; margin-top: 8px; font-size: 12px; font-weight: 500; text-decoration: underline; text-underline-offset: 4px; }
.quote-photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
.quote-photo-grid > li { display: grid; align-content: start; gap: 8px; border: 1px solid var(--color-line); border-radius: var(--radius-control); overflow: hidden; padding-bottom: 12px; }
.quote-photo-grid img { width: 100%; height: 144px; object-fit: cover; }
.quote-photo-unavailable { display: grid; place-items: center; min-height: 144px; padding: 16px; color: var(--color-muted); background: var(--color-surface-muted); text-align: center; }
.quote-photo-caption { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 12px; font-size: 12px; min-width: 0; }
.quote-photo-caption > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.quote-photo-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 0 12px; }
.quote-photo-candidate { display: grid; gap: 8px; width: 100%; text-align: left; }
.quote-photo-grid > li:has(.quote-photo-candidate:hover) { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.quote-photo-candidate:focus-visible { outline: 2px solid var(--color-accent); outline-offset: -2px; }
.quote-coverage-choice { display: grid; gap: 12px; border: 1px solid var(--color-line); border-radius: var(--radius-control); padding: 16px; }
.quote-offer-intro { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 24px; border-bottom: 1px solid var(--color-line); }
.quote-offer-intro p { color: var(--color-muted); }
.quote-offer-intro a { flex-shrink: 0; display: inline-flex; align-items: center; min-height: 40px; border: 1px solid var(--color-line); border-radius: var(--radius-control); padding: 0 12px; font-weight: 500; }
.quote-offer-choice { background: var(--color-surface); }
.quote-offer-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.quote-offer-heading label { display: flex; align-items: center; gap: 8px; min-width: 0; }
.quote-offer-heading strong { overflow-wrap: anywhere; }
.quote-offer-status { flex-shrink: 0; border-radius: var(--radius-control); background: var(--color-success-soft); color: var(--color-success); padding: 4px 10px; font-size: 12px; font-weight: 500; }
.quote-offer-choice[data-status="requested"] .quote-offer-status { background: var(--color-surface-muted); color: var(--color-ink); }

@media (prefers-reduced-motion: reduce) {
  .quote-panel-more > summary::after { transition: none; }
  .quote-proposal-add { transition: none; }
}
@media (max-width: 1349px) {
  .quote-editor-workspace { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 1100px) and (min-width: 801px) {
  .quote-proposal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quote-proposal-add:nth-child(3n+1):not(:first-child) { display: grid; }
  .quote-proposal-add:nth-child(2n+1):not(:first-child) { display: none; }
}
@media (max-width: 800px) {
  .quote-client-summary { grid-template-columns: 1fr; }
  .quote-header-actions { justify-content: flex-start; }
  .quote-proposal-grid { grid-template-columns: minmax(0, 1fr); }
  .quote-proposal-add { min-height: 96px; }
  .quote-proposal-add:not(:first-child) { display: none; }
  .quote-section-heading { flex-wrap: wrap; gap: 12px; align-items: start; }
  .quote-client-text-grid { grid-template-columns: 1fr; }
  .quote-itinerary-row { flex-wrap: wrap; gap: 12px; }
  .quote-leg-actions { flex-basis: 100%; justify-content: flex-start; }
  .quote-itinerary-list > .quote-itinerary-leg { grid-template-columns: 28px auto auto minmax(0, 1fr); grid-template-areas: "number route route route" ". when pax vat" ". actions actions actions"; gap: 10px 16px; padding: 16px; }
  .quote-leg-places { white-space: normal; }
  .quote-itinerary-leg > .quote-leg-actions { justify-content: flex-start; }
}
@media (max-width: 740px) {
  .quote-client-columns { grid-template-columns: 1fr; gap: 26px; }
  .quote-client-billing { padding: 24px 0 0; border-left: 0; border-top: 1px solid var(--color-line); }
}
@media (max-width: 420px) {
  .quote-offer-intro { flex-direction: column; align-items: stretch; }
  .quote-field-grid, .quote-photo-grid { grid-template-columns: 1fr; }
  .quote-margin-target > :last-child { grid-column: auto; }
  .ui-editor-panel { width: 100vw; max-height: 100dvh; height: 100dvh; border-radius: 0; }
  .ui-editor-panel > header, .quote-panel-fields { padding: 20px 16px; }
  .quote-client-panel footer, .quote-client-creation-panel footer { gap: 8px; padding: 12px 16px; }
  .quote-client-panel footer > *, .quote-client-creation-panel footer > * { flex: 1; }
  .quote-common-service { padding: 16px; }
  .quote-common-service-heading { flex-wrap: wrap; }
  .quote-common-service-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
}
.quote-panel-add { display: flex; flex-wrap: wrap; gap: 8px; }

/* The text library is a picker; the wider column is the working selection. */
.quote-text-scroll { overflow-y: auto; min-height: 0; flex: 1; }
.quote-text-workspace { display: grid; grid-template-columns: minmax(240px, .85fr) minmax(0, 1.4fr); }
.quote-text-catalogue { padding: 20px; background: var(--color-canvas); border-right: 1px solid var(--color-line); }
.quote-text-selection { padding: 20px 24px; min-width: 0; }
.quote-text-workspace h3 { font-weight: 600; }
.quote-text-catalogue input[type=search], .quote-text-entry input[type=text], .quote-text-entry textarea { width: 100%; padding: 10px 12px; background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-control); }
.quote-text-catalogue input[type=search] { margin: 12px 0; }
.quote-text-favorite { display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 12px; min-height: 32px; }
.quote-text-catalogue-row { border-top: 1px solid var(--color-line); padding: 12px 0; }
.quote-text-entry-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.quote-text-entry-heading strong { font-weight: 600; }
.quote-text-catalogue-row summary, .quote-text-entry summary { color: var(--color-muted); font-size: 12px; min-height: 36px; padding: 8px 0; cursor: pointer; }
.quote-text-group { margin-top: 24px; }
.quote-text-group > h3 { padding-bottom: 10px; border-bottom: 1px solid var(--color-line); }
.quote-text-entry { padding: 12px 0; border-bottom: 1px solid var(--color-line); }
.quote-text-preview { white-space: pre-wrap; overflow-wrap: anywhere; margin: 6px 0; }
.quote-text-entry details[open] { padding: 12px; margin-top: 8px; background: var(--color-canvas); border-radius: var(--radius-control); }
.quote-text-entry textarea { resize: vertical; margin-bottom: 8px; }
.quote-text-entry details .quote-hint { margin-bottom: 8px; }
.quote-text-group > button { margin-top: 8px; }
.quote-text-undo { display: flex; align-items: center; justify-content: space-between; padding: 10px 24px; background: var(--color-surface-muted); }
.quote-text-undo button { text-decoration: underline; min-height: 36px; }
.quote-text-mobile { display: none; }
[data-controller="quote-text-editor"] [hidden] { display: none !important; }
@media (max-width: 640px) {
  .quote-text-workspace { display: block; }
  .quote-text-workspace[data-side=catalog] .quote-text-selection, .quote-text-workspace[data-side=selection] .quote-text-catalogue { display: none; }
  .quote-text-mobile { display: flex; gap: 8px; padding: 12px 16px; }
  .quote-text-mobile button { flex: 1; min-height: 40px; border: 1px solid var(--color-line); border-radius: var(--radius-control); }
  .quote-text-mobile button[aria-pressed=true] { background: var(--color-accent); color: var(--color-on-brand); }
  .quote-text-catalogue { border-right: 0; }
  .quote-text-catalogue, .quote-text-selection { padding: 16px; }
  .quote-text-catalogue input, .quote-text-entry input, .quote-text-entry textarea { font-size: 16px; }
}

.quote-text-excerpt { margin-top: 6px; overflow-wrap: anywhere; }

/* Services compare selections and totals, without an empty aircraft-sized column. */
.quote-preparation--services .quote-proposal-heading > div:first-child { display: block; }

.quote-vat-input { position: relative; }
.quote-vat-input input { padding-right: 40px; }
.quote-vat-unit { position: absolute; right: 14px; bottom: 10px; color: var(--color-muted); pointer-events: none; }
.quote-vat-shortcuts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.quote-vat-totals { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; margin-top: 20px; border-top: 1px solid var(--color-line); padding-top: 16px; }
.quote-vat-totals[hidden] { display: none; }
.quote-vat-totals dt { font-size: 12px; color: var(--color-muted); }
.quote-vat-totals dd { margin: 4px 0 0; font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }

/* A20: independent commissions join the existing financial summary and option rows. */
.quote-commission-panel { width: min(560px, calc(100vw - 32px)); }
.quote-commission-summary { padding: 10px 0; align-items: center; }
.quote-commission-summary p { margin-top: 4px; font-size: 12px; }
.quote-service-commission { display: grid; gap: 12px; padding-top: 4px; }
.quote-service-commission[hidden] { display: none; }
.quote-service-commission h3 { font-size: 14px; font-weight: 600; }
.quote-option-commission { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--color-line); margin-top: 12px; padding-top: 12px; }

.quote-proposal-summary .quote-margin { flex-wrap: wrap; row-gap: 4px; }
.quote-proposal-summary .quote-margin > span { flex: 0 0 auto; }
.quote-proposal-summary .quote-margin > strong { margin-left: auto; }
.quote-commission-summary > strong, .quote-acceptance-financials dd { white-space: nowrap; }
