Clone
/* ============================================================
Reveal.js — Shared Theme for "Elixir in the Real World"
============================================================ */
:root {
--elixir-purple: #48205D;
--elixir-purple-light: #8D8390;
--elixir-dark: #1a1a2e;
--accent-gray: #444;
}
/* ----- Typography ----- */
.reveal {
font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
}
.reveal h1, .reveal h2, .reveal h3 {
color: var(--elixir-purple);
text-transform: none;
font-weight: 700;
letter-spacing: -0.02em;
}
.reveal h1 { font-size: 2.4em; }
.reveal h2 { font-size: 1.8em; }
.reveal h3 { font-size: 1.3em; }
.reveal p, .reveal li {
color: #333;
font-size: 0.85em;
line-height: 1.5;
}
.reveal strong { color: var(--elixir-purple); }
.reveal blockquote {
background: #f4f0ff;
border-left: 5px solid var(--elixir-purple);
padding: 20px 30px;
font-style: italic;
color: #333;
width: 85%;
margin: 0.5em auto;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
border-radius: 4px;
}
/* ----- Code (LiveBook-inspired dark theme) ----- */
.reveal pre {
width: 90%;
font-size: 0.55em;
background: #1e1e2e;
border-radius: 14px;
box-shadow: 0 4px 20px rgba(0,0,0,0.25);
padding: 0;
}
.reveal pre code {
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
background: #1e1e2e;
border-radius: 14px;
padding: 1em;
}
.reveal code {
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
}
/* ----- Section Dividers ----- */
.reveal .section-divider {
background: linear-gradient(135deg, var(--elixir-purple), var(--elixir-purple-light));
color: white !important;
}
.reveal .section-divider h2,
.reveal .section-divider p,
.reveal .section-divider strong {
color: white !important;
}
/* ----- Utility Classes ----- */
.reveal .subtitle {
color: var(--accent-gray);
font-size: 1.2em;
margin-top: 0.3em;
}
.reveal .meta {
color: #888;
font-size: 0.7em;
margin-top: 1.5em;
}
.reveal .muted {
color: #888;
}
.reveal .small {
font-size: 0.75em;
}
.reveal .smaller {
font-size: 0.7em;
}
/* ----- Entity / Card Grids ----- */
.entity-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 10px;
margin-top: 14px;
width: 95%;
margin-left: auto;
margin-right: auto;
}
.entity-card {
background: #fafafa;
border: 2px solid #e8e0ff;
border-radius: 10px;
padding: 10px 14px;
text-align: left;
display: flex;
align-items: center;
gap: 10px;
}
.entity-card .entity-logo {
height: 36px;
width: 36px;
min-width: 36px;
object-fit: contain;
border-radius: 6px;
}
.entity-card .entity-text h4 {
margin: 0 0 2px 0;
font-size: 0.65em;
color: var(--elixir-purple);
}
.entity-card .entity-text p {
margin: 0;
font-size: 0.45em !important;
color: #666;
line-height: 1.3;
}
/* ----- Company Cards ----- */
.company-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin-top: 16px;
width: 90%;
margin-left: auto;
margin-right: auto;
}
.company-card {
background: #fafafa;
border: 2px solid #e8e0ff;
border-radius: 10px;
padding: 12px 16px;
text-align: left;
display: flex;
align-items: center;
gap: 12px;
}
.company-card .company-logo {
height: 36px;
width: 36px;
min-width: 36px;
object-fit: contain;
}
.company-card .company-text h4 {
margin: 0 0 2px 0;
font-size: 0.7em;
color: var(--elixir-purple);
}
.company-card .company-text p {
margin: 0;
font-size: 0.5em !important;
color: #666;
line-height: 1.3;
}
.company-card.highlight {
border-color: var(--elixir-purple);
background: #f4f0ff;
}
/* ----- Comparison Grid ----- */
.compare-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin-top: 20px;
width: 90%;
margin-left: auto;
margin-right: auto;
}
.compare-item {
background: #fafafa;
border-radius: 10px;
padding: 18px 22px;
text-align: left;
border: 2px solid #eee;
}
.compare-item h4 {
margin: 0 0 8px 0;
font-size: 0.8em;
color: #555;
}
.compare-item p {
margin: 0;
font-size: 0.6em !important;
color: #777;
}
.compare-item.elixir {
border-color: var(--elixir-purple);
background: #f4f0ff;
}
.compare-item.elixir h4 {
color: var(--elixir-purple);
}
.compare-item.elixir p {
color: #444;
}
/* ----- Stats ----- */
.stat {
font-size: 2.5em !important;
font-weight: 800;
color: var(--elixir-purple) !important;
margin: 0.2em 0 !important;
}
.stat-label {
font-size: 0.8em !important;
color: #888 !important;
}
.stats-row {
display: flex;
justify-content: center;
gap: 60px;
margin: 30px 0;
}
.stats-item {
text-align: center;
}
/* ----- ASCII Flow Diagrams ----- */
.flow-diagram {
font-family: "JetBrains Mono", "Fira Code", monospace;
font-size: 0.48em !important;
line-height: 1.4;
color: #555 !important;
text-align: left;
white-space: pre;
display: inline-block;
background: #f8f8f8;
padding: 20px 30px;
border-radius: 8px;
}
.flow-diagram .waiting {
color: #e74c3c;
font-weight: bold;
}
/* ----- Architecture Diagrams ----- */
.arch-diagram {
font-family: "JetBrains Mono", "Fira Code", monospace;
font-size: 0.42em !important;
line-height: 1.3;
color: #555 !important;
text-align: left;
display: inline-block;
background: #f8f8f8;
padding: 20px 30px;
border-radius: 8px;
white-space: pre;
}
/* ----- Tables ----- */
.reveal table {
margin: 20px auto;
border-collapse: collapse;
font-size: 0.6em;
}
.reveal table th {
background: var(--elixir-purple);
color: white;
padding: 10px 16px;
font-weight: 600;
text-align: left;
}
.reveal table td {
padding: 8px 16px;
border-bottom: 1px solid #eee;
color: #444;
}
.reveal table tr:nth-child(even) td {
background: #f9f7ff;
}
.reveal table tr.highlight-row td {
background: #f4f0ff;
font-weight: 600;
color: var(--elixir-purple);
}
/* ----- Key-Value List (for patterns/summaries) ----- */
.kv-list {
list-style: none;
padding: 0;
margin: 15px auto;
width: 85%;
}
.kv-list li {
display: flex;
align-items: baseline;
gap: 12px;
margin-bottom: 8px;
font-size: 0.7em !important;
}
.kv-list .kv-key {
flex-shrink: 0;
font-weight: 600;
color: var(--elixir-purple);
min-width: 140px;
text-align: right;
}
.kv-list .kv-val {
color: #555;
}
/* ----- Callout Box ----- */
.callout {
background: #f4f0ff;
border: 2px solid var(--elixir-purple);
border-radius: 10px;
padding: 20px 28px;
margin: 20px auto;
width: 80%;
text-align: left;
}
.callout p {
margin: 0;
font-size: 0.75em !important;
color: #444;
}
/* ----- Slide Padding ----- */
.reveal .slides section {
padding: 40px;
}
/* ----- Smaller code for dense slides ----- */
.reveal pre.small-code {
font-size: 0.45em;
}
.reveal pre.tiny-code {
font-size: 0.40em;
}
/* ----- Pattern summary cards ----- */
.pattern-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 14px;
margin-top: 20px;
width: 95%;
margin-left: auto;
margin-right: auto;
}
.pattern-card {
background: #fafafa;
border: 2px solid #e8e0ff;
border-radius: 10px;
padding: 14px 16px;
text-align: left;
}
.pattern-card h4 {
margin: 0 0 6px 0;
font-size: 0.7em;
color: var(--elixir-purple);
}
.pattern-card p {
margin: 0;
font-size: 0.55em !important;
color: #666;
line-height: 1.4;
}
/* ----- Resource links ----- */
.resource-list {
list-style: none;
padding: 0;
text-align: left;
width: 70%;
margin: 20px auto;
}
.resource-list li {
margin-bottom: 12px;
font-size: 0.8em !important;
}
.resource-list a {
color: var(--elixir-purple);
text-decoration: none;
font-weight: 600;
}
.resource-list a:hover {
text-decoration: underline;
}
.resource-list .resource-desc {
color: #888;
font-size: 0.85em;
}