/**
 * Dataviz Course Theme for Reveal.js
 * Based on the course's visual identity
 */

@import url('https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@300;400;700&display=swap');
@import url('https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo/index.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource-variable/fira-code/index.css');

/* Font face definitions - same as the main site */
@font-face {
  font-family: 'LibreCaslonCondensed';
  src: url('./lib/fonts/LibreCaslonCondensed-BoldItalic.woff2') format('woff2');
  font-weight: bold;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'LibreCaslonCondensed';
  src: url('./lib/fonts/LibreCaslonCondensed-Bold.woff2') format('woff2');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'LibreCaslonCondensed';
  src: url('./lib/fonts/LibreCaslonCondensed-Medium.woff2') format('woff2');
  font-weight: 500;
  /* Medium */
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'LibreCaslonCondensed';
  src: url('./lib/fonts/LibreCaslonCondensed-Regular.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Font families */
  --font-archivo: 'Archivo Variable', sans-serif;
  --font-libre-caslon: 'LibreCaslonCondensed', serif;
  --font-roboto: 'Roboto Condensed', sans-serif;
  --font-fira: 'Fira Code Variable', monospace;

  /* Colors */
  --color-yellow: #E8C85A;
  --color-orange: #E8845A;
  --color-blue: #4D80E6;
  --color-green: #92DE86;
  --color-sage: #949B80;
  --color-red: #B56666;
  --color-purple: #4F4E8D;
  --color-neutral: #2B2B2B;
  --color-base-100: #F8FBF8;
  --color-base-200: #EDEDED;
  --color-base-300: #A3A3A2;

  /* Shadows */
  --shadow-btn-drop-shadow: 0 2px 0 0 #2b2b2b;
}


/* Core layout */
.reveal-viewport {
  background-color: var(--color-base-100);
}

.reveal .slide-background {
  background-image: url('https://raw.githubusercontent.com/thedivtagguy/site/1031f6aaab70ae87d4a42dbaed43f48e8c31051b/src/lib/assets/images/common/noise.png');
  background-repeat: repeat;
  background-size: 400px;
  background-color: #ffffff;
}

.reveal {
  font-family: var(--font-archivo);
  font-size: 36px;
  color: var(--color-neutral);
  /* text-align: left; */
  /* Default align content left */
}

/* Apply noise texture overlay
 .reveal .slides::before,
 .reveal .slide-background-content::before {
   content: '';
   position: absolute;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   background: url("data:image/svg+xml,%3Csvg viewBox='0 0 245 245' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='8.51' numOctaves='10' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
   mix-blend-mode: overlay;
   opacity: 0.2;
   pointer-events: none;
   z-index: 1;
 }
  */
/* .slides {
  background-color: var(--color-base-100) ;
 } */

.slides div p {
  max-width: 800px;
}

/* Typography */
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
  font-family: var(--font-libre-caslon);
  font-weight: 700;
  color: var(--color-neutral);
  margin-bottom: 0.5em;
  text-transform: none;
  letter-spacing: normal;
  text-align: left;
  line-height: 1.2;
}

.reveal h1 {
  font-size: 2.5em;
  border-bottom: 2px solid var(--color-neutral);
  padding-bottom: 0.2em;
}

.reveal h2 {
  font-size: 1.8em;
  border-bottom: 1px solid var(--color-base-300);
  padding-bottom: 0.1em;
}

.reveal h3 {
  font-size: 1.4em;
}

.reveal h4 {
  font-size: 1.2em;
}

.reveal p,
.reveal li,
.reveal td,
.reveal tr {
  font-family: var(--font-archivo);
  line-height: 1.5;
  margin-bottom: 0.5em;
  font-size: 20px;
}

/* Fix slide title centering for title slides */
.reveal .slides section.title-slide h1,
.reveal .slides section.title-slide h2,
.reveal .slides section.title-slide h3,
.reveal .slides section.title-slide p {
  text-align: center;
}

.reveal .center,
.reveal .center * {
  text-align: center !important;
}

/* Links */
.reveal a {
  color: var(--color-blue);
  text-decoration: none;
  border-bottom: 1px solid var(--color-blue);
  transition: color 0.2s, border-bottom-color 0.2s;
}

