diff --git a/Makefile b/Makefile index 243abe0..59126da 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,16 @@ -PAGES = index.html pubkey.txt rainbow-quox/index.html velzek/index.html +PAGES = index.html pubkey.txt rainbow-quox/index.html \ + dnd/index.html $(wildcard dnd/*/index.html) 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/*) \ $(wildcard rainbow-quox/*.svg) rainbow-quox/palette.svg \ - $(wildcard velzek/*.webp) $(wildcard velzek/*.png) + $(wildcard dnd/*.png) $(wildcard dnd/*.webp) $(wildcard dnd/*/*.webp) CSS = $(shell find fonts -type f) \ $(patsubst %.scss,%.css, \ $(wildcard rainbow-quox/style/*) $(wildcard style/*)) \ - velzek/style.css + dnd/base.css dnd/bio.css dnd/index.css $(wildcard dnd/*/style.css) SCRIPTS = $(patsubst %.ts,%.js,$(wildcard script/*.ts rainbow-quox/script/*.ts)) MISC = $(shell find .well-known -type f) ALL = $(CSS) $(PAGES) $(MEDIA) $(SCRIPTS) $(MISC) diff --git a/velzek/style.css b/dnd/base.css similarity index 72% rename from velzek/style.css rename to dnd/base.css index cac4894..3de9e93 100644 --- a/velzek/style.css +++ b/dnd/base.css @@ -1,5 +1,5 @@ -@layer base, header, footer, images, switcher, phone; -@import url(../fonts/junicodevf/junicodevf.css) layer(base); +@layer fonts, base, header, footer, images, switcher, phone; +@import url(../fonts/junicodevf/junicodevf.css) layer(fonts); @layer base { * { box-sizing: border-box; } @@ -10,8 +10,8 @@ --text-color: hsl(350deg 40% 15%); --accent-color: hsl(80deg 50% 35%); --shadow-color: hsl(from var(--text-color) h 20% 3% / 20%); - --shadow: drop-shadow(3px 2px 0 var(--shadow-color)); - --shadow2: drop-shadow(-2px 0 0 hsl(from var(--text-color) h 20% 7% / 15%)); + --shadow: 3px 2px 0 var(--shadow-color); + --shadow2: -2px 0 0 hsl(from var(--text-color) h 20% 7% / 15%); } :root { @@ -34,17 +34,18 @@ background: url(beige-paper.png), hsl(40deg 80% 80%); background-blend-mode: multiply; border: 10px solid currentcolor; - filter: var(--shadow) var(--shadow2); + box-shadow: var(--shadow), var(--shadow2); } - figure { filter: var(--shadow2); } } @layer base.fonts { :root { font-family: JunicodeVF, serif; - font-feature-settings: - "ccmp", "calt", "liga", "loca", "rlig", "kern", "mark", "mkmk"; + --base-features: + "ccmp", "calt", "liga", "loca", "rlig", "kern", "mark", "mkmk", + "ss09", "cv69" 6; /* nice */ + font-feature-settings: var(--base-features); font-variation-settings: "ENLA" 25; font-stretch: 125%; font-weight: 450; @@ -72,32 +73,6 @@ } } -@layer base.headings { - h1, h2, h3, h4, h5, h6 { - font-stretch: 75%; - font-variation-settings: "ENLA" 0; - } - - h2 { - margin: 1em; - position: relative; - border-bottom: 3px double currentcolor; - - font-size: 225%; - font-weight: 500; - - &::before { - content: '•'; - font-size: 80%; - font-feature-settings: "ornm" 5; - position: absolute; - left: -1.15em; - bottom: 7%; - rotate: -5deg; - } - } -} - @layer base.other { a { color: inherit; @@ -111,19 +86,35 @@ font-style: italic; } - dl { margin: 0 1em; } - dt { font-weight: bold; } - dd { margin: 0; } + .amp { + font-size: 75%; + font-weight: 550; + } - @media (width >= 70rem) { - dl { - display: grid; - grid-template-columns: auto 1fr; - column-gap: 1em; + small { font-stretch: 100%; } +} + +@layer base.headings { + h1, h2, h3, h4, h5, h6 { + font-stretch: 75%; + font-feature-settings: var(--base-features), + "cv02" 1, "cv08" 1, "cv10" 1, "cv12" 10, "cv14" 6, "cv15" 4, "cv16" 1, + "cv24" 5, "cv38" 2, "cv48" 1; + font-variation-settings: "ENLA" 0; + + small { font-stretch: 65%; } + } + + h2 { + margin: 0 0 0.5rem; + font-size: 225%; + font-weight: 500; + + &::before { + content: '•'; + font-size: 80%; + font-feature-settings: "ornm" 2; } - - dt { grid-column-start: 1; } - dd { grid-column-start: 2; } } } @@ -173,7 +164,7 @@ } @layer images { - #velzek-img-holder { + #char-img-holder { display: grid; grid-template: "i"; align-items: center; @@ -184,37 +175,36 @@ margin: auto; } - img { - filter: var(--shadow2); + .mainfig { max-width: 100%; - &.bordered { border: 10px solid currentcolor; } } + .bordered { + box-shadow: var(--shadow), var(--shadow2); + border: 10px solid currentcolor; + } + #char-pic { filter: drop-shadow(var(--shadow)); } + + figure img { width: 100%; } @media (width >= 70rem) { - figure { + .mainfig { width: 480px; float: right; margin: 0 calc(0px - var(--protrude)) 1em 1em; img { width: 100%; } } - #velzek-pic { - shape-outside: polygon(100% 0%, 13% 0%, 13% 25%, 0% 27%, - 0% 51%, 18% 60%, 21% 100%, 100% 100%); - } - - #ekkel-pic { rotate: -2deg; } - #suveesha-pic { rotate: 3deg; } + section:nth-of-type(even) .mainfig { rotate: -1deg; } + section:nth-of-type(odd) .mainfig { rotate: 1.5deg; } + #char-pic { rotate: 0deg; } } } @layer switcher { - #velzek-pic img { - transition: all ease 200ms 175ms; - } + #pic1, #pic2 { transition: all ease 200ms 175ms; } - :root:has(#switch:checked) #clothes-pic, - :root:not(:has(#switch:checked)) #armour-pic { + :root:has(#switch:checked) #pic1, + :root:not(:has(#switch:checked)) #pic2 { opacity: 0; transition-delay: 0ms; pointer-events: none; @@ -225,7 +215,7 @@ position: absolute; } - #velzek-pic label { + #char-pic label { display: block; width: min-content; margin: 0 auto 1em; diff --git a/velzek/beige-paper.png b/dnd/beige-paper.png similarity index 100% rename from velzek/beige-paper.png rename to dnd/beige-paper.png diff --git a/dnd/bio.css b/dnd/bio.css new file mode 100644 index 0000000..39e00cb --- /dev/null +++ b/dnd/bio.css @@ -0,0 +1,38 @@ +@import url(base.css); + +@layer base.headings { + h2 { + margin: 2rem 3rem; + position: relative; + + border-bottom: 3px double currentcolor; + + &::before { + font-feature-settings: "ornm" 5; + position: absolute; + left: -1.15em; + bottom: 7%; + rotate: -5deg; + } + } +} + +@layer base.other { + table { + min-width: 20rem; + margin: 0 3rem; + border-bottom: 2px solid currentcolor; + } + caption { + border-top: 2px solid currentcolor; + border-bottom: 1px solid currentcolor; + + font-weight: 700; + text-align: center; + .and { font-weight: 450; } + } + + th, td, caption { padding: 0.125lh 0.5em 0.0625lh; } + + tbody th { text-align: right; } +} diff --git a/velzek/classy-fabric.png b/dnd/classy-fabric.png similarity index 100% rename from velzek/classy-fabric.png rename to dnd/classy-fabric.png diff --git a/dnd/index.css b/dnd/index.css new file mode 100644 index 0000000..16f6994 --- /dev/null +++ b/dnd/index.css @@ -0,0 +1,71 @@ +@import url(base.css); + +@layer { + header { row-gap: 0; } + header p { + grid-area: 2/1/2/4; + margin: 0; + text-align: center; + + font-size: 1.5rem; + font-weight: 600; + font-stretch: 90%; + } +} + +@layer { + .portrait { + margin: 0; + border: 4px solid currentcolor; + box-shadow: var(--shadow); + img { + display: block; + width: 200px; + height: 200px; + } + } + + .char { + width: 80%; + margin-left: auto; + margin-right: auto; + + padding-left: 1em; + padding-right: 1em; + + display: grid; + gap: 0.5em 2em; + + &:nth-of-type(odd) { + grid-template: + "portrait name" auto + "portrait desc" 1fr / min-content auto; + } + &:nth-of-type(even) { + grid-template: + "name portrait" auto + "desc portrait" 1fr / auto min-content; + } + + .portrait { grid-area: portrait; } + h2 { grid-area: name; margin: 0; } + > div, p { grid-area: desc; align-self: start; } + } +} + +@layer { + .char { + margin-top: 2em; + padding-top: 2em; + border-top: 3px double currentcolor; + } + .char:last-of-type { + padding-bottom: 2em; + border-bottom: 3px double currentcolor; + } + + h2 small { + font-size: 70%; + font-weight: 700; + } +} diff --git a/dnd/index.html b/dnd/index.html new file mode 100644 index 0000000..5237e5a --- /dev/null +++ b/dnd/index.html @@ -0,0 +1,83 @@ + + + +
blorbos from my tabletop +
+ anthropologist observing the humanoid society in marikest, when a suspicious + sequence of events plunge the city into chaos. + (2024–) +
+ disgraced acolyte of bahamut sent out into the world to atone for her + mistakes. + (2024–) +
+ went to hell and back to stop the world from disintegrating. you know, + normal stuff. + (2020–24) +
+ little lizard who saw magic one time and never stopped thinking about it
+
+ (2019; game abandoned but i still like this lil gremlin)
+
height | 198 cm (6ʹ 6ʺ) + |
---|---|
weight | 121 kg (267 ℔) + |
age | 37 + |
+ let’s get it out of the way. her actual name is, um, let’s see here… + [ˈqχḁʂx̩kɬ̩ːχ]. which is why she goes by ‘marigold’ + among the humanoids. +
- cleric of suveesha - and anthropologist - -
height | 74 cm (2ʹ 5ʺ) + |
---|---|
weight | 18 kg (40 ℔) + |
age | 32 + |
year of birth | 1187 + |
velzek is a kobold from a community called @@ -60,24 +49,26 @@ eight years ago, she and four other kobolds arrived at the temple of berei, next to the green on the south border of marikest. -
- her companions are: - -
yarva bitterbrush | 26, he/him + |
---|---|
keshku æstivæ | 28, she/her + |
volek ruba | 23, she/her + |
tokil arceuthus | 25, he/him + |
until arriving in marikest, the concept of a surname was totally unknown to the kobolds, so they all invented names based on plants for themselves once - they became needed. + they became needed. in the city they’ve been under the mentorship of a + halfling named bobbie fairchild.
the purpose of the kobolds’ arrival in marikest is to study outside
@@ -91,9 +82,9 @@
@@ -126,8 +117,10 @@
@@ -146,10 +139,10 @@
while amongst the humanoids, velzek and the others have been instructed to
- adopt berei’s symbols for familiarity: a bundle of wheat, a sickle, and a
+ adopt berei’s more familiar symbols: a bundle of wheat, a sickle, and a
rising sun.
ekkel
-
@@ -104,7 +95,7 @@
the windswept wall. despite the historical friction between kobolds and
humanoids, ekkel has enjoyed peace for decades, due to its location far away
from any major surface roads. like all burrows, ekkel is considered to be a
- single huge family; kobolds don't consciously keep track of closer kinship
+ single huge family; kobolds don’t consciously keep track of closer kinship
bonds.
suveesha
-
+
+