.ws-diagram {
  display: block;
  margin: 4pt 0 6pt;
  break-inside: avoid;
  text-align: center;
}
.ws-diagram-svg {
  width: 100%;
  max-width: var(--ws-diagram-width, 260pt);
  height: auto;
  display: inline-block;
  vertical-align: top;
}
.ws-table-wrap {
  display: block;
  margin: 4pt 0 8pt;
  break-inside: avoid;
  /* Without an author-supplied "lebar" width, a table with several columns
     of text (e.g. Indonesian header labels like "Daya Hantar Lelehan") can
     be wider than the single column it's placed in — capped here so it
     wraps its own cell text instead of overflowing past its column. */
  max-width: 100%;
}
.ws-table-title {
  font-weight: 700;
  font-size: 0.85em;
  color: #444;
  margin-bottom: 3pt;
}
.ws-table {
  border-collapse: collapse;
  font-size: 0.85em;
  max-width: 100%;
}
.ws-table th,
.ws-table td {
  border: 1pt solid #999;
  padding: 3pt 9pt;
  text-align: center;
  overflow-wrap: break-word;
}
.ws-table th {
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 700;
}
.ws-figure {
  display: block;
  margin: 6pt 0 8pt;
  /* A figure and the caption that numbers it are one unit — splitting them
     across a page break leaves "Gambar 2.1" stranded under nothing. */
  break-inside: avoid;
  text-align: center;
}
.ws-figure-panels {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: center;
  gap: 6pt 10pt;
}
.ws-figure-panel {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
}
.ws-figure-panels[style*="--ws-fig-cols"] .ws-figure-panel {
  flex: 0 0 calc((100% - (var(--ws-fig-cols) - 1) * 10pt) / var(--ws-fig-cols));
}
.ws-figure-panels[style*="--ws-fig-cols"] .ws-figure-panel .ws-diagram-svg {
  width: 100%;
}
.ws-figure-panel .ws-diagram,
.ws-figure-panel .ws-table-wrap {
  margin: 0;
}
.ws-figure-panel-label {
  font-size: 0.85em;
  font-weight: 700;
  margin-top: 1pt;
}
.ws-figure-caption {
  font-size: 0.82em;
  font-style: italic;
  color: #333;
  margin-top: 3pt;
}
.ws-table-blank td {
  min-width: 40pt;
}