.reveal a:hover {
  color: var(--color-purple);
  border-bottom-color: var(--color-purple);
  text-decoration: none;
}

/* Lists */
.reveal ul {
  list-style-type: disc;
  margin-bottom: 1em;
  display: block;
  text-align: left;
  padding-left: 1.5em;
}

.reveal ol {
  list-style-type: decimal;
  margin-bottom: 1em;
  display: block;
  text-align: left;
  padding-left: 1.5em;
}

.reveal li {
  font-family: var(--font-archivo);
  margin-bottom: 0.5em;
  line-height: 1.4;
  display: list-item;
}

/* Nested list indentation */
.reveal ul ul,
.reveal ol ol,
.reveal ul ol,
.reveal ol ul {
  margin-left: 1.5em;
  margin-top: 0.25em;
  margin-bottom: 0.25em;
}

.reveal ul ul {
  list-style-type: circle;
}

.reveal ul ul ul {
  list-style-type: square;
}

/* Code */
.reveal pre {
  background-color: var(--color-neutral);
  padding: 0.5em;
  border-radius: 0.2rem;
  overflow-x: auto;
  margin-bottom: 1em;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
  width: 100%;
  max-width: 90%;
  margin-left: 0;
  margin-right: auto;
  text-align: left;
}

.reveal pre code {
  font-family: var(--font-fira);
  color: var(--color-base-100);
  background-color: transparent;
  padding: 0;
  font-size: 1rem;
  line-height: 1.6;
  max-height: 800px;
  text-align: left;
}

.reveal code {
  font-family: var(--font-fira);
  background-color: var(--color-base-200);
  padding: 0.2em 0.4em;
  border-radius: 3px;
  font-size: 0.9em;
  color: var(--color-neutral);
  /* border: 1px solid var(--color-base-300); */
}

/* Blockquotes */
.reveal blockquote {
  border-left: 4px solid var(--color-yellow);
  padding: 1em;
  background-color: var(--color-base-200);
  border-radius: 0.25rem;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
  font-style: italic;
  color: var(--color-neutral);


  margin-top: 1em;
  margin-bottom: 1em;
  margin: 1em 0;
  text-align: left;
}

/* Images */
.reveal .slides section img:not(.full-width-image) {
  width: auto;
  min-width: min(300px, 50vw);
  max-width: 100%;
  aspect-ratio: auto;
  max-height: 60vh;
  margin: 1em 0;
  border-radius: 0.5rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  border: none;
  display: block;
  object-fit: contain;
}

/* Center images only when they're the only content on a slide */
.reveal .slides section:has(> div > img:only-child) img:not(.full-width-image),
.reveal .slides section:has(> div > p:only-child > img:only-child) img:not(.full-width-image),
.reveal .slides section:has(> div > img:first-child:nth-last-child(2)) img:not(.full-width-image):has(+ .full-screen-link),
.reveal .slides section:has(> div > p:first-child:nth-last-child(2) > img:only-child):has(> div > .full-screen-link) img:not(.full-width-image) {
  margin: 1em auto;
}

/* Full screen link styling */
.reveal .full-screen-link {
  position: absolute;
  bottom: 0.5em;
  left: 50%;
  transform: translateX(-50%);
  background-color: rgba(255, 255, 255, 0.9);
  padding: 0.2em 0.4em;
  border-radius: 0.25rem;
  border: 1px solid rgba(43, 43, 43, 0.2);
  text-align: center;
  z-index: 10 !important;
  backdrop-filter: blur(4px);
  font-size: 0.7em !important;
}

.reveal .full-screen-link a,
.reveal .full-screen-link p {
  color: #666;
  text-decoration: none;
  line-height: 1;
  z-index: 10 !important;
  font-weight: 400;
  margin: 0 0 0.3em 0;
  padding: 0 !important;
  font-size: 0.7em !important;
}

.reveal .full-screen-link a:hover {
  color: var(--color-blue);
  text-decoration: underline;
}


