velzek
This commit is contained in:
parent
7e4518bdaf
commit
898c7753a4
30 changed files with 500 additions and 3 deletions
8
Makefile
8
Makefile
|
@ -1,13 +1,15 @@
|
|||
PAGES = index.html pubkey.txt rainbow-quox/index.html
|
||||
PAGES = index.html pubkey.txt rainbow-quox/index.html velzek/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 rainbow-quox/*.svg) rainbow-quox/palette.svg \
|
||||
$(wildcard velzek/*.webp) $(wildcard velzek/*.png)
|
||||
CSS = $(shell find fonts -type f) \
|
||||
$(patsubst %.scss,%.css, \
|
||||
$(wildcard rainbow-quox/style/*) $(wildcard style/*))
|
||||
$(wildcard rainbow-quox/style/*) $(wildcard style/*)) \
|
||||
velzek/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)
|
||||
|
|
11
fonts/junicodevf/junicodevf.css
Normal file
11
fonts/junicodevf/junicodevf.css
Normal file
|
@ -0,0 +1,11 @@
|
|||
@font-face {
|
||||
font-family: JunicodeVF;
|
||||
src: url(JunicodeVF-Roman.ttf);
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: JunicodeVF;
|
||||
src: url(JunicodeVF-Italic.ttf);
|
||||
font-style: italic;
|
||||
}
|
BIN
velzek/armour.webp
(Stored with Git LFS)
Normal file
BIN
velzek/armour.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/armour_small.webp
(Stored with Git LFS)
Normal file
BIN
velzek/armour_small.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/armour_small2x.webp
(Stored with Git LFS)
Normal file
BIN
velzek/armour_small2x.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/beige-paper.png
(Stored with Git LFS)
Normal file
BIN
velzek/beige-paper.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/classy-fabric.png
(Stored with Git LFS)
Normal file
BIN
velzek/classy-fabric.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/clothes.webp
(Stored with Git LFS)
Normal file
BIN
velzek/clothes.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/clothes_small.webp
(Stored with Git LFS)
Normal file
BIN
velzek/clothes_small.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/clothes_small2x.webp
(Stored with Git LFS)
Normal file
BIN
velzek/clothes_small2x.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/icon.webp
(Stored with Git LFS)
Normal file
BIN
velzek/icon.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
155
velzek/index.html
Normal file
155
velzek/index.html
Normal file
|
@ -0,0 +1,155 @@
|
|||
<!doctype html>
|
||||
<html lang=en>
|
||||
<meta charset=utf-8>
|
||||
<title>velzek hawthorne</title>
|
||||
|
||||
<link rel=stylesheet href=style.css>
|
||||
<link rel=icon href=icon.webp>
|
||||
|
||||
<meta name=viewport content='width=device-width; initial-scale=0.75'>
|
||||
|
||||
<meta property=og:type content=article>
|
||||
<meta property=og:title content="velzek hawthorne">
|
||||
<meta property=og:description content="kobold cleric and anthropologist">
|
||||
<meta property=og:url content="https://niss.website/velzek/">
|
||||
<meta property=og:image content="https://niss.website/velzek/icon.png">
|
||||
<meta name=twitter:card content=summary_large_image>
|
||||
<meta name=twitter:image content="https://niss.website/velzek/clothes.webp">
|
||||
|
||||
<header>
|
||||
<h1 id=top>velzek hawthorne</h1>
|
||||
</header>
|
||||
|
||||
<section id=info>
|
||||
<h2>basic info</h2>
|
||||
|
||||
<figure id=velzek-pic>
|
||||
<input type=checkbox id=switch>
|
||||
<label for=switch> switch </label>
|
||||
|
||||
<div id=velzek-img-holder>
|
||||
<a href=clothes.webp>
|
||||
<img id=clothes-pic
|
||||
src=clothes_small.webp srcset='clothes_small2x.webp 2x'
|
||||
alt='velzek the kobold in green priest garments'>
|
||||
</a>
|
||||
|
||||
<a href=armour.webp>
|
||||
<img id=armour-pic
|
||||
src=armour_small.webp srcset='armour_small2x.webp 2x'
|
||||
alt='velzek the kobold in metal armour holding a mace'>
|
||||
</a>
|
||||
</div>
|
||||
</figure>
|
||||
|
||||
<p>
|
||||
<strong>cleric of <a href=#suveesha>suveesha</a></strong>
|
||||
and anthropologist
|
||||
|
||||
<dl>
|
||||
<dt>height <dd> 74 cm (2ʹ 5ʺ)
|
||||
<dt>weight <dd> 18 kg (40 ℔)
|
||||
<dt>age <dd> 32
|
||||
<dt>year of birth <dd> 1187
|
||||
<dt>alignment <dd> neutral good
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
<dfn>velzek</dfn> is a kobold from a community called
|
||||
<a href=#ekkel>ekkel</a>, north of the ruins of avaro’s dungeon. around
|
||||
eight years ago, she and four other kobolds arrived at the temple of berei,
|
||||
next to the green on the south border of marikest.
|
||||
|
||||
<p>
|
||||
her companions are:
|
||||
|
||||
<dl>
|
||||
<dt> yarva bitterbrush <dd> 26, he/him
|
||||
<!-- purshia tridentata -->
|
||||
<dt> keshku aestivae <dd> 28, she/her
|
||||
<!-- æstīvus: summer, but also wheat is triticum aestivum -->
|
||||
<dt> volek ruba <dd> 23, she/her
|
||||
<!-- rubus: blackberry/raspberry -->
|
||||
<dt> tokil arceuthus <dd> 25, he/him
|
||||
<!-- ἄρκευθος: juniper -->
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
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.
|
||||
|
||||
<p>
|
||||
the purpose of the kobolds’ arrival in marikest is to study outside
|
||||
cultures, in the hope of easing the ancient distrust between kobolds and
|
||||
surface dwellers. unravelling the common perception of kobolds as stupid
|
||||
and/or evil is hard work, so progress is slow. but the recent political
|
||||
situation has been <em>very</em> interesting to study as a group of
|
||||
outsiders.
|
||||
</section>
|
||||
|
||||
<section id=ekkel>
|
||||
<h2>ekkel</h2>
|
||||
|
||||
<figure id=ekkel-pic>
|
||||
<a href=map_k_full.webp>
|
||||
<img src=map_k.webp class=bordered
|
||||
alt="ekkel is north of the ruins of avaro’s dungeon"
|
||||
title="location of ekkel burrow">
|
||||
</a>
|
||||
</figure>
|
||||
|
||||
<p>
|
||||
velzek’s old home, <dfn>ekkel</dfn>, consists of a network of caves within
|
||||
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
|
||||
bonds.
|
||||
|
||||
<p>
|
||||
the centre of ekkel is a large cavern; individual living spaces radiate
|
||||
out in a dense network of narrow tunnels. the central space is dominated
|
||||
by a huge temple to suveesha, which serves as a communal kitchen and
|
||||
dining room, as well as a school. outside of her studies into humanoid
|
||||
cultures, velzek’s duties at the temple included teaching young kobolds to
|
||||
read and write, and—like all priests to suveesha—helping in the kitchen.
|
||||
|
||||
<p>
|
||||
ekkel is far from isolated. several of the outer tunnels dip into the
|
||||
underdark, and through there, are connected to other kobold burrows. in
|
||||
fact, due to its safe location, it has been steadily growing in recent
|
||||
decades as more precarious communities decide to migrate there. however,
|
||||
its current population is still only around six thousand.
|
||||
</section>
|
||||
|
||||
<section id=suveesha>
|
||||
<h2>suveesha</h2>
|
||||
|
||||
<figure id=suveesha-pic>
|
||||
<a href=suveesha.webp><img src=suveesha.webp class=bordered></a>
|
||||
</figure>
|
||||
|
||||
<p>
|
||||
the goddess known to humanoids as berei, concerned with home and family,
|
||||
is commonly revered among kobolds in consecuar in a form known as
|
||||
<dfn>suveesha</dfn>. she is represented in this form as a four-horned
|
||||
kobold holding a golden flame; temples to suveesha generally have a
|
||||
pair of huge braziers outside the entrance, providing warmth to the
|
||||
community.
|
||||
|
||||
<p>
|
||||
it is claimed by some senior members of the clergy that ekkel is
|
||||
particularly blessed by suveesha, and insulated from the troubles of the
|
||||
outside world. maybe it is. or maybe it’s just that, from the perspective of
|
||||
the surface world, it’s in the middle of nowhere.
|
||||
|
||||
<p>
|
||||
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
|
||||
rising sun.
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<a href=/index.html aria-label=back>•</a>
|
||||
</footer>
|
BIN
velzek/map_k.webp
(Stored with Git LFS)
Normal file
BIN
velzek/map_k.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/map_k_full.webp
(Stored with Git LFS)
Normal file
BIN
velzek/map_k_full.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/armour.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/armour.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/armour_small.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/armour_small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/armour_small2x.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/armour_small2x.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/clothes.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/clothes.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/clothes_small.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/clothes_small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/clothes_small2x.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/clothes_small2x.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/icon.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/icon.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/koboldowo.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/koboldowo.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/map_k.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/map_k.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/map_k_full.kra
(Stored with Git LFS)
Normal file
BIN
velzek/src/map_k_full.kra
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/map_k_full.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/map_k_full.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/suveesha.kra
(Stored with Git LFS)
Normal file
BIN
velzek/src/suveesha.kra
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/suveesha.png
(Stored with Git LFS)
Normal file
BIN
velzek/src/suveesha.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
velzek/src/velzek icon.kra
(Stored with Git LFS)
Normal file
BIN
velzek/src/velzek icon.kra
(Stored with Git LFS)
Normal file
Binary file not shown.
251
velzek/style.css
Normal file
251
velzek/style.css
Normal file
|
@ -0,0 +1,251 @@
|
|||
@layer base, header, footer, images, switcher, phone;
|
||||
@import url(../fonts/junicodevf/junicodevf.css) layer(base);
|
||||
|
||||
@layer base {
|
||||
* { box-sizing: border-box; }
|
||||
}
|
||||
|
||||
@layer base.cols {
|
||||
:root, ::selection {
|
||||
--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%));
|
||||
}
|
||||
|
||||
:root {
|
||||
background:
|
||||
url(classy-fabric.png),
|
||||
linear-gradient(to bottom in oklch,
|
||||
hsl(55deg 55% 70%),
|
||||
hsl(80deg 30% 50%));
|
||||
background-blend-mode: multiply;
|
||||
color: var(--text-color);
|
||||
accent-color: var(--accent-color);
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: hsl(from var(--accent-color) h s calc(l * 0.75));
|
||||
color: hsl(60deg 10% 90%);
|
||||
}
|
||||
|
||||
body {
|
||||
background: url(beige-paper.png), hsl(40deg 80% 80%);
|
||||
background-blend-mode: multiply;
|
||||
border: 10px solid currentcolor;
|
||||
filter: 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";
|
||||
font-variation-settings: "ENLA" 25;
|
||||
font-stretch: 125%;
|
||||
font-weight: 450;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@layer base.layout {
|
||||
:root {
|
||||
--protrude: 8rem;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 50rem;
|
||||
margin: 1rem auto 2rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
section, footer { clear: both; }
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
padding: 1em 0 0.75em;
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: hsl(from currentcolor h s l / 0.6);
|
||||
text-underline-offset: 0.125em;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
dl { margin: 0 1em; }
|
||||
dt { font-weight: bold; }
|
||||
dd { margin: 0; }
|
||||
|
||||
@media (width >= 70rem) {
|
||||
dl {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr;
|
||||
column-gap: 1em;
|
||||
}
|
||||
|
||||
dt { grid-column-start: 1; }
|
||||
dd { grid-column-start: 2; }
|
||||
}
|
||||
}
|
||||
|
||||
@layer header {
|
||||
header {
|
||||
display: grid;
|
||||
grid-template: "l header r" / 1fr auto 1fr;
|
||||
gap: 1ex;
|
||||
margin: 0.25em auto 0.5em;
|
||||
font-size: 400%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-size: inherit;
|
||||
grid-area: header;
|
||||
margin: 0;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
header {
|
||||
&::before, &::after {
|
||||
content: '•';
|
||||
font-size: 65%;
|
||||
}
|
||||
&::before {
|
||||
grid-area: l;
|
||||
font-feature-settings: "ornm" 7;
|
||||
justify-self: end;
|
||||
}
|
||||
&::after {
|
||||
grid-area: r;
|
||||
font-feature-settings: "ornm" 8;
|
||||
justify-self: start;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@layer footer {
|
||||
footer {
|
||||
font-feature-settings: "ornm" 6;
|
||||
a { text-decoration: none; }
|
||||
font-size: 250%;
|
||||
}
|
||||
}
|
||||
|
||||
@layer images {
|
||||
#velzek-img-holder {
|
||||
display: grid;
|
||||
grid-template: "i";
|
||||
align-items: center;
|
||||
> * { grid-area: i; }
|
||||
|
||||
/* for the narrow layout */
|
||||
max-width: 480px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
img {
|
||||
filter: var(--shadow2);
|
||||
max-width: 100%;
|
||||
&.bordered { border: 10px solid currentcolor; }
|
||||
}
|
||||
|
||||
@media (width >= 70rem) {
|
||||
figure {
|
||||
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; }
|
||||
}
|
||||
}
|
||||
|
||||
@layer switcher {
|
||||
#velzek-pic img {
|
||||
transition: all ease 200ms 175ms;
|
||||
}
|
||||
|
||||
:root:has(#switch:checked) #clothes-pic,
|
||||
:root:not(:has(#switch:checked)) #armour-pic {
|
||||
opacity: 0;
|
||||
transition-delay: 0ms;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#switch {
|
||||
appearance: none;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#velzek-pic label {
|
||||
display: block;
|
||||
width: min-content;
|
||||
margin: 0 auto 1em;
|
||||
text-align: center;
|
||||
padding: 2px 8px 0;
|
||||
|
||||
background: hsl(40deg 25% 95% / 65%);
|
||||
border: 1px solid currentcolor;
|
||||
font-weight: bold;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@layer phone {
|
||||
@media (width <= 50em) {
|
||||
* { background-blend-mode: unset; filter: none; }
|
||||
:root { background: none; }
|
||||
body { border: 0; margin: 0; }
|
||||
header { margin-left: 0.5em; margin-right: 0.5em; }
|
||||
}
|
||||
}
|
BIN
velzek/suveesha.webp
(Stored with Git LFS)
Normal file
BIN
velzek/suveesha.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue