:root {
  /* Brand scale — alinhado docs/apresentacao/jornada-2026/css/tokens.css */
  --green-950: #022c22;
  --green-900: #064e3b;
  --green-800: #065f46;
  --green-700: #047857;
  --green-600: #059669;
  --green-500: #10b981;
  --green-400: #34d399;
  --green-200: #a7f3d0;
  --green-100: #d1fae5;
  --green-50: #ecfdf5;

  --cream: #f7fdf9;
  --white: #ffffff;

  /* Semantic aliases — diff mínimo em CSS/JS existente */
  --color-primary: var(--green-700);
  --color-secondary: var(--pole-as);
  --color-accent: var(--accent-tendency);
  --color-bg: var(--cream);
  --color-surface: var(--white);
  --color-text: #134e4a;
  --color-muted: #5f8a82;
  --color-border: #d1e7df;

  /* Polos ASOI */
  --pole-as: #3b82f6;
  --pole-as-bg: #eff6ff;
  --pole-is: #059669;
  --pole-is-bg: #ecfdf5;
  --color-pole-as: var(--pole-as);
  --color-pole-is: var(--pole-is);

  /* Tendência global — accent único, não compete com polos */
  --accent-warm: #d97706;
  --accent-tendency: var(--accent-warm);

  /* Tipografia */
  --font-body: 'DM Sans', system-ui, -apple-system, sans-serif;
  --font-display: 'DM Sans', system-ui, -apple-system, sans-serif;
  --font-mono: 'Consolas', 'SF Mono', monospace;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.25rem;
  --text-xl: 1.5rem;
  --text-2xl: 2rem;

  /* Raios */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;

  /* Sombras — tintadas verde */
  --shadow-sm: 0 2px 8px rgba(6, 78, 59, 0.06);
  --shadow-md: 0 4px 24px rgba(6, 78, 59, 0.08);
  --shadow-card: var(--shadow-md);

  /* Espaçamento */
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 40px;

  /* Layout */
  --header-h: 64px;
  --sidebar-w: 280px;

  /* Motion (prep P2) */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
}

@media print {
  .app-sidebar,
  .sidebar,
  .upload-view,
  #upload-view,
  .upload-zone,
  .app-header,
  .header-nav,
  .export-btn,
  .accordion-toggle,
  .sidebar-toggle,
  .sidebar-backdrop,
  .btn-delete,
  .extracted-text-panel {
    display: none !important;
  }

  /* Sem o reset abaixo, .app-container mantém height:100vh + overflow:hidden
     e .app-main mantém overflow-y:auto — o laudo fica preso numa caixa de
     1 página cortada e a impressão sai em branco (spec 17_exportacaoPdf).
     layout.css carrega DEPOIS deste arquivo e reafirma os mesmos seletores,
     então o reset precisa de !important para vencer a cascata. */
  .app-container {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
  }

  .app-main {
    overflow: visible !important;
    padding: 0 !important;
  }

  .report-view {
    width: 100% !important;
    max-width: 800px !important;
    margin: 0 auto !important;
    box-shadow: none !important;
    /* reset.css tem o typo border_box (inválido), então vigoraria content-box:
       width:100% + padding 40px estourava a área útil do papel e cortava a
       última coluna do radar (FOCO) na borda (spec 17_exportacaoPdf). */
    box-sizing: border-box !important;
  }

  .dimension-card {
    break-inside: avoid;
    border: 1px solid #ccc;
  }

  body {
    background: white;
    color: black;
    font-size: 11pt;
  }

  h1 {
    font-size: 18pt;
    color: black !important;
  }

  h2 {
    font-size: 14pt;
    color: black !important;
  }

  .report-body table,
  .report-body blockquote,
  .report-body pre {
    break-inside: avoid;
  }

  .report-body h2,
  .report-body h3 {
    break-after: avoid;
  }

  /* Polos AS/IS e faixas de tendência são codificados por cor; sem
     print-color-adjust: exact o Chromium descarta os fundos no papel. */
  .report-view,
  .dimension-card,
  .badge,
  .dim-bar__track,
  .dim-bar__marker {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}
