312 lines
5 KiB
CSS
312 lines
5 KiB
CSS
: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;
|
|
}
|