Spaces:
Running
Running
testing svg
Browse files- assets/svg/figure-01.svg +3 -0
- assets/svg/test-svg.html +164 -0
- dist/distill.bundle.js +0 -0
- dist/distill.bundle.js.map +0 -0
- dist/index.html +142 -2
- src/distill.js +1 -1
assets/svg/figure-01.svg
ADDED
|
assets/svg/test-svg.html
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<title>Interactive SVG Hover Effect</title>
|
6 |
+
<style>
|
7 |
+
body {
|
8 |
+
font-family: Arial, sans-serif;
|
9 |
+
margin: 20px;
|
10 |
+
background: #f8f9fa;
|
11 |
+
}
|
12 |
+
.svg-container {
|
13 |
+
border: 1px solid #ccc;
|
14 |
+
padding: 10px;
|
15 |
+
border-radius: 8px;
|
16 |
+
background: #fff;
|
17 |
+
}
|
18 |
+
.info {
|
19 |
+
margin-top: 15px;
|
20 |
+
font-size: 16px;
|
21 |
+
color: #555;
|
22 |
+
}
|
23 |
+
</style>
|
24 |
+
</head>
|
25 |
+
<body>
|
26 |
+
<div class="svg-container" id="svg-container-01">
|
27 |
+
<!-- The enhanced SVG will be injected here -->
|
28 |
+
</div>
|
29 |
+
<div class="info" id="info">Hover over the network elements to see their details</div>
|
30 |
+
|
31 |
+
<script>
|
32 |
+
// Function to enhance the SVG content by adding styles and data attributes
|
33 |
+
function enhanceSVGContent(originalContent) {
|
34 |
+
const parser = new DOMParser();
|
35 |
+
const doc = parser.parseFromString(originalContent, 'image/svg+xml');
|
36 |
+
|
37 |
+
// Create a style element with hover effects and insert it as the first child of the SVG
|
38 |
+
const styleElement = doc.createElementNS('http://www.w3.org/2000/svg', 'style');
|
39 |
+
styleElement.textContent = `
|
40 |
+
path[data-element-type="layer"] {
|
41 |
+
transition: all 0.3s;
|
42 |
+
cursor: pointer;
|
43 |
+
}
|
44 |
+
path[data-element-type="layer"]:hover {
|
45 |
+
fill: #b197fc !important;
|
46 |
+
transform: translate(0, -2px);
|
47 |
+
}
|
48 |
+
|
49 |
+
path[data-element-type="gradient"] {
|
50 |
+
transition: all 0.3s;
|
51 |
+
cursor: pointer;
|
52 |
+
}
|
53 |
+
path[data-element-type="gradient"]:hover {
|
54 |
+
fill: #f06595 !important;
|
55 |
+
transform: translate(0, -2px);
|
56 |
+
}
|
57 |
+
|
58 |
+
path[data-element-type="forward"] {
|
59 |
+
transition: all 0.3s;
|
60 |
+
cursor: pointer;
|
61 |
+
}
|
62 |
+
path[data-element-type="forward"]:hover {
|
63 |
+
stroke: #0c8599 !important;
|
64 |
+
stroke-width: 4 !important;
|
65 |
+
}
|
66 |
+
|
67 |
+
path[data-element-type="backward"] {
|
68 |
+
transition: all 0.3s;
|
69 |
+
cursor: pointer;
|
70 |
+
}
|
71 |
+
path[data-element-type="backward"]:hover {
|
72 |
+
stroke: #e8590c !important;
|
73 |
+
stroke-width: 4 !important;
|
74 |
+
}
|
75 |
+
|
76 |
+
path[data-element-type="optimization"] {
|
77 |
+
transition: all 0.3s;
|
78 |
+
cursor: pointer;
|
79 |
+
}
|
80 |
+
path[data-element-type="optimization"]:hover {
|
81 |
+
stroke: #087f5b !important;
|
82 |
+
stroke-width: 4 !important;
|
83 |
+
}
|
84 |
+
`;
|
85 |
+
doc.documentElement.insertBefore(styleElement, doc.documentElement.firstChild);
|
86 |
+
|
87 |
+
// Process neural network layers (purple nodes)
|
88 |
+
doc.querySelectorAll('path[fill="#d0bfff"]').forEach((node, index) => {
|
89 |
+
node.setAttribute('data-element-id', `layer-${index}`);
|
90 |
+
node.setAttribute('data-element-type', 'layer');
|
91 |
+
});
|
92 |
+
|
93 |
+
// Process gradient nodes (pink nodes)
|
94 |
+
doc.querySelectorAll('path[fill="#f783ac"]').forEach((node, index) => {
|
95 |
+
node.setAttribute('data-element-id', `gradient-${index}`);
|
96 |
+
node.setAttribute('data-element-type', 'gradient');
|
97 |
+
});
|
98 |
+
|
99 |
+
// Process arrows by matching stroke colors
|
100 |
+
const arrowTypes = {
|
101 |
+
'#15aabf': 'forward',
|
102 |
+
'#fd7e14': 'backward',
|
103 |
+
'#099268': 'optimization'
|
104 |
+
};
|
105 |
+
|
106 |
+
Object.entries(arrowTypes).forEach(([color, type]) => {
|
107 |
+
doc.querySelectorAll(`path[stroke="${color}"]`).forEach((arrow, index) => {
|
108 |
+
arrow.setAttribute('data-element-id', `${type}-${index}`);
|
109 |
+
arrow.setAttribute('data-element-type', type);
|
110 |
+
});
|
111 |
+
});
|
112 |
+
|
113 |
+
// Make the SVG responsive
|
114 |
+
doc.documentElement.setAttribute('width', '100%');
|
115 |
+
doc.documentElement.setAttribute('height', 'auto');
|
116 |
+
doc.documentElement.setAttribute('preserveAspectRatio', 'xMidYMid meet');
|
117 |
+
|
118 |
+
return new XMLSerializer().serializeToString(doc);
|
119 |
+
}
|
120 |
+
|
121 |
+
// Function to load an SVG file via fetch
|
122 |
+
async function loadSVG(url, containerId) {
|
123 |
+
try {
|
124 |
+
const response = await fetch(url);
|
125 |
+
if (!response.ok) {
|
126 |
+
throw new Error(`HTTP error! Status: ${response.status}`);
|
127 |
+
}
|
128 |
+
const svgText = await response.text();
|
129 |
+
const enhancedSVG = enhanceSVGContent(svgText);
|
130 |
+
document.getElementById(containerId).innerHTML = enhancedSVG;
|
131 |
+
} catch (error) {
|
132 |
+
console.error('Error loading SVG:', error);
|
133 |
+
document.getElementById(containerId).innerHTML = '<p>Error loading SVG.</p>';
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
// Load the SVG file (adjust the path if needed)
|
138 |
+
loadSVG('figure-01.svg', 'svg-container-01');
|
139 |
+
|
140 |
+
// Set up event listeners to display a description of the hovered element
|
141 |
+
const svgContainer = document.getElementById('svg-container-01');
|
142 |
+
svgContainer.addEventListener('mouseover', function(event) {
|
143 |
+
const target = event.target;
|
144 |
+
if (target.tagName.toLowerCase() === 'path' && target.hasAttribute('data-element-id')) {
|
145 |
+
const elementId = target.getAttribute('data-element-id');
|
146 |
+
const elementType = target.getAttribute('data-element-type');
|
147 |
+
const descriptions = {
|
148 |
+
layer: 'Neural Network Layer',
|
149 |
+
gradient: 'Gradient Update Layer',
|
150 |
+
forward: 'Forward Pass Connection',
|
151 |
+
backward: 'Backward Pass Connection',
|
152 |
+
optimization: 'Optimization Step'
|
153 |
+
};
|
154 |
+
const description = descriptions[elementType] || elementType;
|
155 |
+
document.getElementById('info').textContent = `Hovering over: ${description} (${elementId})`;
|
156 |
+
}
|
157 |
+
});
|
158 |
+
|
159 |
+
svgContainer.addEventListener('mouseout', function() {
|
160 |
+
document.getElementById('info').textContent = 'Hover over the network elements to see their details';
|
161 |
+
});
|
162 |
+
</script>
|
163 |
+
</body>
|
164 |
+
</html>
|
dist/distill.bundle.js
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
dist/distill.bundle.js.map
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
dist/index.html
CHANGED
@@ -51,6 +51,115 @@
|
|
51 |
<d-article>
|
52 |
<d-contents>
|
53 |
</d-contents>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
<p>Fueled by the scaling laws<d-cite bibtex-key="kaplan2020scalinglaws"></d-cite><d-cite bibtex-key="hoffmann2022chinchilla"></d-cite>, the trend of training ever larger language models on vaster amounts of data has been driving progress in AI for the past couple years. Initially, the development of the largest models happened exclusively behind closed doors of a handful of research labs but recently opened up more with the release of models such as Llama 3.1 405B<d-cite bibtex-key="grattafiori2024llama3herdmodels"></d-cite> and DeepSeek R1<d-cite bibtex-key="deepseekai2024deepseekv3technicalreport"></d-cite>. While these models have <a href="https://huggingface.co/meta-llama">openly shared</a> <a href="https://huggingface.co/deepseek-ai">weights</a> and their training recipes are described in <a href="https://ai.meta.com/research/publications/the-llama-3-herd-of-models/">technical</a> <a href="https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf">reports</a>, the challenging engineering to involved to train at the necessary infrastructure scale is still hidden between the lines of a handful of papers and complex training frameworks. This ~~long blog post~~ open-source book is here to open this black box!</p>
|
56 |
|
@@ -223,7 +332,37 @@
|
|
223 |
</ol>
|
224 |
|
225 |
<p>It looks generally like this: </p>
|
226 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
|
228 |
<aside>As we’ll see later, these steps may be repeated or intertwined but for now we’ll start simple.</aside>
|
229 |
|
@@ -1573,7 +1712,8 @@
|
|
1573 |
}</pre>
|
1574 |
</d-appendix>
|
1575 |
|
1576 |
-
|
|
|
1577 |
const article = document.querySelector('d-article');
|
1578 |
const toc = document.querySelector('d-contents');
|
1579 |
if (toc) {
|
|
|
51 |
<d-article>
|
52 |
<d-contents>
|
53 |
</d-contents>
|
54 |
+
|
55 |
+
|
56 |
+
<script>
|
57 |
+
// Function to enhance the SVG content by adding styles and data attributes
|
58 |
+
function enhanceSVGContent(originalContent) {
|
59 |
+
const parser = new DOMParser();
|
60 |
+
const doc = parser.parseFromString(originalContent, 'image/svg+xml');
|
61 |
+
|
62 |
+
// Create a style element with hover effects and insert it as the first child of the SVG
|
63 |
+
const styleElement = doc.createElementNS('http://www.w3.org/2000/svg', 'style');
|
64 |
+
styleElement.textContent = `
|
65 |
+
path[data-element-type="layer"] {
|
66 |
+
transition: all 0.3s;
|
67 |
+
cursor: pointer;
|
68 |
+
}
|
69 |
+
path[data-element-type="layer"]:hover {
|
70 |
+
fill: #b197fc !important;
|
71 |
+
transform: translate(0, -2px);
|
72 |
+
}
|
73 |
+
|
74 |
+
path[data-element-type="gradient"] {
|
75 |
+
transition: all 0.3s;
|
76 |
+
cursor: pointer;
|
77 |
+
}
|
78 |
+
path[data-element-type="gradient"]:hover {
|
79 |
+
fill: #f06595 !important;
|
80 |
+
transform: translate(0, -2px);
|
81 |
+
}
|
82 |
+
|
83 |
+
path[data-element-type="forward"] {
|
84 |
+
transition: all 0.3s;
|
85 |
+
cursor: pointer;
|
86 |
+
}
|
87 |
+
path[data-element-type="forward"]:hover {
|
88 |
+
stroke: #0c8599 !important;
|
89 |
+
stroke-width: 4 !important;
|
90 |
+
}
|
91 |
+
|
92 |
+
path[data-element-type="backward"] {
|
93 |
+
transition: all 0.3s;
|
94 |
+
cursor: pointer;
|
95 |
+
}
|
96 |
+
path[data-element-type="backward"]:hover {
|
97 |
+
stroke: #e8590c !important;
|
98 |
+
stroke-width: 4 !important;
|
99 |
+
}
|
100 |
+
|
101 |
+
path[data-element-type="optimization"] {
|
102 |
+
transition: all 0.3s;
|
103 |
+
cursor: pointer;
|
104 |
+
}
|
105 |
+
path[data-element-type="optimization"]:hover {
|
106 |
+
stroke: #087f5b !important;
|
107 |
+
stroke-width: 4 !important;
|
108 |
+
}
|
109 |
+
`;
|
110 |
+
doc.documentElement.insertBefore(styleElement, doc.documentElement.firstChild);
|
111 |
+
|
112 |
+
// Process neural network layers (purple nodes)
|
113 |
+
doc.querySelectorAll('path[fill="#d0bfff"]').forEach((node, index) => {
|
114 |
+
node.setAttribute('data-element-id', `layer-${index}`);
|
115 |
+
node.setAttribute('data-element-type', 'layer');
|
116 |
+
});
|
117 |
+
|
118 |
+
// Process gradient nodes (pink nodes)
|
119 |
+
doc.querySelectorAll('path[fill="#f783ac"]').forEach((node, index) => {
|
120 |
+
node.setAttribute('data-element-id', `gradient-${index}`);
|
121 |
+
node.setAttribute('data-element-type', 'gradient');
|
122 |
+
});
|
123 |
+
|
124 |
+
// Process arrows by matching stroke colors
|
125 |
+
const arrowTypes = {
|
126 |
+
'#15aabf': 'forward',
|
127 |
+
'#fd7e14': 'backward',
|
128 |
+
'#099268': 'optimization'
|
129 |
+
};
|
130 |
+
|
131 |
+
Object.entries(arrowTypes).forEach(([color, type]) => {
|
132 |
+
doc.querySelectorAll(`path[stroke="${color}"]`).forEach((arrow, index) => {
|
133 |
+
arrow.setAttribute('data-element-id', `${type}-${index}`);
|
134 |
+
arrow.setAttribute('data-element-type', type);
|
135 |
+
});
|
136 |
+
});
|
137 |
+
|
138 |
+
// Make the SVG responsive
|
139 |
+
doc.documentElement.setAttribute('width', '100%');
|
140 |
+
doc.documentElement.setAttribute('height', 'auto');
|
141 |
+
doc.documentElement.setAttribute('preserveAspectRatio', 'xMidYMid meet');
|
142 |
+
|
143 |
+
return new XMLSerializer().serializeToString(doc);
|
144 |
+
}
|
145 |
+
|
146 |
+
// Function to load an SVG file via fetch
|
147 |
+
async function loadSVG(url) {
|
148 |
+
try {
|
149 |
+
const response = await fetch(url);
|
150 |
+
if (!response.ok) {
|
151 |
+
throw new Error(`HTTP error! Status: ${response.status}`);
|
152 |
+
}
|
153 |
+
const svgText = await response.text();
|
154 |
+
const enhancedSVG = enhanceSVGContent(svgText);
|
155 |
+
document.getElementById('svg-container').innerHTML = enhancedSVG;
|
156 |
+
} catch (error) {
|
157 |
+
console.error('Error loading SVG:', error);
|
158 |
+
document.getElementById('svg-container').innerHTML = '<p>Error loading SVG.</p>';
|
159 |
+
}
|
160 |
+
}
|
161 |
+
</script>
|
162 |
+
|
163 |
|
164 |
<p>Fueled by the scaling laws<d-cite bibtex-key="kaplan2020scalinglaws"></d-cite><d-cite bibtex-key="hoffmann2022chinchilla"></d-cite>, the trend of training ever larger language models on vaster amounts of data has been driving progress in AI for the past couple years. Initially, the development of the largest models happened exclusively behind closed doors of a handful of research labs but recently opened up more with the release of models such as Llama 3.1 405B<d-cite bibtex-key="grattafiori2024llama3herdmodels"></d-cite> and DeepSeek R1<d-cite bibtex-key="deepseekai2024deepseekv3technicalreport"></d-cite>. While these models have <a href="https://huggingface.co/meta-llama">openly shared</a> <a href="https://huggingface.co/deepseek-ai">weights</a> and their training recipes are described in <a href="https://ai.meta.com/research/publications/the-llama-3-herd-of-models/">technical</a> <a href="https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf">reports</a>, the challenging engineering to involved to train at the necessary infrastructure scale is still hidden between the lines of a handful of papers and complex training frameworks. This ~~long blog post~~ open-source book is here to open this black box!</p>
|
165 |
|
|
|
332 |
</ol>
|
333 |
|
334 |
<p>It looks generally like this: </p>
|
335 |
+
<div class="svg-container" id="svg-container">
|
336 |
+
</div>
|
337 |
+
<div class="info" id="info">Hover over the network elements to see their details</div>
|
338 |
+
<script>
|
339 |
+
// Load the SVG file (adjust the path if needed)
|
340 |
+
loadSVG('../assets/svg/figure-01.svg');
|
341 |
+
|
342 |
+
// Set up event listeners to display a description of the hovered element
|
343 |
+
const svgContainer = document.getElementById('svg-container');
|
344 |
+
svgContainer.addEventListener('mouseover', function(event) {
|
345 |
+
const target = event.target;
|
346 |
+
if (target.tagName.toLowerCase() === 'path' && target.hasAttribute('data-element-id')) {
|
347 |
+
const elementId = target.getAttribute('data-element-id');
|
348 |
+
const elementType = target.getAttribute('data-element-type');
|
349 |
+
const descriptions = {
|
350 |
+
layer: 'Neural Network Layer',
|
351 |
+
gradient: 'Gradient Update Layer',
|
352 |
+
forward: 'Forward Pass Connection',
|
353 |
+
backward: 'Backward Pass Connection',
|
354 |
+
optimization: 'Optimization Step'
|
355 |
+
};
|
356 |
+
const description = descriptions[elementType] || elementType;
|
357 |
+
document.getElementById('info').textContent = `Hovering over: ${description} (${elementId})`;
|
358 |
+
}
|
359 |
+
});
|
360 |
+
|
361 |
+
svgContainer.addEventListener('mouseout', function() {
|
362 |
+
document.getElementById('info').textContent = 'Hover over the network elements to see their details';
|
363 |
+
});
|
364 |
+
|
365 |
+
</script>
|
366 |
|
367 |
<aside>As we’ll see later, these steps may be repeated or intertwined but for now we’ll start simple.</aside>
|
368 |
|
|
|
1712 |
}</pre>
|
1713 |
</d-appendix>
|
1714 |
|
1715 |
+
|
1716 |
+
<script>
|
1717 |
const article = document.querySelector('d-article');
|
1718 |
const toc = document.querySelector('d-contents');
|
1719 |
if (toc) {
|
src/distill.js
CHANGED
@@ -1369,7 +1369,7 @@ ${math}
|
|
1369 |
|
1370 |
var byline = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-byline {\n contain: style;\n overflow: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n font-size: 0.8rem;\n line-height: 1.8em;\n padding: 1.5rem 0;\n min-height: 1.8em;\n}\n\n\nd-byline .byline {\n grid-template-columns: 1fr 1fr;\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-byline .byline {\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n}\n\nd-byline .authors-affiliations {\n grid-column-end: span 2;\n grid-template-columns: 1fr 1fr;\n margin-bottom: 1em;\n}\n\n@media(min-width: 768px) {\n d-byline .authors-affiliations {\n margin-bottom: 0;\n }\n}\n\nd-byline h3 {\n font-size: 0.6rem;\n font-weight: 400;\n color: rgba(0, 0, 0, 0.5);\n margin: 0;\n text-transform: uppercase;\n}\n\nd-byline p {\n margin: 0;\n}\n\nd-byline a,\nd-article d-byline a {\n color: rgba(0, 0, 0, 0.8);\n text-decoration: none;\n border-bottom: none;\n}\n\nd-article d-byline a:hover {\n text-decoration: underline;\n border-bottom: none;\n}\n\nd-byline p.author {\n font-weight: 500;\n}\n\nd-byline .affiliations {\n\n}\n";
|
1371 |
|
1372 |
-
var article = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-article {\n contain: layout style;\n overflow-x: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n padding-top: 2rem;\n color: rgba(0, 0, 0, 0.8);\n}\n\nd-article > * {\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-article {\n font-size: 16px;\n }\n}\n\n@media(min-width: 1024px) {\n d-article {\n font-size: 1.06rem;\n line-height: 1.7em;\n }\n}\n\n\n/* H2 */\n\n\nd-article .marker {\n text-decoration: none;\n border: none;\n counter-reset: section;\n grid-column: kicker;\n line-height: 1.7em;\n}\n\nd-article .marker:hover {\n border: none;\n}\n\nd-article .marker span {\n padding: 0 3px 4px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n position: relative;\n top: 4px;\n}\n\nd-article .marker:hover span {\n color: rgba(0, 0, 0, 0.7);\n border-bottom: 1px solid rgba(0, 0, 0, 0.7);\n}\n\nd-article h2 {\n font-weight: 600;\n font-size: 24px;\n line-height: 1.25em;\n margin: 2rem 0 1.5rem 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding-bottom: 1rem;\n}\n\n@media(min-width: 1024px) {\n d-article h2 {\n font-size: 36px;\n }\n}\n\n/* H3 */\n\nd-article h3 {\n font-weight: 700;\n font-size: 18px;\n line-height: 1.4em;\n margin-bottom: 1em;\n margin-top: 2em;\n}\n\n@media(min-width: 1024px) {\n d-article h3 {\n font-size: 20px;\n }\n}\n\n/* H4 */\n\nd-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\nd-article a {\n color: inherit;\n}\n\nd-article p,\nd-article ul,\nd-article ol,\nd-article blockquote {\n margin-top: 0;\n margin-bottom: 1em;\n margin-left: 0;\n margin-right: 0;\n}\n\nd-article blockquote {\n border-left: 2px solid rgba(0, 0, 0, 0.2);\n padding-left: 2em;\n font-style: italic;\n color: rgba(0, 0, 0, 0.6);\n}\n\nd-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\nd-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\nd-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\nd-article ul,\nd-article ol {\n padding-left: 24px;\n}\n\nd-article li {\n margin-bottom:
|
1373 |
|
1374 |
var title = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-title {\n padding: 2rem 0 1.5rem;\n contain: layout style;\n overflow-x: hidden;\n}\n\n@media(min-width: 768px) {\n d-title {\n padding: 4rem 0 1.5rem;\n }\n}\n\nd-title h1 {\n grid-column: text;\n font-size: 40px;\n font-weight: 700;\n line-height: 1.1em;\n margin: 0 0 0.5rem;\n}\n\n@media(min-width: 768px) {\n d-title h1 {\n font-size: 50px;\n }\n}\n\nd-title p {\n font-weight: 300;\n font-size: 1.2rem;\n line-height: 1.55em;\n grid-column: text;\n}\n\nd-title .status {\n margin-top: 0px;\n font-size: 12px;\n color: #009688;\n opacity: 0.8;\n grid-column: kicker;\n}\n\nd-title .status span {\n line-height: 1;\n display: inline-block;\n padding: 6px 0;\n border-bottom: 1px solid #80cbc4;\n font-size: 11px;\n text-transform: uppercase;\n}\n";
|
1375 |
|
|
|
1369 |
|
1370 |
var byline = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-byline {\n contain: style;\n overflow: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n font-size: 0.8rem;\n line-height: 1.8em;\n padding: 1.5rem 0;\n min-height: 1.8em;\n}\n\n\nd-byline .byline {\n grid-template-columns: 1fr 1fr;\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-byline .byline {\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n}\n\nd-byline .authors-affiliations {\n grid-column-end: span 2;\n grid-template-columns: 1fr 1fr;\n margin-bottom: 1em;\n}\n\n@media(min-width: 768px) {\n d-byline .authors-affiliations {\n margin-bottom: 0;\n }\n}\n\nd-byline h3 {\n font-size: 0.6rem;\n font-weight: 400;\n color: rgba(0, 0, 0, 0.5);\n margin: 0;\n text-transform: uppercase;\n}\n\nd-byline p {\n margin: 0;\n}\n\nd-byline a,\nd-article d-byline a {\n color: rgba(0, 0, 0, 0.8);\n text-decoration: none;\n border-bottom: none;\n}\n\nd-article d-byline a:hover {\n text-decoration: underline;\n border-bottom: none;\n}\n\nd-byline p.author {\n font-weight: 500;\n}\n\nd-byline .affiliations {\n\n}\n";
|
1371 |
|
1372 |
+
var article = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-article {\n contain: layout style;\n overflow-x: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n padding-top: 2rem;\n color: rgba(0, 0, 0, 0.8);\n}\n\nd-article > * {\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-article {\n font-size: 16px;\n }\n}\n\n@media(min-width: 1024px) {\n d-article {\n font-size: 1.06rem;\n line-height: 1.7em;\n }\n}\n\n\n/* H2 */\n\n\nd-article .marker {\n text-decoration: none;\n border: none;\n counter-reset: section;\n grid-column: kicker;\n line-height: 1.7em;\n}\n\nd-article .marker:hover {\n border: none;\n}\n\nd-article .marker span {\n padding: 0 3px 4px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n position: relative;\n top: 4px;\n}\n\nd-article .marker:hover span {\n color: rgba(0, 0, 0, 0.7);\n border-bottom: 1px solid rgba(0, 0, 0, 0.7);\n}\n\nd-article h2 {\n font-weight: 600;\n font-size: 24px;\n line-height: 1.25em;\n margin: 2rem 0 1.5rem 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding-bottom: 1rem;\n}\n\n@media(min-width: 1024px) {\n d-article h2 {\n font-size: 36px;\n }\n}\n\n/* H3 */\n\nd-article h3 {\n font-weight: 700;\n font-size: 18px;\n line-height: 1.4em;\n margin-bottom: 1em;\n margin-top: 2em;\n}\n\n@media(min-width: 1024px) {\n d-article h3 {\n font-size: 20px;\n }\n}\n\n/* H4 */\n\nd-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\nd-article a {\n color: inherit;\n}\n\nd-article p,\nd-article ul,\nd-article ol,\nd-article blockquote {\n margin-top: 0;\n margin-bottom: 1em;\n margin-left: 0;\n margin-right: 0;\n}\n\nd-article blockquote {\n border-left: 2px solid rgba(0, 0, 0, 0.2);\n padding-left: 2em;\n font-style: italic;\n color: rgba(0, 0, 0, 0.6);\n}\n\nd-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\nd-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\nd-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\nd-article ul,\nd-article ol {\n padding-left: 24px;\n}\n\nd-article li {\n margin-bottom: 0.2em;\n margin-left: 0;\n padding-left: 0;\n}\n\nd-article li:last-child {\n margin-bottom: 0;\n}\n\nd-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\nd-article hr {\n grid-column: screen;\n width: 100%;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\nd-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\nd-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\nd-article > d-code,\nd-article section > d-code {\n display: block;\n}\n\nd-article > d-math[block],\nd-article section > d-math[block] {\n display: block;\n}\n\n@media (max-width: 768px) {\n d-article > d-code,\n d-article section > d-code,\n d-article > d-math[block],\n d-article section > d-math[block] {\n overflow-x: scroll;\n -ms-overflow-style: none; // IE 10+\n overflow: -moz-scrollbars-none; // Firefox\n }\n\n d-article > d-code::-webkit-scrollbar,\n d-article section > d-code::-webkit-scrollbar,\n d-article > d-math[block]::-webkit-scrollbar,\n d-article section > d-math[block]::-webkit-scrollbar {\n display: none; // Safari and Chrome\n }\n}\n\nd-article .citation {\n color: #668;\n cursor: pointer;\n}\n\nd-include {\n width: auto;\n display: block;\n}\n\nd-figure {\n contain: layout style;\n}\n\n/* KaTeX */\n\n.katex, .katex-prerendered {\n contain: style;\n display: inline-block;\n}\n\n/* Tables */\n\nd-article table {\n border-collapse: collapse;\n margin-bottom: 1.5rem;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n\nd-article table th {\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n\nd-article table td {\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\nd-article table tr:last-of-type td {\n border-bottom: none;\n}\n\nd-article table th,\nd-article table td {\n font-size: 15px;\n padding: 2px 8px;\n}\n\nd-article table tbody :first-child td {\n padding-top: 2px;\n}\n";
|
1373 |
|
1374 |
var title = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-title {\n padding: 2rem 0 1.5rem;\n contain: layout style;\n overflow-x: hidden;\n}\n\n@media(min-width: 768px) {\n d-title {\n padding: 4rem 0 1.5rem;\n }\n}\n\nd-title h1 {\n grid-column: text;\n font-size: 40px;\n font-weight: 700;\n line-height: 1.1em;\n margin: 0 0 0.5rem;\n}\n\n@media(min-width: 768px) {\n d-title h1 {\n font-size: 50px;\n }\n}\n\nd-title p {\n font-weight: 300;\n font-size: 1.2rem;\n line-height: 1.55em;\n grid-column: text;\n}\n\nd-title .status {\n margin-top: 0px;\n font-size: 12px;\n color: #009688;\n opacity: 0.8;\n grid-column: kicker;\n}\n\nd-title .status span {\n line-height: 1;\n display: inline-block;\n padding: 6px 0;\n border-bottom: 1px solid #80cbc4;\n font-size: 11px;\n text-transform: uppercase;\n}\n";
|
1375 |
|