/* build: 2026-10-19 20:32 UTC */
/* Reveal.js theme matching the Engineering Intelligence book palette.
 * Navy #17365D primary, cream #F5EBD6 slide background, gold #B78331 accent.
 *
 * Typography and spacing are tuned to fit content within a 1280x800 canvas
 * (matches build-decks.sh revealjs_width/height). Slides that would still
 * overflow are auto-shrunk via the flex/scale rules below.
 */

.reveal {
  font-family: "Georgia", "Times New Roman", serif;
  color: #17365D;
  background: #F5EBD6;
  font-size: 28px;
}

.reveal .slides {
  text-align: left;
}

/* Each slide is a flex column so children lay out with predictable spacing
 * and any single overflowing block gets constrained visually rather than
 * pushing content off the bottom. */
.reveal .slides > section,
.reveal .slides > section > section {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: 20px 40px;
  box-sizing: border-box;
  overflow: hidden;
  height: 100%;
}

.reveal .slides > section > *,
.reveal .slides > section > section > * {
  flex: 0 0 auto;
  max-width: 100%;
  min-height: 0;
}

/* asciidoctor-revealjs wraps everything after the h2 in .slide-content.
 * Make that a flex column too so image blocks inside can consume the
 * remaining vertical space. */
.reveal .slides > section > .slide-content {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.reveal .slide-content > * {
  flex: 0 0 auto;
  min-height: 0;
}

.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4 {
  font-family: "Helvetica", "Arial", sans-serif;
  color: #17365D;
  text-transform: none;
  letter-spacing: -0.005em;
  font-weight: 700;
  line-height: 1.1;
  margin: 0 0 0.35em 0;
}

.reveal h1 { font-size: 1.8em; }
.reveal h2 { font-size: 1.35em; }
.reveal h3 { font-size: 1.05em; }
.reveal h4 { font-size: 0.9em;  color: #6C371F; }

.reveal .title-slide {
  text-align: center;
  justify-content: center;
}

.reveal .authors {
  font-family: "Helvetica", "Arial", sans-serif;
  color: #6C371F;
  font-size: 0.75em;
  letter-spacing: 0.08em;
}

.reveal a {
  color: #245A88;
  text-decoration: none;
  border-bottom: 1px dotted #245A88;
}

.reveal p {
  margin: 0.35em 0;
  line-height: 1.35;
}

.reveal ul,
.reveal ol {
  display: block;
  margin: 0.25em 0 0.25em 1.1em;
}

.reveal li {
  margin: 0.15em 0;
  line-height: 1.3;
}

.reveal ul li::marker { color: #B78331; }
.reveal ol li::marker { color: #B78331; font-weight: bold; }

.reveal blockquote {
  color: #17365D;
  background: transparent;
  border-left: 3px solid #B78331;
  padding: 0.2em 0 0.2em 1em;
  margin: 0.4em 0;
  font-style: normal;
  box-shadow: none;
  font-size: 0.95em;
}

.reveal code {
  font-family: "Menlo", "Courier New", monospace;
  color: #17365D;
  background: rgba(23, 54, 93, 0.06);
  padding: 0.05em 0.3em;
  border-radius: 3px;
  font-size: 0.85em;
}

.reveal pre {
  background: rgba(23, 54, 93, 0.06);
  border-left: 3px solid #17365D;
  padding: 0.4em 0.6em;
  border-radius: 3px;
  box-shadow: none;
  font-size: 0.5em;
  line-height: 1.3;
  max-height: 60vh;
  overflow: auto;
}

.reveal pre code {
  background: transparent;
  padding: 0;
}

.reveal table {
  color: #17365D;
  border-collapse: collapse;
  margin: 0.4em 0;
  font-size: 0.7em;
  width: 100%;
}

.reveal table th {
  background: #17365D;
  color: #F5EBD6;
  font-weight: bold;
  padding: 0.35em 0.5em;
  border: none;
  text-align: left;
}

.reveal table td {
  padding: 0.3em 0.5em;
  border-bottom: 1px solid rgba(23, 54, 93, 0.15);
  vertical-align: top;
}

.reveal table tr:nth-child(even) td {
  background: rgba(183, 131, 49, 0.08);
}

.reveal .footnote { color: #6C371F; font-size: 0.55em; font-style: italic; }

.reveal .progress { color: #B78331; }
.reveal .controls { color: #B78331; }
.reveal .slide-number {
  color: #6C371F;
  background: rgba(245, 235, 214, 0.9);
  padding: 0.2em 0.6em;
  border-radius: 3px;
}

/* Images: constrain to the slide's *remaining* vertical space and shrink
 * proportionally rather than overflowing.
 *
 * The imageblock inside .slide-content becomes flex: 1 so it consumes
 * remaining vertical space; min-height: 0 is essential for flex-shrink
 * to actually shrink the image below its natural size in Chrome.
 * !important on the sizing rules overrides asciidoctor's inline
 * width="XX%" attribute, which would otherwise force natural aspect
 * ratio to overflow.
 */
.reveal .slide-content > .imageblock {
  flex: 1 1 auto !important;
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 0.4em 0;
  overflow: hidden;
}

.reveal .imageblock .content,
.reveal .imageblock .title {
  max-width: 100%;
  max-height: 100%;
  min-height: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1 1 auto;
}

.reveal section img {
  border: none;
  box-shadow: none;
  background: transparent;
  /* Cap in absolute deck units (canvas is 1280x800) and viewport units.
   * The vh cap is a belt-and-braces safeguard for cases where the parent
   * flex chain doesn't resolve to real pixels. 520px leaves 280px above
   * for a header + one paragraph. */
  max-height: 520px !important;
  max-width: 1100px !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

.reveal .stem { font-family: "Times New Roman", serif; font-size: 0.9em; }

.reveal blockquote.tip,
.reveal blockquote.note {
  background: rgba(183, 131, 49, 0.12);
  border-left-color: #B78331;
}

/* Callouts for chapter headers (used by explicit .lead role) */
.reveal .lead {
  font-size: 1em;
  color: #6C371F;
  font-style: italic;
  margin-top: 0.4em;
}

/* Rule ornament matches the book's chapter ornament */
.reveal hr {
  border: none;
  border-top: 2px solid #17365D;
  margin: 0.4em 0;
}

.reveal .build-stamp{position:fixed;bottom:6px;left:10px;font-family:Helvetica,sans-serif;font-size:10px;color:#6C371F;background:rgba(245,235,214,0.75);padding:2px 6px;border-radius:2px;pointer-events:none;z-index:1000}
