Compare commits

..

6 Commits

Author SHA1 Message Date
filifa
0b1d956ee5 rename from index 2026-04-15 18:57:20 -04:00
filifa
c6ac6d4c5e add junk drawer index 2026-04-15 18:57:18 -04:00
filifa
9e5ee71efc add junk posts 2026-04-15 18:15:08 -04:00
filifa
052b22a477 add blogroll 2026-03-10 19:02:06 -04:00
filifa
dd7435cb9a add short reviews of favorites 2026-03-10 18:55:40 -04:00
filifa
7c31ab5882 add eff badge 2026-03-10 18:44:09 -04:00
12 changed files with 3011 additions and 36 deletions

View File

@@ -45,46 +45,187 @@
<h2 class="cleared">Favorites.</h2>
<h3>Albums.</h3>
<ul>
<li>Oceanic - ISIS</li>
<li>Panopticon - ISIS</li>
<li>Ants From Up There - Black Country, New Road</li>
<li>Ashes Against the Grain - Agalloch</li>
<li>In Rainbows - Radiohead</li>
<li>Mellon Collie and the Infinite Sadness - Smashing Pumpkins</li>
<li>Flood - Boris</li>
<li>Solace - Jakob</li>
<li>Emergency &amp; I - Dismemberment Plan</li>
<li>The Downward Spiral - Nine Inch Nails</li>
<li>Lift Your Skinny Fists Like Antennas to Heaven - Godspeed You! Black Emperor</li>
<li>Stage Four - Touche Amore</li>
<li>Mirror Reaper - Bell Witch</li>
<li>Sunbather - Deafheaven</li>
<li>Somewhere Along the Highway - Cult of Luna</li>
<li>This Will Destroy You - This Will Destroy You</li>
<li>Siamese Dream - Smashing Pumpkins</li>
<li>
<p><cite>Oceanic</cite> - ISIS</p>
<p>Effortlessly glides between beautiful instrumentals and
head-banging metal. Even if you don't like harsh vocals, do me and
you both a favor and listen to Weight - it's instrumental.</p>
</li>
<li>
<p><cite>Panopticon</cite> - ISIS</p>
<p>Like Oceanic, but a little more instrumental and a bit fewer
harsh vocals. If that sounds better to you, try this one first.</p>
</li>
<li>
<p><cite>Ants From Up There</cite> - Black Country, New Road</p>
<p>Gorgeous modern rock album. Basketball Shoes is one of the
greatest songs ever made.</p>
</li>
<li>
<p><cite>Ashes Against the Grain</cite> - Agalloch</p>
<p>Atmospheric metal. Love the guitar riffs.</p>
</li>
<li>
<p><cite>In Rainbows</cite> - Radiohead</p>
<p>If you only listen to one Radiohead album, it should be this
one. Probably one of the greatest indie rock albums ever.</p>
</li>
<li>
<p><cite>Mellon Collie and the Infinite Sadness</cite> - Smashing
Pumpkins</p>
<p>A double album that's all over the place sonically in the best
way possible. I may never forgive Hot Chelle Rae.</p>
</li>
<li>
<p><cite>Flood</cite> - Boris</p>
<p>This album is actually just one 70 minute song (in four parts).
Very long. Very slow. Largely instrumental. Not for the
impatient.</p>
</li>
<li>
<p><cite>Solace</cite> - Jakob</p>
<p>Very pretty instrumental post-rock.</p>
</li>
<li>
<p><cite>Emergency &amp; I</cite> - Dismemberment Plan</p>
<p>Indie/math rock with some of my favorite lyrics from any album.
Basically no misses. At any given moment I probably have the
keyboard riff from The City stuck in my head.</p>
</li>
<li>
<p><cite>The Downward Spiral</cite> - Nine Inch Nails</p>
<p>Probably the most violent, depressing album I've ever heard.
That being said, oddly catchy.</p>
</li>
<li>
<p><cite>Lift Your Skinny Fists Like Antennas to Heaven</cite> -
Godspeed You! Black Emperor</p>
<p>Even if you're not into long, instrumental pieces, you should
listen to Sleep. Just once. For your own sake. Also an incredible
band to see live.</p>
</li>
<li>
<p><cite>Stage Four</cite> - Touche Amore</p>
<p>A screamo album about the singer losing his mother to cancer.
Heart-wrenching, catchy, and beautiful all at once.</p>
</li>
<li>
<p><cite>Mirror Reaper</cite> - Bell Witch</p>
<p>Another album that's actually just one long 80 minute song, in 2
parts (or 4). You'll know if it's your thing after the first 7
minutes or so, if not sooner.</p>
</li>
<li>
<p><cite>Sunbather</cite> - Deafheaven</p>
<p>Blend of black metal and shoegaze. Simultaneously pretty and
heavy.</p>
</li>
<li>
<p><cite>Somewhere Along the Highway</cite> - Cult of Luna</p>
<p>More atmospheric metal. No misses IMO. Feels wrong to call out
just one track, but Dim has one of the greatest buildups I've ever
heard.</p>
</li>
<li>
<p><cite>This Will Destroy You</cite> - This Will Destroy You</p>
<p>More very pretty instrumental rock. If you've seen Moneyball,
you'll have a Leo-DiCaprio-pointing-at-the-TV moment listening to
this.</p>
</li>
<li>
<p><cite>Siamese Dream</cite> - Smashing Pumpkins</p>
<p>A classic. Some incredible guitar solos. Think I prefer Mellon
Collie overall, but Mayonaise is an all-timer.</p>
</li>
</ul>
<h3>Movies.</h3>
<ul>
<li>2001: A Space Odyssey</li>
<li>The Dark Knight</li>
<li>The Big Short</li>
<li>Spider-Man 2</li>
<li>Bill and Ted's Execellent Adventure</li>
<li>Inglourious Basterds</li>
<li>Monty Python and the Holy Grail</li>
<li>Napoleon Dynamite</li>
<li>Clerks</li>
<li>My Cousin Vinny</li>
<li>The Departed</li>
<li>
<p>2001: A Space Odyssey</p>
<p>The prettiest movie I've ever seen. You could take every frame
of it and hang it on your wall. Slow paced, but that isn't a bad
thing.</p>
</li>
<li>
<p>The Dark Knight</p>
<p>One of the greatest superhero movies of all time.</p>
</li>
<li>
<p>Spider-Man 2</p>
<p>The other greatest superhero movie of all time.</p>
</li>
<li>
<p>The Big Short</p>
<p>My guilty pleasure movie because I'm worried it makes me too
close to having the same tastes as a finance bro.</p>
</li>
<li>
<p>Bill and Ted's Excellent Adventure</p>
<p>Much funnier than I expected.</p>
</li>
<li>
<p>Inglourious Basterds</p>
<p>Favorite Tarantino. The opening is one of the most tense scenes
I've ever watched.</p>
</li>
<li>
<p>Monty Python and the Holy Grail</p>
<p>If someone tells me they don't like this movie, I write them off
as having a terrible taste in comedies.</p>
</li>
<li>
<p>Napoleon Dynamite</p>
<p>Knew I would enjoy it from the very first scene.</p>
</li>
<li>
<p>Clerks</p>
<p>Some great dialogue and acting. Now every time I see the number
37 somewhere, I think "... in a row?".</p>
</li>
<li>
<p>My Cousin Vinny</p>
<p>Knew people gushed about this movie, but it was even funnier
than I expected.</p>
</li>
<li>
<p>The Departed</p>
<p>A great thriller.</p>
</li>
</ul>
<h3>TV shows.</h3>
<ul>
<li>Community</li>
<li>Nathan for You</li>
<li>Veep</li>
<li>Arrested Development</li>
<li>It's Always Sunny in Philadelphia</li>
<li>Workaholics</li>
<li>
<p>Nathan for You</p>
<p>Possibly the funniest show I've ever seen. The first episode
might seem dumb. Stick with it for at least two or three more
episodes, it improves quickly.</p>
</li>
<li>
<p>Veep</p>
<p>Also possibly the funniest show I've ever seen. Has some of the
most hysterical, most vulgar, most incredible one-liners ever.</p>
</li>
<li>
<p>Community</p>
<p>One of the most unique and creative sitcoms you'll ever watch.</p>
</li>
<li>
<p>Arrested Development</p>
<p>A classic. Thinking about it, similar to Community in a few ways.
<a href="https://www.youtube.com/watch?v=9LomnFmhdPE">Please tell your friends about this show.</a>
</p>
</li>
<li>
<p>It's Always Sunny in Philadelphia</p>
<p>If you haven't heard of this one, you must have been cut off
from the outside world since at least 2005. In that case, I've got
bad news about basically everything that's happened since then, but
at least you can catch up on this show.</p>
</li>
<li>
<p>Workaholics</p>
<p>Very similar vibes to IASIP.</p>
</li>
</ul>
<h2>Contact.</h2>
@@ -92,7 +233,7 @@
</article>
</main>
<footer>
<p id="copyright">© 2025 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
<p id="copyright">© 2026 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
</footer>
</body>
</html>