.reveal .slides section img.full-width-image {
  width: 120%;
  height: 120%;
  max-width: 120%;
  max-height: 120%;
  object-fit: contain;
  margin: 0;
  padding: 0;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.reveal split {
  display: flex;
  align-items: center;
  justify-content: center;
}

.reveal cite {

  margin-top: 8px !important;
}

.reveal cite p {
  font-size: 0.4em !important;
  color: #666 !important;
}

.reveal cite a {

  color: #666 !important;
}

/* Image with captions */
.reveal figure {
  display: block;
  margin: 1em auto;
  text-align: center;
}

.reveal figure img:not(.full-width-image) {
  width: 85%;
  max-width: 85%;
  max-height: 65vh;
  display: block;
  margin: 0 auto 0.5em auto;
  border-radius: 0.5rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

.reveal figcaption {
  font-size: 0.7em;
  color: var(--color-base-300);
  font-style: italic;
  text-align: center;
  max-width: 80%;
  margin: 0 auto;
}

/* Tables */
.reveal table {
  width: 90%;
  max-width: 95% !important;
  margin: 0.5em 0;
  border-collapse: collapse;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
  font-size: 0.9em;
}

/* Add table wrapper for horizontal scrolling */
.reveal .table-wrapper {
  width: 95%;
  max-width: fit-content;
  margin: 0.5em 0;
  overflow-x: auto;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
}

.reveal .table-wrapper table {
  width: 100%;
  max-width: none !important;
  margin: 0;
  border: none;
  box-shadow: none;
}

.reveal th {
  background-color: var(--color-base-200);
  padding: 0.4em 0.8em;
  text-align: left;
  font-weight: 600;
  font-family: var(--font-roboto);
  border-bottom: 2px solid var(--color-neutral);
  color: var(--color-neutral);
  text-transform: uppercase;
  white-space: nowrap;
}

.reveal td {
  padding: 0.2em 0.8em;
  border-bottom: 1px solid var(--color-base-300);
  font-family: var(--font-archivo);
  text-align: left;
}

/* Default table optimization for rows */
.reveal table tr {
  line-height: 1.2;
}

/* Highlight boxes */
.reveal .important,
.reveal .note,
.reveal .warning {
  padding: 1em;
  border-radius: 0.5rem;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
  margin: 1em 0;
  width: 90%;
  text-align: left;
}

.reveal .important {
  background-color: var(--color-blue);
  border-left: 4px solid var(--color-neutral);
  color: white;
}

.reveal .important p,
.reveal .important li,
.reveal .important h1,
.reveal .important h2,
.reveal .important h3 {
  color: white;
}

.reveal .note {
  background-color: var(--color-sage);
  border-left: 4px solid var(--color-neutral);
  color: var(--color-neutral);
}

.reveal .warning {
  background-color: var(--color-orange);
  border-left: 4px solid var(--color-neutral);
  color: var(--color-neutral);
}

/* Text highlight */
.reveal .highlight {
  position: relative;
  z-index: 1;
  display: inline-block;
}

.reveal .highlight::before {
  content: '';
  display: block;
  width: 100%;
  height: 80%;
  position: absolute;
  transform: translate(-50%, -50%) rotate(-2deg);
  top: 50%;
  left: 50%;
  z-index: -1;
  background-color: var(--color-yellow);
}

/* Buttons */
.reveal .btn-drop-shadow {
  box-shadow: 0 2px 0 0 #2b2b2b;
}

.reveal .btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.5em 1em;
  font-size: 1.2em;
  font-weight: 700;
  text-transform: uppercase;
  color: white;
  background-color: var(--color-blue);
  border: 2px solid var(--color-neutral);
  border-radius: 0.25em;
  box-shadow: var(--shadow-btn-drop-shadow);
  transition: transform 250ms cubic-bezier(0.3, 0.7, 0.4, 1.5), box-shadow 250ms ease;
  cursor: pointer;
  font-family: var(--font-roboto);
}

.reveal .btn-primary:hover {
  box-shadow: 0 4px 2px 1px rgba(43, 43, 43, 0.6);
  transform: translateY(-6px);
  background-color: var(--color-purple);
}

/* Slide numbers */
.reveal .slide-number {
  font-family: var(--font-archivo);
  background-color: var(--color-base-200);
  color: var(--color-neutral);
  border-radius: 50%;
  width: 2em;
  height: 2em;
  line-height: 2em;
  text-align: center;
  font-size: 0.5em;
  box-shadow: var(--shadow-btn-drop-shadow);
}

/* Progress bar */
.reveal .progress {
  height: 5px;
  color: var(--color-blue);
}

/* Fragments */
.reveal .fragment {
  transition: all 0.3s ease;
}

.reveal .fragment.fade-in.visible {
  opacity: 1;
  visibility: visible;
}

.reveal .fragment.fade-out.visible {
  opacity: 0;
  visibility: hidden;
}

.reveal .fragment.highlight-blue.visible {
  color: var(--color-blue);
}

.reveal .fragment.highlight-red.visible {
  color: var(--color-red);
}

.reveal .fragment.highlight-green.visible {
  color: var(--color-green);
}

/* Special slide backgrounds */
.reveal .slides section.yellow-slide {
  background-color: var(--color-yellow);
}

.reveal .slides section.blue-slide {
  background-color: var(--color-blue);
  color: white;
}

.reveal .slides section.blue-slide h1,
.reveal .slides section.blue-slide h2,
.reveal .slides section.blue-slide h3,
.reveal .slides section.blue-slide p {
  color: white;
}

.reveal .slides section.green-slide {
  background-color: var(--color-green);
}

.reveal .slides section.neutral-slide {
  background-color: var(--color-neutral);
  color: white;
}

.reveal .slides section.neutral-slide h1,
.reveal .slides section.neutral-slide h2,
.reveal .slides section.neutral-slide h3,
.reveal .slides section.neutral-slide p {
  color: white;
  border-color: white;
}

/* Layout helpers */
.reveal .r-stack {
  display: grid !important;
}

.reveal .r-stack>* {
  grid-column: 1;
  grid-row: 1;
}

.reveal .r-stack>img,
.reveal .r-stack>video {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.reveal .r-stack {
  height: fit-content !important;
  align-items: start !important;
}

.reveal .r-stretch {
  max-width: none !important;
  max-height: none !important;
}

.reveal .r-hstack {
  display: flex !important;
  flex-direction: row;
  justify-content: center;
  /* align-items: center; */
  width: 100%;
  gap: 1em;
}

.reveal .r-vstack {
  display: flex !important;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
  gap: 1em;
}

section div {
  align-items: start !important;
}

.reveal .two-columns {
  display: flex;
  gap: 2em;
}

.reveal .two-columns>* {
  flex: 1 1 50%;
}

.reveal .three-columns {
  display: flex;
  gap: 1em;
}

.reveal .three-columns>* {
  flex: 1 1 33.3%;
}

/* Alignment utilities */
.reveal .text-center,
.reveal .text-center h1,
.reveal .text-center h2,
.reveal .text-center h3,
.reveal .text-center p,
.reveal .text-center ul,
.reveal .text-center ol {
  text-align: center !important;
}

.reveal .text-right,
.reveal .text-right h1,
.reveal .text-right h2,
.reveal .text-right h3,
.reveal .text-right p,
.reveal .text-right ul,
.reveal .text-right ol {
  text-align: right !important;
}

/* Chart and visualization containers */
.reveal .chart-container {
  background-color: white;
  border-radius: 0.5rem;
  padding: 1em;
  border: 2px solid var(--color-neutral);
  box-shadow: var(--shadow-btn-drop-shadow);
  margin: 1em 0;
  width: 90%;
}

/* Code highlights */
.reveal .hljs-comment,
.reveal .hljs-quote {
  color: #a0a0a0;
}

.reveal .hljs-variable,
.reveal .hljs-template-variable,
.reveal .hljs-attribute,
.reveal .hljs-tag,
.reveal .hljs-name,
.reveal .hljs-regexp,
.reveal .hljs-link,
.reveal .hljs-name,
.reveal .hljs-selector-id,
.reveal .hljs-selector-class {
  color: #f98181;
}

.reveal .hljs-number,
.reveal .hljs-meta,
.reveal .hljs-built_in,
.reveal .hljs-builtin-name,
.reveal .hljs-literal,
.reveal .hljs-type,
.reveal .hljs-params {
  color: #fbbc88;
}

.reveal .hljs-string,
.reveal .hljs-symbol,
.reveal .hljs-bullet {
  color: #b9f18d;
}

.reveal .hljs-title,
.reveal .hljs-section {
  color: #ffd479;
}

.reveal .hljs-keyword,
.reveal .hljs-selector-tag {
  color: #7ec9f5;
}

/* Print PDF */
@page {
  size: 1920px 1080px;
  margin: 0;
}

/* Print */
@media print {
  .reveal pre code {
    overflow: hidden !important;
  }

  .reveal .slides section {
    height: 100% !important;
    transform: none !important;
    margin: 0 !important;
  }

  .reveal img {
    box-shadow: none !important;
  }
}


.reveal .slides>section,
.reveal .slides>section>section {
  text-align: left;
}

/* Images layout modifiers */
.reveal .img-shadow {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) !important;
}

.reveal .img-border {
  border: 2px solid var(--color-neutral) !important;
}

.reveal .img-circle {
  border-radius: 50% !important;
}

.reveal .img-contain img {
  object-fit: contain !important;
}

.reveal .img-cover img {
  object-fit: cover !important;
}

.reveal .img-float-left {
  float: left;
  margin-right: 1em;
  margin-bottom: 0.5em;
}

.reveal .img-float-right {
  float: right;
  margin-left: 1em;
  margin-bottom: 0.5em;
}

/* Grid layouts */
.reveal .grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1em;
  width: 100%;
}

