/* Print Layout Styles - Professional Cartographic Output */

/* Hide all UI chrome when printing */
@media print {
  /* Hide navigation and UI elements */
  #topbar,
  .legend-panel,
  .inspector-panel,
  .layer-manager-panel,
  .map-controls,
  .export-center-modal,
  .modal-overlay,
  .diagnostics-panel,
  .developer-panel,
  .session-indicator,
  .mobile-tabs-container,
  .documentation-modal-overlay .modal-close,
  .docs-nav,
  button:not(.print-keep),
  .btn:not(.print-keep) {
    display: none !important;
  }

  /* Reset page margins and layout */
  * {
    -webkit-print-color-adjust: exact !important;
    color-adjust: exact !important;
  }

  html, body {
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: white !important;
  }

  /* Map container fills available space */
  #map {
    position: relative !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
  }

  /* Ensure map canvas scales properly */
  #map canvas {
    max-width: 100% !important;
    height: auto !important;
  }

  /* Page break controls */
  .page-break-before {
    page-break-before: always !important;
  }
  
  .page-break-after {
    page-break-after: always !important;
  }
  
  .no-page-break {
    page-break-inside: avoid !important;
  }
}

/* Portrait A4 Template (210 × 297mm) */
@media print and (orientation: portrait) {
  @page {
    size: A4 portrait;
    margin: 15mm 10mm 70mm 10mm;
  }
  
  body[data-print-template="portrait-a4"] #map {
    width: 190mm !important;
    height: 212mm !important;
  }
  
  body[data-print-template="portrait-a4"] .print-title {
    font-size: 18pt !important;
    margin-bottom: 8pt !important;
  }
  
  body[data-print-template="portrait-a4"] .print-subtitle {
    font-size: 12pt !important;
    margin-bottom: 12pt !important;
  }
}

/* Landscape A4 Template (297 × 210mm) */
@media print and (orientation: landscape) {
  @page {
    size: A4 landscape;
    margin: 10mm 15mm 70mm 15mm;
  }
  
  body[data-print-template="landscape-a4"] #map {
    width: 267mm !important;
    height: 130mm !important;
  }
}

/* Portrait Letter Template (8.5" × 11") */
@media print and (max-width: 8.5in) and (orientation: portrait) {
  @page {
    size: letter portrait;
    margin: 0.6in 0.4in 2.8in 0.4in;
  }
  
  body[data-print-template="portrait-letter"] #map {
    width: 7.7in !important;
    height: 7.4in !important;
  }
}

/* Landscape Letter Template (11" × 8.5") */
@media print and (max-width: 11in) and (orientation: landscape) {
  @page {
    size: letter landscape;
    margin: 0.4in 0.6in 2.8in 0.6in;
  }
  
  body[data-print-template="landscape-letter"] #map {
    width: 9.8in !important;
    height: 4.7in !important;
  }
}