107
blogroll.html Normal file
View File

@@ -0,0 +1,107 @@
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" href="/styles/default.css" />
<link rel="icon" href="/images/favicon.ico" />
<title>Blogroll</title>
</head>
<body>
<header>
<a id="homelink" href="/">dairydemon.net</a>
</header>
<main>
<article>
<h1>Blogroll.</h1>
<p>Once you get bored of this site, here's some more to look at.</p>
<p>I follow way, <em>way</em> more than this, but these are some of my
favorites. All of them have RSS feeds, if that's your thing.</p>
<ul>
<li>
<p><a href="https://www.qwantz.com/">Dinosaur Comics</a></p>
<p>Every comic uses the same panel layout. You'd be shocked how
much mileage the author gets out of that.</p>
</li>
<li>
<p><a href="https://smbc-comics.com/">Saturday Morning Breakfast Cereal</a></p>
<p>Simultaneously the smartest and funniest comic I've ever read.</p>
</li>
<li>
<p><a href="https://pluralistic.net/">Pluralistic</a></p>
<p>Near-daily linkblog. Don't think his writing style is for
everyone, but I love it.</p>
</li>
<li>
<p><a href="https://buttondown.com/monteiro">Mike Monteiros Good News</a></p>
<p>Weekly Q&amp;A newsletter. Excellent writer.</p>
</li>
<li>
<p><a href="https://www.tomscott.com/newsletter/">Tom Scott</a></p>
<p>Weekly linkblog from one of the GOAT YouTubers. I'm not a big
podcast listener, but I also enjoy
<a href="https://lateralcast.com/">Lateral</a>
from him.</p>
</li>
<li>
<p><a href="https://www.forever-wars.com/">Forever Wars</a></p>
<p>Journalism and commentary from a longtime War on Terror reporter.</p>
</li>
<li>
<p><a href="https://www.hamiltonnolan.com/">How Things Work</a></p>
<p>Progressive journalist and commentator.</p>
</li>
<li>
<p><a href="https://paulkrugman.substack.com/">Paul Krugman</a></p>
<p>Started following him because I've always felt like I should
know more about economics than I do. Still feel that way, but he
fills some gaps.</p>
</li>
<li>
<p><a href="https://data4democracy.substack.com/">On Data and Democracy</a></p>
<p>Stanford political science professor. If you only read one piece
from him,
<a href="https://data4democracy.substack.com/p/money-doesnt-buy-elections-it-does">it should be this</a>.</p>
</li>
<li>
<p><a href="https://karlbode.com/">The Fine Print</a></p>
<p>Progressive commentator that doesn't pull punches. Also writes
for
<a href="https://www.techdirt.com/">Techdirt</a>.</p>
</li>
<li>
<p><a href="https://ludic.mataroa.blog/">Ludicity</a></p>
<p>Developer. Snarky, but I like his writing style.</p>
</li>
<li>
<p><a href="https://jvns.ca/">Julia Evans</a></p>
<p>Developer and zine maker.</p>
</li>
<li>
<p><a href="https://www.garbageday.email/">Garbage Day</a></p>
<p>Internet culture blog. I fear I've reached the point where I'm
so out of touch that I need someone else to let me know what the
kids are up to.</p>
</li>
<li>
<p><a href="https://www.quantamagazine.org/">Quanta Magazine</a></p>
<p>Science magazine. Love their math and computer science articles.</p>
</li>
<li>
<p><a href="https://www.404media.co/">404 Media</a></p>
<p>Their reporting punches <em>way</em> above their weight.</p>
</li>
<li>
<p><a href="https://prospect.org/">American Prospect</a></p>
<p>Progressive magazine.</p>
</li>
</ul>
</article>
</main>
<footer>
<p id="copyright">© 2026 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
</footer>
</body>
</html>

