/* Maquetación editorial para las fichas guardadas como PDF. */
@media print {
  @page {
    size: A4 portrait;
    margin: 11mm 11mm 14mm;
  }

  body.print-travel {
    color: #172533;
    background: #fff;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 10pt;
    line-height: 1.45;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.print-travel .modal-shell {
    position: absolute;
    inset: 0 auto auto 0;
    width: 100%;
    padding: 0;
    overflow: visible;
  }

  body.print-travel .modal-card {
    width: 100%;
    max-width: none;
    min-height: 0;
    margin: 0;
    overflow: visible;
    background: #fff;
    box-shadow: none;
  }

  body.print-travel .modal-card::before {
    content: "VIAJANDO POR USA  /  CATÁLOGO DE VIAJES";
    display: block;
    padding: 0 0 3mm;
    color: #0b2946;
    border-bottom: .6mm solid #e44b3f;
    font-size: 7.5pt;
    font-weight: 800;
    letter-spacing: .15em;
  }

  body.print-travel .modal-card::after {
    content: "ViajandoPorUSA.com";
    display: block;
    margin-top: 8mm;
    padding: 4mm 5mm;
    color: #fff;
    background: #0b2946;
    font-size: 8pt;
    font-weight: 700;
    letter-spacing: .035em;
    text-align: center;
  }

  body.print-travel .detail-hero {
    position: relative;
    display: flex;
    align-items: end;
    min-height: 79mm;
    margin: 5mm 0 6mm;
    padding: 11mm;
    overflow: hidden;
    color: #fff;
    background-position: center;
    background-size: cover;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  body.print-travel .detail-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(4, 20, 35, .04), rgba(4, 20, 35, .9));
  }

  body.print-travel .detail-hero::after {
    background: linear-gradient(180deg, rgba(4, 20, 35, .04), rgba(4, 20, 35, .9));
  }

  body.print-travel .detail-hero > div {
    position: relative;
    z-index: 2;
  }

  body.print-travel .detail-hero p {
    margin: 0 0 2mm;
    font-size: 8pt;
    letter-spacing: .14em;
  }

  body.print-travel .detail-hero h2 {
    max-width: 165mm;
    margin: 0;
    font-size: 30pt;
    line-height: 1;
  }

  body.print-travel .detail-hero span {
    margin-top: 3mm;
    font-size: 11pt;
  }

  body.print-travel .detail-hero small {
    margin-top: 2mm;
    font-size: 6.5pt;
  }

  body.print-travel .detail-body {
    padding: 0;
  }

  body.print-travel .detail-summary {
    display: grid;
    grid-template-columns: .85fr 1.15fr;
    align-items: start;
    gap: 7mm;
    margin: 0;
    padding: 5mm 0;
    border-top: .25mm solid #d8d1c7;
    border-bottom: .25mm solid #d8d1c7;
    break-inside: avoid;
  }

  body.print-travel .detail-summary h3 {
    margin: 1.5mm 0 0;
    color: #0b2946;
    font-size: 19pt;
    line-height: 1.05;
  }

  body.print-travel .detail-summary > p {
    margin: 0;
    color: #4b5a67;
    font-size: 9pt;
    line-height: 1.55;
    text-align: left;
  }

  body.print-travel .eyebrow {
    font-size: 6.5pt;
    letter-spacing: .15em;
  }

  body.print-travel .route-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    margin: 5mm 0 0;
    color: #0b2946;
    background: #f5f0e7;
    border: 0;
    break-inside: avoid;
  }

  body.print-travel .route-stats span,
  body.print-travel .route-stats span + span,
  body.print-travel .route-stats span:last-child {
    min-width: 0;
    padding: 3.5mm 4mm;
    border: 0;
    border-right: .25mm solid #ddd4c7;
    font-size: 6.5pt;
  }

  body.print-travel .route-stats span:last-child {
    border-right: 0;
  }

  body.print-travel .route-stats b {
    margin-bottom: 1mm;
    font-size: 13pt;
  }

  body.print-travel .route-line {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 2mm;
    margin: 5mm 0 7mm;
    padding: 0;
    overflow: visible;
    break-inside: avoid;
  }

  body.print-travel .route-stop {
    display: grid;
    grid-template-columns: 7mm 1fr;
    align-items: center;
    gap: 2mm;
    min-width: 0;
    padding: 2.5mm;
    background: #f8f5ef;
    border: .25mm solid #ddd4c7;
  }

  body.print-travel .route-stop::after {
    display: none;
  }

  body.print-travel .route-stop span {
    width: 7mm;
    height: 7mm;
    font-size: 7pt;
  }

  body.print-travel .route-stop strong {
    max-width: none;
    margin: 0;
    font-size: 7.5pt;
    line-height: 1.25;
  }

  body.print-travel .departure-section {
    display: grid;
    grid-template-columns: .8fr 1.2fr;
    gap: 6mm;
    margin: 0 0 7mm;
    padding: 5mm;
    background: #fff;
    border: .25mm solid #d8d1c7;
    break-inside: avoid;
  }

  body.print-travel .departure-heading h3 {
    font-size: 17pt;
  }

  body.print-travel .departure-heading > p:last-child,
  body.print-travel .departure-list > p {
    font-size: 7.5pt;
    line-height: 1.45;
  }

  body.print-travel .departure-list > div {
    grid-template-columns: 18mm 1fr;
    gap: 3mm;
    padding: 2.5mm 3mm;
  }

  body.print-travel .departure-list time,
  body.print-travel .departure-list strong {
    font-size: 8pt;
  }

  body.print-travel .fly-cost-guide,
  body.print-travel .fly-included-visits,
  body.print-travel .fly-important-notes {
    margin: 6mm 0;
    padding: 5mm;
    border: .25mm solid #d8d1c7;
    border-left: 1mm solid #e44b3f;
    background: #f8f5ef;
    break-inside: auto;
  }

  body.print-travel .fly-cost-guide-heading,
  body.print-travel .fly-included-visits-heading {
    margin-bottom: 4mm;
  }

  body.print-travel .fly-cost-guide-heading h3,
  body.print-travel .fly-included-visits-heading h3 {
    margin: 1mm 0 2mm;
    font-size: 18pt;
  }

  body.print-travel .fly-cost-guide-heading > p:last-child,
  body.print-travel .fly-included-visits-heading > p:last-child,
  body.print-travel .fly-important-notes li {
    font-size: 8pt;
    line-height: 1.5;
    text-align: left;
  }

  body.print-travel .fly-cost-guide-grid,
  body.print-travel .fly-included-visits-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 3mm;
  }

  body.print-travel .fly-cost-guide-grid article,
  body.print-travel .fly-included-visits-grid article {
    padding: 4mm;
    border: .25mm solid #e0d9cf;
    break-inside: avoid;
  }

  body.print-travel .fly-cost-guide-grid p,
  body.print-travel .fly-included-visits-grid p,
  body.print-travel .fly-included-visits-grid small {
    font-size: 7.5pt;
    line-height: 1.45;
    text-align: left;
  }

  body.print-travel .itinerary-section {
    display: block;
    margin: 0;
    padding: 0;
    border: 0;
    break-before: page;
    page-break-before: always;
  }

  body.print-travel .itinerary-heading {
    display: grid;
    grid-template-columns: .7fr 1.3fr;
    gap: 7mm;
    align-items: end;
    margin: 0 0 6mm;
    padding: 0 0 4mm;
    border-bottom: .8mm solid #e44b3f;
  }

  body.print-travel .itinerary-heading .eyebrow {
    grid-column: 1 / -1;
    margin-bottom: -4mm;
  }

  body.print-travel .itinerary-heading h3 {
    margin: 0;
    color: #0b2946;
    font-size: 24pt;
    line-height: 1;
  }

  body.print-travel .itinerary-heading > p:last-child {
    margin: 0;
    color: #4b5a67;
    font-size: 8pt;
    line-height: 1.45;
    text-align: left;
  }

  body.print-travel .itinerary-list {
    display: block;
    border: 0;
    columns: 2;
    column-gap: 7mm;
    column-rule: .25mm solid #e1dbd1;
  }

  body.print-travel .itinerary-list details {
    display: inline-block !important;
    width: 100%;
    margin: 0 0 4mm;
    overflow: visible !important;
    background: #fff;
    border: .25mm solid #d8d1c7;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  body.print-travel .itinerary-list summary {
    display: grid;
    grid-template-columns: 14mm 1fr;
    gap: 3mm;
    padding: 3mm 3.5mm;
    color: #0b2946;
    background: #f5f0e7;
    border-bottom: .25mm solid #d8d1c7;
  }

  body.print-travel .itinerary-list summary span {
    align-self: start;
    color: #e44b3f;
    font-size: 7pt;
  }

  body.print-travel .itinerary-list summary strong {
    font-size: 9pt;
    line-height: 1.3;
  }

  body.print-travel .itinerary-list summary i {
    display: none;
  }

  body.print-travel .itinerary-list details > p {
    display: block !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 3.5mm;
    overflow: visible !important;
    color: #364754;
    font-size: 8.25pt;
    line-height: 1.48;
    text-align: left;
  }

  body.print-travel .map-section {
    display: grid;
    grid-template-columns: .72fr 1.28fr;
    min-height: 72mm;
    margin: 7mm 0;
    overflow: hidden;
    color: #fff;
    background: #0b2946;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  body.print-travel .map-copy {
    align-self: stretch;
    padding: 7mm;
  }

  body.print-travel .map-copy h3 {
    font-size: 18pt;
  }

  body.print-travel .map-copy > p {
    margin-top: 3mm;
    color: #d4dfe7;
    font-size: 7.5pt;
    line-height: 1.5;
    text-align: left;
  }

  body.print-travel .map-copy a {
    display: none;
  }

  body.print-travel .route-map-frame,
  body.print-travel .map-section iframe {
    width: 100%;
    height: 72mm;
    min-height: 72mm;
    background: #dce5e8;
  }

  body.print-travel .leaflet-container,
  body.print-travel .leaflet-map-pane,
  body.print-travel .leaflet-tile-pane,
  body.print-travel .leaflet-overlay-pane,
  body.print-travel .leaflet-marker-pane,
  body.print-travel .leaflet-tile,
  body.print-travel .leaflet-marker-icon,
  body.print-travel .leaflet-map-pane svg,
  body.print-travel .leaflet-map-pane path {
    visibility: visible !important;
    opacity: 1 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.print-travel .leaflet-control-zoom {
    display: none;
  }

  body.print-travel .leaflet-control-attribution {
    font-size: 5.5pt;
  }

  body.print-travel .included-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9mm;
    padding: 6mm 0;
    border-top: .25mm solid #d8d1c7;
    border-bottom: .25mm solid #d8d1c7;
    break-inside: avoid;
  }

  body.print-travel .included-grid ul {
    margin: 2mm 0 0;
    padding-left: 4mm;
    color: #42515e;
    font-size: 8pt;
    line-height: 1.55;
  }

  body.print-travel .included-grid small {
    font-size: 6.5pt;
    line-height: 1.45;
  }

  body.print-travel .quote-box {
    margin-top: 7mm;
    padding: 6mm;
    background: #f5f0e7;
    border-top: 1mm solid #e44b3f;
    break-inside: avoid;
  }

  body.print-travel .quote-head {
    align-items: end;
  }

  body.print-travel .quote-head h3 {
    font-size: 18pt;
  }

  body.print-travel .quote-controls,
  body.print-travel .quote-actions,
  body.print-travel .detail-footer {
    display: none !important;
  }

  body.print-travel .quote-result {
    margin-top: 4mm;
    padding: 4mm;
    border: .25mm solid #e1dbd1;
  }

  body.print-travel .quote-result strong {
    font-size: 20pt;
  }

  body.print-travel .quote-result p,
  body.print-travel .quote-rule,
  body.print-travel .fly-price-disclaimer,
  body.print-travel .quote-empty,
  body.print-travel .special-quote-flight span,
  body.print-travel .special-conditions p {
    color: #4b5a67;
    font-size: 7.5pt;
    line-height: 1.5;
    text-align: left;
  }

  body.print-travel .special-conditions,
  body.print-travel .special-deposit-callout,
  body.print-travel .special-flight-note,
  body.print-travel .special-discount-table {
    break-inside: avoid;
  }
}