/* Print Layout Elements */
@media print {
  /* Title Block */
  .print-title {
    position: fixed !important;
    top: 5mm !important;
    left: 10mm !important;
    right: 10mm !important;
    z-index: var(--z-modal) !important;
    font-family: 'Georgia', 'Times New Roman', serif !important;
    font-weight: bold !important;
    color: var(--neutral-950) !important;
    text-align: center !important;
    margin: 0 !important;
    padding: 0 0 4pt 0 !important;
    border-bottom: 1pt solid var(--neutral-950) !important;
    background: var(--neutral-50) !important;
  }

  .print-subtitle {
    position: fixed !important;
    top: 18mm !important;
    left: 10mm !important;
    right: 10mm !important;
    z-index: calc(var(--z-modal) - 1) !important;
    font-family: 'Georgia', 'Times New Roman', serif !important;
    font-style: italic !important;
    color: var(--neutral-700) !important;
    text-align: center !important;
    margin: 0 !important;
    padding: 2pt 0 0 0 !important;
    background: var(--bg-canvas) !important;
    opacity: 0.9 !important;
  }

  /* Scale Bar */
  .print-scale-bar {
    position: fixed !important;
    bottom: 8mm !important;
    left: 10mm !important;
    z-index: calc(var(--z-modal) - 2) !important;
    background: var(--neutral-50) !important;
    border: 1pt solid var(--neutral-950) !important;
    padding: 4pt 8pt !important;
    font-family: 'Arial', 'Helvetica', sans-serif !important;
    font-size: 10pt !important;
    font-weight: bold !important;
    color: var(--neutral-950) !important;
  }

  /* North Arrow */
  .print-north-arrow {
    position: fixed !important;
    top: 35mm !important;
    right: 15mm !important;
    z-index: calc(var(--z-modal) - 3) !important;
    width: 20mm !important;
    height: 20mm !important;
    background: var(--neutral-50) !important;
    border: 1pt solid var(--neutral-950) !important;
    border-radius: var(--radius-full) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 14pt !important;
    font-weight: bold !important;
    color: var(--neutral-950) !important;
  }

  .print-north-arrow::after {
    content: "N" !important;
  }

  /* ANSI Title Block - Professional Architectural/Engineering Standard */
  .ansi-title-block {
    position: fixed !important;
    bottom: 5mm !important;
    right: 5mm !important;
    z-index: calc(var(--z-modal) + 1) !important;
    width: 180mm !important;
    height: 55mm !important;
    background: white !important;
    border: 2pt solid var(--neutral-950) !important;
    font-family: 'Arial', 'Helvetica', sans-serif !important;
    color: var(--neutral-950) !important;
    display: grid !important;
    grid-template-columns: 1fr 60mm !important;
    grid-template-rows: 12mm 1fr !important;
    box-shadow: var(--shadow-sm) !important;
  }

  .title-block-header {
    grid-column: 1 / 3 !important;
    border-bottom: 1pt solid var(--neutral-950) !important;
    display: grid !important;
    grid-template-columns: 1fr 40mm !important;
    align-items: center !important;
    padding: 2mm !important;
  }

  .title-block-company {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  .company-name {
    font-size: 14pt !important;
    font-weight: bold !important;
    margin: 0 0 1mm 0 !important;
  }

  .company-address {
    font-size: 8pt !important;
    line-height: 1.2 !important;
    margin: 0 !important;
  }

  .title-block-logo {
    text-align: right !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    font-size: 10pt !important;
    font-weight: bold !important;
  }

  .title-block-main {
    grid-column: 1 !important;
    grid-row: 2 !important;
    border-right: 1pt solid var(--neutral-950) !important;
    display: grid !important;
    grid-template-columns: 1fr 25mm !important;
    grid-template-rows: 15mm 1fr !important;
  }

  .drawing-info {
    grid-column: 1 / 3 !important;
    border-bottom: 1pt solid var(--neutral-950) !important;
    padding: 2mm !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  .project-name {
    font-size: 12pt !important;
    font-weight: bold !important;
    margin: 0 0 1mm 0 !important;
  }

  .drawing-title {
    font-size: 16pt !important;
    font-weight: bold !important;
    margin: 0 !important;
  }

  .drawing-details {
    grid-column: 1 !important;
    padding: 2mm !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: repeat(4, 1fr) !important;
    gap: 0 !important;
  }

  .detail-field {
    border: 0.5pt solid var(--neutral-950) !important;
    padding: 1mm 2mm !important;
    font-size: 8pt !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  .field-label {
    font-size: 6pt !important;
    font-weight: bold !important;
    margin: 0 0 0.5mm 0 !important;
    text-transform: uppercase !important;
  }

  .field-value {
    font-size: 8pt !important;
    font-weight: bold !important;
    margin: 0 !important;
  }

  .drawing-number-block {
    grid-column: 2 !important;
    grid-row: 2 !important;
    border-left: 1pt solid var(--neutral-950) !important;
    padding: 2mm !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    text-align: center !important;
  }

  .drawing-number {
    font-size: 18pt !important;
    font-weight: bold !important;
    margin: 0 0 2mm 0 !important;
  }

  .sheet-info {
    font-size: 10pt !important;
    margin: 0 !important;
  }

  .title-block-sidebar {
    grid-column: 2 !important;
    grid-row: 2 !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .approval-section {
    border-bottom: 0.5pt solid var(--neutral-950) !important;
    padding: 2mm !important;
    flex: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
  }

  .approval-row {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    font-size: 7pt !important;
    margin: 1mm 0 !important;
  }

  .approval-label {
    font-weight: bold !important;
    text-transform: uppercase !important;
  }

  .approval-value {
    font-weight: bold !important;
    min-width: 15mm !important;
    text-align: center !important;
    border-bottom: 0.5pt solid var(--neutral-950) !important;
  }

  .revision-section {
    padding: 2mm !important;
    text-align: center !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  .revision-label {
    font-size: 8pt !important;
    font-weight: bold !important;
    text-transform: uppercase !important;
    margin: 0 0 1mm 0 !important;
  }

  .revision-value {
    font-size: 24pt !important;
    font-weight: bold !important;
    margin: 0 !important;
    border: 1pt solid var(--neutral-950) !important;
    min-height: 15mm !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  /* Legend for Print */
  .print-legend {
    position: fixed !important;
    bottom: 60mm !important;
    right: 10mm !important;
    z-index: calc(var(--z-modal) - 4) !important;
    max-width: 60mm !important;
    background: var(--bg-canvas) !important;
    opacity: 0.95 !important;
    border: 1pt solid var(--neutral-950) !important;
    padding: 6pt !important;
    font-family: 'Arial', 'Helvetica', sans-serif !important;
    font-size: 9pt !important;
    color: var(--neutral-950) !important;
  }

  /* When ANSI title block is present, adjust legend position */
  body[data-ansi-title-block="true"] .print-legend {
    bottom: 60mm !important;
  }

  .print-legend-title {
    font-weight: bold !important;
    margin: 0 0 4pt 0 !important;
    padding: 0 0 2pt 0 !important;
    border-bottom: 0.5pt solid var(--text-secondary) !important;
    font-size: 10pt !important;
  }

  .print-legend-item {
    display: flex !important;
    align-items: center !important;
    margin: 2pt 0 !important;
    gap: 4pt !important;
  }

  .print-legend-swatch {
    width: 12pt !important;
    height: 12pt !important;
    border: 0.5pt solid var(--neutral-950) !important;
    flex-shrink: 0 !important;
  }

  .print-legend-label {
    font-size: 9pt !important;
    color: var(--neutral-950) !important;
  }

  /* High contrast mode for better print visibility */
  [data-high-contrast="true"] .print-title,
  [data-high-contrast="true"] .print-subtitle,
  [data-high-contrast="true"] .print-scale-bar,
  [data-high-contrast="true"] .print-north-arrow,
  [data-high-contrast="true"] .print-legend {
    border-width: 2pt !important;
    background: white !important;
  }

  [data-high-contrast="true"] .print-legend-swatch {
    border-width: 1pt !important;
  }

  /* Print quality optimizations */
  .maplibregl-canvas {
    image-rendering: -webkit-optimize-contrast !important;
    image-rendering: -moz-crisp-edges !important;
    image-rendering: pixelated !important;
  }

  /* Ensure text remains selectable and crisp */
  .print-title,
  .print-subtitle,
  .print-scale-bar,
  .print-legend {
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    font-smooth: always !important;
    text-rendering: optimizeLegibility !important;
  }
}

/* Print preview mode (for browser print preview) */
@media screen {
  body[data-print-preview="true"] {
    background: var(--bg-muted) !important;
  }
  
  body[data-print-preview="true"] #map {
    box-shadow: var(--shadow-lg) !important;
    margin: var(--spacing-xl) auto !important;
  }
  
  /* Show print elements during preview */
  body[data-print-preview="true"] .print-title,
  body[data-print-preview="true"] .print-subtitle,
  body[data-print-preview="true"] .print-scale-bar,
  body[data-print-preview="true"] .print-north-arrow,
  body[data-print-preview="true"] .print-legend {
    display: block !important;
  }
  
  /* Hide UI elements during preview */
  body[data-print-preview="true"] #topbar,
  body[data-print-preview="true"] .legend-panel,
  body[data-print-preview="true"] .inspector-panel,
  body[data-print-preview="true"] .layer-manager-panel,
  body[data-print-preview="true"] .map-controls {
    display: none !important;
  }
}

/* ===== MODAL AND DOCUMENTATION PRINT STYLES ===== */
@media print {
  /* Documentation Modal Print Layout */
  .documentation-modal-overlay {
    position: static !important;
    background: var(--bg-canvas) !important;
  }
  
  .documentation-modal {
    max-width: none !important;
    width: 100% !important;
    height: auto !important;
    box-shadow: none !important;
    border: none !important;
    background: var(--bg-canvas) !important;
  }
  
  .docs-header {
    border-bottom: 2pt solid var(--text-primary) !important;
    background: var(--bg-canvas) !important;
    padding: var(--spacing-lg) !important;
  }
  
  .docs-main-title {
    color: var(--text-primary) !important;
    font-size: 18pt !important;
  }
  
  .docs-subtitle {
    color: var(--text-secondary) !important;
    font-size: 12pt !important;
  }
  
  .docs-content {
    padding: var(--spacing-lg) !important;
    color: var(--text-primary) !important;
  }
  
  .docs-section-title {
    color: var(--text-primary) !important;
    font-size: 16pt !important;
    margin: var(--spacing-lg) 0 var(--spacing-md) 0 !important;
  }
  
  .docs-subsection-title {
    color: var(--text-primary) !important;
    font-size: 14pt !important;
    margin: var(--spacing-md) 0 var(--spacing-sm) 0 !important;
  }
  
  /* Mobile Layout Print Adjustments */
  .mobile-layout .layer-manager,
  .mobile-layout .inspector {
    position: static !important;
    display: block !important;
    background: var(--bg-canvas) !important;
    color: var(--text-primary) !important;
    border: 1pt solid var(--text-primary) !important;
    margin: var(--spacing-md) 0 !important;
    padding: var(--spacing-md) !important;
  }
}

/* Print Typography Standardization */
@media print {
  /* Standard print fonts for better readability */
  .print-title,
  .ansi-title-block,
  .docs-main-title {
    font-family: 'Georgia', 'Times New Roman', serif !important;
  }
  
  .print-scale-bar,
  .print-legend,
  .docs-content,
  .title-block-main {
    font-family: 'Arial', 'Helvetica', sans-serif !important;
  }
  
  /* Ensure proper contrast for all text */
  h1, h2, h3, h4, h5, h6,
  p, span, div, label,
  .docs-section-title,
  .docs-subsection-title,
  .detail-field {
    color: var(--text-primary) !important;
  }
  
  /* Background consistency */
  body,
  .documentation-modal,
  .mobile-layout .layer-manager,
  .mobile-layout .inspector {
    background: var(--bg-canvas) !important;
  }
}

/* Reduced Motion Support */
@media print and (prefers-reduced-motion: reduce) {
  * {
    transition: none !important;
    animation: none !important;
  }
}