.reveal .grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1em;
  width: 100%;
}

.reveal .grid-3 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1em;
  width: 100%;
}

.reveal .grid-4 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 1em;
  width: 100%;
}

/* Dark mode support */
.reveal.has-dark-background {
  color: var(--color-base-100);
}

.reveal.has-dark-background h1,
.reveal.has-dark-background h2,
.reveal.has-dark-background h3,
.reveal.has-dark-background h4,
.reveal.has-dark-background h5,
.reveal.has-dark-background h6,
.reveal.has-dark-background p,
.reveal.has-dark-background li {
  color: var(--color-base-100);
}

.reveal.has-dark-background a {
  color: var(--color-blue);
}

.reveal.has-dark-background .hljs {
  background-color: rgba(0, 0, 0, 0.3);
}



.reveal blockquote::before {
  /* content: open-quote; */
  position: absolute;
  left: -0.5em;
  top: -0.1em;
  font-size: 2em;
  color: var(--color-yellow);
}

.reveal blockquote p {
  margin-bottom: 0.5em;
}

.reveal cite {
  display: block;
  text-align: right;
  font-style: normal;
  margin-top: 0.5em;
  font-size: 0.8em;
}

/* Spacing utilities */
.reveal .mt-0 {
  margin-top: 0 !important;
}

