website

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit d1265ff184489e5fc86b95a71965f2d07fe32e2b
parent 135b12c507424b70497f18bb8e1dfaf2c6974482
Author: Silas Brack <57684859+silasbrack@users.noreply.github.com>
Date:   Wed,  5 Nov 2025 20:59:06 +0100

Refactor, add teton (#5)

* Refactor

* Fix README, add pandoc templates

* Fix minified CSS

* Clean up

* Update CV
Diffstat:
AREADME.md | 26++++++++++++++++++++++++++
Massets/cv.pdf | 0
Mflake.lock | 6+++---
Mflake.nix | 4++--
Mindex.html | 137++++++++++++++++++++++++++-----------------------------------------------------
Apandoc/onedark.theme | 322+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apandoc/onelight.theme | 329+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apandoc/templates/default.html5 | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtufte.css | 602++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mtufte.min.css | 3++-
10 files changed, 1094 insertions(+), 400 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,26 @@ +# Principles +- No JavaScript (only native HTML page interactivity) +- No custom fonts, use a range of [system fonts](https://modernfontstacks.com) +- Use MathML for math rendering +- Just raw HTML + +## Writing Posts +In practice, I use [pandoc](https://pandoc.org) to take my Obsidian notes and convert them to HTML. +In the process it also renders Latex as MathML! +To generate HTML posts from Markdown, run: +```bash +pandoc \ + --from markdown \ + --to html5 \ + --standalone \ + --toc \ + --no-highlight \ + --variable css=tufte.css \ + --data-dir ./pandoc/ \ + --mathml \ + --output ./posts/post1.html \ + post1.md +``` + +To use highlighting, replace `--no-highlight` with `--highlight-style ./pandoc/onelight.theme`. +For now, I'm not using it because the bundled CSS is way too large for my use cases and because it's a bit tricky to configure using one color scheme for light mode and one for dark mode (given we're generating the HTML files with pandoc). diff --git a/assets/cv.pdf b/assets/cv.pdf Binary files differ. diff --git a/flake.lock b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736798957, - "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix @@ -1,5 +1,5 @@ { - description = "My gleam monorepo"; + description = "My web page (www.silasbrack.com)"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; @@ -21,7 +21,7 @@ { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ - prettierd + pandoc ]; }; } diff --git a/index.html b/index.html @@ -13,122 +13,73 @@ <body> <article> + <section> + <!-- <p> + <input type="checkbox" id="sn-profile" class="margin-toggle" /> + <span class="marginnote"> + <img style="width:200px; border-radius:50%; overflow:hidden;" src="profile.jpeg" /> + </span> + </p> --> <h1 id="tufte-css">Silas Brack</h1> - <p class="subtitle"> - ML Engineer &mdash; + <p class="subtitle" style="display: flex; align-items: center; flex-wrap: wrap;"> + AI Research Engineer + &nbsp; <span title="Curriculum Vitae"> - <a href="./assets/cv.pdf" style="background: none" - ><svg - fill="currentColor" - width="24pt" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 576 512" - > - <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> - <path - d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z" - /></svg - ></a> + <a href="./assets/cv.pdf" style="background: none"> + <svg fill="currentColor" height="24pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" > <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> <path d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z" /></svg> + </a> </span> - + &nbsp; <span title="Github"> - <a href="https://github.com/silasbrack" style="background: none" - ><svg - fill="currentColor" - width="22pt" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 496 512" - > - <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> - <path - d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" - /></svg - ></a> + <a href="https://github.com/silasbrack" style="background: none"> + <svg fill="currentColor" height="24pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" > <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" /></svg > + </a> </span> - + &nbsp; <span title="Linkedin"> - <a - href="https://www.linkedin.com/in/silasbrack/" - style="background: none" - ><svg - fill="currentColor" - width="22pt" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 448 512" - > - <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> - <path - d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z" - /></svg - ></a> + <a href="https://www.linkedin.com/in/silasbrack/" style="background: none" > + <svg fill="currentColor" height="24pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" > <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> <path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z" /></svg > + </a> </span> </p> + </section> <section> <p> - I develop AI and ML models and deploy them to production at Saxo Bank. - This means both training in-house models and using open-source - pre-trained models. In my time at Saxo, I've worked on many projects, - including multiple client-facing products my team has released: + I'm an AI Research Engineer at <a href="https://teton.ai">Teton</a>. + We are building the next generation of healthcare technology using + computer vision and deep learning to help nurses and patients in + hospitals and nursery homes. We work at the forefront of research + in 3D reconstruction, human mesh recovery, action recognition, and + visual-language models. + <!-- <span class="marginnote"> + <font size="5pt"><em>Posts</em></font><br /> + &bull;&nbsp;<a href="./posts/placeholder.html">Placeholder Title</a><br /> + </span> --> </p> - <ul> - <li> - A representation learning model that learns which stocks - <q>Others were interested in</q> for a given stock. This model was - our first to be integrated into the Saxo Bank platform and used by - our customers. As of February 2025, this model has seen a continuous - increase in the number of interactions, and is currently sitting at - well over 100&#x202F;000 monthly interactions. - </li> - <li> - A customer support chatbot which showed a 170% improvement over - previous solutions in reducing client interactions requiring human - support. My implementation also reduced costs by around - $150&#x202F;000 a year, eliminated several highly time-consuming - manual steps, and was trivial to extend to all languages covered by - Saxo. - </li> - <li>A recommender engine designed to be simple and extensible.</li> - </ul> <p> - Previously, I've also worked as a C# developer at MAN Energy - Solutions. + Previously, I worked for over four years at Saxo Bank as a ML + Engineer in the Predictive Modelling and AI team under Jeppe Reitz + and Nicolas Palm Remy-Perez. In my time at Saxo, I worked on various + client-facing NLP, representation learning, recommender, and + traditional machine learning models. </p> <p> I did my master's in Mathematical Modelling and Computation at the - Technical University of Denmark. During my thesis<label - for="sn-thesis" - class="margin-toggle sidenote-number" - ></label - >, + Technical University of Denmark. During my thesis<label for="sn-thesis" class="margin-toggle sidenote-number" ></label>, <input type="checkbox" id="sn-thesis" class="margin-toggle" /> <span class="sidenote"> - <a href="./assets/thesis.pdf" - >“Effortless Bayesian Deep Learning: Tapping Into the Potential of - Modern Optimizers”</a - > + <a href="./assets/thesis.pdf" >“Effortless Bayesian Deep Learning: Tapping Into the Potential of Modern Optimizers”</a > </span> I worked on implicit matrix algorithms for performing the Laplace approximation in Søren Hauberg's group in the section for Cognitive Systems of DTU Compute. We also worked on applying the Laplace - approximation to metric learning, which we published at NeurIPS<label - for="sn-metric-learning" - class="margin-toggle sidenote-number" - ></label - >. - <input - type="checkbox" - id="sn-metric-learning" - class="margin-toggle" - /> + approximation to metric learning, which we published at NeurIPS<label for="sn-metric-learning" class="margin-toggle sidenote-number" ></label >. + <input type="checkbox" id="sn-metric-learning" class="margin-toggle" /> <span class="sidenote"> - <a - href="https://proceedings.neurips.cc/paper_files/paper/2023/hash/da7ce04b3683b173691ecbb801f2690f-Abstract-Conference.html" - >“Bayesian Metric Learning for Uncertainty Quantification in Image - Retrieval,” in - <em>Advances in Neural Information Processing Systems</em>, - 2023.</a - > + <a href="https://proceedings.neurips.cc/paper_files/paper/2023/hash/da7ce04b3683b173691ecbb801f2690f-Abstract-Conference.html" > + “Bayesian Metric Learning for Uncertainty Quantification in Image Retrieval,” in <em>Advances in Neural Information Processing Systems</em>, 2023. + </a > </span> </p> <p> diff --git a/pandoc/onedark.theme b/pandoc/onedark.theme @@ -0,0 +1,322 @@ +{ + "custom-styles": { + "Go": { + "Predeclared Identifier": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + } + }, + "INI Files": { + "Assignment": { + "selected-text-color": "#abb2bf", + "text-color": "#abb2bf" + }, + "Section": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + } + }, + "JavaScript": { + "Built-in Objects": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Function Declaration": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Function Name": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Module": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Object Member": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Object Method (Built-in)": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + } + }, + "Markdown": { + "Code": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Emphasis Text": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Fenced Code": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Header H1": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Header H2": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Header H3": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Header H4": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Header H5": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Header H6": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Link": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Reference-Link Name": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Reference-Link Target": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Reference-Link Target: Link": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Reference-Link: Email": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Reference-Link: Link": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Strong Text": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + } + }, + "Python": { + "Builtin Function": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "String Substitution": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + } + }, + "Rust": { + "Lifetime": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Macro": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Self": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Trait": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Type": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + } + }, + "TypeScript": { + "Built-in Objects": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Module": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Object Member": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Object Method (Built-in)": { + "italic": false, + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "Reserved": { + "italic": false + }, + "Types": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + } + }, + "XML": { + "Attribute": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Element": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + } + } + }, + "metadata": { + "copyright": [ + "SPDX-FileCopyrightText: 2016 GitHub Inc.", + "SPDX-FileCopyrightText: 2020 Waqar Ahmed <waqar.17a@gmail.com>" + ], + "license": "SPDX-License-Identifier: MIT", + "name": "Atom One Dark", + "revision": 2 + }, + "text-styles": { + "Alert": { + "background-color": "#4d1f24", + "bold": true, + "selected-text-color": "#95da4c", + "text-color": "#95da4c" + }, + "Annotation": { + "selected-text-color": "#98c379", + "text-color": "#98c379" + }, + "Attribute": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "BaseN": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "BuiltIn": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Char": { + "selected-text-color": "#98c379", + "text-color": "#98c379" + }, + "Comment": { + "italic": true, + "selected-text-color": "#5c6370", + "text-color": "#5c6370" + }, + "CommentVar": { + "italic": true, + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "Constant": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "ControlFlow": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "DataType": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "DecVal": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Documentation": { + "selected-text-color": "#da4453", + "text-color": "#a43340" + }, + "Error": { + "selected-text-color": "#f44747", + "text-color": "#f44747", + "underline": true + }, + "Extension": { + "bold": true, + "selected-text-color": "#61afef", + "text-color": "#61afef" + }, + "Float": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Function": { + "selected-text-color": "#61afef", + "text-color": "#61afef" + }, + "Import": { + "selected-text-color": "#98c379", + "text-color": "#98c379" + }, + "Information": { + "selected-text-color": "#e46700", + "text-color": "#c45b00" + }, + "Keyword": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Normal": { + "selected-text-color": "#abb2bf", + "text-color": "#abb2bf" + }, + "Operator": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "Others": { + "selected-text-color": "#27ae60", + "text-color": "#27ae60" + }, + "Preprocessor": { + "selected-text-color": "#c678dd", + "text-color": "#c678dd" + }, + "RegionMarker": { + "background-color": "#153042", + "selected-text-color": "#3daee9", + "text-color": "#2980b9" + }, + "SpecialChar": { + "selected-text-color": "#56b6c2", + "text-color": "#56b6c2" + }, + "SpecialString": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + }, + "String": { + "selected-text-color": "#98c379", + "text-color": "#98c379" + }, + "Variable": { + "selected-text-color": "#e06c75", + "text-color": "#e06c75" + }, + "VerbatimString": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + }, + "Warning": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + } + } +} diff --git a/pandoc/onelight.theme b/pandoc/onelight.theme @@ -0,0 +1,329 @@ +{ + "custom-styles": { + "Go": { + "Predeclared Identifier": { + "selected-text-color": "#986801", + "text-color": "#986801" + } + }, + "INI Files": { + "Assignment": { + "selected-text-color": "#383a42", + "text-color": "#383a42" + }, + "Section": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + } + }, + "JavaScript": { + "Built-in Objects": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Function Declaration": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + }, + "Function Name": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + }, + "Module": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Object Member": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Object Method (Built-in)": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + } + }, + "Markdown": { + "Code": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Emphasis Text": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Fenced Code": { + "selected-text-color": "#d19a66", + "text-color": "#d19a66" + }, + "Header H1": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Header H2": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Header H3": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Header H4": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Header H5": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Header H6": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Line Break": { + "text-color": "#383a42" + }, + "Link": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Reference-Link Name": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + }, + "Reference-Link Target": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + }, + "Reference-Link Target: Link": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Reference-Link: Email": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Reference-Link: Link": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Strong Text": { + "selected-text-color": "#986801", + "text-color": "#986801" + } + }, + "Python": { + "Builtin Function": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + }, + "Import": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "String Substitution": { + "selected-text-color": "#986801", + "text-color": "#986801" + } + }, + "Rust": { + "Lifetime": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Macro": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + }, + "Self": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Trait": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Type": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + } + }, + "TypeScript": { + "Built-in Objects": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Module": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Object Member": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Object Method (Built-in)": { + "italic": false, + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + }, + "Reserved": { + "italic": false + }, + "Types": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + } + }, + "XML": { + "Attribute": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Element": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + } + } + }, + "metadata": { + "copyright": [ + "SPDX-FileCopyrightText: 2016 GitHub Inc.", + "SPDX-FileCopyrightText: 2020 Waqar Ahmed <waqar.17a@gmail.com>" + ], + "license": "SPDX-License-Identifier: MIT", + "name": "Atom One Light", + "revision": 3 + }, + "text-styles": { + "Alert": { + "background-color": "#4d1f24", + "bold": true, + "selected-text-color": "#95da4c", + "text-color": "#95da4c" + }, + "Annotation": { + "selected-text-color": "#50a14f", + "text-color": "#50a14f" + }, + "Attribute": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "BaseN": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "BuiltIn": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Char": { + "selected-text-color": "#50a14f", + "text-color": "#50a14f" + }, + "Comment": { + "italic": true, + "selected-text-color": "#a0a1a7", + "text-color": "#a0a1a7" + }, + "CommentVar": { + "italic": true, + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "Constant": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "ControlFlow": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "DataType": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "DecVal": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Documentation": { + "selected-text-color": "#da4453", + "text-color": "#e45649" + }, + "Error": { + "selected-text-color": "#f44747", + "text-color": "#f44747", + "underline": true + }, + "Extension": { + "bold": true, + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + }, + "Float": { + "selected-text-color": "#986801", + "text-color": "#986801" + }, + "Function": { + "selected-text-color": "#4078f2", + "text-color": "#4078f2" + }, + "Import": { + "selected-text-color": "#50a14f", + "text-color": "#50a14f" + }, + "Information": { + "selected-text-color": "#e46700", + "text-color": "#c45b00" + }, + "Keyword": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Normal": { + "selected-text-color": "#383a42", + "text-color": "#383a42" + }, + "Operator": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "Others": { + "selected-text-color": "#27ae60", + "text-color": "#27ae60" + }, + "Preprocessor": { + "selected-text-color": "#a626a4", + "text-color": "#a626a4" + }, + "RegionMarker": { + "background-color": "#153042", + "selected-text-color": "#3daee9", + "text-color": "#2980b9" + }, + "SpecialChar": { + "selected-text-color": "#0184bc", + "text-color": "#0184bc" + }, + "SpecialString": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + }, + "String": { + "selected-text-color": "#50a14f", + "text-color": "#50a14f" + }, + "Variable": { + "selected-text-color": "#e45649", + "text-color": "#e45649" + }, + "VerbatimString": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + }, + "Warning": { + "selected-text-color": "#da4453", + "text-color": "#da4453" + } + } +} diff --git a/pandoc/templates/default.html5 b/pandoc/templates/default.html5 @@ -0,0 +1,65 @@ +<!doctype html> +<html + xmlns="http://www.w3.org/1999/xhtml" + lang="$lang$" + xml:lang="$lang$" + $if(dir)$ + dir="$dir$" + $endif$ +> + <head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta + name="viewport" + content="width=device-width, initial-scale=1.0, user-scalable=yes" + /> + $for(author-meta)$ + <meta name="author" content="$author-meta$" /> + $endfor$ $if(date-meta)$ + <meta name="dcterms.date" content="$date-meta$" /> + $endif$ $if(keywords)$ + <meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" /> + $endif$ $if(description-meta)$ + <meta name="description" content="$description-meta$" /> + $endif$ + <title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title> + <style> + $styles.html()$ + </style> + $for(css)$ + <link rel="stylesheet" href="$css$" /> + $endfor$ $for(header-includes)$ $header-includes$ $endfor$ $if(math)$ $math$ + $endif$ + </head> + <body> + <article> + $for(include-before)$ $include-before$ $endfor$ $if(title)$ + <header id="title-block-header"> + <h1 class="title">$title$</h1> + $if(subtitle)$ + <p class="subtitle">$subtitle$</p> + $endif$ $for(author)$ + <p class="author">$author$</p> + $endfor$ $if(date)$ + <p class="date">$date$</p> + $endif$ $if(abstract)$ + <div class="abstract"> + <div class="abstract-title">$abstract-title$</div> + $abstract$ + </div> + $endif$ + </header> + $endif$ $if(toc)$ + <nav id="$idprefix$TOC" role="doc-toc"> + $if(toc-title)$ + <h2 id="$idprefix$toc-title">$toc-title$</h2> + $endif$ $table-of-contents$ + </nav> + $endif$ + <section> + $body$ $for(include-after)$ $include-after$ $endfor$ + </section> + </article> + </body> +</html> diff --git a/tufte.css b/tufte.css @@ -2,501 +2,501 @@ /* Tufte CSS styles */ html { - font-size: 13px; + font-size: 13px; } body { - width: 87.5%; - margin-left: auto; - margin-right: auto; - padding-left: 12.5%; - font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; - background-color: #fffff8; - color: #111; - max-width: 1400px; - counter-reset: sidenote-counter; + width: 87.5%; + margin-left: auto; + margin-right: auto; + padding-left: 12.5%; + font-family: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif; + background-color: #fffff8; + color: #111; + max-width: 1400px; + counter-reset: sidenote-counter; } /* Adds dark mode */ @media (prefers-color-scheme: dark) { - body { - background-color: #151515; - color: #ddd; - } + body { + background-color: #151515; + color: #ddd; + } } h1 { - font-weight: 400; - margin-top: 4rem; - margin-bottom: 1.5rem; - font-size: 3.2rem; - line-height: 1; + font-weight: 400; + margin-top: 4rem; + margin-bottom: 1.5rem; + font-size: 3.2rem; + line-height: 1; } h2 { - font-style: italic; - font-weight: 400; - margin-top: 2.1rem; - margin-bottom: 1.4rem; - font-size: 2.2rem; - line-height: 1; + font-style: italic; + font-weight: 400; + margin-top: 2.1rem; + margin-bottom: 1.4rem; + font-size: 2.2rem; + line-height: 1; } h3 { - font-style: italic; - font-weight: 400; - font-size: 1.7rem; - margin-top: 2rem; - margin-bottom: 1.4rem; - line-height: 1; + font-style: italic; + font-weight: 400; + font-size: 1.7rem; + margin-top: 2rem; + margin-bottom: 1.4rem; + line-height: 1; } hr { - display: block; - height: 1px; - width: 55%; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; + display: block; + height: 1px; + width: 55%; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; } p.subtitle { - font-style: italic; - margin-top: 1rem; - margin-bottom: 1rem; - font-size: 1.8rem; - display: block; - line-height: 1; + font-style: italic; + margin-top: 1rem; + margin-bottom: 1rem; + font-size: 1.8rem; + display: block; + line-height: 1; } .danger { - color: red; + color: red; } article { - padding: 5rem 0rem; + padding: 5rem 0rem; } section { - padding-top: 1rem; - padding-bottom: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; } p, dl, ol, ul { - font-size: 1.4rem; - line-height: 2rem; + font-size: 1.4rem; + line-height: 2rem; } p { - margin-top: 1.4rem; - margin-bottom: 1.4rem; - padding-right: 0; - vertical-align: baseline; + margin-top: 1.4rem; + margin-bottom: 1.4rem; + padding-right: 0; + vertical-align: baseline; } /* Chapter Epigraphs */ div.epigraph { - margin: 5em 0; + margin: 5em 0; } div.epigraph > blockquote { - margin-top: 3em; - margin-bottom: 3em; + margin-top: 3em; + margin-bottom: 3em; } div.epigraph > blockquote, div.epigraph > blockquote > p { - font-style: italic; + font-style: italic; } div.epigraph > blockquote > footer { - font-style: normal; + font-style: normal; } div.epigraph > blockquote > footer > cite { - font-style: italic; + font-style: italic; } /* end chapter epigraphs styles */ blockquote { - font-size: 1.4rem; + font-size: 1.4rem; } blockquote p { - width: 55%; - margin-right: 40px; + width: 55%; + margin-right: 40px; } blockquote footer { - width: 55%; - font-size: 1.1rem; - text-align: right; + width: 55%; + font-size: 1.1rem; + text-align: right; } section > p, section > footer, section > table { - width: 55%; + width: 55%; } /* 50 + 5 == 55, to be the same width as paragraph */ section > dl, section > ol, section > ul { - width: 50%; - -webkit-padding-start: 5%; + width: 50%; + -webkit-padding-start: 5%; } dt:not(:first-child), li:not(:first-child) { - margin-top: 0.25rem; + margin-top: 0.25rem; } figure { - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - max-width: 55%; - -webkit-margin-start: 0; - -webkit-margin-end: 0; - margin: 0 0 3em 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + max-width: 55%; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + margin: 0 0 3em 0; } figcaption { - float: right; - clear: right; - margin-top: 0; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.6; - vertical-align: baseline; - position: relative; - max-width: 40%; + float: right; + clear: right; + margin-top: 0; + margin-bottom: 0; + font-size: 1.1rem; + line-height: 1.6; + vertical-align: baseline; + position: relative; + max-width: 40%; } figure.fullwidth figcaption { - margin-right: 24%; + margin-right: 24%; } /* Links: replicate underline that clears descenders */ a:link, a:visited { - color: inherit; + color: inherit; } .no-tufte-underline:link { - background: unset; - text-shadow: unset; + background: unset; + text-shadow: unset; } a:link, .tufte-underline, .hover-tufte-underline:hover { - text-decoration: none; - background: - -webkit-linear-gradient(#fffff8, #fffff8), - -webkit-linear-gradient(#fffff8, #fffff8), - -webkit-linear-gradient(currentColor, currentColor); - background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), - linear-gradient(currentColor, currentColor); - -webkit-background-size: - 0.05em 1px, - 0.05em 1px, - 1px 1px; - -moz-background-size: - 0.05em 1px, - 0.05em 1px, - 1px 1px; - background-size: - 0.05em 1px, - 0.05em 1px, - 1px 1px; - background-repeat: no-repeat, no-repeat, repeat-x; - text-shadow: - 0.03em 0 #fffff8, - -0.03em 0 #fffff8, - 0 0.03em #fffff8, - 0 -0.03em #fffff8, - 0.06em 0 #fffff8, - -0.06em 0 #fffff8, - 0.09em 0 #fffff8, - -0.09em 0 #fffff8, - 0.12em 0 #fffff8, - -0.12em 0 #fffff8, - 0.15em 0 #fffff8, - -0.15em 0 #fffff8; - background-position: - 0% 93%, - 100% 93%, - 0% 93%; + text-decoration: none; + background: + -webkit-linear-gradient(#fffff8, #fffff8), + -webkit-linear-gradient(#fffff8, #fffff8), + -webkit-linear-gradient(currentColor, currentColor); + background: + linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), + linear-gradient(currentColor, currentColor); + -webkit-background-size: + 0.05em 1px, + 0.05em 1px, + 1px 1px; + -moz-background-size: + 0.05em 1px, + 0.05em 1px, + 1px 1px; + background-size: + 0.05em 1px, + 0.05em 1px, + 1px 1px; + background-repeat: no-repeat, no-repeat, repeat-x; + text-shadow: + 0.03em 0 #fffff8, + -0.03em 0 #fffff8, + 0 0.03em #fffff8, + 0 -0.03em #fffff8, + 0.06em 0 #fffff8, + -0.06em 0 #fffff8, + 0.09em 0 #fffff8, + -0.09em 0 #fffff8, + 0.12em 0 #fffff8, + -0.12em 0 #fffff8, + 0.15em 0 #fffff8, + -0.15em 0 #fffff8; + background-position: + 0% 93%, + 100% 93%, + 0% 93%; } @media screen and (-webkit-min-device-pixel-ratio: 0) { - a:link, - .tufte-underline, - .hover-tufte-underline:hover { - background-position-y: 87%, 87%, 87%; - } + a:link, + .tufte-underline, + .hover-tufte-underline:hover { + background-position-y: 87%, 87%, 87%; + } } /* Adds dark mode */ @media (prefers-color-scheme: dark) { - a:link, - .tufte-underline, - .hover-tufte-underline:hover { - text-shadow: - 0.03em 0 #151515, - -0.03em 0 #151515, - 0 0.03em #151515, - 0 -0.03em #151515, - 0.06em 0 #151515, - -0.06em 0 #151515, - 0.09em 0 #151515, - -0.09em 0 #151515, - 0.12em 0 #151515, - -0.12em 0 #151515, - 0.15em 0 #151515, - -0.15em 0 #151515; - } + a:link, + .tufte-underline, + .hover-tufte-underline:hover { + text-shadow: + 0.03em 0 #151515, + -0.03em 0 #151515, + 0 0.03em #151515, + 0 -0.03em #151515, + 0.06em 0 #151515, + -0.06em 0 #151515, + 0.09em 0 #151515, + -0.09em 0 #151515, + 0.12em 0 #151515, + -0.12em 0 #151515, + 0.15em 0 #151515, + -0.15em 0 #151515; + } } a:link::selection, a:link::-moz-selection { - text-shadow: - 0.03em 0 #b4d5fe, - -0.03em 0 #b4d5fe, - 0 0.03em #b4d5fe, - 0 -0.03em #b4d5fe, - 0.06em 0 #b4d5fe, - -0.06em 0 #b4d5fe, - 0.09em 0 #b4d5fe, - -0.09em 0 #b4d5fe, - 0.12em 0 #b4d5fe, - -0.12em 0 #b4d5fe, - 0.15em 0 #b4d5fe, - -0.15em 0 #b4d5fe; - background: #b4d5fe; + text-shadow: + 0.03em 0 #b4d5fe, + -0.03em 0 #b4d5fe, + 0 0.03em #b4d5fe, + 0 -0.03em #b4d5fe, + 0.06em 0 #b4d5fe, + -0.06em 0 #b4d5fe, + 0.09em 0 #b4d5fe, + -0.09em 0 #b4d5fe, + 0.12em 0 #b4d5fe, + -0.12em 0 #b4d5fe, + 0.15em 0 #b4d5fe, + -0.15em 0 #b4d5fe; + background: #b4d5fe; } /* Sidenotes, margin notes, figures, captions */ img { - max-width: 100%; + max-width: 100%; } .sidenote, .marginnote { - float: right; - clear: right; - margin-right: -60%; - width: 50%; - margin-top: 0.3rem; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.3; - vertical-align: baseline; - position: relative; + float: right; + clear: right; + margin-right: -60%; + width: 50%; + margin-top: 0.3rem; + margin-bottom: 0; + font-size: 1.1rem; + line-height: 1.3; + vertical-align: baseline; + position: relative; } .sidenote-number { - counter-increment: sidenote-counter; + counter-increment: sidenote-counter; } .sidenote-number:after, .sidenote:before { - position: relative; - vertical-align: baseline; + position: relative; + vertical-align: baseline; } .sidenote-number:after { - content: counter(sidenote-counter); - font-size: 1rem; - top: -0.5rem; - left: 0.1rem; + content: counter(sidenote-counter); + font-size: 1rem; + top: -0.5rem; + left: 0.1rem; } .sidenote:before { - content: counter(sidenote-counter) " "; - font-size: 1rem; - top: -0.5rem; + content: counter(sidenote-counter) " "; + font-size: 1rem; + top: -0.5rem; } blockquote .sidenote, blockquote .marginnote { - margin-right: -82%; - min-width: 59%; - text-align: left; + margin-right: -82%; + min-width: 59%; + text-align: left; } div.fullwidth, table.fullwidth { - width: 100%; + width: 100%; } div.table-wrapper { - overflow-x: auto; - font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; + overflow-x: auto; + font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; } .sans { - font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif; - letter-spacing: 0.03em; + font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif; + letter-spacing: 0.03em; } code, pre > code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 1rem; - line-height: 1.42; - -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. See https://github.com/edwardtufte/tufte-css/issues/81#issuecomment-261953409 */ + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 1rem; + line-height: 1.42; + -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. See https://github.com/edwardtufte/tufte-css/issues/81#issuecomment-261953409 */ } .sans > code { - font-size: 1.2rem; + font-size: 1.2rem; } h1 > code, h2 > code, h3 > code { - font-size: 0.8em; + font-size: 0.8em; } .marginnote > code, .sidenote > code { - font-size: 1rem; + font-size: 1rem; } pre > code { - font-size: 0.9rem; - width: 52.5%; - margin-left: 2.5%; - overflow-x: auto; - display: block; + font-size: 0.9rem; + width: 52.5%; + margin-left: 2.5%; + overflow-x: auto; + display: block; } pre.fullwidth > code { - width: 90%; + width: 90%; } .fullwidth { - max-width: 90%; - clear: both; + max-width: 90%; + clear: both; } span.newthought { - font-variant: small-caps; - font-size: 1.2em; + font-variant: small-caps; + font-size: 1.2em; } input.margin-toggle { - display: none; + display: none; } label.sidenote-number { - display: inline-block; - max-height: 2rem; /* should be less than or equal to paragraph line-height */ + display: inline-block; + max-height: 2rem; /* should be less than or equal to paragraph line-height */ } label.margin-toggle:not(.sidenote-number) { - display: none; + display: none; } .iframe-wrapper { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - padding-top: 25px; - height: 0; + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + padding-top: 25px; + height: 0; } .iframe-wrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } @media (max-width: 760px) { - body { - width: 84%; - padding-left: 8%; - padding-right: 8%; - } - - hr, - section > p, - section > footer, - section > table { - width: 100%; - } - - pre > code { - width: 97%; - } - - section > dl, - section > ol, - section > ul { - width: 90%; - } - - figure { - max-width: 90%; - } - - figcaption, - figure.fullwidth figcaption { - margin-right: 0%; - max-width: none; - } - - blockquote { - margin-left: 1.5em; - margin-right: 0em; - } - - blockquote p, - blockquote footer { - width: 100%; - } - - label.margin-toggle:not(.sidenote-number) { - display: inline; - } - - .sidenote, - .marginnote { - display: none; - } - - .margin-toggle:checked + .sidenote, - .margin-toggle:checked + .marginnote { - display: block; - float: left; - left: 1rem; - clear: both; - width: 95%; - margin: 1rem 2.5%; - vertical-align: baseline; - position: relative; - } - - label { - cursor: pointer; - } - - div.table-wrapper, - table { - width: 85%; - } - - img { - width: 100%; - } + body { + width: 84%; + padding-left: 8%; + padding-right: 8%; + } + + hr, + section > p, + section > footer, + section > table { + width: 100%; + } + + pre > code { + width: 97%; + } + + section > dl, + section > ol, + section > ul { + width: 90%; + } + + figure { + max-width: 90%; + } + + figcaption, + figure.fullwidth figcaption { + margin-right: 0%; + max-width: none; + } + + blockquote { + margin-left: 1.5em; + margin-right: 0em; + } + + blockquote p, + blockquote footer { + width: 100%; + } + + label.margin-toggle:not(.sidenote-number) { + display: inline; + } + + .sidenote, + .marginnote { + display: none; + } + + .margin-toggle:checked + .sidenote, + .margin-toggle:checked + .marginnote { + display: block; + float: left; + left: 1rem; + clear: both; + width: 95%; + margin: 1rem 2.5%; + vertical-align: baseline; + position: relative; + } + + label { + cursor: pointer; + } + + div.table-wrapper, + table { + width: 85%; + } + + img { + width: 100%; + } } - diff --git a/tufte.min.css b/tufte.min.css @@ -1 +1 @@ -@charset "UTF-8";html {font-size: 13px;}body {width: 87.5%;margin-left: auto;margin-right: auto;padding-left: 12.5%;font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;background-color: #fffff8;color: #111;max-width: 1400px;counter-reset: sidenote-counter;}@media (prefers-color-scheme: dark) {body {background-color: #151515;color: #ddd;}}h1 {font-weight: 400;margin-top: 4rem;margin-bottom: 1.5rem;font-size: 3.2rem;line-height: 1;}h2 {font-style: italic;font-weight: 400;margin-top: 2.1rem;margin-bottom: 1.4rem;font-size: 2.2rem;line-height: 1;}h3 {font-style: italic;font-weight: 400;font-size: 1.7rem;margin-top: 2rem;margin-bottom: 1.4rem;line-height: 1;}hr {display: block;height: 1px;width: 55%;border: 0;border-top: 1px solid #ccc;margin: 1em 0;padding: 0;}p.subtitle {font-style: italic;margin-top: 1rem;margin-bottom: 1rem;font-size: 1.8rem;display: block;line-height: 1;}.danger {color: red;}article {padding: 5rem 0rem;}section {padding-top: 1rem;padding-bottom: 1rem;}p, dl, ol, ul {font-size: 1.4rem;line-height: 2rem;}p {margin-top: 1.4rem;margin-bottom: 1.4rem;padding-right: 0;vertical-align: baseline;}div.epigraph {margin: 5em 0;}div.epigraph > blockquote {margin-top: 3em;margin-bottom: 3em;}div.epigraph > blockquote, div.epigraph > blockquote > p {font-style: italic;}div.epigraph > blockquote > footer {font-style: normal;}div.epigraph > blockquote > footer > cite {font-style: italic;}blockquote {font-size: 1.4rem;}blockquote p {width: 55%;margin-right: 40px;}blockquote footer {width: 55%;font-size: 1.1rem;text-align: right;}section > p, section > footer, section > table {width: 55%;}section > dl, section > ol, section > ul {width: 50%;-webkit-padding-start: 5%;}dt:not(:first-child), li:not(:first-child) {margin-top: 0.25rem;}figure {padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;max-width: 55%;-webkit-margin-start: 0;-webkit-margin-end: 0;margin: 0 0 3em 0;}figcaption {float: right;clear: right;margin-top: 0;margin-bottom: 0;font-size: 1.1rem;line-height: 1.6;vertical-align: baseline;position: relative;max-width: 40%;}figure.fullwidth figcaption {margin-right: 24%;}a:link, a:visited {color: inherit;}.no-tufte-underline:link {background: unset;text-shadow: unset;}a:link, .tufte-underline, .hover-tufte-underline:hover {text-decoration: none;background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(currentColor, currentColor);background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(currentColor, currentColor);-webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;-moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;background-size: 0.05em 1px, 0.05em 1px, 1px 1px;background-repeat: no-repeat, no-repeat, repeat-x;text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8;background-position: 0% 93%, 100% 93%, 0% 93%;}@media screen and (-webkit-min-device-pixel-ratio: 0) {a:link, .tufte-underline, .hover-tufte-underline:hover {background-position-y: 87%, 87%, 87%;}}@media (prefers-color-scheme: dark) {a:link, .tufte-underline, .hover-tufte-underline:hover {text-shadow: 0.03em 0 #151515, -0.03em 0 #151515, 0 0.03em #151515, 0 -0.03em #151515, 0.06em 0 #151515, -0.06em 0 #151515, 0.09em 0 #151515, -0.09em 0 #151515, 0.12em 0 #151515, -0.12em 0 #151515, 0.15em 0 #151515, -0.15em 0 #151515;}}a:link::selection, a:link::-moz-selection {text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;background: #b4d5fe;}img {max-width: 100%;}.sidenote, .marginnote {float: right;clear: right;margin-right: -60%;width: 50%;margin-top: 0.3rem;margin-bottom: 0;font-size: 1.1rem;line-height: 1.3;vertical-align: baseline;position: relative;}.sidenote-number {counter-increment: sidenote-counter;}.sidenote-number:after, .sidenote:before {position: relative;vertical-align: baseline;}.sidenote-number:after {content: counter(sidenote-counter);font-size: 1rem;top: -0.5rem;left: 0.1rem;}.sidenote:before {content: counter(sidenote-counter) " ";font-size: 1rem;top: -0.5rem;}blockquote .sidenote, blockquote .marginnote {margin-right: -82%;min-width: 59%;text-align: left;}div.fullwidth, table.fullwidth {width: 100%;}div.table-wrapper {overflow-x: auto;font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif;}.sans {font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;letter-spacing: 0.03em;}code, pre > code {font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size: 1rem;line-height: 1.42;-webkit-text-size-adjust: 100%;}.sans > code {font-size: 1.2rem;}h1 > code, h2 > code, h3 > code {font-size: 0.8em;}.marginnote > code, .sidenote > code {font-size: 1rem;}pre > code {font-size: 0.9rem;width: 52.5%;margin-left: 2.5%;overflow-x: auto;display: block;}pre.fullwidth > code {width: 90%;}.fullwidth {max-width: 90%;clear: both;}span.newthought {font-variant: small-caps;font-size: 1.2em;}input.margin-toggle {display: none;}label.sidenote-number {display: inline-block;max-height: 2rem;}label.margin-toggle:not(.sidenote-number) {display: none;}.iframe-wrapper {position: relative;padding-bottom: 56.25%;padding-top: 25px;height: 0;}.iframe-wrapper iframe {position: absolute;top: 0;left: 0;width: 100%;height: 100%;}@media (max-width: 760px) {body {width: 84%;padding-left: 8%;padding-right: 8%;}hr, section > p, section > footer, section > table {width: 100%;}pre > code {width: 97%;}section > dl, section > ol, section > ul {width: 90%;}figure {max-width: 90%;}figcaption, figure.fullwidth figcaption {margin-right: 0%;max-width: none;}blockquote {margin-left: 1.5em;margin-right: 0em;}blockquote p, blockquote footer {width: 100%;}label.margin-toggle:not(.sidenote-number) {display: inline;}.sidenote, .marginnote {display: none;}.margin-toggle:checked + .sidenote, .margin-toggle:checked + .marginnote {display: block;float: left;left: 1rem;clear: both;width: 95%;margin: 1rem 2.5%;vertical-align: baseline;position: relative;}label {cursor: pointer;}div.table-wrapper, table {width: 85%;}img {width: 100%;}} +@charset "UTF-8";html{font-size:13px}body{width:87.5%;margin-left:auto;margin-right:auto;padding-left:12.5%;font-family:ui-rounded,'Hiragino Maru Gothic ProN',Quicksand,Comfortaa,Manjari,'Arial Rounded MT','Arial Rounded MT Bold',Calibri,source-sans-pro,sans-serif;background-color:#fffff8;color:#111;max-width:1400px;counter-reset:sidenote-counter}@media (prefers-color-scheme:dark){body{background-color:#151515;color:#ddd}}h1{font-weight:400;margin-top:4rem;margin-bottom:1.5rem;font-size:3.2rem;line-height:1}h2{font-style:italic;font-weight:400;margin-top:2.1rem;margin-bottom:1.4rem;font-size:2.2rem;line-height:1}h3{font-style:italic;font-weight:400;font-size:1.7rem;margin-top:2rem;margin-bottom:1.4rem;line-height:1}hr{display:block;height:1px;width:55%;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}p.subtitle{font-style:italic;margin-top:1rem;margin-bottom:1rem;font-size:1.8rem;display:block;line-height:1}.danger{color:red}article{padding:5rem 0rem}section{padding-top:1rem;padding-bottom:1rem}p,dl,ol,ul{font-size:1.4rem;line-height:2rem}p{margin-top:1.4rem;margin-bottom:1.4rem;padding-right:0;vertical-align:baseline}div.epigraph{margin:5em 0}div.epigraph>blockquote{margin-top:3em;margin-bottom:3em}div.epigraph>blockquote,div.epigraph>blockquote>p{font-style:italic}div.epigraph>blockquote>footer{font-style:normal}div.epigraph>blockquote>footer>cite{font-style:italic}blockquote{font-size:1.4rem}blockquote p{width:55%;margin-right:40px}blockquote footer{width:55%;font-size:1.1rem;text-align:right}section>p,section>footer,section>table{width:55%}section>dl,section>ol,section>ul{width:50%;-webkit-padding-start:5%}dt:not(:first-child),li:not(:first-child){margin-top:.25rem}figure{padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;max-width:55%;-webkit-margin-start:0;-webkit-margin-end:0;margin:0 0 3em 0}figcaption{float:right;clear:right;margin-top:0;margin-bottom:0;font-size:1.1rem;line-height:1.6;vertical-align:baseline;position:relative;max-width:40%}figure.fullwidth figcaption{margin-right:24%}a:link,a:visited{color:inherit}.no-tufte-underline:link{background:unset;text-shadow:unset}a:link,.tufte-underline,.hover-tufte-underline:hover{text-decoration:none;background:-webkit-linear-gradient(#fffff8,#fffff8),-webkit-linear-gradient(#fffff8,#fffff8),-webkit-linear-gradient(currentColor,currentColor);background:linear-gradient(#fffff8,#fffff8),linear-gradient(#fffff8,#fffff8),linear-gradient(currentColor,currentColor);-webkit-background-size:.05em 1px,.05em 1px,1px 1px;-moz-background-size:.05em 1px,.05em 1px,1px 1px;background-size:.05em 1px,.05em 1px,1px 1px;background-repeat:no-repeat,no-repeat,repeat-x;text-shadow:.03em 0 #fffff8,-.03em 0 #fffff8,0 .03em #fffff8,0 -.03em #fffff8,.06em 0 #fffff8,-.06em 0 #fffff8,.09em 0 #fffff8,-.09em 0 #fffff8,.12em 0 #fffff8,-.12em 0 #fffff8,.15em 0 #fffff8,-.15em 0 #fffff8;background-position:0% 93%,100% 93%,0% 93%}@media screen and (-webkit-min-device-pixel-ratio:0){a:link,.tufte-underline,.hover-tufte-underline:hover{background-position-y:87%,87%,87%}}@media (prefers-color-scheme:dark){a:link,.tufte-underline,.hover-tufte-underline:hover{text-shadow:.03em 0 #151515,-.03em 0 #151515,0 .03em #151515,0 -.03em #151515,.06em 0 #151515,-.06em 0 #151515,.09em 0 #151515,-.09em 0 #151515,.12em 0 #151515,-.12em 0 #151515,.15em 0 #151515,-.15em 0 #151515}}a:link::selection,a:link::-moz-selection{text-shadow:.03em 0 #b4d5fe,-.03em 0 #b4d5fe,0 .03em #b4d5fe,0 -.03em #b4d5fe,.06em 0 #b4d5fe,-.06em 0 #b4d5fe,.09em 0 #b4d5fe,-.09em 0 #b4d5fe,.12em 0 #b4d5fe,-.12em 0 #b4d5fe,.15em 0 #b4d5fe,-.15em 0 #b4d5fe;background:#b4d5fe}img{max-width:100%}.sidenote,.marginnote{float:right;clear:right;margin-right:-60%;width:50%;margin-top:.3rem;margin-bottom:0;font-size:1.1rem;line-height:1.3;vertical-align:baseline;position:relative}.sidenote-number{counter-increment:sidenote-counter}.sidenote-number:after,.sidenote:before{position:relative;vertical-align:baseline}.sidenote-number:after{content:counter(sidenote-counter);font-size:1rem;top:-.5rem;left:.1rem}.sidenote:before{content:counter(sidenote-counter) " ";font-size:1rem;top:-.5rem}blockquote .sidenote,blockquote .marginnote{margin-right:-82%;min-width:59%;text-align:left}div.fullwidth,table.fullwidth{width:100%}div.table-wrapper{overflow-x:auto;font-family:"Trebuchet MS","Gill Sans","Gill Sans MT",sans-serif}.sans{font-family:"Gill Sans","Gill Sans MT",Calibri,sans-serif;letter-spacing:.03em}code,pre>code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:1rem;line-height:1.42;-webkit-text-size-adjust:100%}.sans>code{font-size:1.2rem}h1>code,h2>code,h3>code{font-size:.8em}.marginnote>code,.sidenote>code{font-size:1rem}pre>code{font-size:.9rem;width:52.5%;margin-left:2.5%;overflow-x:auto;display:block}pre.fullwidth>code{width:90%}.fullwidth{max-width:90%;clear:both}span.newthought{font-variant:small-caps;font-size:1.2em}input.margin-toggle{display:none}label.sidenote-number{display:inline-block;max-height:2rem}label.margin-toggle:not(.sidenote-number){display:none}.iframe-wrapper{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.iframe-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}@media (max-width:760px){body{width:84%;padding-left:8%;padding-right:8%}hr,section>p,section>footer,section>table{width:100%}pre>code{width:97%}section>dl,section>ol,section>ul{width:90%}figure{max-width:90%}figcaption,figure.fullwidth figcaption{margin-right:0%;max-width:none}blockquote{margin-left:1.5em;margin-right:0em}blockquote p,blockquote footer{width:100%}label.margin-toggle:not(.sidenote-number){display:inline}.sidenote,.marginnote{display:none}.margin-toggle:checked+.sidenote,.margin-toggle:checked+.marginnote{display:block;float:left;left:1rem;clear:both;width:95%;margin:1rem 2.5%;vertical-align:baseline;position:relative}label{cursor:pointer}div.table-wrapper,table{width:85%}img{width:100%}} +\ No newline at end of file