/* Civilytics Reveal.js theme — plain CSS build. */ /* ========================================================== Civilytics Reveal.js theme — rules Editorial, serif-led slides. Designed for Quarto + Pandoc. Tokens mirror /colors_and_type.css from the Civilytics DS. ========================================================== */ @import url('https://fonts.googleapis.com/css2?family=Libre+Franklin:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); :root { /* Civilytics tokens — keep names in sync with the design system */ --paper: #FAF7F2; --paper-2: #F2EDE4; --paper-3: #E6DFD1; --rule: #D6CEBD; --rule-strong: #B8AE97; --ink: #0E1A2B; --ink-2: #2B3A52; --ink-3: #5A6A82; --ink-4: #8C97AB; --navy-900: #0E1A2B; --navy-700: #1A2E4A; --navy-600: #22406A; --navy-500: #2E5590; --navy-100: #DDE6F2; --accent-900: #451A00; --accent-700: #923D00; --accent-600: #C25311; --accent-500: #DB6C25; --accent-300: #F2A976; --accent-200: #F8C8A3; --accent-100: #FBE0C6; --teal-600: #1F6F70; --plum-600: #6B3A5E; --moss-600: #4A6B2F; --brass-600: #B8751C; --font-display: "Libre Franklin", "Franklin Gothic", "Inter", system-ui, sans-serif; --font-serif: "Source Serif 4", "Source Serif Pro", Georgia, serif; --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; --font-mono: "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace; --tracking-caps: 0.08em; } /* ----------------------------------------------------------- Reveal root & slide chrome ----------------------------------------------------------- */ .reveal-viewport { background: var(--paper); } .reveal { font-family: var(--font-sans); font-size: 32px; font-weight: 400; color: var(--ink); letter-spacing: 0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } .reveal ::selection { background: var(--accent-200); color: var(--ink); } .reveal ::-moz-selection { background: var(--accent-200); color: var(--ink); } .reveal .slides { text-align: left; } .reveal .slides > section, .reveal .slides > section > section { padding: 48px 72px; line-height: 1.45; font-weight: inherit; box-sizing: border-box; height: 100%; } /* ----------------------------------------------------------- Headings ----------------------------------------------------------- */ .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { font-family: var(--font-display); color: var(--ink); font-weight: 800; line-height: 1.08; letter-spacing: -0.025em; text-transform: none; text-wrap: balance; margin: 0 0 0.5em; } .reveal h1 { font-size: 2.4em; font-weight: 900; letter-spacing: -0.035em; line-height: 1.0; } .reveal h2 { font-size: 1.7em; font-weight: 800; letter-spacing: -0.03em; } .reveal h3 { font-size: 1.3em; font-weight: 700; letter-spacing: -0.022em; } .reveal h4 { font-size: 1.1em; font-weight: 700; letter-spacing: -0.018em; } /* Eyebrow kicker — used above headlines on many layouts */ .reveal .eyebrow, .reveal [data-eyebrow]::before { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-sans); font-size: 0.5em; font-weight: 600; color: var(--accent-600); text-transform: uppercase; letter-spacing: var(--tracking-caps); margin: 0 0 18px; } .reveal .eyebrow::before { content: ""; display: inline-block; width: 28px; height: 2px; background: var(--accent-600); } .reveal [data-eyebrow]::before { content: attr(data-eyebrow); } /* ----------------------------------------------------------- Body copy, lists, links ----------------------------------------------------------- */ .reveal p { font-family: var(--font-sans); line-height: 1.55; margin: 0 0 0.75em; text-wrap: pretty; } .reveal .lead, .reveal p.lead { font-family: var(--font-serif); font-size: 1.15em; font-weight: 400; line-height: 1.5; color: var(--ink); max-width: 26em; padding-left: 0.75em; border-left: 2px solid var(--accent-600); margin: 0.5em 0 1em; } .reveal ul, .reveal ol { display: block; margin: 0.25em 0 0.75em; padding-left: 1.3em; } .reveal li { margin: 0.35em 0; line-height: 1.5; } .reveal ul { list-style: none; } .reveal ul > li { position: relative; } .reveal ul > li::before { content: ""; position: absolute; left: -1.1em; top: 0.7em; width: 10px; height: 2px; background: var(--accent-600); } .reveal ol { list-style: decimal; } .reveal ol > li::marker { color: var(--accent-600); font-family: var(--font-mono); font-weight: 600; } .reveal a { color: var(--navy-600); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; transition: color 120ms ease-out, text-decoration-thickness 120ms ease-out; } .reveal a:hover { color: var(--navy-700); text-decoration-thickness: 2px; } .reveal hr { border: none; border-top: 1px solid var(--rule); margin: 0.75em 0; } .reveal strong, .reveal b { font-weight: 700; color: var(--ink); } .reveal em, .reveal i { font-style: italic; } /* Small caps helper — for metadata rows */ .reveal .smallcaps, .reveal .meta { font-family: var(--font-sans); font-size: 0.55em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--ink-3); } /* ----------------------------------------------------------- Block quote / pullquote ----------------------------------------------------------- */ .reveal blockquote { font-family: var(--font-serif); font-size: 1.1em; font-style: italic; line-height: 1.4; color: var(--ink); border-left: 3px solid var(--accent-600); padding: 0.25em 0 0.25em 1em; margin: 0.75em 0; background: transparent; box-shadow: none; width: auto; } /* Big pullquote layout — .pullquote on a section */ .reveal section.pullquote { display: flex; flex-direction: column; justify-content: center; } .reveal section.pullquote blockquote { font-size: 1.8em; font-style: italic; line-height: 1.2; border-left: none; padding: 0; max-width: 22em; letter-spacing: -0.01em; } .reveal section.pullquote blockquote::before { content: "\201C"; display: block; font-family: var(--font-serif); font-size: 2.2em; line-height: 0.9; color: var(--accent-600); margin-bottom: 0.1em; font-style: normal; } .reveal section.pullquote .attribution, .reveal section.pullquote footer { margin-top: 1em; font-family: var(--font-sans); font-size: 0.55em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--ink-3); font-style: normal; } .reveal section.pullquote .attribution::before { content: "— "; color: var(--accent-600); } /* ----------------------------------------------------------- Code ----------------------------------------------------------- */ .reveal code { font-family: var(--font-mono); font-size: 0.85em; color: var(--accent-700); background: var(--paper-2); padding: 0.08em 0.35em; border-radius: 2px; font-feature-settings: "tnum" 1, "zero" 1; } .reveal pre { font-family: var(--font-mono); font-size: 0.55em; line-height: 1.5; background: var(--ink); color: var(--paper); padding: 1em 1.25em; border-radius: 8px; box-shadow: none; width: 100%; max-width: 100%; overflow: auto; margin: 0.5em 0; } .reveal pre code { background: transparent; color: inherit; padding: 0; font-size: 1em; display: block; overflow: visible; white-space: pre; max-height: none; } /* Quarto code-line-number + highlight markers */ .reveal pre code .hljs-ln-numbers, .reveal pre code .code-line-number { color: var(--ink-4); padding-right: 1em; user-select: none; } .reveal div.sourceCode { background: transparent; border: none; margin: 0.5em 0; } .reveal code span.co { color: #8C97AB; font-style: italic; } /* comments */ .reveal code span.st { color: #F2A976; } /* strings */ .reveal code span.dv, .reveal code span.fl { color: #F8C8A3; } /* numbers */ .reveal code span.kw { color: #EA8A49; font-weight: 600; } /* keywords */ .reveal code span.cf { color: #EA8A49; font-weight: 600; } /* control flow */ .reveal code span.fu { color: #B3C6E0; } /* function */ .reveal code span.op { color: #D6CEBD; } /* operator */ .reveal code span.cn, .reveal code span.va { color: #7CB3B3; } /* variables */ .reveal code span.at { color: #7CB3B3; } /* Quarto line-highlighting */ .reveal pre code.sourceCode > span.has-line-highlight { background: rgba(248, 200, 163, 0.14); } /* ----------------------------------------------------------- Tables ----------------------------------------------------------- */ .reveal table { font-family: var(--font-sans); font-size: 0.7em; border-collapse: collapse; margin: 0.5em 0; width: 100%; font-variant-numeric: tabular-nums; } .reveal table th, .reveal table td { padding: 0.55em 0.9em; text-align: left; border: none; border-bottom: 1px solid var(--rule); vertical-align: baseline; } .reveal table th { font-family: var(--font-sans); font-size: 0.82em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--ink-3); border-bottom: 2px solid var(--ink); padding-bottom: 0.4em; background: transparent; } .reveal table tbody tr:nth-child(even) td { background: var(--paper-2); } .reveal table tbody tr:last-child td { border-bottom: 2px solid var(--ink); } /* Numeric columns — add .numeric to a / */ .reveal table td.numeric, .reveal table th.numeric, .reveal table td[align="right"], .reveal table th[align="right"] { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; } .reveal table caption { caption-side: top; text-align: left; font-family: var(--font-sans); font-size: 0.55em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--accent-600); margin-bottom: 0.5em; } /* ----------------------------------------------------------- Images & figures ----------------------------------------------------------- */ .reveal img, .reveal section img { background: transparent; border: none; box-shadow: none; margin: 0.25em 0; max-width: 100%; height: auto; } .reveal figure { margin: 0.5em 0; } .reveal figure img { display: block; border: 1px solid var(--rule); } .reveal figure figcaption, .reveal .caption { font-family: var(--font-sans); font-size: 0.55em; line-height: 1.4; color: var(--ink-3); margin-top: 0.5em; max-width: 42em; } .reveal figure figcaption strong, .reveal .caption strong { color: var(--accent-600); text-transform: uppercase; letter-spacing: var(--tracking-caps); font-size: 0.9em; display: inline-block; margin-right: 0.5em; } /* ----------------------------------------------------------- TITLE SLIDE Quarto renders the title slide with #title-slide +

----------------------------------------------------------- */ .reveal #title-slide, .reveal section.title-slide { padding: 72px 80px; display: flex !important; flex-direction: column; justify-content: space-between; text-align: left; background: linear-gradient(180deg, var(--paper) 0%, var(--paper) 58%, var(--paper-2) 100%); } .reveal #title-slide .civilytics-mark, .reveal section.title-slide .civilytics-mark { display: block; width: 72px; height: 72px; margin-bottom: 32px; object-fit: contain; } /* Civilytics wordmark lockup — bold serif "Civilytics" + inline pulse accent. Rendered as an tag pointing at the official wordmark SVG asset (assets/civilytics-wordmark.svg for ink-on-paper slides, assets/civilytics-wordmark-reverse.svg for paper-on-ink slides). Source viewBox is 558×160 (aspect ratio ≈ 3.4875). */ img.civilytics-wordmark, .reveal img.civilytics-wordmark, .reveal .civilytics-wordmark { display: block; height: 48px; width: 167.4px; /* 558/160 aspect * 48px height */ flex: 0 0 auto; align-self: flex-start; object-fit: contain; margin: 0 0 36px; } .reveal #title-slide .civilytics-wordmark, .reveal section.title-slide .civilytics-wordmark { height: 48px; width: 167.4px; margin: 0 0 36px; } .reveal #title-slide .title, .reveal section.title-slide h1.title, .reveal section.title-slide h1:first-of-type { font-family: var(--font-display); font-size: 2.6em; font-weight: 900; letter-spacing: -0.035em; line-height: 0.98; color: var(--ink); margin: 0 0 0.3em; max-width: 18em; text-wrap: balance; } .reveal #title-slide .subtitle, .reveal section.title-slide p.subtitle, .reveal section.title-slide .subtitle { font-family: var(--font-serif); font-size: 1.05em; font-weight: 400; font-style: italic; line-height: 1.35; color: var(--ink-2); margin: 0 0 1em; max-width: 28em; padding-left: 0.75em; border-left: 2px solid var(--accent-600); } /* Author / date / affiliation block */ .reveal #title-slide .quarto-title-authors, .reveal #title-slide .quarto-title-author-name, .reveal section.title-slide .author, .reveal section.title-slide .date, .reveal section.title-slide .affiliation { font-family: var(--font-sans); color: var(--ink-2); } .reveal #title-slide .author, .reveal #title-slide .quarto-title-author-name, .reveal section.title-slide .author { font-size: 0.7em; font-weight: 600; color: var(--ink); margin: 0.2em 0 0; letter-spacing: 0; } .reveal #title-slide .affiliation, .reveal #title-slide .quarto-title-affiliation, .reveal section.title-slide .affiliation { font-size: 0.55em; font-weight: 500; color: var(--ink-3); letter-spacing: var(--tracking-caps); text-transform: uppercase; margin: 0.15em 0 0; } .reveal #title-slide .date, .reveal section.title-slide .date { font-size: 0.5em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--accent-600); margin-top: 1em; padding-top: 0.8em; border-top: 3px double var(--ink); display: inline-block; } /* Editorial thick-top / thin-bottom rule block around title */ .reveal section.title-slide .quarto-title-block, .reveal section.title-slide .title-block { border-top: 6px solid var(--ink); border-bottom: 1px solid var(--rule); padding: 0.5em 0 1em; } /* ----------------------------------------------------------- SECTION DIVIDER —
or Quarto's {.section} header ----------------------------------------------------------- */ .reveal section.section-divider, .reveal section.section { background: var(--ink); color: var(--paper); display: flex !important; flex-direction: column; justify-content: center; padding: 80px 96px; } .reveal section.section-divider::before, .reveal section.section::before { content: ""; display: block; width: 72px; height: 2px; background: var(--accent-600); margin-bottom: 24px; } .reveal section.section-divider h1, .reveal section.section-divider h2, .reveal section.section-divider h3, .reveal section.section h1, .reveal section.section h2, .reveal section.section h3 { color: var(--paper); font-size: 2.8em; font-weight: 900; letter-spacing: -0.035em; line-height: 1.0; max-width: 18em; } .reveal section.section-divider .eyebrow, .reveal section.section .eyebrow { color: var(--accent-300); } .reveal section.section-divider .eyebrow::before, .reveal section.section .eyebrow::before { background: var(--accent-300); } .reveal section.section-divider p, .reveal section.section p { color: var(--paper); opacity: 0.82; font-family: var(--font-serif); font-size: 1.05em; font-style: italic; max-width: 28em; } .reveal section.section-divider .section-number, .reveal section.section .section-number { font-family: var(--font-mono); font-size: 0.6em; font-weight: 600; color: var(--accent-300); letter-spacing: var(--tracking-caps); text-transform: uppercase; margin-bottom: 0.5em; } /* ----------------------------------------------------------- FULL-BLEED IMAGE —
----------------------------------------------------------- */ .reveal section.full-bleed { padding: 0 !important; } .reveal section.full-bleed .caption, .reveal section.full-bleed figcaption { position: absolute; left: 48px; right: 48px; bottom: 48px; background: var(--paper); padding: 14px 18px; border-left: 3px solid var(--accent-600); font-family: var(--font-sans); font-size: 0.5em; line-height: 1.45; color: var(--ink); max-width: 36em; box-shadow: 0 4px 12px rgba(14, 26, 43, 0.12); } .reveal section.full-bleed .caption strong, .reveal section.full-bleed figcaption strong { display: block; font-size: 0.85em; font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--accent-600); margin-bottom: 4px; } /* ----------------------------------------------------------- BIG STAT / DATA CALLOUT — .big-stat section or .stat block ----------------------------------------------------------- */ .reveal .stat-number { font-family: var(--font-serif); font-weight: 700; font-size: 3.6em; line-height: 1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; color: var(--ink); margin: 0 0 0.1em; display: block; } .reveal .stat-label { font-family: var(--font-sans); font-size: 0.55em; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--ink-3); } .reveal .stat-note { font-family: var(--font-serif); font-style: italic; font-size: 0.9em; color: var(--ink-2); max-width: 22em; margin-top: 0.6em; } .reveal section.big-stat { display: flex !important; flex-direction: column; justify-content: center; } .reveal section.big-stat .stat-number { font-size: 5em; } /* Stat grid — multiple stats side-by-side */ .reveal .stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2em 3em; margin: 1em 0; } .reveal .stat-grid .stat { border-top: 3px solid var(--ink); padding-top: 0.6em; } .reveal .stat-grid .stat .stat-number { font-size: 2.8em; } /* ----------------------------------------------------------- TWO-COLUMN — Quarto renders {.columns}{.column width=50%} ----------------------------------------------------------- */ .reveal .columns { display: flex; gap: 3em; align-items: flex-start; margin: 0.25em 0; } .reveal .column { flex: 1; min-width: 0; } .reveal .column > :first-child { margin-top: 0; } /* Hand-rolled two-col for pandoc (non-Quarto) users */ .reveal .two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 3em; align-items: start; } .reveal .two-col--wide-left { grid-template-columns: 2fr 1fr; } .reveal .two-col--wide-right { grid-template-columns: 1fr 2fr; } /* ----------------------------------------------------------- AGENDA / TOC slide —
Pair with an ordered list; we restyle it. ----------------------------------------------------------- */ .reveal section.agenda ol { list-style: none; counter-reset: agenda; padding: 0; margin: 0.5em 0; } .reveal section.agenda ol > li { counter-increment: agenda; display: grid; grid-template-columns: 2.4em 1fr auto; gap: 0.6em 1.2em; align-items: baseline; padding: 0.55em 0; border-top: 1px solid var(--rule); font-family: var(--font-serif); font-size: 1.05em; } .reveal section.agenda ol > li:last-child { border-bottom: 1px solid var(--rule); } .reveal section.agenda ol > li::before { content: counter(agenda, decimal-leading-zero); font-family: var(--font-mono); font-weight: 600; font-size: 0.7em; color: var(--accent-600); letter-spacing: var(--tracking-caps); } .reveal section.agenda ol > li .meta, .reveal section.agenda ol > li em { font-family: var(--font-sans); font-style: normal; font-size: 0.7em; color: var(--ink-3); text-transform: uppercase; letter-spacing: var(--tracking-caps); justify-self: end; } /* ----------------------------------------------------------- THANK-YOU / END slide —
----------------------------------------------------------- */ .reveal section.thank-you { background: var(--ink); color: var(--paper); display: flex !important; flex-direction: column; justify-content: center; padding: 80px 96px; } .reveal section.thank-you .civilytics-mark { display: block; width: 56px; height: 56px; margin-bottom: 28px; object-fit: contain; } .reveal section.thank-you .civilytics-wordmark { height: 40px; width: 139.5px; /* 558/160 aspect * 40 */ flex: 0 0 auto; align-self: flex-start; margin: 0 0 32px; } .reveal section.thank-you h1, .reveal section.thank-you h2 { color: var(--paper); font-size: 3em; font-weight: 900; letter-spacing: -0.035em; margin-bottom: 0.2em; } .reveal section.thank-you p { color: var(--paper); opacity: 0.85; font-family: var(--font-serif); font-size: 1.1em; font-style: italic; max-width: 26em; } .reveal section.thank-you .contact, .reveal section.thank-you ul.contact { list-style: none; padding: 0; margin: 1.5em 0 0; font-family: var(--font-sans); font-size: 0.6em; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--accent-300); } .reveal section.thank-you .contact li, .reveal section.thank-you ul.contact li { margin: 0.3em 0; } .reveal section.thank-you .contact li::before, .reveal section.thank-you ul.contact li::before { display: none; } .reveal section.thank-you a { color: var(--paper); text-decoration: underline; text-decoration-color: var(--accent-600); } .reveal section.thank-you a:hover { color: var(--accent-300); } /* ----------------------------------------------------------- REFERENCES / SOURCES — small, tight ----------------------------------------------------------- */ .reveal .references, .reveal section.references { font-size: 0.72em; } .reveal section.references h2 { font-size: 1.4em; } .reveal .references ol, .reveal .references ul { padding-left: 1.4em; } .reveal .references li { font-family: var(--font-sans); font-size: 0.95em; line-height: 1.4; color: var(--ink-2); margin: 0.35em 0; } .reveal .references li::before { display: none; } /* Footnotes (Pandoc / Quarto) */ .reveal .footnotes, .reveal div.footnotes { font-size: 0.6em; color: var(--ink-3); border-top: 1px solid var(--rule); padding-top: 0.6em; margin-top: 1em; } .reveal a.footnote-ref, .reveal sup a { color: var(--accent-600); text-decoration: none; font-family: var(--font-mono); font-size: 0.7em; font-weight: 600; margin: 0 0.15em; } /* ----------------------------------------------------------- MATH — KaTeX / MathJax ----------------------------------------------------------- */ .reveal .katex, .reveal .MathJax { font-size: 1em !important; color: var(--ink); } .reveal .katex-display, .reveal mjx-container[display="true"] { margin: 0.5em 0 !important; padding: 0.5em 0; border-left: 2px solid var(--accent-600); padding-left: 1em; } /* ----------------------------------------------------------- CALLOUTS (Quarto) ----------------------------------------------------------- */ .reveal div.callout { border: 1px solid var(--rule); border-left: 3px solid var(--accent-600); border-radius: 4px; background: var(--paper-2); margin: 0.75em 0; font-size: 0.78em; overflow: hidden; } .reveal div.callout > div.callout-header { background: transparent; padding: 0.5em 0.9em 0.2em; font-family: var(--font-sans); font-weight: 600; font-size: 0.9em; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--accent-600); } .reveal div.callout > div.callout-body, .reveal div.callout-body-container { padding: 0.2em 0.9em 0.6em; } .reveal div.callout.callout-note { border-left-color: var(--navy-600); } .reveal div.callout.callout-note > div.callout-header { color: var(--navy-600); } .reveal div.callout.callout-warning { border-left-color: #9A5F18; } .reveal div.callout.callout-warning > div.callout-header { color: #9A5F18; } .reveal div.callout.callout-important, .reveal div.callout.callout-caution { border-left-color: #A6271D; } .reveal div.callout.callout-important > div.callout-header, .reveal div.callout.callout-caution > div.callout-header { color: #A6271D; } .reveal div.callout.callout-tip { border-left-color: var(--moss-600); } .reveal div.callout.callout-tip > div.callout-header { color: var(--moss-600); } /* ----------------------------------------------------------- SLIDE NUMBER + FOOTER BRAND CHROME ----------------------------------------------------------- */ .reveal .slide-number { font-family: var(--font-mono); font-size: 14px; font-weight: 600; color: var(--ink-3); background: transparent; right: 24px; bottom: 18px; letter-spacing: var(--tracking-caps); } .reveal .slide-number a { color: inherit; } /* Brand footer mark — inserted by extension JS */ .reveal .civilytics-footer { position: absolute; left: 24px; bottom: 18px; display: flex; align-items: center; gap: 10px; font-family: var(--font-sans); font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--ink-3); pointer-events: none; z-index: 30; } .reveal .civilytics-footer img, .reveal .civilytics-footer svg { width: 22px; height: auto; opacity: 0.85; flex: 0 0 auto; } /* Hide chrome on title / section / thank-you / full-bleed slides */ .reveal .slides > section.title-slide ~ *, .reveal #title-slide.present ~ .civilytics-footer { /* no-op, readable marker */ } .reveal .slides > section.title-slide.present ~ .controls, .reveal .slides > section.section-divider.present ~ .controls, .reveal .slides > section.thank-you.present ~ .controls { } body.civilytics-hide-chrome .civilytics-footer, body.civilytics-hide-chrome .slide-number { display: none !important; } /* ----------------------------------------------------------- PROGRESS BAR ----------------------------------------------------------- */ .reveal .progress { color: var(--accent-600); height: 3px; background: rgba(14, 26, 43, 0.08); } /* ----------------------------------------------------------- CONTROLS ----------------------------------------------------------- */ .reveal .controls { color: var(--ink-3); } .reveal .controls button { color: var(--ink-3) !important; } .reveal .controls button:hover { color: var(--accent-600) !important; } /* ----------------------------------------------------------- PRINT / PDF EXPORT ----------------------------------------------------------- */ @media print { .reveal .civilytics-footer, .reveal .slide-number { color: var(--ink-3); } .reveal section { break-inside: avoid; } } /* ----------------------------------------------------------- SMALL-SCREEN GUARDRAILS Reveal scales slides, but the narrowest keep-legible margins. ----------------------------------------------------------- */ @media (max-width: 640px) { .reveal .slides > section, .reveal .slides > section > section { padding: 32px 36px; } .reveal section.section-divider, .reveal section.thank-you { padding: 48px 48px; } }