.reveal .mt-1 {
  margin-top: 0.25em !important;
}

.reveal .mt-2 {
  margin-top: 0.5em !important;
}

.reveal .mt-3 {
  margin-top: 1em !important;
}

.reveal .mt-4 {
  margin-top: 1.5em !important;
}

.reveal .mb-0 {
  margin-bottom: 0 !important;
}

.reveal .mb-1 {
  margin-bottom: 0.25em !important;
}

.reveal .mb-2 {
  margin-bottom: 0.5em !important;
}

.reveal .mb-3 {
  margin-bottom: 1em !important;
}

.reveal .mb-4 {
  margin-bottom: 1.5em !important;
}

.reveal .ml-0 {
  margin-left: 0 !important;
}

.reveal .ml-1 {
  margin-left: 0.25em !important;
}

.reveal .ml-2 {
  margin-left: 0.5em !important;
}

.reveal .ml-3 {
  margin-left: 1em !important;
}

.reveal .ml-4 {
  margin-left: 1.5em !important;
}

.reveal .mr-0 {
  margin-right: 0 !important;
}

.reveal .mr-1 {
  margin-right: 0.25em !important;
}

.reveal .mr-2 {
  margin-right: 0.5em !important;
}

.reveal .mr-3 {
  margin-right: 1em !important;
}

.reveal .mr-4 {
  margin-right: 1.5em !important;
}

/* Width utilities */
.reveal .w-100 {
  width: 100% !important;
}

.reveal .w-75 {
  width: 75% !important;
}

.reveal .w-50 {
  width: 50% !important;
}

.reveal .w-25 {
  width: 25% !important;
}