View File

@@ -42,6 +42,8 @@
<li>If you're the kind of math dweeb that finds yourself asking questions like "What's the multiplicative order of 10 modulo 19?", you might like this <a href="mcalc/index.html">modular arithmetic calculator</a>.</li>
</ul>
<p>I also have <a href="/junk/">a junk drawer</a>.</p>
<p>If you're not any of these flavors of dweeb, or you don't even know what some of these words mean, there may be hope for you yet. Go outside. Feel the sun's rays and the air's breeze. Listen to the birds sing. <a href="https://www.youtube.com/watch?v=j8v_XqFO8Bc">Escape, before it's too late.</a></p>
<ul>
@@ -51,6 +53,7 @@
<footer>
<ul>
<li><a href="/about.html">about</a></li>
<li><a href="/blogroll.html">blogroll</a></li>
<li><a href="/attributions.html">attributions</a></li>
</ul>
<div id="badges">
@@ -59,11 +62,12 @@
<a href="https://debian.org"><img class="badge" alt="powered by Debian badge" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Powered_by_Debian.svg/120px-Powered_by_Debian.svg.png" width="88" height="31" /></a>
<a href="https://www.gnu.org/"><img class="badge" alt="GNU badge" src="https://www.gnu.org/graphics/gnubanner-2.png" width="88" height="31" /></a>
<a href="https://www.vim.org/"><img class="badge" alt="Designed Using Vim badge" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Icon-designed_using_vim.svg/120px-Icon-designed_using_vim.svg.png" width="88" height="31" /></a>
<a href="https://www.eff.org/join"><img src="https://www.eff.org/files/eff-banner.png" alt="Join EFF!" width="88" height="31" /></a>
<a href="https://joinmastodon.org/"><img class="badge" alt="Leave Twitter; Join Mastodon badge" src="https://88x31.kate.pet/masto.gif" width="88" height="31" /></a>
<a href="https://en.wikipedia.org/wiki/Main_Page"><img class="badge" alt="Wikipedia badge" src="https://upload.wikimedia.org/wikipedia/commons/a/aa/Wikipedia-button_88x31.png" width="88" height="31" /></a>
<img class="badge" alt="graphic design is my passion badge" src="https://upload.wikimedia.org/wikipedia/commons/8/89/Graphicdesign.png" width="88" height="31" />
</div>
<p id="copyright">© 2025 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
<p id="copyright">© 2026 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
<div id="gallery">
<img src="/images/watching.jpg" alt="cows with red eyes" width="64" height="64" />
<img src="/images/24GhostsIII.jpg" alt="street lights" width="64" height="64" />