/*
 * Aislamiento real de la ficha imprimible.
 * `visibility: hidden` conserva el espacio de toda la web y era la causa de
 * las decenas de páginas en blanco. En impresión retiramos del flujo todo lo
 * que no pertenece al documento elegido.
 */
@media print {
  @page {
    size: 210mm 297mm;
    margin: 9mm 10mm 11mm;
  }

  html,
  body,
  body > main {
    width: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
  }

  body.print-travel main > :not(.modal-shell),
  body.print-city-break main > :not(.city-break-modal-shell),
  body.print-services main > :not(.ground-catalog) {
    display: none !important;
  }

  body.print-travel main > .modal-shell,
  body.print-city-break main > .city-break-modal-shell {
    position: static !important;
    inset: auto !important;
    display: block !important;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
  }

  body.print-services .ground-catalog {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  body.print-services .ground-catalog > :not(.service-quote) {
    display: none !important;
  }

  body.print-travel .modal-card,
  body.print-city-break .city-break-modal,
  body.print-services .service-quote {
    position: static !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
    box-shadow: none !important;
  }

  /* Fichas de circuitos y Fly & Drive: compactas, legibles y previsibles. */
  body.print-travel .modal-card::before,
  body.print-city-break .city-break-modal::before,
  body.print-services .service-quote::before {
    content: "VIAJANDOPORUSA.COM  /  FICHA DE VIAJE";
    display: block;
    margin: 0 0 3mm;
    padding: 0 0 2.5mm;
    color: #0b2946;
    border-bottom: .55mm solid #e44b3f;
    font-size: 7pt;
    font-weight: 900;
    letter-spacing: .14em;
  }

  body.print-travel .modal-card::after,
  body.print-city-break .city-break-modal::after,
  body.print-services .service-quote::after {
    content: "ViajandoPorUSA.com  ·  info@viajandoporusa.com  ·  Tel. 877 050 646";
    display: block;
    margin-top: 5mm;
    padding: 3mm 4mm;
    color: #fff;
    background: #0b2946;
    font-size: 7pt;
    font-weight: 700;
    letter-spacing: .02em;
    text-align: center;
    break-inside: avoid;
  }

  body.print-travel .detail-hero {
    min-height: 58mm !important;
    height: 58mm !important;
    margin: 0 0 4mm !important;
    padding: 7mm !important;
  }

  body.print-travel .detail-hero h2 {
    font-size: 25pt !important;
    line-height: 1.02 !important;
  }

  body.print-travel .detail-hero span {
    margin-top: 2mm !important;
    font-size: 9.5pt !important;
  }

  body.print-travel .detail-summary {
    gap: 5mm !important;
    padding: 3.5mm 0 !important;
  }

  body.print-travel .detail-summary h3 {
    font-size: 16pt !important;
  }

  body.print-travel .detail-summary > p {
    font-size: 8pt !important;
    line-height: 1.42 !important;
  }

  body.print-travel .route-stats {
    margin-top: 3.5mm !important;
  }

  body.print-travel .route-stats span,
  body.print-travel .route-stats span + span,
  body.print-travel .route-stats span:last-child {
    padding: 2.7mm 3mm !important;
  }

  body.print-travel .route-stats b {
    font-size: 11pt !important;
  }

  body.print-travel .route-line {
    gap: 1.5mm !important;
    margin: 3.5mm 0 4.5mm !important;
  }

  body.print-travel .route-stop {
    padding: 2mm !important;
  }

  body.print-travel .departure-section {
    gap: 4mm !important;
    margin: 0 0 4.5mm !important;
    padding: 3.5mm !important;
  }

  body.print-travel .departure-heading h3 {
    font-size: 14pt !important;
  }

  body.print-travel .itinerary-section {
    break-before: page !important;
    page-break-before: always !important;
  }

  body.print-travel .itinerary-heading {
    gap: 5mm !important;
    margin-bottom: 4mm !important;
    padding-bottom: 3mm !important;
  }

  body.print-travel .itinerary-heading h3 {
    font-size: 21pt !important;
  }

  body.print-travel .itinerary-list {
    column-gap: 5mm !important;
  }

  body.print-travel .itinerary-list details {
    margin-bottom: 2.5mm !important;
  }

  body.print-travel .itinerary-list summary {
    padding: 2.2mm 2.7mm !important;
  }

  body.print-travel .itinerary-list details > p {
    padding: 2.7mm !important;
    font-size: 7.7pt !important;
    line-height: 1.38 !important;
  }

  body.print-travel .map-section {
    position: relative !important;
    display: grid !important;
    grid-template-columns: .72fr 1.28fr !important;
    width: 100% !important;
    height: 58mm !important;
    min-height: 58mm !important;
    max-height: 58mm !important;
    margin: 4mm 0 !important;
    overflow: hidden !important;
    break-inside: avoid !important;
  }

  body.print-travel .map-copy {
    height: 58mm !important;
    padding: 5mm !important;
    overflow: hidden !important;
  }

  body.print-travel .map-copy h3 {
    font-size: 15pt !important;
  }

  body.print-travel .route-map-frame,
  body.print-travel .map-section iframe,
  body.print-travel .leaflet-container {
    position: relative !important;
    width: 100% !important;
    height: 58mm !important;
    min-height: 58mm !important;
    max-height: 58mm !important;
    overflow: hidden !important;
  }

  body.print-travel .included-grid {
    gap: 6mm !important;
    padding: 4mm 0 !important;
  }

  body.print-travel .included-grid ul {
    font-size: 7.5pt !important;
    line-height: 1.42 !important;
  }

  body.print-travel .quote-box {
    margin-top: 4mm !important;
    padding: 4mm !important;
  }

  body.print-travel .quote-box:has(.quote-empty) {
    display: none !important;
  }

  /* Escapadas: misma ficha editorial y sin conservar el catálogo de fondo. */
  body.print-city-break .city-break-detail-hero {
    min-height: 55mm !important;
    height: 55mm !important;
    margin: 0 0 4mm !important;
    padding: 7mm !important;
  }

  body.print-city-break .city-break-detail-hero h2 {
    font-size: 27pt !important;
  }

  body.print-city-break .city-break-detail-body {
    padding: 0 !important;
  }

  body.print-city-break .city-break-lead,
  body.print-city-break .city-break-overview,
  body.print-city-break .city-break-basis,
  body.print-city-break .city-break-itinerary,
  body.print-city-break .city-break-visits,
  body.print-city-break .city-break-inclusions,
  body.print-city-break .city-break-notes,
  body.print-city-break .city-break-quote {
    margin-top: 0 !important;
    margin-bottom: 4mm !important;
    padding-top: 4mm !important;
    padding-bottom: 4mm !important;
  }

  body.print-city-break .city-break-day-list article,
  body.print-city-break .city-break-visit-list article,
  body.print-city-break .city-break-basis article {
    break-inside: avoid !important;
  }

  /* Presupuestos de servicios: solo se imprime la selección real. */
  body.print-services .service-quote {
    border: 0 !important;
  }

  body.print-services .service-quote-head {
    display: flex !important;
    align-items: end !important;
    justify-content: space-between !important;
    gap: 8mm !important;
    margin-bottom: 5mm !important;
    padding: 5mm !important;
    color: #fff !important;
    background: #0b2946 !important;
    break-inside: avoid !important;
  }

  body.print-services .service-quote-head h3 {
    margin: 1mm 0 !important;
    color: #fff !important;
    font-size: 20pt !important;
    line-height: 1.05 !important;
  }

  body.print-services .service-quote-head p,
  body.print-services .service-quote-head strong {
    color: #fff !important;
  }

  body.print-services .service-quote-list {
    padding: 0 !important;
  }

  body.print-services .service-quote-list article {
    display: grid !important;
    grid-template-columns: 1fr 35mm !important;
    gap: 3mm 6mm !important;
    margin: 0 !important;
    padding: 4mm 2mm !important;
    border-bottom: .25mm solid #d8d1c7 !important;
    break-inside: avoid !important;
  }

  body.print-services .service-quote-list article > b {
    grid-column: 2 !important;
    align-self: center !important;
    justify-self: end !important;
    font-size: 13pt !important;
  }

  body.print-services .service-quote-total {
    margin-top: 4mm !important;
    padding: 4mm !important;
    color: #0b2946 !important;
    background: #f5f0e7 !important;
    break-inside: avoid !important;
  }

  body.print-services .service-quote-empty {
    display: none !important;
  }
}