/* Height utilities */
.reveal .h-100 {
  height: 100% !important;
}

.reveal .h-75 {
  height: 75% !important;
}

.reveal .h-50 {
  height: 50% !important;
}

.reveal .h-25 {
  height: 25% !important;
}

/* Fix for Reveal.js default centering */
.reveal.center .slides {
  text-align: left !important;
}

/* Override Reveal's default slide centering */
.reveal .slides {
  text-align: left !important;
}

/* Add styles for Markdown bold and italic */
.reveal em {
  font-style: italic;
}

.reveal strong {
  font-weight: bold;
  background-color: var(--color-yellow);
  padding: 0.1em 0.2em;
  margin: 0 0.1em 0.1em 0;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  line-height: 1.4 !important;
}

.reveal cite {
  display: block;
  text-align: right;
  font-style: normal;
  margin-top: 0.5em;
  font-size: 0.8em;
}

.mermaid {
  width: 100%;
  max-width: 800px;

}

/* Additional responsive table styles */
.reveal .responsive-table {
  display: block;
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.reveal .responsive-table table {
  width: 100%;
  max-width: none;
  margin: 0;
}

/* Enhanced compact table styles */
.reveal .compact-table th,
.reveal .compact-table td {
  padding: 0.2em 0.4em;
  font-size: 0.85em;
  line-height: 1.1;
}

.reveal .very-compact-table th,
.reveal .very-compact-table td {
  padding: 0.15em 0.3em;
  font-size: 0.75em;
  line-height: 1;
}

/* Super compact table for very large datasets */
.reveal .super-compact-table th,
.reveal .super-compact-table td {
  padding: 0.1em 0.25em;
  font-size: 0.7em;
  line-height: 1;
  white-space: nowrap;
}

/* Table font size utilities with improved line height */
.reveal .table-sm {
  font-size: 0.8em;
  line-height: 1.1;
}

.reveal .table-xs {
  font-size: 0.7em;
  line-height: 1;
}

/* New table width options */
.reveal .table-full {
  width: 100% !important;
  max-width: 100% !important;
}

.reveal .table-tight-cells td,
.reveal .table-tight-cells th {
  white-space: nowrap;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Condensed table borders */
.reveal .table-thin-borders {
  border-width: 1px;
}

.reveal .table-thin-borders th,
.reveal .table-thin-borders td {
  border-width: 1px;
}

/* Table without visual styling for maximum data density */
.reveal .table-minimal {
  border: none;
  box-shadow: none;
}

.reveal .table-minimal th {
  border-bottom: 1px solid var(--color-base-300);
  padding: 0.15em 0.3em;
  background: none;
  text-transform: none;
}

.reveal .table-minimal td {
  padding: 0.1em 0.3em;
  border-bottom: 1px solid var(--color-base-200);
}

.compact-cite {
  font-size: 0.35em;
  line-height: 1.2;
  margin: 0.5em 0 0 0;
  padding: 0;
  color: #888;
  font-family: inherit;
  text-align: left;
  display: block;
  position: absolute;
  bottom: 3em;
  left: 0;
}

.compact-cite a {
  color: inherit;
  text-decoration: none;
}

.compact-cite a:hover {
  text-decoration: underline;
}

.compact-cite em {
  font-style: italic;
}

.compact-cite.publisher {
  font-size: 0.2em !important;
  color: #888;
  font-family: inherit;
  text-align: left;
  display: block;
}

.reveal p,
h1,
h2,
h3,
h4,
h5,
h6 {
  text-wrap: balance;
}


.blue-highlight {
  background-color: var(--color-blue);
  padding: 0.1em 0.2em;
  margin: 0 0.1em;
  border-radius: 0.25em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  line-height: 1.4 !important;
  color: white;
}

.purple-highlight {
  background-color: var(--color-purple);
  color: white;
  padding: 0.1em 0.2em;
  margin: 0 0.1em;
  border-radius: 0.25em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  line-height: 1.4 !important;
}

.yellow-highlight {
  background-color: var(--color-yellow);
  color: var(--color-neutral);
  padding: 0.1em 0.2em;
  margin: 0 0.1em;
  border-radius: 0.25em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  line-height: 1.4 !important;
}

.isolated {
  all: unset
}