File diff suppressed because it is too large Load Diff

111
junk/faulhaber/faulhaber.js Normal file
View File

@@ -0,0 +1,111 @@
/*
* Copyright (C) 2026 filifa
*
* License: 0BSD (https://spdx.org/licenses/0BSD.html)
*/
let exp = null;
let s = null;
function stirling2(p) {
if (p === 0) {
return [1n];
}
let s = [0n];
for (let i = 1; i < p + 1; i++) {
s.push(1n);
for (let j = i - 1; j > 0; j--) {
s[j] = BigInt(j) * s[j] + s[j-1];
}
}
return s;
}
function faulhaber(n, s) {
const limit = BigInt(s.length);
if (limit === 1n) {
return n;
}
let q = n + 1n;
let total = 0n;
for (let k = 1n; k < limit; k++) {
q *= n + 1n - k;
total += s[k] * q / (k + 1n);
}
return total;
}
function calculate() {
const limit = document.querySelector("#limit");
const exponent = document.querySelector("#exponent");
const e = parseInt(exponent.value)
if (exp === null || exp !== e) {
exp = e;
s = stirling2(exp);
}
const n = BigInt(limit.value);
const r = faulhaber(n, s);
const result = document.querySelector("#result");
result.value = r;
}
function calculateStirling() {
const limit = document.querySelector("#stirling-limit");
const p = parseInt(limit.value)
s = stirling2(p);
const table = buildTable(s);
const result = document.querySelector("#stirling-result");
while (result.firstChild) {
result.removeChild(result.firstChild);
}
result.appendChild(table);
}
function buildTable(values) {
const table = document.createElement("table");
const caption = document.createElement("caption");
caption.textContent = "Stirling numbers S(p,k) from k=0 to k=p";
table.appendChild(caption);
const tbody = document.createElement("tbody");
table.appendChild(tbody);
const n = values.length;
const ks = Array(n);
for (let i = 0; i < n; i++) {
ks[i] = i;
}
const nrow = buildRow("k", ks);
tbody.appendChild(nrow);
const vrow = buildRow("S(p,k)", values);
tbody.appendChild(vrow);
return table;
}
function buildRow(htext, values) {
const row = document.createElement("tr");
const head = document.createElement("th");
head.textContent = htext;
row.appendChild(head);
const n = values.length;
for (let i = 0; i < n; i++) {
const elem = document.createElement("td");
elem.textContent = values[i];
row.appendChild(elem);
}
return row;
}
document.querySelector("#enter").addEventListener("click", () => calculate())
document.querySelector("#stirling-enter").addEventListener("click", () => calculateStirling())

