/* Local AI Slides: print layouts for an HTML talk's slides and report (see /site/talk-print.js, which
   sets html[data-print] and the page size). Screen styles are untouched. */

/* Print buttons, styled by the talk's own .dbtn / .btn; the icon follows the controls' size. */
.talkPrint svg { width: 18px; height: 18px; }

@media print {
  html[data-print] *,
  html[data-print] *::before,
  html[data-print] *::after {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* Site and talk chrome never prints. */
  html[data-print] .top,
  html[data-print] .foot,
  html[data-print] .lai-consent,
  html[data-print] .laiNav-paletteBackdrop,
  html[data-print] .rail,
  html[data-print] .tocm,
  html[data-print] .talkPrint,
  html[data-print] .btnrow {
    display: none !important;
  }

  html[data-print] body {
    height: auto !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  /* ---- Slides: one 1920×1080 page per slide, every build finished ---- */
  html[data-print="slides"],
  html[data-print="slides"] body {
    margin: 0;
    background: #05070a !important;
  }

  html[data-print="slides"] .view:not(#view-keynote) { display: none !important; }
  html[data-print="slides"] #view-keynote { display: block !important; }
  html[data-print="slides"] .deck { display: block !important; padding: 0 !important; gap: 0 !important; }
  html[data-print="slides"] .deck > :not(.stage-wrap) { display: none !important; }

  html[data-print="slides"] .stage-wrap {
    width: 1920px !important;
    min-width: 0 !important;
    aspect-ratio: auto !important;
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }

  html[data-print="slides"] .stage {
    position: static !important;
    transform: none !important;
    height: auto !important;
    overflow: visible !important;
  }

  html[data-print="slides"] .slide {
    position: relative !important;
    inset: auto !important;
    width: 1920px;
    height: 1080px;
    overflow: hidden;
    opacity: 1 !important;
    visibility: visible !important;
    transition: none !important;
    break-after: page;
    page-break-after: always;
    background: #05070a;
  }

  html[data-print="slides"] .slide:last-of-type { break-after: auto; page-break-after: auto; }

  /* Every build at its end state: the animation is far past its end and frozen there. */
  html[data-print="slides"] .slide *,
  html[data-print="slides"] .slide *::before,
  html[data-print="slides"] .slide *::after {
    animation-delay: -60s !important;
    animation-play-state: paused !important;
    transition: none !important;
  }

  /* The brand mark sits on the stage once on screen; fixed repeats it on every printed page. */
  html[data-print="slides"] .stage > .sbrand { position: fixed !important; }

  /* ---- Report: the light theme, one readable column ---- */
  html[data-print="report"] .view:not(#view-report) { display: none !important; }
  html[data-print="report"] #view-report { display: block !important; }
  html[data-print="report"] .rlayout { display: block !important; padding-top: 0 !important; }
  html[data-print="report"] .rlayout > aside { display: none !important; }
  html[data-print="report"] .rhead { padding-top: 0 !important; min-height: 0 !important; }
  html[data-print="report"] .rhead .hero-bg { display: none !important; }

  /* Reveal-on-scroll content and animations print in their final state. */
  html[data-print="report"] #view-report * {
    animation: none !important;
    transition: none !important;
  }
  html[data-print="report"] .rv { opacity: 1 !important; transform: none !important; }

  /* Keep figures, tables and callouts in one piece; headings stay with what follows. */
  html[data-print="report"] .panel,
  html[data-print="report"] figure,
  html[data-print="report"] tr,
  html[data-print="report"] .callout { break-inside: avoid; }
  html[data-print="report"] h2,
  html[data-print="report"] h3 { break-after: avoid; }
  html[data-print="report"] .tablewrap { overflow: visible !important; }
}
