/* ==========================================================================
   print.css — what comes out of the printer.

   Loaded with media="print", so it costs a visitor nothing.

   Three things get printed in practice: the season schedule Tom hands out at
   events, an event page somebody is driving to, and a hound's profile. All
   three have to come out on Letter paper, in black on white, with the
   addresses of any links the reader will need.
   ========================================================================== */

@page {
  size: letter portrait;
  margin: 16mm 14mm;
}

/* The screen's green gradient is a fixed layer, which a printer would put
   on every sheet. */
body::before { display: none !important; }

body {
  background: #fff !important;
  color: #000 !important;
  font-size: 11pt;
  line-height: 1.45;
}

/* Nothing interactive survives printing. */
.zb-header,
.zb-footer,
.zb-announcement,
.zb-env-ribbon,
.zb-skip-link,
.zb-theme-toggle,
.offcanvas,
.zb-header__burger,
.btn,
nav,
form,
video,
audio,
[data-zb-no-print] {
  display: none !important;
}

/* The stacked logo at the top of the first page only. */
.zb-print-header {
  display: block !important;
  margin-bottom: 8mm;
  padding-bottom: 4mm;
  border-bottom: 1.5pt solid #000;
}

.zb-print-header img { width: 42mm; height: auto; }

h1, h2, h3 {
  color: #000 !important;
  page-break-after: avoid;
  break-after: avoid;
}

h1 { font-size: 20pt; }
h2 { font-size: 14pt; margin-top: 8mm; }
h3 { font-size: 12pt; }

p, li { orphans: 3; widows: 3; }

img { max-width: 100% !important; page-break-inside: avoid; break-inside: avoid; }

/* Tables are the point of the schedule: they must not split a row across a
   page, and the header has to repeat on every sheet. */
table {
  width: 100%;
  border-collapse: collapse;
  font-size: 10pt;
  font-variant-numeric: tabular-nums;
}

thead { display: table-header-group; }
tr { page-break-inside: avoid; break-inside: avoid; }

th, td {
  padding: 1.5mm 2mm;
  border-bottom: 0.5pt solid #999;
  text-align: left;
  vertical-align: top;
}

th { border-bottom-width: 1pt; font-size: 9pt; text-transform: uppercase; letter-spacing: 0.06em; }

/* Ranch events in bold, tentative ones in italic — the same reading as the
   colour legend, for a sheet that may be photocopied in black and white. */
.zb-event--ranch td { font-weight: 700; }
.zb-event--tentative td { font-style: italic; }

/* The sport colours survive if the printer has ink for them, and the chip's
   own words carry the meaning if it does not. */
.zb-chip {
  border: 0.5pt solid currentColor;
  padding: 0.3mm 1.2mm;
  font-size: 8.5pt;
}

/* A reader cannot click paper, so links that matter get their address. */
.zb-prose a[href^="http"]::after,
.zb-event a[href^="http"]::after {
  content: " (" attr(href) ")";
  font-size: 8.5pt;
  word-break: break-all;
}

/* Except these, where the address is noise. */
a[href^="#"]::after,
a[href^="mailto"]::after,
.zb-print-header a::after { content: ""; }

/* Said once at the foot of the schedule, so a printout that has been pinned
   up for three months admits its age. */
.zb-print-updated {
  display: block !important;
  margin-top: 8mm;
  padding-top: 3mm;
  border-top: 0.5pt solid #999;
  font-size: 9pt;
}

/* Sections are spaced for a screen; on paper the same gaps are a third of a
   sheet of white between a hound's name and the first line of the story. */
.zb-section,
.zb-section--tight {
  padding-block: 4mm !important;
}

/* A hound's photograph is kept, but no taller than a third of the page. A
   hound with no photograph yet has a large pale panel on screen, which on
   paper is half a sheet of nothing, so it goes. */
.zb-hound-hero__media {
  aspect-ratio: auto !important;
  max-width: 70mm;
}

.zb-hound-hero__media:has(.zb-hound-card__nophoto) {
  display: none !important;
}

/* "More from the journal" is for browsing, which paper cannot do. */
.news-more {
  display: none !important;
}