36
junk/index.html Normal file
View File

@@ -0,0 +1,36 @@
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" href="/styles/default.css" />
<link rel="stylesheet" href="/styles/junk.css" />
<link rel="stylesheet" href="/styles/junk-index.css" />
<link rel="icon" href="/images/favicon.ico" />
<title>Junk Drawer</title>
</head>
<body>
<header>
<a id="homelink" href="/">dairydemon.net</a>
</header>
<main>
<article>
<h1>Junk Drawer</h1>
<p>This is where I put stuff of questionable value that I want to share
anyway.</p>
<ol id="posts-list" reversed>
<li><a href="sieves/sieves.html">Sieving Multiplicative Functions</a></li>
<li><a href="faulhaber/faulhaber.html">Sums of Powers</a></li>
</ol>
</article>
</main>
<footer>
<p id="copyright">© 2026 filifa. This page is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.</p>
</footer>
</body>
</html>

1166
junk/sieves/sieves.html Normal file

File diff suppressed because it is too large Load Diff

222
junk/sieves/sieves.js Normal file
View File

@@ -0,0 +1,222 @@
/*
* Copyright (C) 2026 filifa
*
* License: 0BSD (https://spdx.org/licenses/0BSD.html)
*/
function sievePrimes(n) {
const isPrime = Array(n);
isPrime[0] = false;
isPrime[1] = false;
for (let i = 2; i < n; i++) {
isPrime[i] = true;
}
for (let i = 2; i < Math.sqrt(n); i++) {
if (!isPrime[i]) {
continue;
}
for (let j = i * i; j < n; j += i) {
isPrime[j] = false;
}
}
return isPrime;
}
function numDivisors(p, k) {
return k + 1;
}
function sumDivisors(p, k) {
return (p**(k+1) - 1) / (p - 1)
}
function totient(p, k) {
return p**(k-1) * (p - 1);
}
function radical(p, k) {
return p;
}
function littleOmega(p, k) {
return 1;
}
function bigOmega(p, k) {
return k;
}
function mobius(p, k) {
if (k === 1) {
return -1;
}
return 0;
}
function initArrays(l, r, additive) {
const sieve = Array(r - l);
const quo = Array(r - l);
for (let i = 0; i < r-l; i++) {
quo[i] = l + i;
if (additive) {
sieve[i] = 0;
} else {
sieve[i] = 1;
}
}
return [sieve, quo];
}
function sieveSegment(l, r, f, primes, additive) {
const [sieve, quo] = initArrays(l, r, additive);
for (let i = 0; i < primes.length; i++) {
if (i*i > r) {
break;
}
if (!primes[i]) {
continue;
}
sievePowers(i, l, r, f, sieve, quo, additive);
}
unusuals(f, sieve, quo, additive);
return sieve;
}
function unusuals(f, sieve, quo, additive) {
for (let i = 0; i < quo.length; i++) {
const q = quo[i];
if (q === 1) {
continue;
}
if (additive) {
sieve[i] += f(q, 1);
} else {
sieve[i] *= f(q, 1);
}
}
}
function sievePowers(p, l, r, f, sieve, quo, additive) {
let i = 1;
for (let q = p; q < r; q *= p) {
const y = f(p, i);
sieveMultiples(p, q, l, r, y, sieve, quo, additive);
i++;
}
}
function sieveMultiples(p, q, l, r, y, sieve, quo, additive) {
const low = Math.ceil(l / q);
for (let i = low * q; i < r; i += q) {
if (i % (p*q) === 0) {
continue;
}
if (additive) {
sieve[i - l] += y;
} else {
sieve[i - l] *= y;
}
quo[i - l] /= q
}
}
function getFunc(func) {
switch (func.value) {
case "num-divisors":
return [numDivisors, false];
case "sum-divisors":
return [sumDivisors, false];
case "totient":
return [totient, false];
case "mobius":
return [mobius, false];
case "radical":
return [radical, false];
case "little-omega":
return [littleOmega, true];
case "big-omega":
return [bigOmega, true];
default:
throw new Error("function not implemented!");
}
}
function buildTable(l, r, values) {
const table = document.createElement("table");
const caption = document.createElement("caption");
caption.id = "result-caption";
caption.textContent = "Results";
table.appendChild(caption);
const tbody = document.createElement("tbody");
table.appendChild(tbody);
const ns = Array(r-l);
for (let i = l; i < r; i++) {
ns[i - l] = i;
}
const nrow = buildRow("n", l, r, ns);
tbody.appendChild(nrow);
const vrow = buildRow("f(n)", l, r, values);
tbody.appendChild(vrow);
return table;
}
function buildRow(htext, l, r, values) {
const row = document.createElement("tr");
const head = document.createElement("th");
head.textContent = htext;
row.appendChild(head);
for (let i = l; i < r; i++) {
if (i === 0) {
continue;
}
const elem = document.createElement("td");
elem.textContent = values[i - l];
row.appendChild(elem);
}
return row;
}
function calculate() {
const lower = document.querySelector("#lower");
const upper = document.querySelector("#upper");
const func = document.querySelector("#function");
const [f, additive] = getFunc(func);
const l = parseInt(lower.value);
const r = parseInt(upper.value);
const s = Math.floor(Math.sqrt(r));
const primes = sievePrimes(s + 1);
const sieve = sieveSegment(l, r, f, primes, additive);
const table = buildTable(l, r, sieve);
const result = document.querySelector("#result");
while (result.firstChild) {
result.removeChild(result.firstChild);
}
result.appendChild(table);
}
document.querySelector("#enter").addEventListener("click", () => calculate())

