git.lucas.co / website
source for lucas.co

commit45f16126b1c7165437dec395471eb714eae21272
parentc844f97674
authorlsgalante <[email protected]>
date2025-05-14 21:23
add new files mostly fonts

 border.js                                          | 254 +++++++++++++++++++++
 font/AverageMono-Bold.woff2                        | Bin 0 -> 266920 bytes
 font/AverageMono-BoldItalic.woff2                  | Bin 0 -> 297744 bytes
 font/AverageMono-Italic.woff2                      | Bin 0 -> 276240 bytes
 font/AverageMono.woff2                             | Bin 0 -> 248992 bytes
 font/BigBlue_TerminalPlus.woff2                    | Bin 0 -> 14420 bytes
 font/BigBlue_Terminal_437TT.woff2                  | Bin 0 -> 6392 bytes
 font/CirceSlabA-Light.woff2                        | Bin 0 -> 60136 bytes
 font/MPLUS1Code-Bold.woff2                         | Bin 0 -> 655252 bytes
 font/MPLUS1Code-ExtraLight.woff2                   | Bin 0 -> 631384 bytes
 font/MPLUS1Code-Light.woff2                        | Bin 0 -> 643404 bytes
 font/MPLUS1Code-Medium.woff2                       | Bin 0 -> 676488 bytes
 font/MPLUS1Code-Regular.woff2                      | Bin 0 -> 656048 bytes
 font/MPLUS1Code-SemiBold.woff2                     | Bin 0 -> 678112 bytes
 font/MPLUS1Code-Thin.woff2                         | Bin 0 -> 546268 bytes
 font/NewHeterodoxMono-Bold.woff2                   | Bin 0 -> 20740 bytes
 font/NewHeterodoxMono-Book.woff2                   | Bin 0 -> 19056 bytes
 font/Recursive_Web/.DS_Store                       | Bin 0 -> 6148 bytes
 .../woff2_static/RecursiveMonoCslSt-BdItalic.woff2 | Bin 0 -> 117464 bytes
 .../woff2_static/RecursiveMonoCslSt-Black.woff2    | Bin 0 -> 113504 bytes
 .../RecursiveMonoCslSt-BlkItalic.woff2             | Bin 0 -> 118876 bytes
 .../woff2_static/RecursiveMonoCslSt-Bold.woff2     | Bin 0 -> 113980 bytes
 .../woff2_static/RecursiveMonoCslSt-ExtraBd.woff2  | Bin 0 -> 109916 bytes
 .../woff2_static/RecursiveMonoCslSt-Italic.woff2   | Bin 0 -> 117360 bytes
 .../woff2_static/RecursiveMonoCslSt-Light.woff2    | Bin 0 -> 103608 bytes
 .../woff2_static/RecursiveMonoCslSt-LtItalic.woff2 | Bin 0 -> 108864 bytes
 .../woff2_static/RecursiveMonoCslSt-Med.woff2      | Bin 0 -> 113456 bytes
 .../RecursiveMonoCslSt-MedItalic.woff2             | Bin 0 -> 116780 bytes
 .../woff2_static/RecursiveMonoCslSt-Regular.woff2  | Bin 0 -> 112528 bytes
 .../woff2_static/RecursiveMonoCslSt-SemiBd.woff2   | Bin 0 -> 114296 bytes
 .../RecursiveMonoCslSt-SmBdItalic.woff2            | Bin 0 -> 116976 bytes
 .../RecursiveMonoCslSt-XBdItalic.woff2             | Bin 0 -> 113924 bytes
 .../woff2_static/RecursiveMonoCslSt-XBlk.woff2     | Bin 0 -> 107256 bytes
 .../RecursiveMonoCslSt-XBlkItalic.woff2            | Bin 0 -> 114524 bytes
 .../woff2_static/RecursiveMonoLnrSt-Black.woff2    | Bin 0 -> 107008 bytes
 .../RecursiveMonoLnrSt-BlackItalic.woff2           | Bin 0 -> 115332 bytes
 .../woff2_static/RecursiveMonoLnrSt-Bold.woff2     | Bin 0 -> 102660 bytes
 .../RecursiveMonoLnrSt-BoldItalic.woff2            | Bin 0 -> 112912 bytes
 .../RecursiveMonoLnrSt-ExBdItalic.woff2            | Bin 0 -> 110100 bytes
 .../RecursiveMonoLnrSt-ExtraBold.woff2             | Bin 0 -> 100340 bytes
 .../woff2_static/RecursiveMonoLnrSt-Italic.woff2   | Bin 0 -> 111496 bytes
 .../woff2_static/RecursiveMonoLnrSt-Light.woff2    | Bin 0 -> 97156 bytes
 .../RecursiveMonoLnrSt-LightItalic.woff2           | Bin 0 -> 100208 bytes
 .../woff2_static/RecursiveMonoLnrSt-Med.woff2      | Bin 0 -> 104640 bytes
 .../RecursiveMonoLnrSt-MedItalic.woff2             | Bin 0 -> 113604 bytes
 .../woff2_static/RecursiveMonoLnrSt-Regular.woff2  | Bin 0 -> 102364 bytes
 .../woff2_static/RecursiveMonoLnrSt-SemiBold.woff2 | Bin 0 -> 103496 bytes
 .../RecursiveMonoLnrSt-SmBdItalic.woff2            | Bin 0 -> 112424 bytes
 .../woff2_static/RecursiveMonoLnrSt-XBlk.woff2     | Bin 0 -> 109160 bytes
 .../RecursiveMonoLnrSt-XBlkItalic.woff2            | Bin 0 -> 113556 bytes
 .../woff2_static/RecursiveSansCslSt-BdItalic.woff2 | Bin 0 -> 124988 bytes
 .../woff2_static/RecursiveSansCslSt-Black.woff2    | Bin 0 -> 120204 bytes
 .../RecursiveSansCslSt-BlkItalic.woff2             | Bin 0 -> 126608 bytes
 .../woff2_static/RecursiveSansCslSt-Bold.woff2     | Bin 0 -> 121664 bytes
 .../woff2_static/RecursiveSansCslSt-ExtraBd.woff2  | Bin 0 -> 117696 bytes
 .../woff2_static/RecursiveSansCslSt-Italic.woff2   | Bin 0 -> 124360 bytes
 .../woff2_static/RecursiveSansCslSt-Light.woff2    | Bin 0 -> 110400 bytes
 .../woff2_static/RecursiveSansCslSt-LtItalic.woff2 | Bin 0 -> 116168 bytes
 .../woff2_static/RecursiveSansCslSt-Med.woff2      | Bin 0 -> 121472 bytes
 .../RecursiveSansCslSt-MedItalic.woff2             | Bin 0 -> 124332 bytes
 .../woff2_static/RecursiveSansCslSt-Regular.woff2  | Bin 0 -> 120092 bytes
 .../woff2_static/RecursiveSansCslSt-SemiBd.woff2   | Bin 0 -> 122036 bytes
 .../RecursiveSansCslSt-SmBdItalic.woff2            | Bin 0 -> 124368 bytes
 .../RecursiveSansCslSt-XBdItalic.woff2             | Bin 0 -> 121588 bytes
 .../woff2_static/RecursiveSansCslSt-XBlk.woff2     | Bin 0 -> 114736 bytes
 .../RecursiveSansCslSt-XBlkItalic.woff2            | Bin 0 -> 121616 bytes
 .../woff2_static/RecursiveSansLnrSt-Black.woff2    | Bin 0 -> 117496 bytes
 .../RecursiveSansLnrSt-BlackItalic.woff2           | Bin 0 -> 122508 bytes
 .../woff2_static/RecursiveSansLnrSt-Bold.woff2     | Bin 0 -> 110208 bytes
 .../RecursiveSansLnrSt-BoldItalic.woff2            | Bin 0 -> 120596 bytes
 .../RecursiveSansLnrSt-ExBdItalic.woff2            | Bin 0 -> 117224 bytes
 .../RecursiveSansLnrSt-ExtraBold.woff2             | Bin 0 -> 108064 bytes
 .../woff2_static/RecursiveSansLnrSt-Italic.woff2   | Bin 0 -> 119676 bytes
 .../woff2_static/RecursiveSansLnrSt-Light.woff2    | Bin 0 -> 105504 bytes
 .../RecursiveSansLnrSt-LightItalic.woff2           | Bin 0 -> 107756 bytes
 .../woff2_static/RecursiveSansLnrSt-Med.woff2      | Bin 0 -> 112672 bytes
 .../RecursiveSansLnrSt-MedItalic.woff2             | Bin 0 -> 120936 bytes
 .../woff2_static/RecursiveSansLnrSt-Regular.woff2  | Bin 0 -> 110076 bytes
 .../woff2_static/RecursiveSansLnrSt-SemiBold.woff2 | Bin 0 -> 111620 bytes
 .../RecursiveSansLnrSt-SmBdItalic.woff2            | Bin 0 -> 119796 bytes
 .../woff2_static/RecursiveSansLnrSt-XBlk.woff2     | Bin 0 -> 112352 bytes
 .../RecursiveSansLnrSt-XBlkItalic.woff2            | Bin 0 -> 120616 bytes
 ...Recursive_VF_1.085--subset-GF_latin_basic.woff2 | Bin 0 -> 293616 bytes
 .../woff2_variable/Recursive_VF_1.085.woff2        | Bin 0 -> 718680 bytes
 .../Recursive_Web/woff2_variable_subsets/fonts.css |  61 +++++
 ...sive_VF_1.085--subset_range_english_basic.woff2 | Bin 0 -> 204728 bytes
 .../Recursive_VF_1.085--subset_range_latin_1.woff2 | Bin 0 -> 69508 bytes
 ...rsive_VF_1.085--subset_range_latin_1_punc.woff2 | Bin 0 -> 47992 bytes
 ...ecursive_VF_1.085--subset_range_latin_ext.woff2 | Bin 0 -> 160528 bytes
 ...ecursive_VF_1.085--subset_range_remaining.woff2 | Bin 0 -> 354184 bytes
 ...cursive_VF_1.085--subset_range_vietnamese.woff2 | Bin 0 -> 57860 bytes
 .../woff2_variable_subsets/index.html              |  90 ++++++++
 font/Spleen12x24.woff2                             | Bin 0 -> 19956 bytes
 font/Spleen16x32.woff2                             | Bin 0 -> 13656 bytes
 font/Spleen32x64.woff2                             | Bin 0 -> 15648 bytes
 font/Spleen6x12.woff2                              | Bin 0 -> 8104 bytes
 font/Spleen8x16.woff2                              | Bin 0 -> 11904 bytes
 font/VerilySerifMono.woff2                         | Bin 0 -> 14628 bytes
 font/ZillaSlabHighlight-Bold.woff2                 | Bin 0 -> 64544 bytes
 font/ZillaSlabHighlight-Regular.woff2              | Bin 0 -> 66692 bytes
 font/pt-mono_bold.woff2                            | Bin 0 -> 53948 bytes
 font/pt-mono_regular.woff2                         | Bin 0 -> 71580 bytes
 font/saxMono.woff2                                 | Bin 0 -> 48276 bytes
 main.js                                            |   6 +
 projects/computer-modeling.html                    |  46 ++++
 105 files changed, 457 insertions(+)

