diff --git a/.gitattributes b/.gitattributes
index bea3f3f..0644d84 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,4 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
-*.avif filter=lfs diff=lfs merge=lfs -text
*.kra filter=lfs diff=lfs merge=lfs -text
diff --git a/Makefile b/Makefile
index d993c19..b05d476 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,19 @@
-CSS = $(wildcard style/*.css) $(shell find fonts -type f) \
- rainbow-quox/style.css
-PAGES = index.html pubkey.txt rainbow-quox/index.html
+CSS = $(wildcard style/*.css) $(shell find fonts -type f)
+PAGES = index.html pubkey.txt
MEDIA = \
$(wildcard media/*.png) $(wildcard media/*.gif) $(wildcard media/*.webp) \
$(wildcard media/flags/*) $(wildcard media/buttons/*) \
- $(wildcard media/icons/*) $(wildcard media/bg/*) 8831.png 8831-quox.png \
- $(wildcard rainbow-quox/front/*) $(wildcard rainbow-quox/back/*)
-SCRIPTS = $(patsubst %.ts,%.js,$(wildcard script/*.ts)) rainbow-quox/colour.js
+ $(wildcard media/icons/*) $(wildcard media/bg/*) 8831.png 8831-quox.png
+SCRIPTS = $(patsubst %.ts,%.js,$(wildcard script/*.ts))
MISC = $(shell find .well-known -type f)
ALL = $(CSS) $(PAGES) $(MEDIA) $(SCRIPTS) $(MISC)
-BUILDDIR ?= /srv/www/yummy
+BUILDDIR ?= _build
TMPDIR ?= _tmp
HOST ?= yummy.cricket
REMOTE_USER ?= www-data
+IDFILE ?= ~/.ssh/xyz
REMOTE_DIR ?= yummy
all: build
@@ -25,7 +24,7 @@ upload: build
@rsync --recursive --partial --progress --copy-links \
--compress --human-readable --hard-links --size-only \
--delete --delete-after \
- --rsh='ssh -l $(REMOTE_USER)' \
+ --rsh='ssh -l $(REMOTE_USER) -i $(IDFILE)' \
$(BUILDDIR)/ $(HOST):$(REMOTE_DIR)/
$(BUILDDIR)/%: %
diff --git a/index.html b/index.html
index 713c8dd..e3b5ea8 100644
--- a/index.html
+++ b/index.html
@@ -429,11 +429,6 @@
-
-
-
-
-
diff --git a/media/buttons/blau.png b/media/buttons/blau.png
deleted file mode 100644
index 0b9e0cb..0000000
--- a/media/buttons/blau.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e18ee746676a2e3b31780c1603e0faecfac2be1b7a662ab9144a3dfb1e6b1079
-size 3011
diff --git a/media/buttons/clip.png b/media/buttons/clip.png
deleted file mode 100644
index c4d9443..0000000
--- a/media/buttons/clip.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fa4a658acc9f0d9f2557bace361c9bc41acdf06eb2d8f4fda45365a658c9e8d3
-size 2098
diff --git a/media/buttons/gabu.png b/media/buttons/gabu.png
deleted file mode 100644
index 9daf840..0000000
--- a/media/buttons/gabu.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:009b7fc831c0ff7ad57fe71979a0c45be3a4ccd0560e41d3fddc465a8c586ced
-size 835
diff --git a/media/buttons/hell-labs-still.png b/media/buttons/hell-labs-still.png
deleted file mode 100644
index a23a3f2..0000000
--- a/media/buttons/hell-labs-still.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b23dbc5031f29fb0cb383eb3acda6e0dce805b34a570506a79cae333fa39b05d
-size 2394
diff --git a/media/buttons/hell-labs.gif b/media/buttons/hell-labs.gif
deleted file mode 100644
index 8692d9c..0000000
--- a/media/buttons/hell-labs.gif
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e5947ba3c94e3c584e12044a3b6326228aa5ec6fd350f8bdfec3c48d09a6e7c
-size 12092
diff --git a/media/buttons/katja.png b/media/buttons/katja.png
deleted file mode 100644
index 5f470b3..0000000
--- a/media/buttons/katja.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d17d6314c864556208031d7d1103fab509cc894b195db98a82685261c96c8299
-size 4027
diff --git a/media/buttons/lifning.png b/media/buttons/lifning.png
deleted file mode 100644
index 807b50e..0000000
--- a/media/buttons/lifning.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4260ff94fd4a16073c76b1d76ef041de85802f166872d24e4d8c723555a9b951
-size 1528
diff --git a/media/buttons/mathie.png b/media/buttons/mathie.png
deleted file mode 100644
index 5e5f6a1..0000000
--- a/media/buttons/mathie.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c3a76a9d2333fa62c75da7444c0c14218a1f58a2689efa0b2d2676c7ecf6b4ee
-size 10046
diff --git a/media/buttons/odoben.png b/media/buttons/odoben.png
deleted file mode 100644
index 5cc1928..0000000
--- a/media/buttons/odoben.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:200c2ced55ce39d5d395fdec14053938fc61c1a8679d18298a699a1c9538e3f5
-size 1209
diff --git a/media/buttons/therra.png b/media/buttons/therra.png
deleted file mode 100644
index a7d19aa..0000000
--- a/media/buttons/therra.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6f4471f97ace4b2365e6cfc02cafde7e666d31a8fbcf049441bfc008e4f8ac07
-size 882
diff --git a/rainbow-quox/back/belly1.webp b/rainbow-quox/back/belly1.webp
deleted file mode 100644
index d1db413..0000000
--- a/rainbow-quox/back/belly1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7bffff72e5f1148e7f998dce53a6ec61cd5bd495f43000c5aa8d4d07c2e50fa3
-size 30778
diff --git a/rainbow-quox/back/belly2.webp b/rainbow-quox/back/belly2.webp
deleted file mode 100644
index 789349f..0000000
--- a/rainbow-quox/back/belly2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2a3020a8e4d0720721ba65601c1b9f7aa38ba2c7efd5d37d33fec38ede68ef5f
-size 25104
diff --git a/rainbow-quox/back/claws.webp b/rainbow-quox/back/claws.webp
deleted file mode 100644
index 6f1187d..0000000
--- a/rainbow-quox/back/claws.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:85675981f3a2590bc8ed6c7d4a9819dd7ec3dad64c7b6a9d762ef7818137f3a7
-size 21514
diff --git a/rainbow-quox/back/cuffs.webp b/rainbow-quox/back/cuffs.webp
deleted file mode 100644
index 357c395..0000000
--- a/rainbow-quox/back/cuffs.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f9f4b1dd9ec4a0ac0b68d58fbeab77155674f38795c7bdf7c5a1a439dda6d8c3
-size 16610
diff --git a/rainbow-quox/back/eyes.webp b/rainbow-quox/back/eyes.webp
deleted file mode 100644
index 7715872..0000000
--- a/rainbow-quox/back/eyes.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:53f1cb3f3273904b0cfcff7be1c04aac7f4291e783b6b5b872704bce5402adc1
-size 6724
diff --git a/rainbow-quox/back/fins1.webp b/rainbow-quox/back/fins1.webp
deleted file mode 100644
index f5b4a55..0000000
--- a/rainbow-quox/back/fins1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dd447feb938240b6f3aaf5c719275ccc085426fbce6da555676eb12f382d386e
-size 20576
diff --git a/rainbow-quox/back/fins2.webp b/rainbow-quox/back/fins2.webp
deleted file mode 100644
index 56da277..0000000
--- a/rainbow-quox/back/fins2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:be2a469f0b785afc48d5723fe43d924342c5dc956aafc9b43848e59b4516da5c
-size 21326
diff --git a/rainbow-quox/back/fins3.webp b/rainbow-quox/back/fins3.webp
deleted file mode 100644
index 26604d2..0000000
--- a/rainbow-quox/back/fins3.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2dd85c26aa10c22ff34b0406fbe27f5a9694e64919d119e00c6e6efa5513eda5
-size 7922
diff --git a/rainbow-quox/back/lines.webp b/rainbow-quox/back/lines.webp
deleted file mode 100644
index 5a0851b..0000000
--- a/rainbow-quox/back/lines.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:aa2bb28145d83875af044e62a787bd67e34b4d3f8db7dd4bd538726e83031bbf
-size 205184
diff --git a/rainbow-quox/back/masks.webp b/rainbow-quox/back/masks.webp
deleted file mode 100644
index c2d0a41..0000000
--- a/rainbow-quox/back/masks.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6942c6cd3182e027bf69c5a46c1f8dbbc49af4baf1f32a1f48ad57c55d143bd5
-size 11346
diff --git a/rainbow-quox/back/outer.webp b/rainbow-quox/back/outer.webp
deleted file mode 100644
index 23ad25f..0000000
--- a/rainbow-quox/back/outer.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:51e7660d2bf26cd8c162abd872ecd07be7375b78917e5e6830651397cd9aef33
-size 54632
diff --git a/rainbow-quox/back/spines.webp b/rainbow-quox/back/spines.webp
deleted file mode 100644
index f42ef83..0000000
--- a/rainbow-quox/back/spines.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2958d56981dcf50d4c504ac695dcca1d87425837b41026371f36d5aa5ea1aebe
-size 18330
diff --git a/rainbow-quox/back/static.webp b/rainbow-quox/back/static.webp
deleted file mode 100644
index 8801a41..0000000
--- a/rainbow-quox/back/static.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9628e09947c9a87901c80ba08465301a277b72a6e4d0e8b188c5e1a8d3d57c54
-size 36238
diff --git a/rainbow-quox/back/stripes.webp b/rainbow-quox/back/stripes.webp
deleted file mode 100644
index 3e71565..0000000
--- a/rainbow-quox/back/stripes.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:79cd316e8329cc967147ab937a4169279338ef0b15d5b9ecfd3cd25f90997cae
-size 38228
diff --git a/rainbow-quox/back/vitiligo1.webp b/rainbow-quox/back/vitiligo1.webp
deleted file mode 100644
index 1194365..0000000
--- a/rainbow-quox/back/vitiligo1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0175ff974fa83dd08f0912e0a31dbfbaf7fd4ef3556338d4d25aad87f0f715b2
-size 30564
diff --git a/rainbow-quox/back/vitiligo2.webp b/rainbow-quox/back/vitiligo2.webp
deleted file mode 100644
index ceafc0b..0000000
--- a/rainbow-quox/back/vitiligo2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:393a7da7efcd74d476f72620cba80102cbfd309e2e4a2eeb86081eccdcd329c6
-size 6668
diff --git a/rainbow-quox/back/vitiligo3.webp b/rainbow-quox/back/vitiligo3.webp
deleted file mode 100644
index b3b1000..0000000
--- a/rainbow-quox/back/vitiligo3.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bfe6882054b792e44fa4216ec58aa3a5918ad8d526ad878b7f1438a4838ee22f
-size 6078
diff --git a/rainbow-quox/back/vitiligo4.webp b/rainbow-quox/back/vitiligo4.webp
deleted file mode 100644
index bfbdb63..0000000
--- a/rainbow-quox/back/vitiligo4.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:aa8ed23495929d2cf817377b653b3f68d80af0b0d6ae00704bb5ca8cc1a9bb6c
-size 14358
diff --git a/rainbow-quox/colour.ts b/rainbow-quox/colour.ts
deleted file mode 100644
index 6d489ce..0000000
--- a/rainbow-quox/colour.ts
+++ /dev/null
@@ -1,290 +0,0 @@
-type Rand = () => number;
-
-
-/*
-let randomData = new Uint32Array(100);
-let next: number = 0;
-function reset() { self.crypto.getRandomValues(randomData); next = 0; }
-function rand() {
- if (next >= 100) { reset(); }
- return randomData[next++] / 4_294_967_295; // u32 max
-}
-reset();
-*/
-
-const rand: Rand = Math.random; // [todo]
-
-const max = Math.max;
-const min = Math.min;
-
-type Oklch = { l: number, c: number, h: number };
-
-type LD = 'light' | 'dark';
-
-const MAXL = 0.9;
-const MINL = 0.4;
-const MINL_LIGHT = 0.7;
-const MAXL_DARK = 0.65;
-
-const MINC_LIGHT = 0.08;
-const MAXC_LIGHT = 0.125;
-const MINC_DARK = 0.12;
-const MAXC_DARK = 0.2;
-
-// max spread for a sequence of analogous colours. unless that would put them
-// too close together
-const MAXH_WIDTH = 80;
-
-// minimum distance between adjacent analogous colours
-const MINH_SEP = 5;
-
-// how far away from 180° a "complementary" colour can be
-const MAXH_COMPL = 40;
-
-// how far away from 120° a "triad" colour can be
-const MAXH_TRIAD = 20;
-
-function randBetween(x: number, y: number): number {
- const lo = min(x, y), hi = max(x, y);
- return lo + rand() * (hi - lo);
-}
-
-function oneOf(...xs: A[]): A {
- return xs[Math.floor(rand() * xs.length)]!;
-}
-
-
-function isLight(l: number): boolean { return l >= MINL_LIGHT; }
-
-function baseLuma(ld?: LD): number {
- if (ld == 'light') {
- return randBetween(MINL_LIGHT, MAXL);
- } else if (ld == 'dark') {
- return randBetween(MINL, MAXL_DARK);
- } else {
- return randBetween(MINL, MAXL);
- }
-}
-
-function baseChroma(l: number): number {
- if (l >= MINL_LIGHT) {
- return randBetween(MINC_LIGHT, MAXC_LIGHT);
- } else {
- return randBetween(MINC_DARK, MAXC_DARK);
- }
-}
-
-function baseHue(): number { return rand() * 360; }
-
-function baseOklch(ld?: LD): Oklch {
- const l = baseLuma(ld);
- return {l, c: baseChroma(l), h: baseHue()};
-}
-
-function lightFor(baseL: number): number {
- return randBetween(baseL, MAXL);
-}
-function darkFor(baseL: number): number {
- return randBetween(MINL, baseL);
-}
-
-function brightFor(l: number, baseC: number): number {
- if (isLight(l)) { return randBetween(baseC, MAXC_LIGHT); }
- else { return randBetween(baseC, MAXC_DARK); }
-}
-
-function dullFor(l: number, baseC: number): number {
- if (isLight(l)) { return randBetween(baseC, MINC_LIGHT); }
- else { return randBetween(baseC, MINC_DARK); }
-}
-
-
-type Numbers = number[];
-
-function upto(end: number): Numbers {
- function* go(next: number): Iterable {
- if (next < end) { yield next; yield* go(next+1) }
- }
- return Array.from(go(0));
-}
-
-function analogous(baseH: number, count: number): Numbers {
- const minWidth = count * MINH_SEP;
- const width =
- MAXH_WIDTH < minWidth ? minWidth : randBetween(minWidth, MAXH_WIDTH);
- const sep = width / (count - 1);
- const start = baseH - (width / 2);
- let numbers = Array.from(upto(count).map(i => start + i * sep));
- return rand() > 0.5 ? numbers : numbers.reverse();
-}
-
-function complementary(baseH: number, count: number): Numbers {
- const angle = randBetween(180 - MAXH_COMPL, 180 + MAXH_COMPL);
- return analogous(baseH + angle, count);
-}
-
-function triad(baseH: number): [number, number] {
- const angle = randBetween(120 - MAXH_TRIAD, 120 + MAXH_TRIAD);
- return [baseH - angle, baseH + angle];
-}
-
-type Layer =
- 'outer' | 'spines' | 'vitiligo1' |
- 'stripes' | 'cuffs' |
- 'fins1' | 'fins2' | 'fins3' | 'vitiligo4' |
- 'belly1' | 'vitiligo3' | 'belly2' | 'vitiligo2' |
- 'eyes' | 'masks' | 'claws' | 'lines';
-
-type Colours = { [l in Layer]: Oklch };
-
-function colours(): Colours {
- let cols: Partial = {};
-
- cols.outer = baseOklch('dark'); // [todo]
- cols.spines = mkSpines(cols.outer);
- cols.vitiligo1 = mkVitiligo(cols.outer);
-
- cols.stripes = mkStripes();
- cols.cuffs = mkCuffs(cols.stripes);
-
- // fins, belly
- const whichBody = rand();
- if (whichBody > 0.85) {
- // triad
- const hs = triad(cols.outer.h);
- fins(hs[0]); belly(hs[1]);
- } else if (whichBody > 0.4) {
- // fins like belly
- const [f, b] = complementary(cols.outer.h, 2);
- fins(f!); belly(b!);
- } else {
- // fins like outer
- fins(analogous(cols.outer.h, 3)[2]!);
- belly(complementary(cols.outer.h, 3)[2]!);
- }
-
- cols.eyes = {
- l: baseLuma('light'),
- c: randBetween(0.28, MAXC_LIGHT),
- h: oneOf(analogous, complementary)(cols.outer.h, 3)[2]!
- };
-
- cols.masks = {
- l: randBetween(0.8, MAXL),
- c: randBetween(0.01, 0.06),
- h: analogous(oneOf(cols.outer, cols.belly1, cols.fins1)!.h, 3)[2]!
- };
- cols.claws = {
- l: min(MAXL, cols.masks!.l + randBetween(0.1, -0.1)),
- c: randBetween(0.01, 0.06),
- h: analogous(cols.masks!.h, 3)[2]!
- };
-
- cols.lines = {
- l: randBetween(0.01, 0.06),
- c: baseChroma(0),
- h: analogous(cols.outer!.h, 3)[2]!
- }
-
- return cols as Colours;
-
-
- function fins(h: number) {
- const [fin1Hue, fin2Hue, fin3Hue] = analogous(h, 3);
- const d = direction();
- cols.fins1 = doDirection(cols.outer!, fin1Hue!, d);
- cols.fins2 = doDirection(cols.fins1, fin2Hue!, d);
- cols.fins3 = doDirection(cols.fins2, fin3Hue!, d);
- cols.vitiligo4 = mkVitiligo(cols.fins1);
- }
-
- function belly(h: number) {
- const [belly1Hue, belly2Hue] = analogous(h, 2);
- cols.belly1 = {
- l: randBetween(0.7, MAXL),
- c: baseChroma(1),
- h: belly1Hue!
- };
- cols.belly2 = {
- l: min(MAXL, cols.belly1!.l * 1.1),
- c: cols.belly1!.c * 0.9,
- h: belly2Hue!
- };
- cols.vitiligo3 = mkVitiligo(cols.belly1); // oops sorry
- cols.vitiligo2 = mkVitiligo(cols.belly2);
- }
-
- type LFun = (l: number) => number;
- type CFun = (l: number, c: number) => number;
- function direction(): [LFun, CFun] {
- return oneOf([lightFor, dullFor], [darkFor, brightFor]);
- }
- function doDirection(col: Oklch, h: number, [ll, cc]: [LFun, CFun]) {
- return { l: ll(col.l), c: cc(col.l, col.c), h };
- }
-}
-
-function mkVitiligo(outer: Oklch): Oklch {
- return {
- l: randBetween(max(outer.l, 0.8), MAXL),
- c: randBetween(min(outer.c, 0.1), MINC_LIGHT),
- h: randBetween(outer.h + 20, outer.h - 20)
- };
-}
-
-function mkSpines(outer: Oklch): Oklch {
- return {
- l: outer.l * 0.8, c: outer.c * 1.1,
- h: randBetween(outer.h + 12, outer.h - 12)
- };
-}
-
-function mkStripes(): Oklch {
- return {
- l: randBetween(0.8, MAXL),
- c: randBetween(MINC_LIGHT, MAXC_LIGHT),
- h: rand() * 360
- };
-}
-
-function mkCuffs(sock: Oklch): Oklch {
- return {
- l: sock.l * 0.7,
- c: randBetween(sock.c, MAXC_LIGHT),
- h: randBetween(sock.h + 8, sock.h - 8)
- };
-}
-
-
-function setColours(cols: Colours) {
- for (const k in cols) {
- const c = cols[k as keyof Colours];
- for (const elem of Array.from(document.getElementsByClassName(k))) {
- (elem as HTMLElement).style.background = `oklch(${c.l} ${c.c} ${c.h})`;
- }
- }
- document.documentElement.style.setProperty('--hue', `${cols.outer.h}deg`);
-}
-
-
-document.addEventListener('DOMContentLoaded', function() {
- const reroll = document.getElementById('reroll')!;
- const swap = document.getElementById('swap')!;
- const pic = document.getElementById('pic')!;
-
- reroll.addEventListener('click', doReroll);
- swap.addEventListener('click', doSwap);
-
- doReroll();
- setTimeout(setTransition);
-
- function doReroll() { setColours(colours()); }
- function doSwap() { pic.classList.toggle('back'); }
- function setTransition() {
- document.documentElement.style.setProperty('--transition',
- 'background 0.4s ease-in-out, color 0.4s ease-in-out');
- }
-});
-
-
-export {}
diff --git a/rainbow-quox/front/belly1.webp b/rainbow-quox/front/belly1.webp
deleted file mode 100644
index a30d9e1..0000000
--- a/rainbow-quox/front/belly1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2f5515bcd8865df62a88f0dc246282a22aa6434fe82dc62a026a6530ede05b2f
-size 33482
diff --git a/rainbow-quox/front/belly2.webp b/rainbow-quox/front/belly2.webp
deleted file mode 100644
index 0c14054..0000000
--- a/rainbow-quox/front/belly2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:643cfcceac30ccffb73b5038d88317c30c66c931f25ff8db3aaed9a3f47f9bd9
-size 34988
diff --git a/rainbow-quox/front/claws.webp b/rainbow-quox/front/claws.webp
deleted file mode 100644
index 5a95d1a..0000000
--- a/rainbow-quox/front/claws.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c4a568b8f63b1e4ab8e2ffd10fb430990af4c62d4ab9fc1452f9c94a7fc2d017
-size 18770
diff --git a/rainbow-quox/front/cuffs.webp b/rainbow-quox/front/cuffs.webp
deleted file mode 100644
index b9df330..0000000
--- a/rainbow-quox/front/cuffs.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e8bfd541943e0ba2a4b22e2cb388547a252570cf671d10f291e29d9f1201dc06
-size 19030
diff --git a/rainbow-quox/front/eyes.webp b/rainbow-quox/front/eyes.webp
deleted file mode 100644
index a427132..0000000
--- a/rainbow-quox/front/eyes.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:321341953d8afd71a7147019beac8852179454cd60d9e45b8d2d1d6924c70f23
-size 6874
diff --git a/rainbow-quox/front/fins1.webp b/rainbow-quox/front/fins1.webp
deleted file mode 100644
index 6375bb2..0000000
--- a/rainbow-quox/front/fins1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:39bdaee56915a8aed70c2cb772a3d389ce16a61e64540e34890d25c933aab8cd
-size 14174
diff --git a/rainbow-quox/front/fins2.webp b/rainbow-quox/front/fins2.webp
deleted file mode 100644
index 907f261..0000000
--- a/rainbow-quox/front/fins2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:353fadde80ca1443681df10725c6dddf4670fec0671f79e117170dd84cd30a71
-size 13806
diff --git a/rainbow-quox/front/fins3.webp b/rainbow-quox/front/fins3.webp
deleted file mode 100644
index f01fe5d..0000000
--- a/rainbow-quox/front/fins3.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3049390a7a2f844a24f08ebc3f6c29fb85193358a0237ab88608a827b3b35631
-size 5726
diff --git a/rainbow-quox/front/lines.webp b/rainbow-quox/front/lines.webp
deleted file mode 100644
index 0b1a447..0000000
--- a/rainbow-quox/front/lines.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ae65212ecd5b68e9e03a5e5d9bcb3bc36492d311f0e86038469683fba94d285
-size 220226
diff --git a/rainbow-quox/front/masks.webp b/rainbow-quox/front/masks.webp
deleted file mode 100644
index afacfdd..0000000
--- a/rainbow-quox/front/masks.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07707af55f8e41ab0156ecdc490f3ae7faf2ecb369df54a8fd696325594932ad
-size 11180
diff --git a/rainbow-quox/front/outer.webp b/rainbow-quox/front/outer.webp
deleted file mode 100644
index 3ef1531..0000000
--- a/rainbow-quox/front/outer.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6afb5783c828ce56e3f590a2015859f82e841411305b9eab5f2a5bc87f99fd83
-size 28322
diff --git a/rainbow-quox/front/spines.webp b/rainbow-quox/front/spines.webp
deleted file mode 100644
index 36f4910..0000000
--- a/rainbow-quox/front/spines.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:213ca5194a9471eabd99e81d6438816dc91fe9fd037e59b8c7dd663cc0332151
-size 11778
diff --git a/rainbow-quox/front/static.webp b/rainbow-quox/front/static.webp
deleted file mode 100644
index 7da6697..0000000
--- a/rainbow-quox/front/static.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:584d2500af71f04385c0c23e8ef07be759e28d1633e750944fccb7ec5910b25c
-size 60422
diff --git a/rainbow-quox/front/stripes.webp b/rainbow-quox/front/stripes.webp
deleted file mode 100644
index 12d8b9b..0000000
--- a/rainbow-quox/front/stripes.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ab005f96e30bc1c4616df9fb13b3e942e3c665f1ff97e10b3c46b2d158e6e2c9
-size 52846
diff --git a/rainbow-quox/front/vitiligo1.webp b/rainbow-quox/front/vitiligo1.webp
deleted file mode 100644
index a7481af..0000000
--- a/rainbow-quox/front/vitiligo1.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26b0af713721f8f8d324af2d5a4ce73b02614e57c36a33d7c11ac1f02cff95d4
-size 17448
diff --git a/rainbow-quox/front/vitiligo2.webp b/rainbow-quox/front/vitiligo2.webp
deleted file mode 100644
index 6e70fd4..0000000
--- a/rainbow-quox/front/vitiligo2.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:39072c20f657bb4c395e35f82e3e107c49f0a2a1e6de0cb1262e5b462fc9f59c
-size 5342
diff --git a/rainbow-quox/front/vitiligo3.webp b/rainbow-quox/front/vitiligo3.webp
deleted file mode 100644
index 5bbf21b..0000000
--- a/rainbow-quox/front/vitiligo3.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:af3434048fae9d2eac0c3d76342a32357020e729a020ae38a7ba3bcf1acaa7f2
-size 3098
diff --git a/rainbow-quox/front/vitiligo4.webp b/rainbow-quox/front/vitiligo4.webp
deleted file mode 100644
index 0fafd49..0000000
--- a/rainbow-quox/front/vitiligo4.webp
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:771f1ad3217fe3530fb7560220b0ac4a9eda375b00a1909ea9ac27a41d045b19
-size 4974
diff --git a/rainbow-quox/index.html b/rainbow-quox/index.html
deleted file mode 100644
index c6b08b2..0000000
--- a/rainbow-quox/index.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-rainbow quox
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/rainbow-quox/kra/back.kra b/rainbow-quox/kra/back.kra
deleted file mode 100644
index 54e67ce..0000000
--- a/rainbow-quox/kra/back.kra
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:462a140e5301d5ed8cff14ec5b019ddad5207f5e4aaadd7de637fa3a4d7dcfbe
-size 10079930
diff --git a/rainbow-quox/kra/compl1.png b/rainbow-quox/kra/compl1.png
deleted file mode 100644
index 23687ea..0000000
--- a/rainbow-quox/kra/compl1.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:52e46b628ed2026246eb7cc928bc026b7f269a91c9f980db6825353d6e688dee
-size 561799
diff --git a/rainbow-quox/kra/compl2.png b/rainbow-quox/kra/compl2.png
deleted file mode 100644
index 0fdf791..0000000
--- a/rainbow-quox/kra/compl2.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0c6e5426f8d94cb92dd0ca9b9c553e50e4ee2976adb988339a5009aed73fd887
-size 560816
diff --git a/rainbow-quox/kra/front.kra b/rainbow-quox/kra/front.kra
deleted file mode 100644
index 7fd8554..0000000
--- a/rainbow-quox/kra/front.kra
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:579ca5af9a79a8577f62013418f58c729c646cfda9f2fd2bed54688b59de2ddd
-size 11346742
diff --git a/rainbow-quox/kra/triad.png b/rainbow-quox/kra/triad.png
deleted file mode 100644
index eb2300a..0000000
--- a/rainbow-quox/kra/triad.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9b59f4c7198b8782bdc16dc9012a25af0979948630390df9b1865238c46e1a66
-size 554043
diff --git a/rainbow-quox/style.css b/rainbow-quox/style.css
deleted file mode 100644
index e05ef37..0000000
--- a/rainbow-quox/style.css
+++ /dev/null
@@ -1,164 +0,0 @@
-@import url(/fonts/muller/muller.css);
-
-@property --transition {
- syntax: "*";
- inherits: true;
- initial-value: none;
-}
-
-* {
- box-sizing: border-box;
- transition: var(--transition);
-}
-
-@media (prefers-reduced-motion: reduce) {
- * { transition: none; }
-}
-
-:root {
- --hue: 300deg;
- min-height: 100vh; display: flex;
- align-items: center; justify-content: center;
-
- --font: Muller, sans-serif;
- font-family: var(--font);
-
- color-scheme: light dark;
- background:
- light-dark(oklch(0.9 0.08 var(--hue)),
- oklch(0.3 0.12 var(--hue)));
-
- overflow-x: hidden;
-}
-
-#pic {
- position: relative;
- width: min(1000px, 75vw);
- margin: auto;
- aspect-ratio: 2000/1312;
-}
-#pic div {
- position: absolute; inset: 0;
- mask-size: contain; mask-repeat: no-repeat;
-}
-
-
-#front, #back {
- transition: all 0.45s cubic-bezier(.23,-0.03,.68,1.11);
-}
-
-.back > #front { translate: 125vw; }
-:not(.back) > #back { translate: -125vw; }
-
-@media (prefers-reduced-motion: reduce) {
- #front, #back { transition: none; }
-
- .back > #front { translate: none; rotate: none; display: none; }
- :not(.back) > #back { translate: none; rotate: none; display: none; }
-}
-
-
-#front .static { background: url(front/static.webp) 0 0 / contain; }
-#back .static { background: url(back/static.webp) 0 0 / contain; }
-
-.spines { background: oklch(30.77% 0.1306 298.19); }
-#front .spines { mask-image: url(front/spines.webp); }
-#back .spines { mask-image: url(back/spines.webp); }
-
-.stripes { background: oklch(88.2% 0.0613 209.07); }
-#front .stripes { mask-image: url(front/stripes.webp); }
-#back .stripes { mask-image: url(back/stripes.webp); }
-
-.cuffs { background: oklch(72.74% 0.1008 225.69); }
-#front .cuffs { mask-image: url(front/cuffs.webp); }
-#back .cuffs { mask-image: url(back/cuffs.webp); }
-
-.outer { background: oklch(38.37% 0.1437 306.27); }
-#front .outer { mask-image: url(front/outer.webp); }
-#back .outer { mask-image: url(back/outer.webp); }
-
-.fins1 { background: oklch(85.06% 0.0961 81.4); }
-#front .fins1 { mask-image: url(front/fins1.webp); }
-#back .fins1 { mask-image: url(back/fins1.webp); }
-
-.fins2 { background: oklch(79.59% 0.1208 73.56); }
-#front .fins2 { mask-image: url(front/fins2.webp); }
-#back .fins2 { mask-image: url(back/fins2.webp); }
-
-.fins3 { background: oklch(74.11% 0.1268 64.62); }
-#front .fins3 { mask-image: url(front/fins3.webp); }
-#back .fins3 { mask-image: url(back/fins3.webp); }
-
-.belly1 { background: oklch(87.26% 0.0699 80.94); }
-#front .belly1 { mask-image: url(front/belly1.webp); }
-#back .belly1 { mask-image: url(back/belly1.webp); }
-
-.belly2 { background: oklch(76.92% 0.0954 58.36); }
-#front .belly2 { mask-image: url(front/belly2.webp); }
-#back .belly2 { mask-image: url(back/belly2.webp); }
-
-.eyes { background: oklch(36.26% 0.1107 145.78); }
-#front .eyes { mask-image: url(front/eyes.webp); }
-#back .eyes { mask-image: url(back/eyes.webp); }
-
-.masks { background: oklch(77.1% 0.0243 317.12); }
-#front .masks { mask-image: url(front/masks.webp); }
-#back .masks { mask-image: url(back/masks.webp); }
-
-.claws { background: oklch(88.92% 0.0207 325.75); }
-#front .claws { mask-image: url(front/claws.webp); }
-#back .claws { mask-image: url(back/claws.webp); }
-
-.vitiligo1 { background: oklch(79.4% 0.0588 309.27); }
-#front .vitiligo1 { mask-image: url(front/vitiligo1.webp); }
-#back .vitiligo1 { mask-image: url(back/vitiligo1.webp); }
-
-.vitiligo2 { background: oklch(93.14% 0.0331 83.71); }
-#front .vitiligo2 { mask-image: url(front/vitiligo2.webp); }
-#back .vitiligo2 { mask-image: url(back/vitiligo2.webp); }
-
-.vitiligo3 { background: oklch(95.7% 0.0296 94.35); }
-#front .vitiligo3 { mask-image: url(front/vitiligo3.webp); }
-#back .vitiligo3 { mask-image: url(back/vitiligo3.webp); }
-
-.vitiligo4 { background: oklch(95.7% 0.0296 94.35); }
-#front .vitiligo4 { mask-image: url(front/vitiligo4.webp); }
-#back .vitiligo4 { mask-image: url(back/vitiligo4.webp); }
-
-.lines { background: oklch(21.96% 0.0661 296.36); }
-#front .lines { mask-image: url(front/lines.webp); }
-#back .lines { mask-image: url(back/lines.webp); }
-
-.eye-shine { mask: none; mix-blend-mode: luminosity; }
-#front .eye-shine { background: url(front/eyes.webp) 0 0 / contain; }
-#back .eye-shine { background: url(back/eyes.webp) 0 0 / contain; }
-
-
-#buttons {
- margin-top: 3rem;
- display: flex; gap: 20px;
- z-index: -1;
-}
-
-button {
- font: 700 25pt var(--font);
- flex: 30%;
- background: oklch(0.5 0.2 var(--hue));
- color: oklch(0.95 0.075 calc(180deg + var(--hue)));
- border: 3px solid oklch(0.2 0.05 var(--hue));
- padding: 0.2em 0.5em;
- filter: drop-shadow(0 0 10px oklch(0.4 0.2 var(--hue) / 0.45));
-}
-
-nav {
- position: absolute;
- bottom: 15px; left: 22px;
-}
-
-nav a {
- color: light-dark(oklch(0.4 0.15 calc(180deg + var(--hue))),
- oklch(0.9 0.19 calc(180deg + var(--hue))));
- text-decoration: 3px solid underline;
- text-decoration-color:
- oklch(0.6 0.1 calc(180deg + var(--hue)));
-}