33
styles/faulhaber.css Normal file
View File

@@ -0,0 +1,33 @@
#demo-inputs {
display: grid;
grid-template-columns: 1fr 1fr;
}
#limit-label,
#exponent-label {
text-align: end;
}
#enter {
grid-column: 2;
}
#result {
word-break: break-all;
max-height: 24lh;
overflow: auto;
display: inline-block;
}
#stirling-result {
margin: 1vh;
}
/* table styling */
caption {
text-align: left;
}
td {
text-align: right;
}

3
styles/junk-index.css Normal file
View File

@@ -0,0 +1,3 @@
#posts-list {
list-style-type: disc;
}

47
styles/junk.css Normal file
View File

@@ -0,0 +1,47 @@
.math-block {
overflow-x: auto;
overflow-y: hidden;
}
pre {
overflow: auto;
background-color: black;
color: lime;
padding: 1ch;
border: 1vh solid gray;
}
hgroup p {
font-style: italic;
}
figcaption {
text-align: center;
}
#footnote-list {
list-style-type: none;
}
/* table styling */
table {
display: block;
overflow: auto;
border-collapse: collapse;
}
caption {
font-weight: bold;
}
tbody {
border: 2px solid black;
}
th {
background-color: mediumturquoise;
}
th, td {
border: 1px solid black;
}

26
styles/sieves.css Normal file
View File

@@ -0,0 +1,26 @@
/* demo styling */
#demo-inputs {
display: grid;
grid-template-columns: 1fr 1fr;
}
label {
text-align: end;
}
#enter {
grid-column: 2;
}
#result {
margin: 1vh;
}
/* table styling */
#result-caption {
text-align: left;
}
td {
text-align: right;
}