diff --git a/border.js b/border.js
new file mode 100644
index 0000000..2767574
--- /dev/null
+++ b/border.js
@@ -0,0 +1,254 @@
+onStart();
+
+//
+//
+//
+
+function onStart() {
+    const canvas = document.createElement("canvas");
+    canvas.id = "borderCanvas";
+    document.body.appendChild(canvas);
+    canvasInit()
+    makeBorderGrad();
+    makeBorderStroke();
+    reportWindowInformation();
+
+    window.addEventListener("resize", function() {
+        canvasClear();
+        canvasInit();
+        makeBorderGrad();
+        makeBorderStroke();
+    })
+}
+
+//
+//
+//
+
+function canvasClear() {
+    const canvas = document.getElementById("borderCanvas");
+    const ctx = canvas.getContext("2d");
+    ctx.clearRect(0, 0, canvas.width, canvas.height);
+}
+
+function canvasInit() {
+    const canvas = document.getElementById("borderCanvas");
+
+    // set size in css pixels
+    const viewport_height = Math.min( document.documentElement.clientHeight, window.innerHeight );
+    const viewport_width = Math.min( document.documentElement.clientWidth, window.innerWidth );
+    canvas.style.height = viewport_height;
+    canvas.style.width = viewport_width;
+
+    // set actual size in memory
+    const scale = window.devicePixelRatio;
+    // const scale = 1;
+    canvas.height = Math.floor(viewport_height);
+    canvas.width = Math.floor(viewport_width);
+
+    canvas.style.position = "fixed";
+    canvas.style.top = "0";
+    canvas.style.left = "0";
+    canvas.style.zIndex = "999";
+    canvas.style.display = "block";
+    canvas.style.pointerEvents = "none";
+}
+
+function convertEmToPx(em) {
+    const font_size = parseFloat( window.getComputedStyle(document.body).fontSize );
+    return em * font_size;
+}
+
+function convertPxToEm(px) {
+    const font_size = parseFloat( window.getComputedStyle(document.body).fontSize );
+    return px / font_size;
+}
+
+function makeBorderGrad() {
+    // init
+    const canvas = document.getElementById("borderCanvas");
+    const ctx = canvas.getContext("2d");
+    const width = canvas.width;
+    const height = canvas.height;
+    const border_width = 50;
+
+    // top
+    let gradient = ctx.createLinearGradient(0, 0, 0, border_width);
+    gradient.addColorStop(0, "rgba(0, 0, 0, 1)");
+    gradient.addColorStop(1, "rgba(0, 0, 0, 0)");
+    ctx.fillStyle = gradient;
+    ctx.fillRect(0, 0, width, border_width);
+
+    // bottom
+    gradient = ctx.createLinearGradient(0, height - border_width, 0, height);
+    gradient.addColorStop(0, "rgba(0, 0, 0, 0)");
+    gradient.addColorStop(1, "rgba(0, 0, 0, 1)");
+    ctx.fillStyle = gradient;
+    ctx.fillRect(0, height - border_width, width, border_width);
+
+    // left
+    gradient = ctx.createLinearGradient(0, 0, border_width, 0);
+    gradient.addColorStop(0, "rgba(0, 0, 0, 1)");
+    gradient.addColorStop(1, "rgba(0, 0, 0, 0)");
+    ctx.fillStyle = gradient;
+    ctx.fillRect(0, 0, border_width, height);
+
+    // right
+    gradient = ctx.createLinearGradient(width - border_width, 0, width, 0);
+    gradient.addColorStop(0, "rgba(0, 0, 0, 0)");
+    gradient.addColorStop(1, "rgba(0, 0, 0, 1)");
+    ctx.fillStyle = gradient;
+    ctx.fillRect(width - border_width, 0, border_width, height);
+}
+
+function makeBorderStroke() {
+
+    // init
+    const canvas = document.getElementById("borderCanvas");
+    const ctx = canvas.getContext("2d");
+    ctx.strokeStyle = "white";
+    ctx.lineWidth = convertEmToPx(0.05);
+
+    // parameters
+    const margin = convertEmToPx(1);
+    const inset = convertEmToPx(5);
+    
+    const border_width = (canvas.width - (margin * 2) - inset);
+    const border_height = (canvas.height - (margin * 2) - inset);
+    
+    const stroke_ct_x = Math.floor(border_width / 40);
+    const stroke_ct_y = Math.floor(border_height / 40);
+    const stroke_len_x = border_width / ((stroke_ct_x + 1) / 2);
+    const stroke_len_y = border_height / ((stroke_ct_y + 1) / 2);
+    const stroke_width = convertEmToPx(0.5);
+
+    // test
+
+    // const gradient = ctx.createLinearGradient(60, 10, 20, 10);
+    // gradient.addColorStop(0, "white");
+    // gradient.addColorStop(1, "black");
+    // ctx.strokeStyle = gradient;
+    // ctx.lineWidth = 5;
+    // ctx.beginPath();
+    // ctx.moveTo(300, 300);
+    // ctx.lineTo(400, 800);
+    // ctx.stroke();
+    // return;
+
+    // draw top
+    let x = margin + inset / 2;
+    let y = margin;
+    ctx.beginPath();
+    for (let i = 0; i < stroke_ct_x; i++) {
+
+        ctx.moveTo(x, y);
+        x += stroke_len_x * 0.4
+        
+        ctx.lineTo(x, y);
+        x += stroke_len_x * 0.2;
+        y += stroke_width;
+        
+        ctx.lineTo(x, y);
+        x += stroke_len_x * 0.4;
+        
+        ctx.lineTo(x, y);
+        
+        x -= stroke_len_x * 0.5;
+        y -= stroke_width;
+    }
+    ctx.stroke();
+
+    // ctx.strokeStyle = gradient;
+    // ctx.beginPath();
+    // ctx.lineWidth = convertEmToPx(0.05);
+    // ctx.moveTo(margin + inset / 2, margin);
+    // ctx.lineTo(margin + inset / 2 - 40, margin);
+    // ctx.stroke();
+    // ctx.strokeStyle = "white";
+
+    // draw bottom
+    x = canvas.width - margin - inset / 2;
+    y = canvas.height - margin;
+    ctx.beginPath();
+    for (let i = 0; i < stroke_ct_x; i++) {
+
+        ctx.moveTo(x, y);
+        x -= stroke_len_x * 0.4;
+
+        ctx.lineTo(x, y);
+        x -= stroke_len_x * 0.2;
+        y -= stroke_width;
+
+        ctx.lineTo(x, y);
+        x -= stroke_len_x * 0.4;
+
+        ctx.lineTo(x, y);
+
+        x += stroke_len_x * 0.5;
+        y += stroke_width;
+    }
+    ctx.stroke();
+
+    // draw left
+    x = margin;
+    y = canvas.height - margin - inset / 2;
+    ctx.beginPath();
+    for (let i = 0; i < stroke_ct_y; i++) {
+
+        ctx.moveTo(x, y);
+        y -= stroke_len_y * 0.4;
+
+        ctx.lineTo(x, y);
+        x += stroke_width;
+        y -= stroke_len_y * 0.2;
+
+        ctx.lineTo(x, y);
+        y -= stroke_len_y * 0.4;
+
+        ctx.lineTo(x, y);
+
+        x -= stroke_width;
+        y += stroke_len_y * 0.5;
+    }
+    ctx.stroke()
+
+    // draw right
+    x = canvas.width - margin;
+    y = margin + inset / 2;
+    ctx.beginPath();
+    for (let i = 0; i < stroke_ct_y; i++) {
+
+        ctx.moveTo(x, y);
+        y += stroke_len_y * 0.4;
+
+        ctx.lineTo(x, y);
+        x -= stroke_width;
+        y += stroke_len_y * 0.2;
+
+        ctx.lineTo(x, y);
+        y += stroke_len_y * 0.4;
+
+        ctx.lineTo(x, y);
+
+        x += stroke_width;
+        y -= stroke_len_y * 0.5;
+    }
+    ctx.stroke();
+
+}
+
+function reportWindowInformation() {
+    console.log("window.innerHeight", window.innerHeight);
+    console.log("window.innerWidth", window.innerWidth);
+    console.log("document.documentElement.clientHeight", document.documentElement.clientHeight);
+    console.log("document.documentElement.clientWidth", document.documentElement.clientWidth);
+    console.log("window.devicePixelRatio", window.devicePixelRatio);
+    console.log("em size", convertEmToPx(1));
+
+    const canvas = document.getElementById("borderCanvas");
+    console.log("canvas.height", canvas.height);
+    console.log("canvas.width", canvas.width);
+    console.log("canvas.offsetHeight", canvas.offsetHeight);
+    console.log("canvas.offsetWidth", canvas.offsetWidth);
+}
+
diff --git a/font/AverageMono-Bold.woff2 b/font/AverageMono-Bold.woff2
new file mode 100644
index 0000000..657767d
Binary files /dev/null and b/font/AverageMono-Bold.woff2 differ
diff --git a/font/AverageMono-BoldItalic.woff2 b/font/AverageMono-BoldItalic.woff2
new file mode 100644
index 0000000..fd5fa2c
Binary files /dev/null and b/font/AverageMono-BoldItalic.woff2 differ
diff --git a/font/AverageMono-Italic.woff2 b/font/AverageMono-Italic.woff2
new file mode 100644
index 0000000..42d3810
Binary files /dev/null and b/font/AverageMono-Italic.woff2 differ
diff --git a/font/AverageMono.woff2 b/font/AverageMono.woff2
new file mode 100644
index 0000000..f4e980e
Binary files /dev/null and b/font/AverageMono.woff2 differ
diff --git a/font/BigBlue_TerminalPlus.woff2 b/font/BigBlue_TerminalPlus.woff2
new file mode 100644
index 0000000..3ae3f4c
Binary files /dev/null and b/font/BigBlue_TerminalPlus.woff2 differ
diff --git a/font/BigBlue_Terminal_437TT.woff2 b/font/BigBlue_Terminal_437TT.woff2
new file mode 100644
index 0000000..c633d43
Binary files /dev/null and b/font/BigBlue_Terminal_437TT.woff2 differ
diff --git a/font/CirceSlabA-Light.woff2 b/font/CirceSlabA-Light.woff2
new file mode 100644
index 0000000..86dc7c8
Binary files /dev/null and b/font/CirceSlabA-Light.woff2 differ
diff --git a/font/MPLUS1Code-Bold.woff2 b/font/MPLUS1Code-Bold.woff2
new file mode 100644
index 0000000..af2100f
Binary files /dev/null and b/font/MPLUS1Code-Bold.woff2 differ
diff --git a/font/MPLUS1Code-ExtraLight.woff2 b/font/MPLUS1Code-ExtraLight.woff2
new file mode 100644
index 0000000..71021fb
Binary files /dev/null and b/font/MPLUS1Code-ExtraLight.woff2 differ
diff --git a/font/MPLUS1Code-Light.woff2 b/font/MPLUS1Code-Light.woff2
new file mode 100644
index 0000000..ac30da5
Binary files /dev/null and b/font/MPLUS1Code-Light.woff2 differ
diff --git a/font/MPLUS1Code-Medium.woff2 b/font/MPLUS1Code-Medium.woff2
new file mode 100644
index 0000000..a180e44
Binary files /dev/null and b/font/MPLUS1Code-Medium.woff2 differ
diff --git a/font/MPLUS1Code-Regular.woff2 b/font/MPLUS1Code-Regular.woff2
new file mode 100644
index 0000000..f443afe
Binary files /dev/null and b/font/MPLUS1Code-Regular.woff2 differ
diff --git a/font/MPLUS1Code-SemiBold.woff2 b/font/MPLUS1Code-SemiBold.woff2
new file mode 100644
index 0000000..9498bea
Binary files /dev/null and b/font/MPLUS1Code-SemiBold.woff2 differ
diff --git a/font/MPLUS1Code-Thin.woff2 b/font/MPLUS1Code-Thin.woff2
new file mode 100644
index 0000000..73a8141
Binary files /dev/null and b/font/MPLUS1Code-Thin.woff2 differ
diff --git a/font/NewHeterodoxMono-Bold.woff2 b/font/NewHeterodoxMono-Bold.woff2
new file mode 100644
index 0000000..931746a
Binary files /dev/null and b/font/NewHeterodoxMono-Bold.woff2 differ
diff --git a/font/NewHeterodoxMono-Book.woff2 b/font/NewHeterodoxMono-Book.woff2
new file mode 100644
index 0000000..0ca3a59
Binary files /dev/null and b/font/NewHeterodoxMono-Book.woff2 differ
diff --git a/font/Recursive_Web/.DS_Store b/font/Recursive_Web/.DS_Store
new file mode 100644
index 0000000..d969814
Binary files /dev/null and b/font/Recursive_Web/.DS_Store differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BdItalic.woff2
new file mode 100644
index 0000000..6f541d5
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Black.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Black.woff2
new file mode 100644
index 0000000..5a36b44
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Black.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BlkItalic.woff2
new file mode 100644
index 0000000..c8e9c9f
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-BlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Bold.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Bold.woff2
new file mode 100644
index 0000000..e52b84d
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Bold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-ExtraBd.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-ExtraBd.woff2
new file mode 100644
index 0000000..27cb54c
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-ExtraBd.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Italic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Italic.woff2
new file mode 100644
index 0000000..d50b50b
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Italic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Light.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Light.woff2
new file mode 100644
index 0000000..c54efa3
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Light.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-LtItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-LtItalic.woff2
new file mode 100644
index 0000000..c06d594
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-LtItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Med.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Med.woff2
new file mode 100644
index 0000000..3407d73
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Med.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-MedItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-MedItalic.woff2
new file mode 100644
index 0000000..5e2c3df
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-MedItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Regular.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Regular.woff2
new file mode 100644
index 0000000..69fc2e5
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-Regular.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SemiBd.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SemiBd.woff2
new file mode 100644
index 0000000..cce2073
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SemiBd.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SmBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SmBdItalic.woff2
new file mode 100644
index 0000000..3f9e680
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-SmBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBdItalic.woff2
new file mode 100644
index 0000000..889ca3d
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlk.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlk.woff2
new file mode 100644
index 0000000..bb680d7
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlk.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlkItalic.woff2
new file mode 100644
index 0000000..ec38786
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoCslSt-XBlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Black.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Black.woff2
new file mode 100644
index 0000000..c395ffe
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Black.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BlackItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BlackItalic.woff2
new file mode 100644
index 0000000..2f04415
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BlackItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Bold.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Bold.woff2
new file mode 100644
index 0000000..01740c5
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Bold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BoldItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BoldItalic.woff2
new file mode 100644
index 0000000..bf3e66f
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-BoldItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExBdItalic.woff2
new file mode 100644
index 0000000..7b23933
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExtraBold.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExtraBold.woff2
new file mode 100644
index 0000000..be3f802
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-ExtraBold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Italic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Italic.woff2
new file mode 100644
index 0000000..1b7bbeb
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Italic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Light.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Light.woff2
new file mode 100644
index 0000000..7beba8f
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Light.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-LightItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-LightItalic.woff2
new file mode 100644
index 0000000..0d0cddf
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-LightItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Med.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Med.woff2
new file mode 100644
index 0000000..b6ba859
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Med.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-MedItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-MedItalic.woff2
new file mode 100644
index 0000000..52c0dab
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-MedItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Regular.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Regular.woff2
new file mode 100644
index 0000000..3688258
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-Regular.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SemiBold.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SemiBold.woff2
new file mode 100644
index 0000000..3c6d88c
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SemiBold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SmBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SmBdItalic.woff2
new file mode 100644
index 0000000..e25a76d
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-SmBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlk.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlk.woff2
new file mode 100644
index 0000000..5bbfd24
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlk.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlkItalic.woff2
new file mode 100644
index 0000000..c0737b7
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveMonoLnrSt-XBlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BdItalic.woff2
new file mode 100644
index 0000000..21950fb
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Black.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Black.woff2
new file mode 100644
index 0000000..b6f3bf2
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Black.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BlkItalic.woff2
new file mode 100644
index 0000000..7b2f269
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-BlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Bold.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Bold.woff2
new file mode 100644
index 0000000..00dee64
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Bold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-ExtraBd.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-ExtraBd.woff2
new file mode 100644
index 0000000..60716f6
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-ExtraBd.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Italic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Italic.woff2
new file mode 100644
index 0000000..ea4bdd9
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Italic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Light.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Light.woff2
new file mode 100644
index 0000000..e58ef56
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Light.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-LtItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-LtItalic.woff2
new file mode 100644
index 0000000..0833677
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-LtItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Med.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Med.woff2
new file mode 100644
index 0000000..ec89a49
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Med.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-MedItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-MedItalic.woff2
new file mode 100644
index 0000000..f49f0c3
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-MedItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Regular.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Regular.woff2
new file mode 100644
index 0000000..3711c84
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-Regular.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SemiBd.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SemiBd.woff2
new file mode 100644
index 0000000..8f6775d
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SemiBd.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SmBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SmBdItalic.woff2
new file mode 100644
index 0000000..ce761c5
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-SmBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBdItalic.woff2
new file mode 100644
index 0000000..f89e9f3
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlk.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlk.woff2
new file mode 100644
index 0000000..8303786
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlk.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlkItalic.woff2
new file mode 100644
index 0000000..a81dd08
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansCslSt-XBlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Black.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Black.woff2
new file mode 100644
index 0000000..a4ec02a
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Black.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BlackItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BlackItalic.woff2
new file mode 100644
index 0000000..8e1222e
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BlackItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Bold.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Bold.woff2
new file mode 100644
index 0000000..8ecda76
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Bold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BoldItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BoldItalic.woff2
new file mode 100644
index 0000000..c8afb7e
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-BoldItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExBdItalic.woff2
new file mode 100644
index 0000000..684ab5c
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExtraBold.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExtraBold.woff2
new file mode 100644
index 0000000..b2c161d
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-ExtraBold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Italic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Italic.woff2
new file mode 100644
index 0000000..32afdde
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Italic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Light.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Light.woff2
new file mode 100644
index 0000000..0af76ee
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Light.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-LightItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-LightItalic.woff2
new file mode 100644
index 0000000..452bd54
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-LightItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Med.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Med.woff2
new file mode 100644
index 0000000..0e0a7bc
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Med.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-MedItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-MedItalic.woff2
new file mode 100644
index 0000000..ac8a75a
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-MedItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Regular.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Regular.woff2
new file mode 100644
index 0000000..3778f14
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-Regular.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SemiBold.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SemiBold.woff2
new file mode 100644
index 0000000..160b7bc
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SemiBold.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SmBdItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SmBdItalic.woff2
new file mode 100644
index 0000000..59d90a7
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-SmBdItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlk.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlk.woff2
new file mode 100644
index 0000000..645b0e1
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlk.woff2 differ
diff --git a/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlkItalic.woff2 b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlkItalic.woff2
new file mode 100644
index 0000000..831b0b5
Binary files /dev/null and b/font/Recursive_Web/woff2_static/RecursiveSansLnrSt-XBlkItalic.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable/Recursive_VF_1.085--subset-GF_latin_basic.woff2 b/font/Recursive_Web/woff2_variable/Recursive_VF_1.085--subset-GF_latin_basic.woff2
new file mode 100644
index 0000000..67c54af
Binary files /dev/null and b/font/Recursive_Web/woff2_variable/Recursive_VF_1.085--subset-GF_latin_basic.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable/Recursive_VF_1.085.woff2 b/font/Recursive_Web/woff2_variable/Recursive_VF_1.085.woff2
new file mode 100644
index 0000000..0f4358f
Binary files /dev/null and b/font/Recursive_Web/woff2_variable/Recursive_VF_1.085.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts.css b/font/Recursive_Web/woff2_variable_subsets/fonts.css
new file mode 100644
index 0000000..6f225a5
--- /dev/null
+++ b/font/Recursive_Web/woff2_variable_subsets/fonts.css
@@ -0,0 +1,61 @@
+
+ /* The bare minimum English subset, plus copyright & arrows (← ↑ → ↓) & quotes (“ ” ‘ ’) & bullet (•) */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_english_basic.woff2') format('woff2');
+  unicode-range: U+0020-007F,U+00A9,U+2190-2193,U+2018,U+2019,U+201C,U+201D,U+2022;
+}
+
+/* unicode latin-1 letters, basic european diacritics */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_latin_1.woff2') format('woff2');
+  unicode-range: U+00C0-00FF;
+}
+
+/* unicode latin-1, punc/symbols & arrows (↔ ↕ ↖ ↗ ↘ ↙) */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_latin_1_punc.woff2') format('woff2');
+  unicode-range: U+00A0-00A8,U+00AA-00BF,U+2194-2199;
+}
+
+/* unicode latin A extended */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_latin_ext.woff2') format('woff2');
+  unicode-range: U+0100-017F;
+}
+
+/* unicodes for vietnamese */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_vietnamese.woff2') format('woff2');
+  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB;
+}
+
+/* remaining Unicodes */
+@font-face {
+  font-family: 'RecVar';
+  font-style: oblique 0deg 15deg;
+  font-weight: 300 1000;
+  font-display: swap;
+  src: url('./fonts/Recursive_VF_1.085--subset_range_remaining.woff2') format('woff2');
+  unicode-range: U+2007,U+2008,U+2009,U+200A,U+200B,U+D,U+2010,U+2012,U+2013,U+2014,U+2015,U+201A,U+201E,U+2020,U+2021,U+2026,U+2030,U+2032,U+2033,U+2039,U+203A,U+203E,U+2044,U+2052,U+2070,U+2074,U+2075,U+2076,U+2077,U+2078,U+2079,U+207B,U+2080,U+2081,U+2082,U+2083,U+2084,U+2085,U+2086,U+2087,U+2088,U+2089,U+20A1,U+20A6,U+20A8,U+20A9,U+20AA,U+20AC,U+20AD,U+20B1,U+20B2,U+20B4,U+20B5,U+20B8,U+20B9,U+20BA,U+20BC,U+20BD,U+20BF,U+F8FF,U+2113,U+2116,U+2122,U+2126,U+212E,U+E132,U+E133,U+2153,U+2154,U+215B,U+215C,U+215D,U+215E,U+18F,U+192,U+19D,U+1C4,U+1C5,U+1C6,U+1C7,U+1C8,U+1C9,U+1CA,U+1CB,U+1CC,U+1E6,U+1E7,U+1EA,U+1EB,U+1F1,U+1F2,U+1F3,U+1FA,U+1FB,U+1FC,U+1FD,U+1FE,U+1FF,U+200,U+201,U+202,U+203,U+204,U+205,U+206,U+207,U+208,U+209,U+20A,U+20B,U+20C,U+20D,U+20E,U+20F,U+210,U+211,U+212,U+213,U+214,U+215,U+216,U+217,U+218,U+219,U+21A,U+21B,U+2215,U+2219,U+221E,U+221A,U+22A,U+22B,U+22C,U+22D,U+222B,U+230,U+231,U+232,U+233,U+2236,U+237,U+2248,U+259,U+2260,U+2261,U+2264,U+2265,U+272,U+2B9,U+2BA,U+2BB,U+2BC,U+2BE,U+2BF,U+2C6,U+2C7,U+2C8,U+2C9,U+2CA,U+2CB,U+2D8,U+2D9,U+2DA,U+2DB,U+2DC,U+2DD,U+300,U+301,U+FB02,U+FB03,U+302,U+303,U+304,U+FB01,U+306,U+307,U+308,U+309,U+30A,U+30B,U+30C,U+30F,U+311,U+312,U+315,U+31B,U+2202,U+323,U+324,U+325,U+326,U+327,U+328,U+329,U+2205,U+32E,U+2206,U+331,U+335,U+220F,U+2211,U+2212,U+391,U+392,U+393,U+394,U+398,U+39B,U+39C,U+39D,U+3A0,U+3A6,U+3B1,U+3B2,U+3B3,U+3B4,U+3B8,U+3BB,U+3BC,U+3BD,U+3C0,U+3C6,U+25A0,U+25A1,U+25B2,U+25B3,U+25B6,U+25B7,U+25BC,U+25BD,U+25C0,U+25C1,U+25C6,U+25C7,U+25CA,U+1E08,U+1E09,U+1E0C,U+1E0D,U+1E0E,U+1E0F,U+2610,U+2611,U+1E14,U+1E15,U+1E16,U+1E17,U+1E1C,U+1E1D,U+1E20,U+1E21,U+1E24,U+1E25,U+1E2A,U+1E2B,U+1E2E,U+1E2F,U+1E36,U+1E37,U+1E3A,U+1E3B,U+E3F,U+1E42,U+1E43,U+1E44,U+1E45,U+1E46,U+1E47,U+1E48,U+1E49,U+1E4C,U+1E4D,U+1E4E,U+1E4F,U+1E50,U+1E51,U+1E52,U+1E53,U+1E5A,U+1E5B,U+1E5E,U+1E5F,U+1E60,U+2661,U+1E61,U+1E62,U+1E63,U+1E64,U+1E65,U+1E66,U+1E67,U+1E68,U+1E69,U+2665,U+1E6C,U+1E6D,U+1E6E,U+1E6F,U+1E78,U+1E79,U+1E7A,U+1E7B,U+1E80,U+1E81,U+1E82,U+1E83,U+1E84,U+1E85,U+1E8E,U+1E8F,U+1E92,U+1E93,U+1E97,U+1E9E,U+2713,U+27E8,U+27E9;
+}
+
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_english_basic.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_english_basic.woff2
new file mode 100644
index 0000000..8ca2e1d
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_english_basic.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1.woff2
new file mode 100644
index 0000000..c66e50b
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1_punc.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1_punc.woff2
new file mode 100644
index 0000000..d50a1aa
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_1_punc.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_ext.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_ext.woff2
new file mode 100644
index 0000000..cfb5b43
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_latin_ext.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_remaining.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_remaining.woff2
new file mode 100644
index 0000000..a260591
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_remaining.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_vietnamese.woff2 b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_vietnamese.woff2
new file mode 100644
index 0000000..46e23f5
Binary files /dev/null and b/font/Recursive_Web/woff2_variable_subsets/fonts/Recursive_VF_1.085--subset_range_vietnamese.woff2 differ
diff --git a/font/Recursive_Web/woff2_variable_subsets/index.html b/font/Recursive_Web/woff2_variable_subsets/index.html
new file mode 100644
index 0000000..508c6da
--- /dev/null
+++ b/font/Recursive_Web/woff2_variable_subsets/index.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>About these subsets</title>
+    <link rel="stylesheet" href="./fonts.css">
+    <style>
+        body {
+            font-family: "RecVar";
+            max-width: 64rem;
+            margin: 2rem auto;
+        }
+        p {
+            font-size: 32px;
+            line-height: 2;
+            font-variation-settings:"MONO" 1;
+        }
+        .intro {
+            margin: 2rem 0 4rem 0;
+        }
+        .intro p, .intro blockquote, .intro li {
+            font-size: 16px;
+            line-height: 1.5;
+            max-width: 80ch;
+            font-variation-settings:"MONO" 0;
+            margin-bottom: 1rem;
+        }
+        blockquote{
+            border-left: 1px black solid;
+            margin: 0;
+            padding-left: 1rem;
+        }
+        code {
+            font-family: "RecVar";
+            font-variation-settings:"MONO" 1;
+            background-color: #eee;
+            padding: 0 0.05em;
+        }
+    </style>
+</head>
+<body>
+    <h1>Example HTML for Recursive Variable Subsets</h1>
+
+    <div class="intro">
+        <p>
+            The subset fonts in this example use <a href="">CSS unicode-range</a> to load progressively, as needed. To quote MDN:
+        </p>
+        <blockquote>
+            The unicode-range CSS descriptor sets the specific range of characters to be used from a font defined by @font-face and made available for use on the current page. If the page doesn't use any character in this range, the font is not downloaded; if it uses at least one, the whole font is downloaded.
+        </blockquote>
+        <p>
+            See Appendix below for information on further font optimization strategies.
+        </p>
+    </div>
+
+    <h2>subset_range_english_basic</h2>
+    <p>
+        A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ - ( ) [ ] { } # % \' " ‘ ’ “ ” * . , : ; ! ? / \ | @ & • + = < > ← ↑ → ↓ $ ^ ~ ©
+    </p>
+    <h2>subset_range_latin_1_punc</h2>
+    <p>
+        ª º ¹ ² ³ ¼ ½ ¾ « » ¡ ¿ ¦ § ¶ · ± ¬ ↔ ¢ £ ¤ ¥ ´ ¯ ¨ ¸ ® ° ↕ ↖ ↗ ↘ ↙ µ
+    </p>
+    <h2>subset_range_latin_ext</h2>
+    <p>
+        Ā Ă Ą Ć Ĉ Ċ Č Ď Ē Ĕ Ė Ę Ě Ĝ Ğ Ġ Ģ Ĥ Ĩ Ī Ĭ Į İ Ĵ Ķ Ĺ Ļ Ľ Ń Ņ Ň Ō Ŏ Ő Ŕ Ŗ Ř Ś Ŝ Ş Š Ţ Ť Ũ Ū Ŭ Ů Ű Ų Ŵ Ŷ Ÿ Ź Ż Ž Đ Ħ IJ Ŀ Ł Ŋ Œ Ŧ ā ă ą ć ĉ ċ č ď ē ĕ ė ę ě ĝ ğ ġ ģ ĥ ĩ ī ĭ į ĵ ķ ĺ ļ ľ ń ņ ň ō ŏ ő ŕ ŗ ř ś ŝ ş š ţ ť ũ ū ŭ ů ű ų ŵ ŷ ź ż ž đ ħ ı ij ĸ ŀ ł ʼn ŋ œ ŧ
+    </p>
+    <h2>subset_range_vietnamese</h2>
+    <p>
+        Ă Ạ Ả Ấ Ầ Ẩ Ẫ Ậ Ắ Ằ Ẳ Ẵ Ặ Ẹ Ẻ Ẽ Ế Ề Ể Ễ Ệ Ĩ Ỉ Ị Ơ Ọ Ỏ Ố Ồ Ổ Ỗ Ộ Ớ Ờ Ở Ỡ Ợ Ũ Ư Ụ Ủ Ứ Ừ Ử Ữ Ự Ỳ Ỵ Ỷ Ỹ Đ ă ạ ả ấ ầ ẩ ẫ ậ ắ ằ ẳ ẵ ặ ẹ ẻ ẽ ế ề ể ễ ệ ĩ ỉ ị ơ ọ ỏ ố ồ ổ ỗ ộ ớ ờ ở ỡ ợ ũ ư ụ ủ ứ ừ ử ữ ự ỳ ỵ ỷ ỹ đ ₫ 
+    </p>
+    <h2>subset_range_remaining</h2>
+    <p>
+        Ǻ Ȁ Ȃ Ḉ Ḍ Ḏ Ȅ Ȇ Ḕ Ḗ Ḝ Ǧ Ḡ Ḥ Ḫ Ȉ Ȋ Ḯ Ḷ Ḻ Ṃ Ṅ Ṇ Ṉ Ǫ Ȍ Ȏ Ȫ Ȭ Ȱ Ṍ Ṏ Ṑ Ṓ Ȑ Ȓ Ṛ Ṟ Ș Ṡ Ṣ Ṥ Ṧ Ṩ Ț Ṭ Ṯ Ȕ Ȗ Ṹ Ṻ Ẁ Ẃ Ẅ Ȳ Ẏ Ẓ Ǽ Ǿ Ə Ɲ DŽ LJ NJ DZ ẞ Ω ǻ ȁ ȃ ḉ ḍ ḏ ȅ ȇ ḕ ḗ ḝ ǧ ḡ ḥ ḫ ȉ ȋ ḯ ḷ ḻ ṃ ṅ ṇ ṉ ǫ ȍ ȏ ȫ ȭ ȱ ṍ ṏ ṑ ṓ ȑ ȓ ṛ ṟ ș ṡ ṣ ṥ ṧ ṩ ț ṭ ṯ ẗ ȕ ȗ ṹ ṻ ẁ ẃ ẅ ȳ ẏ ẓ ǽ ǿ dž lj nj dz ȷ ə ɲ π Dž Lj Nj Dz ʹ ʺ ʻ ʼ ʾ ʿ ˈ ˉ ˊ ˋ ˌ ̀ ́ ̂ ̃ ̄ ̆ ̇ ̈ ̉ ̊ ̋ ̌ ̏ ̑ ̒ ̕ ̛ ̣ ̤ ̥ ̦ ̧ ̨ ̮ ̱ ̵ ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ‐ ‒ – — ― ⟨ ⟩ ‰ ‚ „ ‹ › † ‡ … ⁄ ℓ № ′ ″ ‾ − ≤ ≥ ≈ ≠ ⁒ ∂ ∅ ∆ ∏ ∑ ∕ ∙ √ ∞ ∫ ≡ ▷ ◁ ฿ ₡ ₦ ₨ ₩ ₪ € ƒ ₭ ₱ ₲ ₴ ₵ ₸ ₹ ₺ ₼ ₽ ₿ ˝ ˆ ˇ ˘ ˜ ˙ ˚ ˛ ™ ℮ ■ □ ▲ △ ▶ ▼ ▽ ◀ ◆ ◇ ◊ ☐ ☑ ♡ ♥ ✓ 
+    </p>
+
+    <div class="intro">
+        <h2>Appendix</h2>
+        <p>There are ways to further optimize Recursive:</p>
+        <ol>
+            <li>If you only need part of the stylistic range (e.g. Monospace <code>0</code>, Casual <code>1</code>, Weight <code>300-800</code>), variable fonts can be “instanced” or “partially instanced” with the <a href="https://fonttools.readthedocs.io/en/latest/varLib/instancer.html" rel="nofollow">FontTools Instancer</a>. You can do it locally on the command line or in a Python script. Alternatively, the <a href="https://css-tricks.com/getting-the-most-out-of-variable-fonts-on-google-fonts/" rel="nofollow">Google Fonts API allows you to do this by requesting a special URL</a>, and the “Get Recursive” section of the <a href="https://recursive.design/" rel="nofollow">Recursive Minisite</a> has a UI to help construct these URLs.</li>
+            <li>You can tailor subsets and CSS <code>unicode-range</code> to your specific use case. E.g. if you are specifically writing in only English &amp; Spanish, you could make a subset for this, using the FontTools Subsetter or by adapting <a href="https://github.com/arrowtype/recursive/blob/4d6fb032b722968cdc12b7d6b7da1994e10e4f70/src/build-scripts/make-release/make-variable-woff2s_and_subsets.sh">my Recursive subsetting script</a> if you want.</li>
+            <li>You can combine instancing and subsetting. For instance, if you want a particular font style for just a website’s logo, you could make a font file that just includes characters in the single style (or style range) you need for that, and load it separately. For example, the website <a href="https://sia.codes/" rel="nofollow">https://sia.codes/</a> does something like this for the name <code>Sia</code> on the homepage.</li>
+        </ol>
+        <p>If you want to optimize these fonts but don’t want to use fonts from Google Fonts and also don’t want to dig into code to optimize them on your own, please consider reaching out to <a href="https://arrowtype.com">Arrow Type</a> to commission custom subsetting & instancing.</p>
+    </div>
+</body>
+</html>
diff --git a/font/Spleen12x24.woff2 b/font/Spleen12x24.woff2
new file mode 100644
index 0000000..ceb2808
Binary files /dev/null and b/font/Spleen12x24.woff2 differ
diff --git a/font/Spleen16x32.woff2 b/font/Spleen16x32.woff2
new file mode 100644
index 0000000..d3da696
Binary files /dev/null and b/font/Spleen16x32.woff2 differ
diff --git a/font/Spleen32x64.woff2 b/font/Spleen32x64.woff2
new file mode 100644
index 0000000..08c7558
Binary files /dev/null and b/font/Spleen32x64.woff2 differ
diff --git a/font/Spleen6x12.woff2 b/font/Spleen6x12.woff2
new file mode 100644
index 0000000..e282dac
Binary files /dev/null and b/font/Spleen6x12.woff2 differ
diff --git a/font/Spleen8x16.woff2 b/font/Spleen8x16.woff2
new file mode 100644
index 0000000..3bf9406
Binary files /dev/null and b/font/Spleen8x16.woff2 differ
diff --git a/font/VerilySerifMono.woff2 b/font/VerilySerifMono.woff2
new file mode 100644
index 0000000..b40d35c
Binary files /dev/null and b/font/VerilySerifMono.woff2 differ
diff --git a/font/ZillaSlabHighlight-Bold.woff2 b/font/ZillaSlabHighlight-Bold.woff2
new file mode 100644
index 0000000..91ebc7e
Binary files /dev/null and b/font/ZillaSlabHighlight-Bold.woff2 differ
diff --git a/font/ZillaSlabHighlight-Regular.woff2 b/font/ZillaSlabHighlight-Regular.woff2
new file mode 100644
index 0000000..5769343
Binary files /dev/null and b/font/ZillaSlabHighlight-Regular.woff2 differ
diff --git a/font/pt-mono_bold.woff2 b/font/pt-mono_bold.woff2
new file mode 100644
index 0000000..7f96623
Binary files /dev/null and b/font/pt-mono_bold.woff2 differ
diff --git a/font/pt-mono_regular.woff2 b/font/pt-mono_regular.woff2
new file mode 100644
index 0000000..41880b5
Binary files /dev/null and b/font/pt-mono_regular.woff2 differ
diff --git a/font/saxMono.woff2 b/font/saxMono.woff2
new file mode 100644
index 0000000..f838b05
Binary files /dev/null and b/font/saxMono.woff2 differ
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..14d591a
--- /dev/null
+++ b/main.js
@@ -0,0 +1,6 @@
+loadBorder();
+
+async function loadBorder() {
+    const module = await import("./border.js");
+    // module.onStart();
+}
diff --git a/projects/computer-modeling.html b/projects/computer-modeling.html
new file mode 100644
index 0000000..1bc59ca
--- /dev/null
+++ b/projects/computer-modeling.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+
+<html>
+
+  <head>
+    <meta charset="UTF-8">
+    <link rel="stylesheet" href="../styles.css">
+    <script src="../main.js" defer></script>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>lucas.co/computer-modeling.html</title>
+  </head>
+
+  <body>
+    <div class="content-container">
+
+      <div><a href="../index.html"><−−</a></div>
+      <br>
+      <div>Computer Modeling</div>
+      <br>
+
+      <div class="image-container">
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_0.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_1.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_2.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_4.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_5.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_7.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_8.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_9.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_10.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_11.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_12.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_13.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_14.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_15.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_17.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_18.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_19.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_20.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_21.webp"></img>
+        <img src="https://pub-c0a064adda8e4234ab95cc26a264b806.r2.dev/computer_modeling_22.webp"></img>
+      </div>
+    </div>
+  </body>
+
+</html>