:root { --color-bg: #ffffff; --color-fg: #1a1a1a; --color-accent: #3b5bdb; --color-muted: #6b7280; --color-border: #e2e2e2; --color-code-bg: #f4f4f5; --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; --font-size-sm: 0.85rem; --font-size-base: 1.25rem; --font-size-lg: 1.75rem; --font-size-xl: 2.5rem; --font-size-xxl: 3.25rem; --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 2rem; --spacing-xl: 4rem; } @media (prefers-color-scheme: dark) { :root { --color-bg: #16171a; --color-fg: #f2f2f2; --color-accent: #7c9bff; --color-muted: #9ca3af; --color-border: #33353a; --color-code-bg: #222327; } } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; height: 100%; } body { background: var(--color-bg); color: var(--color-fg); font-family: var(--font-family); font-size: var(--font-size-base); line-height: 1.5; } section.slide { display: flex; position: fixed; inset: 0; flex-direction: column; justify-content: center; align-items: center; width: 100%; height: 100%; padding: var(--spacing-xl); overflow: auto; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 200ms ease, visibility 0s linear 200ms; } section.slide.active { opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 200ms ease, visibility 0s linear 0s; } @media (prefers-reduced-motion: reduce) { section.slide { transition: none; } } .fragment { opacity: 0; transition: opacity 200ms ease; } .fragment.fragment-visible { opacity: 1; } @media (prefers-reduced-motion: reduce) { .fragment { transition: none; } } section.slide > * { max-width: 50rem; width: 100%; } h1, h2, h3, h4, h5, h6 { line-height: 1.2; margin: 0 0 var(--spacing-md); } h1 { font-size: var(--font-size-xxl); } h2 { font-size: var(--font-size-xl); } h3 { font-size: var(--font-size-lg); } p, ul, ol, table, blockquote, pre { margin: 0 0 var(--spacing-md); } ul, ol { padding-left: var(--spacing-lg); } li { margin-bottom: var(--spacing-xs); } blockquote { margin-left: 0; padding: var(--spacing-sm) var(--spacing-md); border-left: 0.25rem solid var(--color-accent); color: var(--color-muted); } code { font-family: var(--font-family-mono); font-size: 0.85em; background: var(--color-code-bg); padding: 0.15em 0.4em; border-radius: 0.25em; } pre { font-family: var(--font-family-mono); font-size: var(--font-size-sm); background: var(--color-code-bg); padding: var(--spacing-md); border-radius: 0.5em; overflow-x: auto; } pre code { background: none; padding: 0; } pre.mermaid { background: none; padding: 0; display: flex; justify-content: center; } table { border-collapse: collapse; width: 100%; } th, td { padding: var(--spacing-sm) var(--spacing-md); border: 1px solid var(--color-border); text-align: left; } th { background: var(--color-code-bg); } .notes { display: none; } .nav-zone { position: fixed; top: 0; bottom: 0; width: 15%; z-index: 1; cursor: pointer; } .nav-zone.prev { left: 0; } .nav-zone.next { right: 0; } .nav-button { position: fixed; top: 50%; transform: translateY(-50%); z-index: 2; width: 2.5rem; height: 2.5rem; border: 1px solid var(--color-border); border-radius: 50%; background: var(--color-code-bg); color: var(--color-fg); font-size: var(--font-size-base); line-height: 1; cursor: pointer; } .nav-button.prev { left: var(--spacing-md); } .nav-button.next { right: var(--spacing-md); } .progress { position: fixed; bottom: var(--spacing-md); right: var(--spacing-md); z-index: 2; font-size: var(--font-size-sm); color: var(--color-muted); } body.grid-mode { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: var(--spacing-md); height: auto; min-height: 100%; padding: var(--spacing-lg); align-content: start; } body.grid-mode .nav-zone, body.grid-mode .nav-button, body.grid-mode .progress { display: none; } body.grid-mode section.slide { position: relative; display: block; opacity: 1; visibility: visible; pointer-events: auto; transition: none; width: auto; height: 12rem; padding: var(--spacing-sm); overflow: hidden; border: 1px solid var(--color-border); border-radius: 0.5em; cursor: pointer; } body.grid-mode section.slide.active { outline: 3px solid var(--color-accent); } body.grid-mode section.slide::before { content: attr(data-slide); position: absolute; top: 0.4rem; left: 0.4rem; z-index: 1; background: var(--color-accent); color: #fff; font-size: var(--font-size-sm); line-height: 1; padding: 0.2em 0.5em; border-radius: 0.25em; } body.grid-mode section.slide > * { transform: scale(0.35); transform-origin: top left; max-width: none; width: 285%; } body.grid-mode .fragment { opacity: 1; } @page { size: landscape; margin: 0; } @media print { .nav-zone, .nav-button, .progress { display: none !important; } section.slide { position: static; opacity: 1; visibility: visible; width: 100%; height: 100vh; overflow: hidden; break-after: page; page-break-after: always; } section.slide:last-of-type { break-after: auto; page-break-after: auto; } .fragment { opacity: 1; } }