/* * The look of the deck. Structure borrowed from Matt Godbolt's newer talks * (hrt-theme.css in github.com/mattgodbolt/what-happens-beneath-accu-2026): * every slide on a rounded panel, IBM Plex Sans with thin h1 and bold accent * h2, IBM Plex Mono code, accent-coloured list markers, links and progress * bar, glowing highlighted code lines. * * Made our own: a light palette (his is near-black; change it in :root * below), and his "thread" corner motif becomes a chain of nodes and links, * an AS path. Code blocks and byte dumps stay dark on the light page so the * monokai colours and the byte palette keep working. * * Try accents without editing: index.html?accent=green (blue, green, * amber, magenta). Make one permanent by copying its values into :root. */ @import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&family=IBM+Plex+Mono:ital,wght@0,400;0,500;1,400&display=swap"); :root { --ground: #e9edf5; /* behind the panels */ --panel: #ffffff; /* the slide itself */ --panel-edge: rgba(31, 111, 235, 0.22); --ink: #1f2333; /* body text */ --ink-strong: #0b0d17; /* h1, h3 */ --muted: #6b7088; /* h4, captions */ --rule: #c3c8d8; /* table rules, borders */ --accent: #1f6feb; /* h2, markers, links, motif */ --accent-soft: #0b4ea2; /* inline code, emphasis */ --accent-rgb: 31, 111, 235; /* Code blocks and byte dumps keep a dark ground of their own. */ --code-ground: #1b1e33; --code-ink: #eceff9; --r-code-font: "IBM Plex Mono", "SF Mono", Menlo, Consolas, monospace; --r-heading-text-shadow: none; } :root[data-accent="green"] { --accent: #1a8a4f; --accent-soft: #0f6238; --accent-rgb: 26, 138, 79; --panel-edge: rgba(26, 138, 79, 0.22); } :root[data-accent="amber"] { --accent: #b86e00; --accent-soft: #7a4a00; --accent-rgb: 184, 110, 0; --panel-edge: rgba(184, 110, 0, 0.22); } :root[data-accent="magenta"] { --accent: #c2277f; --accent-soft: #8a1a5a; --accent-rgb: 194, 39, 127; --panel-edge: rgba(194, 39, 127, 0.22); } /* ---- ground and panels ---------------------------------------------------- */ .reveal-viewport { background: var(--ground); } .reveal { font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif; font-size: 40px; font-weight: 400; color: var(--ink); } .reveal .slides section:not(.stack):not(.title-slide):not(.bare) { background-color: var(--panel); border-radius: 12px; box-shadow: 0 4px 30px rgba(20, 30, 60, 0.1); border: 1px solid var(--panel-edge); padding: 1em 0.8em; box-sizing: border-box; } /* ---- type ------------------------------------------------------------------ */ .reveal h1, .reveal h2, .reveal h3, .reveal h4 { font-family: inherit; text-transform: none; text-shadow: none; margin: 0 0 20px 0; line-height: 1.25; } .reveal h1 { font-weight: 300; color: var(--ink-strong); font-size: 2.2em; line-height: 1.15; } .reveal h2 { font-weight: 700; color: var(--accent); font-size: 1.5em; } .reveal h3 { font-weight: 500; color: var(--ink-strong); font-size: 1.2em; } .reveal h4 { font-weight: 500; color: var(--muted); font-size: 1em; } .reveal p { margin: 20px 0; line-height: 1.5; } .reveal strong, .reveal b { font-weight: 700; color: var(--ink-strong); } .reveal em { font-style: italic; color: var(--accent-soft); } .reveal a { color: var(--accent); text-decoration: none; transition: color 0.15s ease; } .reveal a:hover { color: var(--accent-soft); } .reveal ul, .reveal ol { display: inline-block; text-align: left; margin: 0 0 0 1em; } .reveal ul { list-style-type: square; } .reveal ul li, .reveal ol li { margin-bottom: 0.4em; } .reveal li::marker { color: var(--accent); } .reveal blockquote { background: var(--ground); border-left: 4px solid var(--accent); padding: 20px 30px; font-style: italic; width: 85%; margin: 20px auto; text-align: left; } .reveal img, .reveal video, .reveal iframe { max-width: 95%; max-height: 95%; } .reveal kbd { font-family: var(--r-code-font); font-size: 80%; border: 1px solid var(--rule); border-bottom-width: 3px; border-radius: 5px; padding: 0 0.35em; } /* ---- code ------------------------------------------------------------------ */ .reveal pre { width: 100%; margin: 20px auto; box-shadow: none; text-align: left; position: relative; font-size: 0.55em; line-height: 1.4; } .reveal code { font-family: var(--r-code-font); color: var(--accent-soft); } .reveal :not(pre) > code { white-space: nowrap; font-size: 92%; } .reveal pre code { display: block; color: var(--code-ink); background: var(--code-ground); border-radius: 6px; padding: 15px 20px; max-height: 560px; overflow: auto; } /* The lines being talked about glow; the rest dim (reveal handles the dim). */ .reveal .hljs.has-highlights tr.highlight-line { text-shadow: 0 0 6px currentColor, 0 0 12px currentColor; transition: text-shadow 0.4s ease; } /* ---- tables ---------------------------------------------------------------- */ .reveal table { border-collapse: collapse; border-spacing: 0; margin: 20px auto; font-size: 75%; } .reveal table th { font-weight: 700; color: var(--ink-strong); } .reveal table th, .reveal table td { text-align: left; border-bottom: 1px solid var(--rule); padding: 0.25em 0.6em; } .reveal table tr:last-child td { border-bottom: none; } /* ---- reveal chrome ---------------------------------------------------------- */ .reveal .controls { color: var(--accent); bottom: 40px; } .reveal .progress { background: var(--panel); height: 4px; } .reveal .progress span { background: var(--accent); transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } .reveal .slide-number { color: #fff; font-family: var(--r-code-font); font-size: 18px; font-weight: 500; background: rgba(var(--accent-rgb), 0.9); padding: 3px 9px; border-radius: 4px; right: 16px; bottom: 16px; } ::selection { color: #fff; background: var(--accent); } /* ---- the path motif --------------------------------------------------------- * Matt's decks carry a ring with a line running off the edge. Ours is a short * AS path: nodes joined by links, heading off the top-right corner, mirrored * running up from the bottom-left. Drawn in the accent colour via a mask, so * it follows --accent. Hidden on the title slide and on "bare" slides. */ .reveal::before, .reveal-viewport::before { content: ""; position: fixed; background: var(--accent); z-index: 0; pointer-events: none; opacity: 0.9; } .reveal::before { top: 26px; right: 0; width: 38vw; height: 22px; -webkit-mask: url("data:image/svg+xml;utf8,") left center / 190px 22px no-repeat, linear-gradient(black, black) 189px center / calc(100% - 189px) 3px no-repeat; mask: url("data:image/svg+xml;utf8,") left center / 190px 22px no-repeat, linear-gradient(black, black) 189px center / calc(100% - 189px) 3px no-repeat; } .reveal-viewport::before { bottom: 64px; left: 40px; width: 22px; height: 36vh; -webkit-mask: url("data:image/svg+xml;utf8,") center bottom / 22px 126px no-repeat, linear-gradient(black, black) center top / 3px calc(100% - 125px) no-repeat; mask: url("data:image/svg+xml;utf8,") center bottom / 22px 126px no-repeat, linear-gradient(black, black) center top / 3px calc(100% - 125px) no-repeat; } .reveal:has(> .slides > section.title-slide.present)::before, .reveal:has(> .slides section.bare.present)::before { display: none; } .reveal-viewport:has(.reveal > .slides > section.title-slide.present)::before, .reveal-viewport:has(.reveal > .slides section.bare.present)::before { display: none; } .reveal:has(section.title-slide.present) .controls { display: none !important; } /* ---- wordmark, where his logo sits ------------------------------------------ */ .wordmark { position: fixed; left: 22px; bottom: 18px; z-index: 10; font-family: var(--r-code-font); font-size: 15px; letter-spacing: 0.04em; color: var(--muted); pointer-events: none; } .wordmark b { color: var(--accent); font-weight: 500; } .reveal:has(section.title-slide.present) ~ .wordmark, .reveal:has(section.bare.present) ~ .wordmark { display: none; } /* ---- title slide -------------------------------------------------------------- */ .reveal section.title-slide { text-align: left; padding: 0 1.5em; } .reveal section.title-slide h1 { font-size: 2.6em; margin-bottom: 0.15em; } .reveal section.title-slide h3 { font-weight: 400; color: var(--accent); margin-bottom: 2.2em; } .reveal section.title-slide .byline { font-size: 60%; color: var(--muted); margin: 0; } /* ---- shown by index.html when the deck cannot start --------------------------- */ #deck-help { position: fixed; inset: 0; z-index: 100; padding: 8vh 10vw; background: var(--ground); color: var(--ink); font: 20px/1.5 "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif; } #deck-help h2 { color: var(--accent); font-weight: 700; } #deck-help pre, #deck-help code { font-family: var(--r-code-font); color: var(--accent-soft); } #deck-help pre { background: var(--panel); padding: 12px 16px; border-radius: 6px; } /* ---- print ------------------------------------------------------------------ */ html.print-pdf .wordmark, html.reveal-print .wordmark { display: none; }