Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0c36853a1 | ||
|
|
29b49f3588 | ||
|
|
6f4168deeb | ||
|
|
c66f9a1e2a | ||
|
|
531a32e394 | ||
|
|
04ea39607d | ||
|
|
6edc542ea5 | ||
|
|
e087ba9933 | ||
|
|
48daaf7ce3 | ||
|
|
5dec0256bc |
No files matched your search
@@ -4,16 +4,17 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>World English Bible Updated</title>
|
<title>World English Bible Updated</title>
|
||||||
<link rel="stylesheet" href="css/bootstrap.min.css">
|
|
||||||
<link rel="stylesheet" href="css/app.css">
|
<link rel="stylesheet" href="css/app.css">
|
||||||
<meta name="theme-color" content="#1a202c">
|
<meta name="theme-color" content="#1a202c">
|
||||||
|
<link rel="icon" href="icons/favicon.ico" sizes="16x16 32x32 48x48">
|
||||||
|
<link rel="icon" href="icons/favicon.svg" type="image/svg+xml">
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-body-tertiary">
|
<body>
|
||||||
|
|
||||||
<main class="boot container py-5 text-center">
|
<main class="boot">
|
||||||
<div class="spinner-border text-secondary mb-3" role="status" aria-hidden="true"></div>
|
<div class="spinner" role="status" aria-hidden="true"></div>
|
||||||
<p id="boot-status" class="text-body-secondary"></p>
|
<p id="boot-status"></p>
|
||||||
<noscript><p class="alert alert-warning d-inline-block">This app builds its
|
<noscript><p class="boot-warning">This app builds its
|
||||||
pages on the device and needs JavaScript.</p></noscript>
|
pages on the device and needs JavaScript.</p></noscript>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@
|
|||||||
// worker, so a device that cannot install one has nothing to read here --
|
// worker, so a device that cannot install one has nothing to read here --
|
||||||
// and a spinner that turns forever says less than the reason does.
|
// and a spinner that turns forever says less than the reason does.
|
||||||
function fail(why) {
|
function fail(why) {
|
||||||
var spinner = document.querySelector('.boot .spinner-border');
|
var spinner = document.querySelector('.boot .spinner');
|
||||||
if (spinner) spinner.remove();
|
if (spinner) spinner.remove();
|
||||||
status(why);
|
status(why);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,502 @@
|
|||||||
:root {
|
/* Colours and type for the whole app. The values are the ones Bootstrap
|
||||||
--bs-body-font-family: Georgia, "Iowan Old Style", "Palatino Linotype",
|
gave the page before it was taken out, so nothing shifts. */
|
||||||
"Times New Roman", serif;
|
/* Variable fonts, one file per style covering weights 400 to 800. They are
|
||||||
|
cut down to Latin, Greek and punctuation; Hebrew falls back to the next
|
||||||
|
font in the stack. */
|
||||||
|
@font-face {
|
||||||
|
font-family: "EB Garamond";
|
||||||
|
src: url("../fonts/EBGaramond.woff2") format("woff2");
|
||||||
|
font-weight: 400 800;
|
||||||
|
font-style: normal;
|
||||||
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "EB Garamond";
|
||||||
|
src: url("../fonts/EBGaramond-Italic.woff2") format("woff2");
|
||||||
|
font-weight: 400 800;
|
||||||
|
font-style: italic;
|
||||||
|
font-display: swap;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--font-body: "EB Garamond", Georgia, "Iowan Old Style", "Palatino Linotype",
|
||||||
|
"Times New Roman", serif;
|
||||||
|
--text: #212529;
|
||||||
|
--text-muted: rgb(33 37 41 / .75);
|
||||||
|
--background: #f8f9fa;
|
||||||
|
--link: #0d6efd;
|
||||||
|
--link-hover: #0a58ca;
|
||||||
|
--focus: #0d6efd;
|
||||||
|
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
:root { scroll-behavior: smooth; }
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after { box-sizing: border-box; }
|
||||||
|
|
||||||
|
/* flow-root keeps main's top margin inside the body. Let through, it moves
|
||||||
|
the body's top edge down the page, and htmx scrolls a boosted page to that
|
||||||
|
edge, not to the very top. EB Garamond's x-height is a fifth smaller than
|
||||||
|
Georgia's, so it is set a size up to read the same. */
|
||||||
|
body {
|
||||||
|
display: flow-root;
|
||||||
|
margin: 0;
|
||||||
|
font-family: var(--font-body);
|
||||||
|
font-size: 1.1875rem;
|
||||||
|
line-height: 1.55;
|
||||||
|
color: var(--text);
|
||||||
|
background: var(--background);
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
margin: 0 0 .5rem;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Headings grow with the viewport up to their full size on a wide screen. */
|
||||||
|
h1 { font-size: calc(1.375rem + 1.5vw); }
|
||||||
|
h2 { font-size: calc(1.325rem + .9vw); }
|
||||||
|
h3 { font-size: calc(1.3rem + .6vw); }
|
||||||
|
h4 { font-size: calc(1.275rem + .3vw); }
|
||||||
|
h5 { font-size: 1.25rem; }
|
||||||
|
h6 { font-size: 1rem; }
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
h1 { font-size: 2.5rem; }
|
||||||
|
h2 { font-size: 2rem; }
|
||||||
|
h3 { font-size: 1.75rem; }
|
||||||
|
h4 { font-size: 1.5rem; }
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
ul,
|
||||||
|
ol { margin: 0 0 1rem; }
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol { padding-left: 2rem; }
|
||||||
|
|
||||||
|
:is(ul, ol) :is(ul, ol) { margin-bottom: 0; }
|
||||||
|
|
||||||
|
/* Footnote callers sit above the line without pushing it apart. */
|
||||||
|
sup {
|
||||||
|
position: relative;
|
||||||
|
top: -.5em;
|
||||||
|
font-size: .75em;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a { color: var(--link); }
|
||||||
|
a:hover { color: var(--link-hover); }
|
||||||
|
|
||||||
|
/* The frame's measures, shared by the sidebar and the button that opens it
|
||||||
|
below a laptop, in the Schuil tiles' units as on the index. A schuil-10
|
||||||
|
sits in each corner, and brass runs along each side between them, its two
|
||||||
|
strokes in line with the corner's arm, 8 and 34 units in from the edge,
|
||||||
|
and standing off from the tiles as the index's brass does. The unit is
|
||||||
|
the index's at its full size, on every screen. */
|
||||||
|
.sidebar-shell {
|
||||||
|
--u: .22px;
|
||||||
|
--corner: calc(var(--u) * 150);
|
||||||
|
--stroke: calc(var(--u) * 8);
|
||||||
|
--outer: calc(var(--u) * 8);
|
||||||
|
--inner: calc(var(--u) * 34);
|
||||||
|
--run: calc(100% - var(--corner) * 2);
|
||||||
|
--corners:
|
||||||
|
url("../ornaments/schuil-10-tl.svg") left top / var(--corner) no-repeat,
|
||||||
|
url("../ornaments/schuil-10-tr.svg") right top / var(--corner) no-repeat,
|
||||||
|
url("../ornaments/schuil-10-bl.svg") left bottom / var(--corner) no-repeat,
|
||||||
|
url("../ornaments/schuil-10-br.svg") right bottom / var(--corner) no-repeat;
|
||||||
|
--margin: 1.5rem;
|
||||||
|
--fab: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Over the text along the left edge, so the reading column stays centred on
|
||||||
|
the screen, with the same margin on every side. The dialog's own box has
|
||||||
|
no padding: a click that lands on it rather than on what is inside is a
|
||||||
|
click on the backdrop. */
|
||||||
|
.sidebar {
|
||||||
|
position: fixed;
|
||||||
|
inset: var(--margin) auto var(--margin) var(--margin);
|
||||||
|
z-index: 1;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
max-height: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: var(--text);
|
||||||
|
border: 0;
|
||||||
|
background:
|
||||||
|
var(--corners),
|
||||||
|
linear-gradient(#000 0 0) var(--corner) var(--outer) / var(--run) var(--stroke) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) var(--corner) var(--inner) / var(--run) var(--stroke) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) var(--corner) calc(100% - var(--outer)) / var(--run) var(--stroke) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) var(--corner) calc(100% - var(--inner)) / var(--run) var(--stroke) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) var(--outer) var(--corner) / var(--stroke) var(--run) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) var(--inner) var(--corner) / var(--stroke) var(--run) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) calc(100% - var(--outer)) var(--corner) / var(--stroke) var(--run) no-repeat,
|
||||||
|
linear-gradient(#000 0 0) calc(100% - var(--inner)) var(--corner) / var(--stroke) var(--run) no-repeat,
|
||||||
|
var(--background);
|
||||||
|
transition: opacity .15s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Where the reading column has a margin beside it, the sidebar fills it, the
|
||||||
|
gap to the text the same as the margin round the rest. */
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
.sidebar {
|
||||||
|
width: calc((100% - var(--measure)) / 2 + var(--gutter) - var(--margin) * 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The title over a rule, then the selects, then the link back to the index
|
||||||
|
pushed down to the foot of the frame by the row between that takes up the
|
||||||
|
rest. */
|
||||||
|
.sidebar-body {
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: auto auto auto 1fr auto;
|
||||||
|
height: 100%;
|
||||||
|
padding: calc(var(--corner) + 1rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-title {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A hairline, like the selects' boxes. */
|
||||||
|
.sidebar-rule {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 1rem;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-index {
|
||||||
|
grid-row: 5;
|
||||||
|
justify-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar::backdrop { background: rgb(0 0 0 / .3); }
|
||||||
|
|
||||||
|
/* Away from the top it fades out unless it is under the pointer. Focus does
|
||||||
|
not hold it: a select keeps focus after it is used, which would leave the
|
||||||
|
sidebar over the text. */
|
||||||
|
.scrolled .sidebar:not(:modal, :hover) { opacity: 0; }
|
||||||
|
|
||||||
|
/* Below a laptop the sidebar waits behind a button in the corner, a box
|
||||||
|
marked out by the frame's four corners. Opened, the frame grows out of it and a copy of it, which
|
||||||
|
closes the dialog, stands in for the frame's bottom right corner. */
|
||||||
|
.sidebar-fab {
|
||||||
|
display: none;
|
||||||
|
width: var(--fab);
|
||||||
|
height: var(--fab);
|
||||||
|
padding: 0;
|
||||||
|
color: #000;
|
||||||
|
border: 0;
|
||||||
|
background: var(--corners), var(--background);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-fab::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
width: 60%;
|
||||||
|
height: 60%;
|
||||||
|
margin: auto;
|
||||||
|
background: currentColor;
|
||||||
|
mask: url("../ornaments/mural-311a.svg") center / contain no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-fab:focus-visible {
|
||||||
|
outline: 2px solid var(--focus);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-open {
|
||||||
|
position: fixed;
|
||||||
|
right: max(var(--margin), env(safe-area-inset-right));
|
||||||
|
bottom: max(var(--margin), env(safe-area-inset-bottom));
|
||||||
|
z-index: 1;
|
||||||
|
transition: opacity .15s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* It fades out away from the top of the page but can still be tapped. Only a
|
||||||
|
real pointer brings it back on hover: a touch screen keeps :hover on
|
||||||
|
whatever was last tapped, which would leave it showing. */
|
||||||
|
.scrolled .sidebar-open:not(:focus-visible) { opacity: 0; }
|
||||||
|
|
||||||
|
@media (hover: hover) {
|
||||||
|
.scrolled .sidebar-open:hover { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-close {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.sidebar-shell { --margin: 1rem; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Without a margin beside the reading column to hold the sidebar, it waits
|
||||||
|
behind the button. Opened, it fills the screen less the margin all round,
|
||||||
|
clear of a notch or home indicator. */
|
||||||
|
@media (max-width: 1199.98px) {
|
||||||
|
.sidebar:not(:modal) { display: none; }
|
||||||
|
.sidebar-open,
|
||||||
|
.sidebar:modal .sidebar-close { display: block; }
|
||||||
|
|
||||||
|
.sidebar:modal {
|
||||||
|
inset: max(var(--margin), env(safe-area-inset-top))
|
||||||
|
max(var(--margin), env(safe-area-inset-right))
|
||||||
|
max(var(--margin), env(safe-area-inset-bottom))
|
||||||
|
max(var(--margin), env(safe-area-inset-left));
|
||||||
|
width: auto;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Heads that lead the brass into the button's box: schuil-07 along the
|
||||||
|
foot, its curl against the box, and schuil-08 turned to run up the side
|
||||||
|
from the box's head. Each stands off the brass as schuil-13's heads
|
||||||
|
stand off its bar: its foot stroke, 10 units up the tile, clears the
|
||||||
|
brass's inner stroke by about 17 units. */
|
||||||
|
.sidebar:modal::before,
|
||||||
|
.sidebar:modal::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
width: calc(var(--u) * 300);
|
||||||
|
height: calc(var(--u) * 100);
|
||||||
|
background: #000;
|
||||||
|
mask-size: 100% 100%;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar:modal::before {
|
||||||
|
right: var(--fab);
|
||||||
|
bottom: calc(var(--u) * 50);
|
||||||
|
mask-image: url("../ornaments/schuil-07.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Turned a quarter left about its foot's left end, which comes to sit at
|
||||||
|
the box's head, its foot to the right. */
|
||||||
|
.sidebar:modal::after {
|
||||||
|
right: calc(var(--u) * (50 - 300));
|
||||||
|
bottom: var(--fab);
|
||||||
|
transform-origin: 0 100%;
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
mask-image: url("../ornaments/schuil-08.svg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Each label on the left with its select set flush to the right. */
|
||||||
|
.reference {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr auto;
|
||||||
|
align-items: center;
|
||||||
|
gap: .5rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A plain box in a hairline, square like the frame, with a small black
|
||||||
|
triangle in place of the system's arrow. */
|
||||||
|
.reference select {
|
||||||
|
appearance: none;
|
||||||
|
padding: .25rem 1.75rem .25rem .5rem;
|
||||||
|
font: inherit;
|
||||||
|
color: #000;
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-radius: 0;
|
||||||
|
background:
|
||||||
|
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z'/%3E%3C/svg%3E")
|
||||||
|
right .5rem center / .625rem no-repeat,
|
||||||
|
var(--background);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reference select:focus-visible {
|
||||||
|
outline: 2px solid var(--focus);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* One reading column: the full width less a gutter on anything narrower than
|
||||||
|
a laptop, and a measure that grows a step with the screen beyond that. The
|
||||||
|
sidebar sizes itself from the same two values. */
|
||||||
|
:root { --gutter: .75rem; }
|
||||||
|
|
||||||
|
main {
|
||||||
|
margin: 1.5rem auto;
|
||||||
|
padding: 0 var(--gutter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
:root { --measure: 760px; }
|
||||||
|
main { max-width: var(--measure); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1400px) {
|
||||||
|
:root { --measure: 880px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only A-Z and a-z: the compiler puts a drop cap on a chapter only when it
|
||||||
|
opens on a letter. */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Day Leaf Initials";
|
||||||
|
src: url("../fonts/DayLeafInitials.woff2") format("woff2");
|
||||||
|
font-display: swap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Both of these are links to their own id. They keep the text colour they
|
||||||
|
had as plain numbers, since an underlined blue verse number in the middle
|
||||||
|
of a sentence reads as part of the text. */
|
||||||
|
.v,
|
||||||
|
.chapter-number a {
|
||||||
|
color: var(--text);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Garamond's numbers are old-style by default; in a superscript or beside
|
||||||
|
the flourishes they sink below the line, so these use lining ones. */
|
||||||
|
.v,
|
||||||
|
.chapter-number { font-variant-numeric: lining-nums; }
|
||||||
|
|
||||||
.v {
|
.v {
|
||||||
font-size: .7em;
|
font-size: .7em;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
vertical-align: super;
|
vertical-align: super;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
margin-right: .15em;
|
margin-right: .15em;
|
||||||
color: var(--bs-secondary-color);
|
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v:focus-visible {
|
.v:focus-visible,
|
||||||
outline: 2px solid var(--bs-primary);
|
.chapter-number a:focus-visible {
|
||||||
|
outline: 2px solid var(--focus);
|
||||||
outline-offset: 2px;
|
outline-offset: 2px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chapter-number {
|
/* Three lines deep. The verse number it replaces is still there for its id
|
||||||
|
and the keyboard, as the chapter number above already says where verse 1
|
||||||
|
is -- the way a printed Bible drops it. */
|
||||||
|
.dropcap {
|
||||||
|
float: left;
|
||||||
|
font-family: "Day Leaf Initials", var(--font-body);
|
||||||
|
font-size: 5em;
|
||||||
|
line-height: .8;
|
||||||
|
margin: .1em .08em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The first line pulled in closer to the letter than the lines below it, so
|
||||||
|
the rest of the first word reads as part of it. .chapter makes this beat
|
||||||
|
the list's and the poetry's own first-line indents. */
|
||||||
|
.chapter :is(p, li):has(.dropcap) { text-indent: -.4em; }
|
||||||
|
|
||||||
|
/* The rest of the first line in small caps, as a lead-in from the initial.
|
||||||
|
The letter can sit inside a span, such as .wj. */
|
||||||
|
:is(p, li):has(.dropcap)::first-line {
|
||||||
|
font-variant: small-caps;
|
||||||
|
letter-spacing: .05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v:has(+ .dropcap):not(:focus-visible) {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip-path: inset(50%);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The book's title, centred with room around it. --u shrinks with the header
|
||||||
|
on a phone. */
|
||||||
|
.book-header {
|
||||||
|
container-type: inline-size;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
margin: 10rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-header h1 {
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: .6em 1.2em;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.15;
|
||||||
|
text-wrap: balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The lines above and below the name itself, such as "The First Book of
|
||||||
|
Moses, Commonly Called", on lines of their own in small caps. */
|
||||||
|
.book-header :is(.mt1, .mt2, .mt3, .mt4) {
|
||||||
|
display: block;
|
||||||
|
font-size: .45em;
|
||||||
|
font-variant: small-caps;
|
||||||
|
letter-spacing: .08em;
|
||||||
|
margin: .3em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-header .mt { display: block; }
|
||||||
|
|
||||||
|
/* Centred between two flourishes (Group L 49), the left one mirrored so
|
||||||
|
their curls point in at the number. The index's testaments are set the
|
||||||
|
same way. */
|
||||||
|
.chapter-number,
|
||||||
|
.index h2 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: .4em;
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: var(--bs-secondary-color);
|
color: var(--text);
|
||||||
margin: 2rem 0 .75rem;
|
margin: 5rem 0 .75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter-number::before,
|
||||||
|
.chapter-number::after,
|
||||||
|
.index h2::before,
|
||||||
|
.index h2::after {
|
||||||
|
content: "";
|
||||||
|
flex: none;
|
||||||
|
width: 3.2em;
|
||||||
|
height: .8em;
|
||||||
|
/* Flex centres on the line box. In EB Garamond its middle is .35em above
|
||||||
|
the baseline and a lining numeral's is .33em, so this lowers the
|
||||||
|
flourish the difference to sit level with the number. */
|
||||||
|
translate: 0 .05em;
|
||||||
|
background: currentColor;
|
||||||
|
mask: url("../ornaments/group-l-49.svg") center / contain no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chapter-number::before,
|
||||||
|
.index h2::before { transform: scaleX(-1); }
|
||||||
|
|
||||||
|
/* The export marks these up as list items but hides the marker, indenting the
|
||||||
|
first line instead, which is how a printed Bible sets them -- Ezra 10:18-44
|
||||||
|
and the like are prose, not a bulleted list. Only the glossary and front
|
||||||
|
matter items it actually marks, with a square. The list markup is worth
|
||||||
|
keeping for what it means; the bullet is not. */
|
||||||
|
.list {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .li { text-indent: 2em; }
|
||||||
|
|
||||||
|
.list .ili {
|
||||||
|
list-style: square;
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.poetry { margin-bottom: 1rem; }
|
.poetry { margin-bottom: 1rem; }
|
||||||
@@ -35,35 +508,70 @@
|
|||||||
.poetry .line[data-indent="2"] { padding-left: 3em; }
|
.poetry .line[data-indent="2"] { padding-left: 3em; }
|
||||||
.poetry .line[data-indent="3"] { padding-left: 4.5em; }
|
.poetry .line[data-indent="3"] { padding-left: 4.5em; }
|
||||||
|
|
||||||
|
/* A poetry line's indent is padding, which a float covers. Each line after
|
||||||
|
the drop cap becomes its own block beside the letter, so its indent counts
|
||||||
|
from the letter's edge; the drop cap's own line has no indent of its own. */
|
||||||
|
.poetry .line:has(.dropcap) { padding-left: 0; }
|
||||||
|
.poetry .line:not(:has(.dropcap)) { display: flow-root; }
|
||||||
|
|
||||||
.d {
|
.d {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: var(--bs-secondary-color);
|
color: var(--text-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footnotes {
|
.footnotes {
|
||||||
font-size: .875rem;
|
font-size: .875em;
|
||||||
color: var(--bs-secondary-color);
|
color: var(--text-muted);
|
||||||
}
|
}
|
||||||
.footnotes-title { font-size: 1rem; }
|
.footnotes-title { font-size: 1em; }
|
||||||
.marker { font-weight: 700; }
|
.marker { font-weight: 700; }
|
||||||
|
|
||||||
.noteref,
|
.noteref,
|
||||||
.marker { font-variant-emoji: text; }
|
.marker { font-variant-emoji: text; }
|
||||||
|
|
||||||
.chapter,
|
.chapter,
|
||||||
.v { scroll-margin-top: 4.5rem; }
|
.v { scroll-margin-top: 1rem; }
|
||||||
|
|
||||||
.reference .form-select {
|
|
||||||
width: auto;
|
|
||||||
padding-right: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.index ul {
|
.index ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index .count { display: none; }
|
/* A testament's name is longer than a chapter number, so on a phone it
|
||||||
|
keeps to one line and the flourishes narrow to make room. */
|
||||||
|
.index h2 { white-space: nowrap; }
|
||||||
|
|
||||||
|
.index h2::before,
|
||||||
|
.index h2::after { flex-shrink: 1; }
|
||||||
|
|
||||||
|
/* Each book's chapter count set to the right, led to by a row of periods.
|
||||||
|
The count has a column three figures wide, and the periods run from its
|
||||||
|
side, so they line up from row to row. */
|
||||||
|
.index li {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index .count {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 3ch;
|
||||||
|
justify-items: end;
|
||||||
|
align-items: baseline;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
font-variant-numeric: tabular-nums;
|
||||||
|
}
|
||||||
|
|
||||||
|
.index .count::before {
|
||||||
|
content: ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .";
|
||||||
|
justify-self: stretch;
|
||||||
|
min-width: 0;
|
||||||
|
margin: 0 .4em;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
direction: rtl;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
.book .p,
|
.book .p,
|
||||||
.book .m,
|
.book .m,
|
||||||
@@ -80,7 +588,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
@media (max-width: 767.98px) {
|
||||||
.book { line-height: 1.45; }
|
body { font-size: 1.0625rem; }
|
||||||
|
.book { line-height: 1.5; }
|
||||||
.book .p,
|
.book .p,
|
||||||
.book .m,
|
.book .m,
|
||||||
.book .pi,
|
.book .pi,
|
||||||
@@ -97,3 +606,182 @@
|
|||||||
-webkit-hyphens: manual;
|
-webkit-hyphens: manual;
|
||||||
hyphens: manual;
|
hyphens: manual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The index's frame, set in the Schuil tiles' own units, a pica to 100. A
|
||||||
|
unit is the specimen's size where the reading column is at its narrowest
|
||||||
|
on a laptop, and smaller below that, so the band of heads under the title
|
||||||
|
always fits with a little brass either side. */
|
||||||
|
.home { container-type: inline-size; }
|
||||||
|
|
||||||
|
.schuil {
|
||||||
|
--u: min(.22px, 100cqw / 2700);
|
||||||
|
position: relative;
|
||||||
|
min-height: calc(var(--u) * 2600);
|
||||||
|
padding: calc(var(--u) * 1600) calc(var(--u) * 300) calc(var(--u) * 450);
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-ornaments {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
color: #000;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-half {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0 50% 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-right {
|
||||||
|
inset: 0 0 0 50%;
|
||||||
|
transform: scaleX(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A tile goes where the specimen put it: the point (--x, --y) from the
|
||||||
|
corner it hangs from, then turned by --m about its own corner, as an SVG
|
||||||
|
transform would. */
|
||||||
|
.schuil-tile {
|
||||||
|
position: absolute;
|
||||||
|
left: calc(var(--ax, 0) * 100%);
|
||||||
|
top: calc(var(--ay, 0) * 100%);
|
||||||
|
width: calc(var(--w) * var(--u));
|
||||||
|
height: calc(var(--h) * var(--u));
|
||||||
|
transform-origin: 0 0;
|
||||||
|
transform: translate(calc(var(--x) * var(--u)), calc(var(--y) * var(--u)))
|
||||||
|
matrix(var(--m, 1, 0, 0, 1, 0, 0));
|
||||||
|
background: currentColor;
|
||||||
|
mask-position: center;
|
||||||
|
mask-size: 100% 100%;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-01 { --w: 50; --h: 50; mask-image: url("../ornaments/schuil-01.svg"); }
|
||||||
|
.schuil-06 { --w: 100; --h: 100; mask-image: url("../ornaments/schuil-06.svg"); }
|
||||||
|
.schuil-10 { --w: 150; --h: 150; mask-image: url("../ornaments/schuil-10.svg"); }
|
||||||
|
.schuil-11 { --w: 150; --h: 125; mask-image: url("../ornaments/schuil-11.svg"); }
|
||||||
|
.schuil-12 { --w: 150; --h: 125; mask-image: url("../ornaments/schuil-12.svg"); }
|
||||||
|
.schuil-13 { --w: 250; --h: 300; mask-image: url("../ornaments/schuil-13.svg"); }
|
||||||
|
.schuil-14 { --w: 300; --h: 600; mask-image: url("../ornaments/schuil-14.svg"); }
|
||||||
|
.schuil-15 { --w: 350; --h: 350; mask-image: url("../ornaments/schuil-15.svg"); }
|
||||||
|
.schuil-16 { --w: 350; --h: 700; mask-image: url("../ornaments/schuil-16.svg"); }
|
||||||
|
.schuil-07 { --w: 300; --h: 100; mask-image: url("../ornaments/schuil-07.svg"); }
|
||||||
|
.schuil-08 { --w: 300; --h: 100; mask-image: url("../ornaments/schuil-08.svg"); }
|
||||||
|
.schuil-brass-v { --w: 50; --h: 100; mask-image: url("../ornaments/schuil-brass-v.svg"); }
|
||||||
|
|
||||||
|
/* Brass rule that stretches: two 8 unit strokes in a six point body, drawn
|
||||||
|
as gradients so they run any length without a seam. A horizontal run
|
||||||
|
stands in from either side by --x, or by --r on the right; a vertical one
|
||||||
|
from the head by --y and the foot by --b. */
|
||||||
|
.schuil-rule {
|
||||||
|
position: absolute;
|
||||||
|
left: calc(var(--x) * var(--u));
|
||||||
|
right: calc(var(--r, var(--x)) * var(--u));
|
||||||
|
top: calc(var(--ay, 0) * 100% + var(--y) * var(--u));
|
||||||
|
height: calc(var(--u) * 50);
|
||||||
|
background:
|
||||||
|
linear-gradient(currentColor 0 0) 0 calc(var(--u) * 8) / 100% calc(var(--u) * 8) no-repeat,
|
||||||
|
linear-gradient(currentColor 0 0) 0 calc(var(--u) * 34) / 100% calc(var(--u) * 8) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-rule-v {
|
||||||
|
position: absolute;
|
||||||
|
left: calc(var(--x) * var(--u));
|
||||||
|
top: calc(var(--y) * var(--u));
|
||||||
|
bottom: calc(var(--b) * var(--u));
|
||||||
|
width: calc(var(--u) * 50);
|
||||||
|
background:
|
||||||
|
linear-gradient(currentColor 0 0) calc(var(--u) * 8) 0 / calc(var(--u) * 8) 100% no-repeat,
|
||||||
|
linear-gradient(currentColor 0 0) calc(var(--u) * 34) 0 / calc(var(--u) * 8) 100% no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set in the panel at the head, the panel's inside 2100 units by 400 at
|
||||||
|
the specimen's size. */
|
||||||
|
.schuil-title {
|
||||||
|
position: absolute;
|
||||||
|
inset: calc(var(--u) * 475) calc(var(--u) * 475) auto;
|
||||||
|
height: calc(var(--u) * 400);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 0;
|
||||||
|
font-size: calc(var(--u) * 220);
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: .06em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* On a phone the frame is only the panel round the title, moved up to the
|
||||||
|
head, at full width and full size. A pair of heads stands on it and
|
||||||
|
another hangs from it, each clear of the brass by about 17 units as the
|
||||||
|
sidebar's heads are. The title keeps to one line, smaller if the panel is
|
||||||
|
narrower than it. The space over the frame, with main's margin, matches
|
||||||
|
the space under it to the first testament: that one's 5rem margin and
|
||||||
|
the leading over its capitals. */
|
||||||
|
.schuil-crest { display: none; }
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.schuil {
|
||||||
|
--u: .22px;
|
||||||
|
min-height: 0;
|
||||||
|
margin-top: 4rem;
|
||||||
|
padding: calc(var(--u) * 700) 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-ornaments :is(.schuil-tile, .schuil-rule, .schuil-rule-v):not(.schuil-panel, .schuil-crest) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schuil-crest { display: block; }
|
||||||
|
.schuil-panel { margin: calc(var(--u) * -325) 0 0 calc(var(--u) * -425); }
|
||||||
|
.schuil-rule.schuil-panel { margin-right: calc(var(--u) * -425); }
|
||||||
|
.schuil-title {
|
||||||
|
inset: calc(var(--u) * 150) calc(var(--u) * 50) auto;
|
||||||
|
font-size: min(var(--u) * 220, (100cqw - var(--u) * 100) / 7);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-version {
|
||||||
|
margin: 3rem 0 .5rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-version p {
|
||||||
|
margin: .25rem 0 0;
|
||||||
|
font-size: .875em;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The page shown while the service worker installs. */
|
||||||
|
.boot {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 3rem .75rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.boot p { color: var(--text-muted); }
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
display: inline-block;
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
border: .25em solid #6c757d;
|
||||||
|
border-right-color: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin .75s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
to { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.boot .boot-warning {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1rem;
|
||||||
|
color: #664d03;
|
||||||
|
background: #fff3cd;
|
||||||
|
border: 1px solid #ffe69c;
|
||||||
|
border-radius: .375rem;
|
||||||
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
@charset "UTF-8";/*!
|
|
||||||
* Bootstrap v5.3.8 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2025 The Bootstrap Authors
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
||||||
*/:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherLine truncated
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||||
|
<title>Bible</title>
|
||||||
|
<rect width="512" height="512" fill="#1a202c"/>
|
||||||
|
<path d="M229 108h54v83h81v54h-81v159h-54V245h-81v-54h81z" fill="#fff"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 218 B |
@@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap v5.3.8 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
||||||
*/
|
|
||||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),t),s=t=>null==t?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),o=t=>{t.dispatchEvent(new Event(i))},r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),a=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,l=t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of p)t()}),p.push(e)):e()},_=(t,e=[],i=t)=>"function"==typeof t?t.call(...e):i,b=(t,e,n=!0)=>{if(!n)return void _(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),_(t))};e.addEventListener(i,a),setTimeout(()=>{r||o(e)},s)},v=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,A=/::\d+$/,E={};let T=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},O=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function k(t){const e=x(t);return t.uidEvent=e,E[e]=E[e]||{},E[e]}function L(t,e,i=null){return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===i)}function S(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return O.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=S(e,i,n);if(e in C){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=k(t),c=l[a]||(l[a]={}),h=L(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=x(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function $(t,e,i,n,s){const o=L(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&$(t,e,i,r.callable,r.delegationSelector)}function N(t){return t=t.replace(w,""),C[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=k(t),c=l[rLine truncated
|
|
||||||
@@ -11,12 +11,11 @@
|
|||||||
'page.njk',
|
'page.njk',
|
||||||
'book.njk',
|
'book.njk',
|
||||||
'index.njk',
|
'index.njk',
|
||||||
'bookmark.njk',
|
'home.njk',
|
||||||
|
'sidebar.njk',
|
||||||
'reference.njk',
|
'reference.njk',
|
||||||
'verses.njk',
|
'verses.njk',
|
||||||
'verse.njk',
|
|
||||||
'version.njk',
|
'version.njk',
|
||||||
'toast.njk',
|
|
||||||
'notice.njk'
|
'notice.njk'
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -69,7 +68,7 @@
|
|||||||
return render(name, {
|
return render(name, {
|
||||||
title: title,
|
title: title,
|
||||||
content: content,
|
content: content,
|
||||||
mark: chrome.mark,
|
sidebar: chrome.sidebar,
|
||||||
reference: chrome.reference
|
reference: chrome.reference
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 100" width="400" height="100" fill="currentColor"><path d="M59.8 3.8C59.4 3.9 57.9 4.1 56.4 4.3C54.6 4.5 52.7 5 51 5.6C49.5 6.2 47.2 7 45.8 7.4C41.2 8.9 39.7 9.8 31.7 16.3C28.6 18.8 28 19.8 24.8 27.1C24 29.1 22.9 31.7 22.4 32.8C19 40.2 20.1 56 24.4 63C25.2 64.2 26.4 66.3 27.1 67.5C27.9 69 29.2 70.6 30.6 72.2C31.9 73.5 33.4 75.3 34.1 76.1C34.9 77.1 35.7 77.9 36.8 78.5C41.2 80.9 42.8 82 44.7 83.6C47.9 86.2 49.8 87 57.2 88.7C60.8 89.5 61.4 89.6 64.9 89.6C67 89.6 70.5 89.7 72.6 89.9C77.8 90.4 79.7 90.4 83.9 89.8C85.8 89.6 89.9 89 93 88.6C96.1 88.1 99.8 87.5 101.2 87.1C107 85.6 110.1 87 111.4 91.7C112.6 95.8 113.1 96.2 116.1 96.2C120.5 96.2 130.5 90.5 136.9 84.4C139.9 81.5 142.2 80.9 146.4 82C147.5 82.3 149.2 82.5 150.1 82.5C151 82.5 152.9 82.8 154.3 83.1C158 84 159.8 83.9 166 82.2C169.5 81.3 170.6 78.4 168.9 74.5C166.8 69.6 165.4 54.5 166.6 50.1C167 48.7 168.7 44.9 169.8 43.1C170.3 42.3 170.9 40.9 171.2 40C172 37.7 172.8 36.3 174.2 34.5C174.8 33.6 175.9 31.9 176.5 30.7C177.9 27.6 178.9 26.4 181.2 24.6C182.2 23.8 183.7 22.7 184.4 22.1C188.9 18.4 197.6 14.2 205.3 12C207.2 11.4 209.8 10.6 211 10.2C217.2 8 231.5 8.1 240.2 10.3C243 11 249.2 13.9 251.5 15.4C252.7 16.2 254.9 17.6 256.5 18.3C261.5 21 266.8 25 267.8 26.9C268.6 28.3 268.5 31.4 267.6 33.1C266.8 34.8 262.5 39.4 261 40.1C257.4 41.9 252 41.1 248.7 38.2C247.7 37.4 246.5 36.7 245.4 36.3C244.4 35.9 242.5 35 241.2 34.2C239.9 33.5 238.2 32.7 237.4 32.4C236.7 32.1 234.7 31.2 233 30.5C231.4 29.7 228.5 28.7 226.7 28.2C224.9 27.7 222.1 26.8 220.4 26.2C216.3 24.8 214.9 24.8 210.3 25.8C204.7 27 201.5 28 197.9 29.7C196 30.6 194.5 31.4 194.4 31.4C193.2 31.4 188.3 35.9 186.7 38.6C186 39.8 184.8 41.8 184 43C182.4 45.4 182.2 46.2 181.7 50.3C180.8 58.6 183 66.1 188.1 72.2C190.5 74.9 192.1 76.1 197.1 78.7C201.3 81 201.3 81 208 81C214.5 81.1 214.7 81.1 217.5 80.4C225.1 78.5 226.4 78 228.9 75.8C229.8 74.9 231 73.9 231.6 73.4C232.3 73 233.5 71.9 234.5 71.1C235.4 70.3 236.9 69.3 237.8 68.7C238.7 68.2 240.1 67.2 240.9 66.5C241.7 65.8 243.2 64.5 244.4 63.6C245.5 62.7 247.3 61.1 248.5 60C254.9 54 262.5 54.8 264.9 61.7C265.5 63.2 265.8 63.6 267.8 65.5C269.6 67.1 270.4 68.1 271.2 69.5C272.9 72.6 273.6 73.4 275.2 74.1C276 74.5 277.7 75.3 279 75.9C284.2 78.2 287.7 78.4 291.6 76.3C294.8 74.7 296.4 73 298 69.9C299.5 67 299.5 67.6 297.2 58.2C295 49.6 293.3 45.6 290 41.9C282.3 33.1 282.1 30 288.7 25.7C289.8 25 291.4 23.8 292.1 23.2C292.9 22.5 294.3 21.6 295.3 21.2C296.2 20.7 298.4 19.7 300.1 18.9C303.5 17.1 313.2 13.8 317.8 12.9C320.3 12.4 320.5 12.4 322.5 12.8C327.3 13.7 331.1 15.1 335.4 17.4C339.3 19.5 341.1 21 344.1 24.9C346.9 28.5 346.8 28.2 347.6 33.9C348.4 40.4 348.3 41.3 346.5 45.9C344.6 50.9 344.5 51 342.9 52.7C342.2 53.6 341.2 55 340.7 56.1C338.8 59.9 333.8 63 326.8 64.4C325.9 64.5 324.3 65.1 323.1 65.6C320.7 66.7 319.3 67 315.4 67.4C310.5 67.8 309.7 68.5 310.6 71.7C311.2 73.6 311.3 73.8 313 75.3C314.2 76.5 315 77.4 315.8 78.9C317.1 81.3 317.4 81.7 320.7 83.9C322.1 84.9 323.8 86 324.4 86.4C326.9 88.1 328 88.4 333.2 88.5C338.6 88.6 340 88.4 346.5 86.2C351.4 84.5 351.8 84.4 353.4 84.8C355 85.2 357.1 87.3 358.6 90.3C360.1 93.1 363.3 95.6 364.8 95.3C366 95 369.6 92.2 370.3 91.1C375.5 82.9 375.4 83.1 377.2 73.7C378.2 68.8 378.2 68.8 378 63.2C377.8 52 377.9 51 378.8 47.3C380.6 39.6 379.3 31 375.7 27.1C374.5 25.9 373.1 23.8 371.7 21.5C369.9 18.4 369.4 17.7 368.1 16.8C367.3 16.1 365.8 14.8 364.8 13.8C362.8 11.7 361.2 10.7 358.2 9.4C357.1 8.9 355.2 7.8 354.1 7.1C352.7 6.1 351.8 5.6 351 5.5C350.4 5.5 348.6 5.2 346.9 5C342.1 4.4 339.7 4.4 329.2 4.6C319.2 4.8 319.2 4.8 316.8 5.6C310.3 7.7 309 8.2 307.4 9.4C306.2 10.3 304.9 10.9 302.6 11.7C298.5 13.1 296.3 14.2 293.7 15.9C292.5 16.6 290.5 17.8 289.3 18.4C288 19.1 285.9 20.3 284.6 21.1C280 24 276.1 24.3 272.2 22.1C270.1 21 266.1 18.4 263 16.3C258.5 13.2 257.7 12.8 255.2 11.9C253.9 11.5 252.2 10.8 251.4 10.3C250.6 9.8 249.5 9.1 249.1 8.8C248.2 8.3 242.9 6.2 240.4 5.4C238.6 4.8 219 3.8 208.1 3.8C203.3 3.8 198.2 4.8 191.3 7C189.4 7.6 187 8.2 186 8.4C184.5 8.6 183.6 8.8 182 9.8C180.8 10.4 178.8 11.2 177.6 11.6C176.3 11.9 174.7 12.4 174 12.6C173.4 12.8 172.2 13.4 171.5 14C169.8 15.2 168.5 15.9 166.5 16.4C165.2 16.7 164.3 17.2 162.8 18.3C160.9 19.7 159.7 20.2 157.3 20.6C156.8 20.7 155.9 21.3 155.3 21.9C154.7 22.5 153.4 23.3 152.5 23.8C150.9 24.6 149.3 26.1 146.7 29.2C146.2 29.8 144.9 31 143.9 31.8C141.8 33.4 139.1 35.7 136.1 38.6C135.1 39.6 133.6 40.7 132.9 41C131.9 41.5 131.5 42 130.6 43.4C129.3 45.6 128.2 46.5 125.8 47.4C123.6 48.1 123.3 48.3 122.5 49.5C121.6 50.9 120.5 52 119 53.1C118.2 53.7 116.7 55 115.5 56.1C113 58.5 112 59.1 109.9 59.9C108.6 60.3 107.9 60.8 106.4 62.2C105.3 63.2 103.8 64.4 102.8 64.9C101.9 65.4 100.4 66.5 99.3 67.3C98.3 68 96.4 69.2 95.1 69.8C93.7 70.5 91.6 71.7 90.3 72.5C87.5 74.3 85.9 74.9 79.7 76.4C69.2 78.9 64.5 79.2 57.4 77.8C47.4 75.8 41.6 73.3 38 69.4C37.2 68.5 35.7 67.2 34.8 66.6C31.5 64.5 30.8 63.5 28.5 57.8C26.3 52.4 26.1 51.5 26.4 43.4C26.6 33.5 27.5 31.4 34.5Line truncated
|
||||||
|
After Width: | Height: | Size: 8.8 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 450 450" width="450" height="450" fill="currentColor"><path d="M222.2 28.1C219.6 28.8 218.4 30.3 216.5 35.7C216.2 36.5 215.3 38 214.5 39C213.8 40.1 212.9 41.4 212.5 42.1C212.2 42.8 210.9 44.3 209.7 45.5C205.1 49.8 202.6 53 201.8 55.4C201.4 56.7 200.7 58.4 200.2 59.3C199.3 61.5 199.2 63.9 200.1 66.8C201.7 71.9 200.1 75.4 194.9 77.7C193.6 78.2 192.1 79.1 191.5 79.5C190.4 80.3 186.8 84.9 186 86.5C185.7 87 184.4 88.5 183 90C180.5 92.5 180.2 92.7 176.3 94.4C174.1 95.3 171.3 96.3 170.2 96.4C167.9 96.8 167.1 97.3 166.5 98.9C165.8 100.6 166.4 102 168.7 104.6C169.9 105.9 170.9 107.1 170.9 107.2C170.9 107.4 172 108.3 173.5 109.2C176.6 111.4 178.9 111.9 184.4 111.9C187.5 111.9 188.8 112.1 190.3 112.6C191.4 112.9 193.5 113.4 195.1 113.6C199.2 114.1 200.4 115.1 200 117.9C199.7 120.5 198.2 121.7 194.7 122C192.2 122.2 191.6 122.4 189.9 123.5C188.8 124.2 187 125 186 125.3C182.9 126.1 179.2 128.3 175 131.7C172.3 133.8 169.6 133.5 169.6 131.1C169.6 128.5 172.5 121.7 175 118.7C176.5 116.9 176.6 115.9 175.4 114.1C174.3 112.4 174.3 112.4 171.1 111.4C168.5 110.5 168 110.5 162.2 110.5C154.9 110.4 150.6 111.2 147.4 113.1C143.7 115.3 142.7 115 138.8 111C136.9 109 135.8 108.1 134.6 107.7C133.8 107.4 131.9 106.6 130.4 106C128.2 105.2 127.1 104.9 124.4 104.8C121.8 104.6 120.2 104.3 117.3 103.4C109.9 101 108.1 102.3 109 109.2C109.3 111.4 109.3 112.9 109 115.4C108.5 119.7 108.8 128 109.5 130.3C110.1 132 110.6 132.9 112.6 135.3C114.2 137.3 114.1 141 112.4 144.7C109.2 151.7 108.5 155.7 109.4 163.6C109.6 166 109.8 166.6 110.6 167.4C112.9 169.8 114.2 169.9 119.6 167.7C123.2 166.2 127.6 165.4 132.8 165.3C136.3 165.2 136.7 165.6 135.2 168.5C133.4 172.1 129.2 181.9 128.3 184.5C122.8 201.5 123.9 200 117.2 200C109.9 200 104.3 199.2 102.4 198.1C99.9 196.5 98.9 194.2 99.1 190.6C99.4 186.3 99.9 183.4 101 178.6C102.3 173.3 102.3 171.3 100.7 166.4C98.4 159.3 94 155.1 90.5 156.8C89.5 157.3 87.2 160 85.2 163.1C84.2 164.7 80.9 167.8 79.5 168.5C79 168.8 77.6 169.3 76.3 169.6C75 169.9 73.4 170.5 72.6 170.9C71.8 171.3 70.4 172 69.4 172.4C67.4 173.2 64.2 175.9 62 179C61.3 180 60.6 180.8 60.3 181C59.5 181.5 58.9 183.5 58.6 186.4C58.3 190.9 57.7 195.3 57.3 196.2C56.8 197.4 54.2 198.4 52 198.2C49.6 197.8 46.5 198.7 42 200.8C38.3 202.6 38.3 202.6 33.4 207.9C28.3 213.3 25.6 215.5 21.2 217.7C18.4 219.2 17.7 220.1 17.5 222.3C17 226 19.3 229 23.9 230.6C27.3 231.9 29.8 234.3 32.3 238.5C34.2 241.7 35.8 243.3 38.7 245C39.6 245.5 40.9 246.5 41.5 247.2C42.7 248.4 47.7 251.5 49.8 252.3C50.3 252.6 52.4 253.1 54.4 253.6C60.1 254.9 60.8 255.4 61.2 258.9C61.4 260.5 61.7 261.1 63 262.8C63.8 263.9 64.8 265.2 65.1 265.6C65.7 266.4 69.2 269 70.8 269.9C71.2 270.1 72.5 270.5 73.8 270.9C78.6 272.2 83.8 276.5 87.1 281.8C88.1 283.4 89.3 285.1 89.7 285.6C91.1 287.1 93.4 286.8 95 284.6C95.4 284.1 96.4 282.9 97.2 282C98.6 280.3 99.6 278.2 100.5 274.5C101.1 272.3 101.1 271 100.5 260.2C100.2 256 100.5 254.7 102.1 252.9C103.7 251.1 107.4 250.4 115.9 250.4C120.1 250.4 120.1 250.4 121.3 251.4C122.8 252.7 123.9 254.5 125.4 258.3C126 259.9 127.3 262.4 128.1 263.8C128.9 265.2 129.7 267 129.9 267.7C130.3 269.2 133.7 274.7 135.5 276.7C136.8 278.1 136.9 278.9 136 279.7C134.2 281.3 121 278.6 114.4 275.2C112.9 274.4 111.7 274.4 110.4 275.1C108.5 276 108.4 276.5 108.4 283.3C108.4 290 108.8 293.9 110.2 299.7C111.6 305.2 111.5 305.8 107.8 310.1C105.2 313.2 105 314.4 105.2 321.6C105.4 327.5 105.4 327.5 104.4 330.5C103 334.4 103.1 335.7 104.4 337.3C106.4 339.5 107.5 339.8 115.9 340.1C120 340.3 124.2 340.5 125.3 340.6C127.8 340.9 130.2 340.2 132.6 338.5C136.5 335.7 137.4 335.6 142.1 337.1C147.1 338.6 148 338.8 151.6 338.4C153.5 338.2 157.4 338 160.3 337.9C168.4 337.7 174.2 336.4 175 334.5C175.4 333.6 174.4 330.3 172.3 325.9C170.3 321.7 169.2 314.8 170.3 313.6C171.2 312.7 173.7 313.1 176 314.6C178.9 316.5 183.5 318.5 187.4 319.5C189.1 319.9 191.1 320.5 191.8 320.8C192.5 321 193.6 321.3 194.2 321.3C195.5 321.3 197.7 322.3 198.7 323.3C201.4 326.3 202.5 338.2 200.3 342.6C198.8 345.8 197.2 347.1 195.2 347.1C192.3 347.1 188.6 346.3 185 344.8C180.9 343.1 177.3 342.7 172.6 343.4C167.8 344.2 165.9 345.4 165.6 348C165.4 349.5 165.5 349.6 167.3 351.3C170.6 354.4 172.4 357.7 175.3 365.8C176 367.8 177 370.1 177.5 370.9C178.4 372.5 182.4 376.3 184.8 377.9C186.8 379.2 196.4 383.4 197.4 383.4C199.4 383.4 201 386.4 201.5 390.8C202 395.4 202.6 396.8 205.2 400.1C206.5 401.8 208.1 403.5 208.8 404.1C209.5 404.6 211.4 406.4 213.1 408C214.8 409.5 216.9 411.4 217.8 412.1C218.7 412.8 220.2 414.1 220.9 415.2C221.7 416.2 223.5 418.2 224.9 419.7C227.3 422.1 227.7 422.4 228.8 422.4C231.3 422.4 232.8 421.1 233.8 418.1C234.2 416.9 234.9 415.3 235.4 414.5C235.9 413.8 236.6 412.5 236.9 411.7C237.8 409.4 238.2 408.8 240.3 407.5C241.3 406.8 242.3 405.9 242.6 405.6C242.8 405.3 244.5 403.6 246.3 401.9C248.2 400.2 250 398.3 250.5 397.6C251.3 396.5 252.6 391.7 253.1 388.6C253.5 385.6 254 385 259 382.6C264.2 380.1 267.9 377.1 268.7 374.5C268.9 373.8 269.6 372.3 270.1 371.2C270.7 370.1 271.4 Line truncated
|
||||||
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50" height="50" fill="currentColor"><path fill-rule="evenodd" d="M8 8H50V16H16V34H50V42H8Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 167 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 50" width="150" height="50" fill="currentColor"><path fill-rule="evenodd" d="M8 8H142V42H8ZM16 16V34H134V16Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 175 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 50" width="200" height="50" fill="currentColor"><path fill-rule="evenodd" d="M8 8H192V42H8ZM16 16V34H184V16Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 175 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 50" width="300" height="50" fill="currentColor"><path fill-rule="evenodd" d="M8 8H292V42H8ZM16 16V34H284V16Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 175 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 50" width="600" height="50" fill="currentColor"><path fill-rule="evenodd" d="M8 8H592V42H8ZM16 16V34H584V16Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 175 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100" fill="currentColor"><path d="M40.6 8.6C35.9 8.9 35.6 9 34.7 10.4C34.1 11.4 34.1 12.2 34.3 24.4C34.7 48.1 34.3 52.3 29.5 68.1C27.3 75.4 22.7 81.4 16.2 85.8C10.3 89.7 9.7 90.2 10.5 90.8C11.5 91.6 15 91.7 51.5 91.5C92.8 91.4 91.5 91.5 89.1 88.6C88.6 88.1 87.2 86.8 85.8 85.8C77 79.2 70.5 69 68.3 58.6C67.3 53.9 67.1 49.1 67 27.5C66.9 9.5 67 10.2 64.8 9.1C63.5 8.4 49.7 8.2 40.6 8.6ZM55.8 15.4C57.1 16.1 58.4 17.5 58.7 18.5C58.9 19.1 59.2 24.8 59.4 31.2C60.1 55.5 60.5 58.4 63.5 68C64.8 71.9 65.6 74.1 66.8 76.1C69 79.6 69.2 80.8 67.9 82.3L66.9 83.4L61.6 83.7C55.3 84 38.3 83.7 36.4 83.2C33 82.3 32.8 80.5 35.6 75.1C39.2 68.1 40 65.1 41.3 52.9C41.9 47.4 42 44.3 42.1 32.5C42.1 17.4 42.1 17.4 44 16C45.6 14.8 53.8 14.4 55.8 15.4Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 821 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 100" width="300" height="100" fill="currentColor"><path transform="translate(300,0) scale(-1,1)" d="M41.1 8.8C32.8 9.4 27.6 11.9 23.3 17.2C20.1 21.2 19.8 22.5 19.8 32.9C19.8 41.2 20.2 43.2 21.5 43.4C22.3 43.5 22.4 43.4 25 40.5C27.4 37.7 28.5 37.1 31.8 36.3C35.4 35.3 38.1 36.1 40.5 38.6C44.6 42.9 43.9 48 38.5 52.3C34.1 55.7 31.7 56.6 26.1 56.6C24.6 56.6 21.8 56.8 20 57.1C17.9 57.4 15.7 57.6 13.7 57.5C9.8 57.2 9.4 57.5 8.8 60.5C8.4 63 8.2 71.8 8.5 81.6C8.7 88.6 9.1 89.8 11 90.8C12.2 91.4 34.5 91.7 36.9 91.2C38.4 90.9 42.9 90.5 52.6 90.1C55.1 89.9 61 88.1 63.5 86.8C64.4 86.3 66.1 85.6 67.2 85.3C69.1 84.7 69.5 84.4 73.5 80.3C78.2 75.6 79.4 73.9 81.7 69C83.7 64.7 84.1 62.9 84.4 57.4C84.7 48.7 83.2 43.6 78.7 38.8C77.3 37.2 76.1 35.9 76.1 35.7C76.1 35.6 75.2 34.7 74.1 33.9C71.7 32 71.4 31.2 71.4 26.6C71.4 24.8 71.2 22.7 70.9 21.7C70.3 19.9 67.5 15.9 66.1 15C65.6 14.7 64.4 13.8 63.6 13C62.1 11.7 61.7 11.6 56 10.2C49.5 8.6 47.1 8.4 41.1 8.8ZM53.8 16C59.3 18 62 20.7 63.2 25.1C63.9 27.8 63.7 30.5 62.8 32.9C61.5 36 61.9 36.9 64.7 37.8C66.5 38.4 71 41.6 72.2 43.2C75.2 47.2 76.9 56.4 75.5 60.5C75.1 61.6 74.4 63.7 73.9 65.3C73.5 66.9 72.7 68.6 72.3 69.3C70.4 71.9 68.4 74 67 74.9C66.2 75.4 64.7 76.6 63.7 77.4C62.8 78.3 61.7 79.1 61.2 79.2C60.8 79.4 58.9 80.2 56.9 81C53.1 82.6 54.6 82.4 37.8 83.8C35.5 83.9 30.7 84.1 27.2 84.1C21.1 84.2 20.6 84.2 19.2 83.4C15.8 81.8 15.1 78.9 15.6 68.8C15.6 67.7 17.2 66 18.6 65.4C19.4 65 21.7 64.8 26.2 64.6L32.6 64.3L37.1 62.7C41.6 61.1 41.6 61.1 44.3 58.4C46.7 56 47.3 55.2 49.1 51.5C52.3 45.1 52.7 41.1 50.4 37.9C44.9 30.2 41.4 28.4 32.9 28.9C29.4 29.1 29.1 29 28.3 28.4C25.4 26.1 27.8 21 32.8 18.8C34 18.2 35.5 17.5 36.1 17.1C36.7 16.7 37.8 16.1 38.5 15.9C41.6 14.9 51 15 53.8 16ZM152.8 37.3C151.3 38.2 150.9 39.6 150.7 44.4C150.4 49.5 149.7 51.7 148.1 53.8C147.5 54.5 146.7 55.7 146.1 56.6C145.6 57.4 144.4 58.9 143.4 59.9C137.2 66.4 134.9 68.3 131.4 69.8C130.1 70.3 126.3 72 123 73.7C115.7 77.3 113.6 78.1 109 79.2C107.1 79.7 104.6 80.5 103.5 80.9C101.1 81.8 96.2 83.1 92.4 83.9C90.9 84.2 88.1 84.9 86.2 85.5C83.3 86.3 76.5 87.5 74.6 87.5C72.6 87.5 72.7 89.6 74.8 90.5C76.6 91.3 88.7 91.5 95.7 90.9C101.6 90.4 114.2 90.3 143.3 90.6C155.7 90.7 168.9 90.7 172.3 90.5C175.9 90.4 182.3 90.4 186.8 90.6C192.3 90.8 196.4 90.7 199.7 90.5C202.7 90.3 218.1 90.1 239 90C275.8 89.9 277.3 89.8 280.3 88.2C286.9 84.8 289.4 82.7 290.1 80.2C291.8 73 291.9 72.2 291.7 69.3C291.4 65.6 291 64.5 288.9 62.5C285.3 58.8 281.4 58.6 278.9 61.9C276.4 65.1 277.7 68.1 282.1 69.8C285.2 71 286.4 73.4 285.4 76.3C284.7 78.2 278.9 82 275.7 82.7C270.9 83.8 262.3 83.2 257.2 81.6C255.6 81 251 78.5 248.6 76.8C247.9 76.3 245.7 75 243.8 74C235.9 69.8 234.8 69.2 233.6 68.3C233 67.7 229.9 66.2 226.9 64.8C223.9 63.4 220.9 62 220.4 61.6C217.3 59.8 204 56.2 200.3 56.2C196.6 56.2 185.9 57.6 182.3 58.6C177.9 59.8 176.4 58.9 173.8 53.3C171.9 49.2 168.2 44.9 164.3 42.2C163 41.3 161.4 39.9 160.8 39.1C160.2 38.3 159.1 37.5 158.5 37.2C157 36.6 153.7 36.6 152.8 37.3ZM162.6 49.4C163.3 49.7 165.3 52.6 166.7 55.3C167.3 56.7 168.2 58.4 168.6 59.2C169.1 60.1 169.7 62 170 63.4C170.7 66.7 171.2 67.4 172.8 67.2C173.5 67.1 175.5 66.8 177.2 66.5C179 66.2 181.8 65.6 183.4 65.1C189.3 63.3 191.1 62.9 192.9 62.9C193.9 62.9 195.7 62.8 197 62.5C201.1 61.8 211.3 63.9 216.2 66.4C217 66.8 219.5 68.1 221.7 69.3C224 70.5 227.2 72.1 228.8 73C230.5 73.8 232.7 75.2 233.7 75.9C234.7 76.7 236.6 77.9 238 78.6C240.6 79.9 241.6 81 241.2 82.1C240.9 83.1 240.3 83.2 229.8 83.3C224.3 83.4 213.7 83.6 206.2 83.8C195.7 84.1 190.4 84.1 181.4 83.8C173.6 83.5 167.9 83.4 163.3 83.6C159.6 83.8 150.4 83.9 142.8 83.9C129.7 83.9 128.9 83.9 127.7 83.3C124.9 81.9 126 79.9 130.9 77.4C132.8 76.4 134.9 75.1 135.6 74.5C136.3 73.9 137.6 73 138.5 72.5C139.3 72.1 141.3 70.6 142.8 69.3C144.3 67.9 146 66.6 146.5 66.3C147.1 66 148.1 64.9 148.8 63.9C149.5 62.9 151 60.9 152.2 59.4C153.4 57.9 155 55.5 155.7 54C157.7 49.9 159.9 48.4 162.6 49.4Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 100" width="300" height="100" fill="currentColor"><path d="M41.1 8.8C32.8 9.4 27.6 11.9 23.3 17.2C20.1 21.2 19.8 22.5 19.8 32.9C19.8 41.2 20.2 43.2 21.5 43.4C22.3 43.5 22.4 43.4 25 40.5C27.4 37.7 28.5 37.1 31.8 36.3C35.4 35.3 38.1 36.1 40.5 38.6C44.6 42.9 43.9 48 38.5 52.3C34.1 55.7 31.7 56.6 26.1 56.6C24.6 56.6 21.8 56.8 20 57.1C17.9 57.4 15.7 57.6 13.7 57.5C9.8 57.2 9.4 57.5 8.8 60.5C8.4 63 8.2 71.8 8.5 81.6C8.7 88.6 9.1 89.8 11 90.8C12.2 91.4 34.5 91.7 36.9 91.2C38.4 90.9 42.9 90.5 52.6 90.1C55.1 89.9 61 88.1 63.5 86.8C64.4 86.3 66.1 85.6 67.2 85.3C69.1 84.7 69.5 84.4 73.5 80.3C78.2 75.6 79.4 73.9 81.7 69C83.7 64.7 84.1 62.9 84.4 57.4C84.7 48.7 83.2 43.6 78.7 38.8C77.3 37.2 76.1 35.9 76.1 35.7C76.1 35.6 75.2 34.7 74.1 33.9C71.7 32 71.4 31.2 71.4 26.6C71.4 24.8 71.2 22.7 70.9 21.7C70.3 19.9 67.5 15.9 66.1 15C65.6 14.7 64.4 13.8 63.6 13C62.1 11.7 61.7 11.6 56 10.2C49.5 8.6 47.1 8.4 41.1 8.8ZM53.8 16C59.3 18 62 20.7 63.2 25.1C63.9 27.8 63.7 30.5 62.8 32.9C61.5 36 61.9 36.9 64.7 37.8C66.5 38.4 71 41.6 72.2 43.2C75.2 47.2 76.9 56.4 75.5 60.5C75.1 61.6 74.4 63.7 73.9 65.3C73.5 66.9 72.7 68.6 72.3 69.3C70.4 71.9 68.4 74 67 74.9C66.2 75.4 64.7 76.6 63.7 77.4C62.8 78.3 61.7 79.1 61.2 79.2C60.8 79.4 58.9 80.2 56.9 81C53.1 82.6 54.6 82.4 37.8 83.8C35.5 83.9 30.7 84.1 27.2 84.1C21.1 84.2 20.6 84.2 19.2 83.4C15.8 81.8 15.1 78.9 15.6 68.8C15.6 67.7 17.2 66 18.6 65.4C19.4 65 21.7 64.8 26.2 64.6L32.6 64.3L37.1 62.7C41.6 61.1 41.6 61.1 44.3 58.4C46.7 56 47.3 55.2 49.1 51.5C52.3 45.1 52.7 41.1 50.4 37.9C44.9 30.2 41.4 28.4 32.9 28.9C29.4 29.1 29.1 29 28.3 28.4C25.4 26.1 27.8 21 32.8 18.8C34 18.2 35.5 17.5 36.1 17.1C36.7 16.7 37.8 16.1 38.5 15.9C41.6 14.9 51 15 53.8 16ZM152.8 37.3C151.3 38.2 150.9 39.6 150.7 44.4C150.4 49.5 149.7 51.7 148.1 53.8C147.5 54.5 146.7 55.7 146.1 56.6C145.6 57.4 144.4 58.9 143.4 59.9C137.2 66.4 134.9 68.3 131.4 69.8C130.1 70.3 126.3 72 123 73.7C115.7 77.3 113.6 78.1 109 79.2C107.1 79.7 104.6 80.5 103.5 80.9C101.1 81.8 96.2 83.1 92.4 83.9C90.9 84.2 88.1 84.9 86.2 85.5C83.3 86.3 76.5 87.5 74.6 87.5C72.6 87.5 72.7 89.6 74.8 90.5C76.6 91.3 88.7 91.5 95.7 90.9C101.6 90.4 114.2 90.3 143.3 90.6C155.7 90.7 168.9 90.7 172.3 90.5C175.9 90.4 182.3 90.4 186.8 90.6C192.3 90.8 196.4 90.7 199.7 90.5C202.7 90.3 218.1 90.1 239 90C275.8 89.9 277.3 89.8 280.3 88.2C286.9 84.8 289.4 82.7 290.1 80.2C291.8 73 291.9 72.2 291.7 69.3C291.4 65.6 291 64.5 288.9 62.5C285.3 58.8 281.4 58.6 278.9 61.9C276.4 65.1 277.7 68.1 282.1 69.8C285.2 71 286.4 73.4 285.4 76.3C284.7 78.2 278.9 82 275.7 82.7C270.9 83.8 262.3 83.2 257.2 81.6C255.6 81 251 78.5 248.6 76.8C247.9 76.3 245.7 75 243.8 74C235.9 69.8 234.8 69.2 233.6 68.3C233 67.7 229.9 66.2 226.9 64.8C223.9 63.4 220.9 62 220.4 61.6C217.3 59.8 204 56.2 200.3 56.2C196.6 56.2 185.9 57.6 182.3 58.6C177.9 59.8 176.4 58.9 173.8 53.3C171.9 49.2 168.2 44.9 164.3 42.2C163 41.3 161.4 39.9 160.8 39.1C160.2 38.3 159.1 37.5 158.5 37.2C157 36.6 153.7 36.6 152.8 37.3ZM162.6 49.4C163.3 49.7 165.3 52.6 166.7 55.3C167.3 56.7 168.2 58.4 168.6 59.2C169.1 60.1 169.7 62 170 63.4C170.7 66.7 171.2 67.4 172.8 67.2C173.5 67.1 175.5 66.8 177.2 66.5C179 66.2 181.8 65.6 183.4 65.1C189.3 63.3 191.1 62.9 192.9 62.9C193.9 62.9 195.7 62.8 197 62.5C201.1 61.8 211.3 63.9 216.2 66.4C217 66.8 219.5 68.1 221.7 69.3C224 70.5 227.2 72.1 228.8 73C230.5 73.8 232.7 75.2 233.7 75.9C234.7 76.7 236.6 77.9 238 78.6C240.6 79.9 241.6 81 241.2 82.1C240.9 83.1 240.3 83.2 229.8 83.3C224.3 83.4 213.7 83.6 206.2 83.8C195.7 84.1 190.4 84.1 181.4 83.8C173.6 83.5 167.9 83.4 163.3 83.6C159.6 83.8 150.4 83.9 142.8 83.9C129.7 83.9 128.9 83.9 127.7 83.3C124.9 81.9 126 79.9 130.9 77.4C132.8 76.4 134.9 75.1 135.6 74.5C136.3 73.9 137.6 73 138.5 72.5C139.3 72.1 141.3 70.6 142.8 69.3C144.3 67.9 146 66.6 146.5 66.3C147.1 66 148.1 64.9 148.8 63.9C149.5 62.9 151 60.9 152.2 59.4C153.4 57.9 155 55.5 155.7 54C157.7 49.9 159.9 48.4 162.6 49.4Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 150" width="600" height="150" fill="currentColor"><path fill-rule="evenodd" d="M8 8H592V42H8ZM16 16V34H584V16ZM8 58H592V92H8ZM16 66V84H584V66ZM8 108H592V142H8ZM16 116V134H584V116Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 246 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" width="150" height="150" fill="currentColor"><path d="M11.5 8.7C8.7 9.2 8.5 10.2 8.8 21.6C8.9 26.8 8.9 34.7 8.8 39.4C8.6 44 8.5 65.2 8.4 86.4C8.4 107.7 8.4 128.2 8.4 132C8.3 138.3 8.4 138.9 9 139.8C10.4 141.6 9.8 141.6 30 141.5C40.2 141.5 67.4 141.4 90.5 141.4C113.5 141.4 133.7 141.4 135.4 141.4C138.8 141.4 140.5 140.9 141.4 139.6C141.8 138.8 141.9 137.1 141.8 124.5C141.7 110.5 141.7 110.1 141 109.4C140.4 108.8 140 108.7 132.6 108.8C96.5 109.1 88.4 108.5 76.8 104.8C69.5 102.5 60.1 96.7 56.6 92.4C55.9 91.5 54.8 90.2 54.1 89.3C49.9 84.4 44.3 72.9 43.9 68.2C43.7 65.4 43.2 62.4 42.4 57.7C41.6 53 41.2 40.8 41.3 23.9L41.5 10.7L40.5 9.7C39.8 9 39 8.7 37.8 8.5C35.9 8.2 13 8.4 11.5 8.7ZM30.6 16.4C32.7 17.8 33.6 22.6 33.4 31.8C33.2 44.9 33.3 48.4 34.1 55.5C35.8 70 36.1 71.4 38.1 78.2C39.3 82.5 40 83.9 43.3 89.8C46.5 95.5 54.2 103.8 57.2 104.8C58.3 105.1 64.5 108.4 68.1 110.6C70.2 111.8 75.9 113.8 80.7 114.8C83.7 115.5 85.7 115.7 97.2 116.5C99.7 116.7 108.1 116.9 115.8 117C130.4 117.2 131.5 117.3 132.7 118.6C134.5 120.5 134.9 122.3 134.7 126.9C134.3 133.8 134.1 134 125.6 134.4C117.6 134.7 22.8 134.7 19.7 134.3C18.8 134.2 16.9 132.2 16.4 130.8C15.8 129.2 15.3 110.2 15.5 98.9C15.6 95.2 15.6 90.4 15.5 88.3C15.2 83.3 15.2 68.8 15.3 44.6C15.5 16.4 15.6 16.1 23.4 15.7C28.1 15.4 29.5 15.6 30.6 16.4Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" width="150" height="150" fill="currentColor"><g transform="matrix(-1 0 0 1 150 0)"><path d="M11.5 8.7C8.7 9.2 8.5 10.2 8.8 21.6C8.9 26.8 8.9 34.7 8.8 39.4C8.6 44 8.5 65.2 8.4 86.4C8.4 107.7 8.4 128.2 8.4 132C8.3 138.3 8.4 138.9 9 139.8C10.4 141.6 9.8 141.6 30 141.5C40.2 141.5 67.4 141.4 90.5 141.4C113.5 141.4 133.7 141.4 135.4 141.4C138.8 141.4 140.5 140.9 141.4 139.6C141.8 138.8 141.9 137.1 141.8 124.5C141.7 110.5 141.7 110.1 141 109.4C140.4 108.8 140 108.7 132.6 108.8C96.5 109.1 88.4 108.5 76.8 104.8C69.5 102.5 60.1 96.7 56.6 92.4C55.9 91.5 54.8 90.2 54.1 89.3C49.9 84.4 44.3 72.9 43.9 68.2C43.7 65.4 43.2 62.4 42.4 57.7C41.6 53 41.2 40.8 41.3 23.9L41.5 10.7L40.5 9.7C39.8 9 39 8.7 37.8 8.5C35.9 8.2 13 8.4 11.5 8.7ZM30.6 16.4C32.7 17.8 33.6 22.6 33.4 31.8C33.2 44.9 33.3 48.4 34.1 55.5C35.8 70 36.1 71.4 38.1 78.2C39.3 82.5 40 83.9 43.3 89.8C46.5 95.5 54.2 103.8 57.2 104.8C58.3 105.1 64.5 108.4 68.1 110.6C70.2 111.8 75.9 113.8 80.7 114.8C83.7 115.5 85.7 115.7 97.2 116.5C99.7 116.7 108.1 116.9 115.8 117C130.4 117.2 131.5 117.3 132.7 118.6C134.5 120.5 134.9 122.3 134.7 126.9C134.3 133.8 134.1 134 125.6 134.4C117.6 134.7 22.8 134.7 19.7 134.3C18.8 134.2 16.9 132.2 16.4 130.8C15.8 129.2 15.3 110.2 15.5 98.9C15.6 95.2 15.6 90.4 15.5 88.3C15.2 83.3 15.2 68.8 15.3 44.6C15.5 16.4 15.6 16.1 23.4 15.7C28.1 15.4 29.5 15.6 30.6 16.4Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" width="150" height="150" fill="currentColor"><g transform="matrix(1 0 0 -1 0 150)"><path d="M11.5 8.7C8.7 9.2 8.5 10.2 8.8 21.6C8.9 26.8 8.9 34.7 8.8 39.4C8.6 44 8.5 65.2 8.4 86.4C8.4 107.7 8.4 128.2 8.4 132C8.3 138.3 8.4 138.9 9 139.8C10.4 141.6 9.8 141.6 30 141.5C40.2 141.5 67.4 141.4 90.5 141.4C113.5 141.4 133.7 141.4 135.4 141.4C138.8 141.4 140.5 140.9 141.4 139.6C141.8 138.8 141.9 137.1 141.8 124.5C141.7 110.5 141.7 110.1 141 109.4C140.4 108.8 140 108.7 132.6 108.8C96.5 109.1 88.4 108.5 76.8 104.8C69.5 102.5 60.1 96.7 56.6 92.4C55.9 91.5 54.8 90.2 54.1 89.3C49.9 84.4 44.3 72.9 43.9 68.2C43.7 65.4 43.2 62.4 42.4 57.7C41.6 53 41.2 40.8 41.3 23.9L41.5 10.7L40.5 9.7C39.8 9 39 8.7 37.8 8.5C35.9 8.2 13 8.4 11.5 8.7ZM30.6 16.4C32.7 17.8 33.6 22.6 33.4 31.8C33.2 44.9 33.3 48.4 34.1 55.5C35.8 70 36.1 71.4 38.1 78.2C39.3 82.5 40 83.9 43.3 89.8C46.5 95.5 54.2 103.8 57.2 104.8C58.3 105.1 64.5 108.4 68.1 110.6C70.2 111.8 75.9 113.8 80.7 114.8C83.7 115.5 85.7 115.7 97.2 116.5C99.7 116.7 108.1 116.9 115.8 117C130.4 117.2 131.5 117.3 132.7 118.6C134.5 120.5 134.9 122.3 134.7 126.9C134.3 133.8 134.1 134 125.6 134.4C117.6 134.7 22.8 134.7 19.7 134.3C18.8 134.2 16.9 132.2 16.4 130.8C15.8 129.2 15.3 110.2 15.5 98.9C15.6 95.2 15.6 90.4 15.5 88.3C15.2 83.3 15.2 68.8 15.3 44.6C15.5 16.4 15.6 16.1 23.4 15.7C28.1 15.4 29.5 15.6 30.6 16.4Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" width="150" height="150" fill="currentColor"><g transform="matrix(-1 0 0 -1 150 150)"><path d="M11.5 8.7C8.7 9.2 8.5 10.2 8.8 21.6C8.9 26.8 8.9 34.7 8.8 39.4C8.6 44 8.5 65.2 8.4 86.4C8.4 107.7 8.4 128.2 8.4 132C8.3 138.3 8.4 138.9 9 139.8C10.4 141.6 9.8 141.6 30 141.5C40.2 141.5 67.4 141.4 90.5 141.4C113.5 141.4 133.7 141.4 135.4 141.4C138.8 141.4 140.5 140.9 141.4 139.6C141.8 138.8 141.9 137.1 141.8 124.5C141.7 110.5 141.7 110.1 141 109.4C140.4 108.8 140 108.7 132.6 108.8C96.5 109.1 88.4 108.5 76.8 104.8C69.5 102.5 60.1 96.7 56.6 92.4C55.9 91.5 54.8 90.2 54.1 89.3C49.9 84.4 44.3 72.9 43.9 68.2C43.7 65.4 43.2 62.4 42.4 57.7C41.6 53 41.2 40.8 41.3 23.9L41.5 10.7L40.5 9.7C39.8 9 39 8.7 37.8 8.5C35.9 8.2 13 8.4 11.5 8.7ZM30.6 16.4C32.7 17.8 33.6 22.6 33.4 31.8C33.2 44.9 33.3 48.4 34.1 55.5C35.8 70 36.1 71.4 38.1 78.2C39.3 82.5 40 83.9 43.3 89.8C46.5 95.5 54.2 103.8 57.2 104.8C58.3 105.1 64.5 108.4 68.1 110.6C70.2 111.8 75.9 113.8 80.7 114.8C83.7 115.5 85.7 115.7 97.2 116.5C99.7 116.7 108.1 116.9 115.8 117C130.4 117.2 131.5 117.3 132.7 118.6C134.5 120.5 134.9 122.3 134.7 126.9C134.3 133.8 134.1 134 125.6 134.4C117.6 134.7 22.8 134.7 19.7 134.3C18.8 134.2 16.9 132.2 16.4 130.8C15.8 129.2 15.3 110.2 15.5 98.9C15.6 95.2 15.6 90.4 15.5 88.3C15.2 83.3 15.2 68.8 15.3 44.6C15.5 16.4 15.6 16.1 23.4 15.7C28.1 15.4 29.5 15.6 30.6 16.4Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" width="150" height="150" fill="currentColor"><path d="M11.5 8.7C8.7 9.2 8.5 10.2 8.8 21.6C8.9 26.8 8.9 34.7 8.8 39.4C8.6 44 8.5 65.2 8.4 86.4C8.4 107.7 8.4 128.2 8.4 132C8.3 138.3 8.4 138.9 9 139.8C10.4 141.6 9.8 141.6 30 141.5C40.2 141.5 67.4 141.4 90.5 141.4C113.5 141.4 133.7 141.4 135.4 141.4C138.8 141.4 140.5 140.9 141.4 139.6C141.8 138.8 141.9 137.1 141.8 124.5C141.7 110.5 141.7 110.1 141 109.4C140.4 108.8 140 108.7 132.6 108.8C96.5 109.1 88.4 108.5 76.8 104.8C69.5 102.5 60.1 96.7 56.6 92.4C55.9 91.5 54.8 90.2 54.1 89.3C49.9 84.4 44.3 72.9 43.9 68.2C43.7 65.4 43.2 62.4 42.4 57.7C41.6 53 41.2 40.8 41.3 23.9L41.5 10.7L40.5 9.7C39.8 9 39 8.7 37.8 8.5C35.9 8.2 13 8.4 11.5 8.7ZM30.6 16.4C32.7 17.8 33.6 22.6 33.4 31.8C33.2 44.9 33.3 48.4 34.1 55.5C35.8 70 36.1 71.4 38.1 78.2C39.3 82.5 40 83.9 43.3 89.8C46.5 95.5 54.2 103.8 57.2 104.8C58.3 105.1 64.5 108.4 68.1 110.6C70.2 111.8 75.9 113.8 80.7 114.8C83.7 115.5 85.7 115.7 97.2 116.5C99.7 116.7 108.1 116.9 115.8 117C130.4 117.2 131.5 117.3 132.7 118.6C134.5 120.5 134.9 122.3 134.7 126.9C134.3 133.8 134.1 134 125.6 134.4C117.6 134.7 22.8 134.7 19.7 134.3C18.8 134.2 16.9 132.2 16.4 130.8C15.8 129.2 15.3 110.2 15.5 98.9C15.6 95.2 15.6 90.4 15.5 88.3C15.2 83.3 15.2 68.8 15.3 44.6C15.5 16.4 15.6 16.1 23.4 15.7C28.1 15.4 29.5 15.6 30.6 16.4Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 125" width="150" height="125" fill="currentColor"><path transform="translate(150,0) scale(-1,1)" d="M139.4 8C138.9 8.4 137.5 10.6 136.4 12.7C135.2 14.9 133.7 17.5 133.1 18.6C132.4 19.6 131.2 21.3 130.5 22.4C124.9 31 121.1 36.3 118.9 38.8C117.8 40 116.4 41.8 115.8 42.6C113.1 46.6 99.3 61.1 95 64.5C85.3 72.2 76.1 77.2 67.1 79.9C60.3 81.9 59.8 82 58 82.1C57.2 82.1 54.7 82.4 52.5 82.7C48.5 83.4 39.3 83.7 16.5 83.9C10.6 83.9 9.7 84.2 8.9 86C8.3 87.2 8.4 112.7 8.9 114C9.6 115.8 10.7 116.2 15.4 116.2C17.7 116.2 29.1 116.3 40.7 116.4C67.7 116.7 110.2 116.8 122.4 116.5C127.6 116.4 133.5 116.3 135.5 116.3C139.6 116.3 140 116.2 140.9 114.1C141.5 112.9 141.5 109.6 141.5 61.4C141.6 33.1 141.4 9.4 141.3 8.7C140.9 7.1 140.6 7 139.4 8ZM134 35.5C134.6 36.9 134.8 43.4 134.3 48.6C133.8 54.1 133.8 79.8 134.3 91.6C134.9 103.9 134.3 107.2 131.5 108.6C129.9 109.3 20.5 109.6 18.2 108.9C16.4 108.3 15.8 107.2 15.4 104.2C14.4 97.1 15.2 94 17.9 92.7C19.7 92 19.4 92 40.9 91.2C45.4 91 49.4 90.8 49.6 90.7C49.9 90.6 52.4 90.3 55.2 90C65.1 88.9 83.9 83.4 86.9 80.6C87.6 80 90.3 78 93 76.2C98.1 72.9 100.4 70.9 109 62.6C114.5 57.4 119 51.9 124.8 43.1C126.8 40.1 129 37 129.6 36.2C131.5 34.1 133.1 33.8 134 35.5Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 125" width="150" height="125" fill="currentColor"><path d="M139.4 8C138.9 8.4 137.5 10.6 136.4 12.7C135.2 14.9 133.7 17.5 133.1 18.6C132.4 19.6 131.2 21.3 130.5 22.4C124.9 31 121.1 36.3 118.9 38.8C117.8 40 116.4 41.8 115.8 42.6C113.1 46.6 99.3 61.1 95 64.5C85.3 72.2 76.1 77.2 67.1 79.9C60.3 81.9 59.8 82 58 82.1C57.2 82.1 54.7 82.4 52.5 82.7C48.5 83.4 39.3 83.7 16.5 83.9C10.6 83.9 9.7 84.2 8.9 86C8.3 87.2 8.4 112.7 8.9 114C9.6 115.8 10.7 116.2 15.4 116.2C17.7 116.2 29.1 116.3 40.7 116.4C67.7 116.7 110.2 116.8 122.4 116.5C127.6 116.4 133.5 116.3 135.5 116.3C139.6 116.3 140 116.2 140.9 114.1C141.5 112.9 141.5 109.6 141.5 61.4C141.6 33.1 141.4 9.4 141.3 8.7C140.9 7.1 140.6 7 139.4 8ZM134 35.5C134.6 36.9 134.8 43.4 134.3 48.6C133.8 54.1 133.8 79.8 134.3 91.6C134.9 103.9 134.3 107.2 131.5 108.6C129.9 109.3 20.5 109.6 18.2 108.9C16.4 108.3 15.8 107.2 15.4 104.2C14.4 97.1 15.2 94 17.9 92.7C19.7 92 19.4 92 40.9 91.2C45.4 91 49.4 90.8 49.6 90.7C49.9 90.6 52.4 90.3 55.2 90C65.1 88.9 83.9 83.4 86.9 80.6C87.6 80 90.3 78 93 76.2C98.1 72.9 100.4 70.9 109 62.6C114.5 57.4 119 51.9 124.8 43.1C126.8 40.1 129 37 129.6 36.2C131.5 34.1 133.1 33.8 134 35.5Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 300" width="250" height="300" fill="currentColor"><path d="M61.8 6.9C57.7 7.7 57.5 8.1 56.6 17.3C55.3 31.6 54.1 36.1 50.5 39.4C46.5 43.1 38.7 41 37.2 35.9C36 32 37.1 29.3 41.5 24.7C44.1 22 44.2 21.4 42.2 20.1C40.4 18.8 37.6 18.3 33.4 18.5C30.3 18.7 29.8 18.8 27.4 20.1C25.9 20.8 24.1 21.6 23.4 21.9C20.2 23.3 14.1 29.2 12.4 32.7C9.7 38 8.4 44.5 8.4 52V55.8L10.6 60.2C12.6 64.5 12.8 64.8 15.9 67.8C20.9 72.5 21.6 72.7 28.7 72.1C32.5 71.7 33.9 72.2 36.7 74.8C37.7 75.7 39.1 76.8 39.8 77.2C40.6 77.6 42.1 78.6 43.2 79.4C47 82.3 52.9 83.8 56.4 82.9C57.4 82.6 59.2 82.3 60.3 82.2C62.9 81.9 66.6 80.4 68.5 78.7C69.4 78 70.7 77 71.5 76.6C72.2 76.2 73.2 75.4 73.6 74.9C74 74.3 75 73.5 76 72.9C78.6 71.5 82.1 67.4 83.6 64.2C84.2 62.8 85.3 60.8 85.9 59.7C89.1 54.5 92 37.4 91.4 27.5C91.3 25.8 91.4 23.3 91.5 21.9C91.8 20.1 91.7 18.6 91.1 14.8C90.4 10 89.9 8.3 88.8 7.8C88.5 7.6 83.4 7.4 77.6 7.2C71.8 7.1 66.1 7 64.9 6.9C63.6 6.8 62.3 6.8 61.8 6.9ZM80.3 15C83.2 16.4 84 20.6 83.4 30.2C82.5 42.7 79.9 53.9 76.3 59.7C72.2 66.2 70.2 68.6 66.6 70.8C60.3 74.7 54.5 75.5 48.3 73.2C45.9 72.2 42.3 68.3 40.4 64.6C38.9 61.7 38.2 61.5 32.5 63C27.3 64.3 26.7 64.2 23.5 62.6C21.2 61.5 17.9 57.5 16.1 53.6C14.6 50.4 14.8 46.2 16.6 38.5C17.6 34.7 18.3 33.5 21.7 30.5C24.2 28.3 25.9 27.4 28.2 27C31.1 26.6 32.2 29.5 30.4 33.3C27.3 40.1 29.5 47.5 34.9 49.2C36 49.5 37.4 50.1 38.1 50.6C40 51.9 43.6 51.9 46.5 50.6C47.6 50.2 49.6 49.3 50.8 48.8C54.5 47.2 59 43.2 61.3 39.3C62.4 37.5 64.2 29.8 64.5 25.7C65.2 17.1 65.4 16.5 67.6 15.4C70.1 14.1 77.9 13.9 80.3 15ZM111.3 7.5C109 8.5 109 8.3 109.2 29.9C109.2 40.5 109.3 50.8 109.3 52.7C109.3 54.7 109.2 68.1 109 82.6C108.6 115.7 108.6 137.9 109 157.9C109.2 170.2 109.3 257.4 109.1 284.3C109 291.2 109.6 292.3 113.5 292.3C114.3 292.3 116.6 292.5 118.4 292.8C121 293.2 123.8 293.3 130.7 293.1C140.1 292.9 141.6 292.7 142.2 291.5C142.5 291 142.9 273.5 142.9 265.4C142.9 264.8 142.9 258.2 142.9 250.8C143 232.7 142.8 207.1 142.4 185.1C142.4 184.3 142.4 180.9 142.4 177.7C142.4 174.5 142.4 169.6 142.3 166.8C142.3 164 142.4 158 142.6 153.4C142.9 142.7 142.9 103.3 142.5 99.4C142.4 97.8 142.3 88.9 142.3 79.6C142.4 70.3 142.4 54.8 142.4 45.3C142.4 35.8 142.4 26.9 142.4 25.5C142.4 24.1 142.5 20.6 142.6 17.6C142.9 11.6 142.6 9.5 140.9 8L140.1 7.2L126.2 7.1C115 7.1 112.2 7.2 111.3 7.5ZM133.3 15C134.5 15.7 135.2 17.6 135.1 20C134.9 23.2 135 72.8 135.3 97.2C135.4 109.6 135.5 121.4 135.4 123.5C135.3 125.5 135.3 127.8 135.3 128.7C135.3 129.5 135.3 137.4 135.4 146.3C135.4 155.2 135.7 165.7 135.9 169.7C136.1 173.6 136.2 178.5 136.1 180.6C136 182.6 135.9 188.4 135.9 193.5C136 198.6 135.9 213.5 135.7 226.6C135.5 239.7 135.3 253.1 135.2 256.4C135.2 259.6 135 265.7 134.9 270C134.7 274.5 134.7 278.3 134.8 279.2C135.2 281.2 134.7 283.2 133.4 284.7L132.5 285.8H126.2C119.3 285.8 118.9 285.6 117.5 283.2C116.7 281.9 116.8 285.9 116.4 226.1C116.3 206 116.1 188.7 116 187.5C115.8 186.2 115.8 178.4 116 169.1C116.3 155.9 116.3 152.3 115.9 149.5C115.6 146.9 115.6 145.4 115.9 142.7C116.2 139.7 116.2 86.9 115.8 31.2L115.8 17L116.6 16C118 14.2 118.8 14.1 126 14.3C130.9 14.4 132.8 14.6 133.3 15ZM160 7.9C159.6 8.3 159.2 9.2 159 9.9C158.5 11.8 158.6 18.9 159.1 21.4C159.5 23.1 159.5 24.1 159.2 26.6C158.7 30.7 159.1 40.8 159.9 45.7C160.3 47.8 160.7 50.3 160.8 51.2C161.4 56.3 163.6 62.8 165.8 66.2C167.8 69.4 174.6 76.8 176.2 77.7C177 78 178.2 78.9 179 79.5C180.9 81 182.5 81.7 187.3 83C197.7 85.7 205.8 84 212.2 77.8C216.5 73.6 217.4 73.1 221.6 72.8C224.9 72.6 225 72.6 228.1 70.8C236.4 66.1 240.4 59.6 241.3 50C242.8 33 238.3 23.7 226.5 19.3C221.6 17.4 207.5 18.6 206.6 20.9C206.4 21.4 208.4 23.4 211.4 25.6C213 26.8 213.4 27.5 213.9 30.4C215.1 36.7 213.5 40.5 209.2 41.8C204.6 43.2 201.7 42 198.1 37.3C195.7 34.3 195.4 33.6 194.2 29C192.7 22.8 192.5 22 192.2 15.7C191.9 8.9 191.7 8.3 189.5 7.7C188.4 7.3 187.6 7.3 185.7 7.6C183.9 7.9 183 7.9 182.1 7.7C181.4 7.4 177.4 7.3 170.9 7.2C160.9 7.2 160.8 7.2 160 7.9ZM179.2 15.3C182.9 16 183.9 17.3 184.5 22C185.2 28.9 185.5 30.4 186.5 33.3C189.3 41.4 193.2 45.8 201.4 49.9C207.1 52.7 208.6 52.8 212.2 50.7C218.8 46.9 222.1 40.8 222.1 32.8C222.1 28.2 222.6 27.2 224.8 27.2C227.1 27.2 231.3 30.6 232.9 33.9C235.4 39 235.5 52.2 233 56.2C232.6 57 231.2 58.6 230.1 59.8C228 62 227.8 62.1 225.3 62.6C222.8 63.2 222.6 63.2 220.5 62.6C215.3 61.3 214 61.7 211.6 65.4C209.7 68.3 206.2 71.7 203.9 72.7C198.6 75.1 191.2 75.6 187.5 73.8C182.4 71.3 176.3 66.4 174.7 63.5C171.9 58.6 171.3 57.4 170.2 53.9C167.6 45.9 167.5 44.9 167.5 31.6V19.6L168.4 17.9C170 14.9 173.4 14 179.2 15.3ZM89.6 72.3C89 73.1 87.5 79.1 86.2 85.8C85.7 88 84.9 91.4 84.3 93.4C83.7 95.3 82.9 98.3 82.4 99.9C81.9 101.6 81.1 104 80.6 105.3C80.1 106.6 79.6 108.6 79.5 109.8C79.3 111.3 78.7 113.3 77.4 116.4C76.3 118.8 75.2 121.6 74.9 122.6C74.5 123.6 73.9 124.9 73.4 125.5C73 126.1 72.3 127.2 72 128C71.7 128.8 70.9 130.2 70.3 131.2C68.5 133.6 67.4 135.3 66.4 137.2C65.6 138.8 62.6 142 59 145.1C55.7 147.9 47.3 149.7 40.3 149C36.8 148.7 36Line truncated
|
||||||
|
After Width: | Height: | Size: 8.8 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 600" width="300" height="600" fill="currentColor"><path d="M125.1 7C125 7.1 111.6 7.2 95.4 7.3C79.1 7.4 61 7.6 55.1 7.7C49.2 7.8 38 7.7 30.4 7.5C17.7 7.2 14.3 7.3 13.7 8C13 8.6 14.5 11.2 17 13.9C18.5 15.5 20.8 18 22.1 19.4C23.4 20.9 25.5 22.8 26.7 23.8C35.3 30.6 45.4 43.3 46.9 49.3C48.5 55.3 48.1 60.9 45.5 68.5C44.8 70.6 44.1 73.4 43.8 74.8C42.9 80.2 42 83.7 40.6 86.8C39.8 88.5 38.9 91 38.6 92.1C38.3 93.3 37.5 95.3 36.9 96.6C36.3 97.8 35 101.2 34 104C33.1 106.8 32 109.8 31.6 110.7C31.1 111.5 30.5 113.1 30.2 114.2C29.9 115.3 28.6 119.4 27.3 123.3C25 130.3 23.9 133.8 22.4 139.9C22 141.7 21.2 144.5 20.7 146.1C20.1 147.8 19.1 151.8 18.4 155.1C17.8 158.3 17.1 161.6 16.8 162.3C16.6 163 16 165.6 15.6 167.9C15.2 170.4 14.4 174.2 13.9 176.5C13.3 178.8 12.7 182.7 12.4 185.1C11.7 191 11.3 193.4 10.7 196.3C10.1 199.2 8.5 215 8.5 218.2C8.5 219.4 8.3 222.9 8 226.1C7.5 232.4 7.3 236.9 6.9 260.2C6.6 278.2 6.7 291.5 7.2 296C7.4 297.7 7.5 300.2 7.5 301.6C7.5 302.9 7.7 305.7 8 307.7C8.3 309.7 8.6 313.8 8.9 316.8C9.4 324 10.5 332.7 11.3 336.5C11.6 338.2 12.4 342 12.9 344.9C13.5 347.7 14.4 351.9 14.9 354.3C15.4 356.6 16 359.1 16.1 359.8C16.8 364.3 18.4 372.6 19.2 374.9C19.6 376.4 20.1 378.5 20.3 379.6C20.5 380.7 21.2 383.6 21.8 386C22.5 388.4 23.4 391.9 23.8 393.8C24.3 395.6 25 398.5 25.5 400.1C26 401.8 26.7 404.1 27 405.2C28.4 409.8 33.1 423.6 34.3 426.4C35.1 428 35.9 430 36.1 430.7C36.3 431.5 37.6 434.2 38.8 436.9C40.1 439.6 41.9 443.4 42.7 445.3C43.5 447.2 45.2 450.8 46.5 453.3C47.7 455.9 48.9 458.3 49 458.7C49.4 459.9 54.2 470 54.7 470.5C55 470.8 56 472.5 57 474.2C58 476 59.7 478.9 60.7 480.6C61.7 482.4 63 484.6 63.5 485.7C64 486.7 65.1 488.4 65.9 489.6C66.7 490.8 68.1 493.4 69 495.6C69.9 497.7 71 500 71.5 500.7C72 501.4 72.8 503.2 73.4 504.6C74 506.1 75 508.2 75.6 509.3C77.5 512.8 81.1 526.8 82 533.8C82.3 536.2 82.6 538.3 82.7 538.5C82.8 538.7 82.9 541.2 83 544.1C83 547 83.2 553.6 83.3 558.9C83.4 564.2 83.5 573.4 83.6 579.5C83.7 586.2 83.9 590.8 84.1 591.2C85 592.8 85.5 592.9 100.3 592.7C113.8 592.7 114 592.6 114.8 591.9C115.5 591.3 115.5 591 115.4 583.2C115.2 572.7 115.2 572.8 115.7 566.1C116.2 557.4 117 555.6 120 556.5C122.7 557.3 131.8 563.4 133.1 565.4L134 566.7L134.1 579.1C134.1 591.4 134.1 591.5 134.8 592.3C135.6 593 135.7 593 149.8 593.1C164.7 593.2 166.1 593.1 166.8 591.8C167.1 591.3 167.2 588 167.2 581.6C167.2 567.7 167.5 566.2 171.4 562.4C174.1 559.8 179.8 555.9 180.9 555.9C183.3 555.9 184.1 557.6 184.1 562.9C184.2 565.3 184.4 569 184.6 571.2C184.8 573.4 185.1 578.4 185.3 582.3C185.6 590.2 185.7 590.8 186.8 591.8C187.5 592.5 188 592.5 199.7 592.8C216.7 593.3 216.6 593.3 216.9 587.2C217 585.2 216.9 581.3 216.8 578.6C216.2 567.9 216.3 543.2 217 539.8C217.9 534.6 221.9 519 222.7 517C223.2 515.9 223.7 514.4 223.9 513.7C225.4 508.8 229.8 499.4 233.3 493.5C234.3 491.9 235.4 489.9 235.8 489C236.1 488.2 236.9 486.9 237.5 486C238.1 485.2 239.2 483.4 239.8 482.1C240.5 480.8 241.8 478.6 242.7 477.1C243.6 475.6 244.4 474.3 244.4 474.1C244.4 473.9 244.9 473.1 245.4 472.2C246 471.4 247 469.5 247.7 468C248.4 466.5 250.2 463.4 251.6 461.1C253 458.8 254.8 455.3 255.5 453.4C256.3 451.4 257.2 449.4 257.5 448.9C257.9 448.3 258.5 446.8 259 445.5C260.1 442.3 264.1 432.5 264.9 431C266.6 427.5 273.3 409.7 274.1 406.5C274.4 405.3 275 403.6 275.4 402.8C276.3 401.1 276.8 398.9 278 393.1C278.4 391.2 279.1 388.2 279.7 386.4C280.3 384.5 281.1 380.9 281.6 378.3C282.1 375.7 282.7 372.9 282.9 372.1C283.6 370 284.9 363.6 285.8 358.5C286.2 356 286.9 351.7 287.5 348.9C288 346 288.6 341.7 288.8 339.3C289 336.9 289.4 333.3 289.8 331.4C290.2 329.4 290.5 327.1 290.5 326.3C290.5 325.4 290.7 323.1 291 321.1C291.6 316.1 292.1 310 292.1 306.6C292.1 305 292.4 301.3 292.6 298.5C293 294.8 293.1 285.7 293.3 267.1C293.5 239.9 293.3 233.1 292 217.4C291.7 214.3 291.5 210.8 291.5 209.5C291.5 208.3 291.3 206.4 291 205.4C290.7 204.4 290.3 202.3 290.1 200.7C289.5 196.6 288.5 189.9 287.9 186.8C287.7 185.3 287.4 183.1 287.4 181.9C287.4 180.7 287.1 178.8 286.8 177.7C286.5 176.6 286.1 174.4 286 172.8C285.8 171.2 285.4 168.1 285.1 165.9C284.7 163.7 284.3 160.4 284.1 158.5C283.5 153.7 282.1 146.5 281.1 143.9C280.1 141.2 277.7 131.5 277.7 130.1C277.7 129 274.9 116.9 274.2 114.8C273.9 114 273.6 112.7 273.5 111.8C273.2 109.6 269.9 99.8 268.8 97.6C268.3 96.7 267.1 93.3 266.1 90.1C265 86.9 263.7 82.9 263.1 81.3C262.5 79.6 261.8 77.2 261.6 75.9C261.1 73.2 259 66.5 257.9 64.3C257.4 63.5 257 62.1 257 61.1C256.9 60.2 256.7 57.7 256.5 55.7C256.2 52.7 256.2 51.2 256.7 47.8C257.4 42.1 257.6 41.6 259.6 38.8C260.6 37.5 262 35.7 262.7 34.6C264.2 32.4 268.3 27.7 270.3 25.6C271.2 24.8 272.5 23.2 273.4 22.1C274.2 21 276.7 18.3 278.9 16.2C287.5 7.8 287.1 6.5 276 7C265.3 7.4 248.4 7.7 246.1 7.4C244.9 7.3 240.2 7.3 235.7 7.5C231.1 7.6 225.1 7.6 222.2 7.5C219.4 7.4 214.3 7.4 211 7.6C206.6 7.8 204.3 7.8 202.4 7.5C200.2 7.1 196.1 7.1 186.6 7.3C185.6 7.3 171.4 7.2 155 7.1C138.6 6.9 125.2 6.9 125.1 7ZM249.9 13.9C262.2 14.3 262.7 14.4 263.1 1Line truncated
|
||||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 350 350" width="350" height="350" fill="currentColor"><path d="M172.1 9.4C171.9 9.7 170.3 13.2 168.4 17C166.6 20.9 164.9 24.3 164.6 24.6C164.3 24.9 163.7 26 163.1 27.2C161.3 30.9 157 34 151.3 35.6C145.7 37.2 120 47 118.5 48.2C118.4 48.3 115 50.1 111 52.1C104.1 55.6 98.6 59 93.9 62.8C92.6 63.7 90.9 65 90 65.6C86.4 68 77.4 76.1 75.1 78.9C74.4 79.8 72 82.4 69.8 84.7C67.5 86.9 64.9 89.9 63.7 91.2C62.7 92.5 60.2 95.4 58.2 97.5C56.3 99.7 54.3 101.9 53.9 102.6C53.4 103.2 51.7 105.3 50 107.3C48.3 109.2 46.5 111.4 46 112.1C43.7 115.1 40.8 115.8 36.2 114.4C33.8 113.7 28.9 112.7 24.6 112C23.3 111.8 19.7 110.8 16.7 109.8C10.5 107.7 9.8 107.6 8.9 108.8C7.7 110.4 7.5 112.3 7.3 137.4C7 158.5 7 167.4 7.3 200.6C7.4 222.7 7.4 222.2 9.2 221.8C9.7 221.6 12.4 220.2 15.2 218.5C23.8 213.4 27.4 212.4 29.8 214.5C30.8 215.4 31.2 216.3 33 221.8C37.9 236.7 43.5 250.8 45.7 253.7C46.3 254.5 47.2 255.9 47.5 256.8C48.1 258.2 49.1 259.8 52.6 265.1C53.4 266.2 55.2 268.9 56.7 271.1C62.6 279.9 74.1 291.4 85.7 300.2C87.7 301.8 90.3 303.8 91.2 304.6C96.2 308.8 101.9 312.5 106.9 314.8C108.6 315.6 110.5 316.6 111.1 317C113 318.4 131.9 325 138.4 326.5C143.6 327.8 149.5 329.1 150.2 329.1C151.6 329.1 154.4 330.2 155.5 331.1C157.1 332.5 157.6 333.6 158.4 337C159.3 341.4 157.6 341 175.4 340.9C190.4 340.8 191.7 340.7 192.4 339.7C192.5 339.5 192.6 338.2 192.6 337C192.6 332.4 193.2 332 203.8 329.2C214.1 326.6 219.1 325.1 225.2 322.8C227.9 321.8 231.6 320.4 233.5 319.7C235.3 319 237.7 318 238.7 317.5C239.7 317 241.5 316.2 242.6 315.8C243.8 315.3 245.9 314.2 247.2 313.3C248.5 312.4 250.6 311.2 251.8 310.6C256 308.5 264.9 302.1 269 298.3C270.2 297.1 272.1 295.6 273.2 294.9C279.1 290.8 294.6 273.5 301.5 263.4C302.4 262.1 303.7 260.1 304.5 259C307 255.3 309.6 250.3 313.2 242.5C318.4 231 319.4 228.7 322 221C324.5 213.6 324.8 213 326.6 212.4C328.3 211.9 330.6 213.1 334.6 216.9C340.2 222 341.8 222.7 342.8 220.9C343.2 220.1 343.1 189.8 342.7 135.9C342.6 127.6 342.7 118.9 342.9 115.7C343.4 107.9 342.7 106 339.6 106.4C336.3 106.8 317.1 113.3 315.4 114.5C311.3 117.7 307.7 117.4 305.2 113.7C304.7 112.9 303.6 111.6 302.7 110.6C301.8 109.6 300.9 108.4 300.6 107.8C299.8 106.3 288.7 91.5 285.9 88.1C284.5 86.6 281.6 83.5 279.3 81.4C277 79.3 273.5 75.9 271.3 73.8C266.7 69.4 261.8 65.5 258.8 63.7C257.6 63.1 256 62 255.1 61.3C254.3 60.6 251.5 58.9 249 57.6C246.5 56.3 243.5 54.5 242.5 53.7C239.4 51.5 234.9 49.3 228.3 46.8C227.6 46.6 226.1 45.9 224.9 45.3C223.7 44.7 220.2 43.4 217.2 42.5C195 35.5 189.8 33.5 187.9 31.5C186.7 30.1 182.3 22.5 177.8 14C176.7 12 175.5 10 175 9.6C174 8.7 172.6 8.6 172.1 9.4ZM175.5 25.8C177 26.6 178.1 28.6 181 35.9C182.6 39.7 184 43 184.3 43.3C184.6 43.8 186.4 48.5 188.1 53.9C190.1 59.8 193.1 73.6 193.7 78.9C194.3 84.6 194.2 102 193.5 106.5C192.9 110.6 191 120.8 190 124.7C188.4 131.2 188.3 131.6 188.6 132.2C189 132.9 188.8 132.9 196.8 132.5C206.5 132 222 133.9 223.9 135.9C225.3 137.2 224.5 140.4 221.9 143.8C221.2 144.7 220.1 146.3 219.5 147.3C218.9 148.3 218.1 149.6 217.7 150.1C217.3 150.7 216.5 152 216 153C215.5 154 214.1 156.3 213 158C209.2 164.1 202.8 178.9 199.2 190.1C198.2 193.2 196.8 197.2 196.3 198.9C195.7 200.5 195 203.2 194.7 204.8C194.3 206.5 193.8 208.5 193.5 209.4C193.2 210.2 192.9 211.4 192.8 212C192.7 212.5 192.2 214.6 191.7 216.7C191.1 218.7 190.5 221.3 190.3 222.5C190.2 223.8 189.6 226.5 189.1 228.8C187.8 234.8 187 239.7 186.3 246.1C185.9 249.3 185.5 253.3 185.2 255C185.1 256.6 184.7 260 184.4 262.5C183.4 271.5 183.2 276.5 183 298.2C182.8 317 182.9 320.8 183.4 324.9C184.1 331.3 183.6 333.2 180.7 334.6C178.7 335.6 172.8 335.6 171 334.6C168.4 333.2 168.4 333.1 168.4 319.1C168.4 312.3 168.5 305.2 168.7 303.4C169.1 299 168.7 282.2 168 273.1C167.7 269.2 167.1 261.4 166.8 255.6C165.8 240.7 165.5 236.5 165.1 233.6C164.9 232.3 164.7 229.7 164.6 228C164.5 226.2 163.9 222.4 163.4 219.6C162.9 216.7 162.4 213.1 162.2 211.6C161.9 207.1 159.6 197.8 157.4 191.3C156.4 188.6 155.1 184.6 154.5 182.4C153.9 180.2 152.8 176.8 152.2 175C151.5 173.2 150.6 170.6 150.1 169.3C148.6 164.5 147.3 161.9 141.9 151.5C136.3 140.6 134.8 136.4 135.8 134.4C136.8 132.5 137.8 132.3 149 132.2L159.2 132L159.5 131.1C159.7 130.4 159.6 129.3 158.9 126.5C157.9 122.5 157.2 118.4 156.9 115.7C156.8 114.7 156.3 111.8 155.8 109.3C154.1 99.6 153.6 87.3 154.6 80.2C155 77.8 155.6 73.5 156 70.7C156.5 67.6 157.1 64.5 157.6 63.3C158 62.1 159.1 59 160 56.4C163.9 45.1 166.6 38 168.5 34.2C169 33.3 169.9 31.2 170.5 29.6C172.1 25.3 173.1 24.6 175.5 25.8ZM152.8 45C155.3 46 155.3 47.5 152.5 57.2C150.4 64.6 149.7 67.4 149.3 70.1C149.1 71.6 148.7 74.6 148.4 76.7C148.2 78.8 147.8 80.9 147.8 81.4C147.7 81.9 147.4 85.3 147.1 89C146.5 98.7 146.2 99 137.6 102.8C125.1 108.3 125.1 108.3 121.1 111.6C120.2 112.3 118.2 113.6 116.9 114.3C115.5 115.1 113.8 116.2 113.1 116.7C112.4 117.3 110.8 118.4 109.5 119.3C108.2 120.1 106.3 121.6 105.2 122.6C104.2 123.5 102.4 125 101.2 125.7C100 126.5 98.1 128.3 96.8 129.7C93 134 88.8 139.3 87.9 140.9C87.4 141.7 86.5 14Line truncated
|
||||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 350 700" width="350" height="700" fill="currentColor"><path d="M172 11.5C171.7 12 171.2 13.6 170.8 15.2C170.5 16.7 169.8 18.9 169.3 19.9C168.9 20.9 168 23.6 167.4 25.8C166.9 28.1 166.1 30.9 165.6 32.2C165.1 33.4 164.4 35.9 164 37.7C163.7 39.4 163 41.7 162.5 42.7C162.1 43.7 161.2 45.8 160.7 47.2C160.1 48.7 159 51 158.3 52.2C157.6 53.5 156.5 55.8 156 57.4C155.5 58.9 154.6 61.1 154 62.1C153.4 63.2 152.3 65.4 151.4 67C150.7 68.5 149.4 70.7 148.7 71.8C148 72.9 147.1 74.3 146.9 75C145.8 77.5 140.7 83 138.1 84.2C137.1 84.7 135.6 85.7 134.6 86.5C133.6 87.2 131.7 88.3 130.4 88.9C129 89.5 127.2 90.6 126.3 91.3C125.4 92.1 124.1 92.9 123.3 93.1C122.5 93.3 121 94 120 94.7C119 95.3 117.1 96.2 115.8 96.7C114.5 97.1 112.8 98 112 98.5C111.2 99 110.1 99.5 109.6 99.7C107 100.4 100.7 104.3 97.2 107.3C96.2 108.1 94.6 109.2 93.6 109.7C92.6 110.2 90.8 111.6 89.5 112.8C88.3 113.9 86.3 115.5 85.2 116.3C84 117.1 82.3 118.8 81.3 120C80.3 121.2 74.7 127 68.9 132.8C54.6 147.1 51.7 150.3 49.2 154.4C44.8 161.6 44.1 162.2 40.9 162.6C39.2 162.7 38.8 162.6 36 161.2C34.3 160.4 32.5 159.6 32 159.5C31.6 159.3 29.7 158.5 27.9 157.6C26.1 156.7 23 155.4 20.9 154.8C18.8 154.2 15.8 153.2 14.2 152.6C7.7 150.3 7.2 151 7.3 162.3C7.3 165.8 7.2 173.9 7.1 180.5C6.7 195.6 6.5 264.8 6.9 265.7C7.3 267 8.2 266.9 10.7 265.6C12 265 14.2 263.9 15.7 263.2C17.2 262.6 19.1 261.7 19.9 261.2C22.1 259.8 23.6 259.4 26.1 259.4C29.9 259.4 30.8 260.3 32.1 265.7C32.4 266.8 32.9 268.4 33.3 269.4C33.7 270.3 34.4 272.4 35 274.1C36.7 279.2 37.4 281.4 38.6 284.5C39.2 286.1 40.3 289.1 41.1 291.2C42.9 296.4 43.3 297.2 45.1 300.3C46 301.7 47.7 304.8 48.9 307.2C50.2 309.5 51.7 312 52.5 312.8C53.2 313.6 55.5 316.7 57.5 319.5C62.8 327.2 74.7 338.9 84.6 346.3C86 347.3 87.6 348.8 88.3 349.7C89.1 350.5 91.2 352.3 93 353.6C94.9 354.9 97.6 356.8 99.1 357.8C103.6 361 109.8 364.8 115.7 367.9C117.8 369.1 119.6 370.5 123.5 374C124.4 374.8 125.6 376.3 126.1 377.4C126.7 378.4 128.8 381.4 130.8 383.9C132.9 386.5 134.8 389.2 135.2 389.9C135.6 390.6 136.7 392.5 137.7 394.2C139.6 397.5 142 402.9 142.5 405.1C142.7 405.8 143.5 408.8 144.4 411.7C147.2 421.6 149.4 433.4 150 442.6C150.2 445.4 150.4 448.1 150.5 448.5C150.6 448.8 150.8 452.1 151 455.7C151.5 467.2 151.9 473.1 152.1 473.4C152.7 474.3 153.4 482.6 153.5 489.3C153.6 494.3 153.8 497.8 154.1 499.7C154.5 501.4 154.7 504.4 154.7 507.3C154.7 509.8 154.8 513 155 514.3C155.3 516 155.3 517.5 155 519.6C154.7 521.7 154.7 523.5 155 526.4C156.4 539.7 155.6 583.2 154 590.1C153.6 591.6 151.6 594.9 149.4 597.7C148.5 599 147.2 600.7 146.6 601.7C146.1 602.6 144.9 604.2 144 605.3C143.1 606.3 142.2 607.8 141.9 608.5C141.7 609.1 140.7 610.9 139.8 612.3C136.8 616.9 135.8 618.5 132.9 624.7C131 628.6 130.6 630.3 129.8 639.9C129.1 647.7 130.8 655.9 134.3 662C139.4 670.8 143.7 676.3 147.2 678.5C148.4 679.3 150.1 680.6 151 681.5C152.1 682.6 153.2 683.3 154.4 683.7C155.4 684 157 684.7 158 685.2C159 685.7 162 686.8 164.7 687.7C170.2 689.5 172.5 689.6 182.6 688.7C189 688.1 190.6 687.7 193.8 685.8C195.1 685.1 196.8 684.1 197.5 683.8C199.7 682.8 205.7 677.8 208.7 674.6C212 671.1 214 667.3 217 659.5C220.7 649.6 221.5 643.8 220.1 636C219.8 634.3 219.3 631.5 219 629.8C218.3 625.7 217.4 623.3 214.2 617.3C212.7 614.7 211.1 611.6 210.7 610.5C210.2 609.4 209.1 607.7 208.3 606.6C206.5 604.3 203.8 599.7 202.6 597C202.1 595.9 201 593.9 200.1 592.4C198.2 589.4 197.9 588.7 197 583.6C195.7 575.6 195.2 554.9 196 540.7C196.2 536.9 196.4 529.7 196.5 524.7C196.5 519.7 196.8 513.2 197.1 510.3C197.4 507.3 197.7 503.8 197.7 502.4C197.7 501 197.9 497.8 198.2 495.3C198.5 492.8 198.9 489.3 199 487.6C199.2 485.9 199.5 481.3 199.9 477.5C200.7 467.5 202.6 452.6 203.7 446.9C204.3 444.3 204.9 440.7 205.1 439C206 431.3 207.2 424.1 207.8 422.2C208.1 421.1 208.5 419.7 208.6 419.1C209.7 413.2 216.9 395.7 220 391.2C220.5 390.4 221.5 388.6 222.1 387.2C224.5 381.5 230 372.8 232.1 371.3C232.8 370.8 234.3 369.6 235.4 368.6C236.6 367.5 239.4 365.6 242.6 363.8C249.7 359.8 256.1 355.5 259.2 352.7C260.6 351.4 263 349.4 264.7 348.2C266.3 347 267.6 346 267.6 345.8C267.6 345.7 269.2 344.2 271.2 342.6C275 339.4 286.2 328.4 287.7 326.3C288.2 325.6 290 323.5 291.6 321.6C293.3 319.7 295.4 317.1 296.3 315.9C297.2 314.7 298.6 312.9 299.4 312C300.2 311 301.4 309.1 302.2 307.8C303 306.4 304.3 304.3 305.2 303.1C306.7 301.1 311.1 292.5 312.7 288.5C313 287.6 313.7 286.1 314.3 285.1C314.8 284.2 315.6 282.4 316 281.1C316.4 279.8 317.1 277.9 317.5 276.8C318 275.7 318.6 273.6 319 272.1C321 263 321.8 260.3 323 259.1C323.9 257.9 326.1 256.8 327.4 256.8C328.5 256.8 332.1 258.8 335.3 261.3C340.6 265.4 342.5 266.4 343 265.5C343.3 265 343.3 171.9 343 171.4C342.9 171.2 342.8 167.1 342.8 162.1C342.8 153.2 342.8 153.2 342 152.4C340.9 151.3 338.6 151.3 336 152.5C332.7 153.8 326.9 155.8 324.2 156.6C322.8 157 320.6 157.8 319.3 158.5C316.7 159.8 311.3 161.3 309.4 161.3C307.1 161.3 305.7 160.4 303.6 157.7C299.3 151.9 291.5 142.9 285 136.3C278.5 129.5 275 125.7 273.4 123.6C273 123.1 271.8 122Line truncated
|
||||||
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100" width="50" height="100" fill="currentColor"><path d="M8 0V100H16V0Z M34 0V100H42V0Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 154 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50" width="100" height="50" fill="currentColor"><path d="M0 8H100V16H0Z M0 34H100V42H0Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 154 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50" height="50" fill="currentColor"><path d="M8 0H16V34H50V42H8Z M34 0H42V8H50V16H34Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 162 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" fill="currentColor" fill-rule="evenodd"><path d="M0 0H100V250H250V0H600V350H350V500H600V600H0Z M350 100V250H500V100Z M100 350V500H250V350Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 210 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" fill="currentColor" fill-rule="evenodd"><g transform="translate(600,0) scale(-1,1)"><path d="M0 0H100V250H250V0H600V350H350V500H600V600H0Z M350 100V250H500V100Z M100 350V500H250V350Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 258 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" fill="currentColor" fill-rule="evenodd"><g transform="translate(0,600) scale(1,-1)"><path d="M0 0H100V250H250V0H600V350H350V500H600V600H0Z M350 100V250H500V100Z M100 350V500H250V350Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 258 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" fill="currentColor" fill-rule="evenodd"><g transform="translate(600,600) scale(-1,-1)"><path d="M0 0H100V250H250V0H600V350H350V500H600V600H0Z M350 100V250H500V100Z M100 350V500H250V350Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 261 B |
@@ -22,9 +22,28 @@ const PRECACHE = [
|
|||||||
'./',
|
'./',
|
||||||
'./manifest.webmanifest',
|
'./manifest.webmanifest',
|
||||||
'./css/app.css',
|
'./css/app.css',
|
||||||
'./css/bootstrap.min.css',
|
'./fonts/DayLeafInitials.woff2',
|
||||||
'./js/htmx.min.js',
|
'./fonts/EBGaramond.woff2',
|
||||||
'./js/bootstrap.bundle.min.js'
|
'./fonts/EBGaramond-Italic.woff2',
|
||||||
|
'./ornaments/group-l-49.svg',
|
||||||
|
'./ornaments/mural-311a.svg',
|
||||||
|
'./ornaments/schuil-01.svg',
|
||||||
|
'./ornaments/schuil-06.svg',
|
||||||
|
'./ornaments/schuil-07.svg',
|
||||||
|
'./ornaments/schuil-08.svg',
|
||||||
|
'./ornaments/schuil-10.svg',
|
||||||
|
'./ornaments/schuil-11.svg',
|
||||||
|
'./ornaments/schuil-12.svg',
|
||||||
|
'./ornaments/schuil-13.svg',
|
||||||
|
'./ornaments/schuil-14.svg',
|
||||||
|
'./ornaments/schuil-15.svg',
|
||||||
|
'./ornaments/schuil-16.svg',
|
||||||
|
'./ornaments/schuil-brass-v.svg',
|
||||||
|
'./ornaments/schuil-10-tl.svg',
|
||||||
|
'./ornaments/schuil-10-tr.svg',
|
||||||
|
'./ornaments/schuil-10-bl.svg',
|
||||||
|
'./ornaments/schuil-10-br.svg',
|
||||||
|
'./js/htmx.min.js'
|
||||||
].concat(TEMPLATE_URLS);
|
].concat(TEMPLATE_URLS);
|
||||||
|
|
||||||
function cacheFor(req) {
|
function cacheFor(req) {
|
||||||
@@ -188,23 +207,6 @@ async function referenceOf(code, anchor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function verseOf(page, at) {
|
|
||||||
const code = bookOf(page);
|
|
||||||
const anchor = parseAnchor(at);
|
|
||||||
if (!page || !code || !anchor || !anchor.verse) return null;
|
|
||||||
|
|
||||||
const reference = await referenceOf(code, at);
|
|
||||||
if (!reference) return null;
|
|
||||||
const option = reference.verses.find((verse) => verse.id === at);
|
|
||||||
if (!option) return null;
|
|
||||||
|
|
||||||
return {
|
|
||||||
ref: code + ' ' + anchor.chapter + ':' + option.label,
|
|
||||||
href: code + '#' + at,
|
|
||||||
url: page.origin + page.pathname + '#' + at
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const OFFLINE_NOTICE = ['Not available offline',
|
const OFFLINE_NOTICE = ['Not available offline',
|
||||||
'This page has not been opened on this device, so there is no copy stored ' +
|
'This page has not been opened on this device, so there is no copy stored ' +
|
||||||
'here. Reconnect and try again, or open one you have read before.'];
|
'here. Reconnect and try again, or open one you have read before.'];
|
||||||
@@ -223,16 +225,15 @@ async function fragmentFor(path, event) {
|
|||||||
async function servePage(path, code, call) {
|
async function servePage(path, code, call) {
|
||||||
let fragment = await fragmentFor(path, call.event);
|
let fragment = await fragmentFor(path, call.event);
|
||||||
if (!code) {
|
if (!code) {
|
||||||
fragment += '\n' + await view.render('version.njk', { version: VERSIONS });
|
fragment = await view.render('home.njk', { content: fragment, version: VERSIONS });
|
||||||
}
|
}
|
||||||
const reference = await referenceOf(code, null);
|
const chrome = { sidebar: !!code, reference: await referenceOf(code, null) };
|
||||||
if (!call.navigate && !call.restore) {
|
if (!call.navigate && !call.restore) {
|
||||||
return fragment + '\n'
|
return fragment + '\n'
|
||||||
+ await view.render('reference.njk', { reference: reference, oob: true });
|
+ await view.render('sidebar.njk', Object.assign({ oob: true }, chrome));
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return await view.compose(fragment, { mark: await getBookmark(),
|
return await view.compose(fragment, chrome);
|
||||||
reference: reference });
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('compose failed: ' + err.message);
|
console.error('compose failed: ' + err.message);
|
||||||
return fragment;
|
return fragment;
|
||||||
@@ -248,11 +249,13 @@ router.get('/api/reference', async (call) => {
|
|||||||
const page = call.currentUrl();
|
const page = call.currentUrl();
|
||||||
const moved = params.has('at') ? params.get('at') : null;
|
const moved = params.has('at') ? params.get('at') : null;
|
||||||
|
|
||||||
|
const code = bookOf(page);
|
||||||
const reference = await referenceOf(
|
const reference = await referenceOf(
|
||||||
bookOf(page), moved === null ? (page && page.hash.slice(1)) : moved);
|
code, moved === null ? (page && page.hash.slice(1)) : moved);
|
||||||
|
|
||||||
if (moved === null) {
|
if (moved === null) {
|
||||||
return view.render('reference.njk', { reference: reference, settled: true });
|
return view.render('sidebar.njk',
|
||||||
|
{ sidebar: !!code, reference: reference, settled: true });
|
||||||
}
|
}
|
||||||
if (!reference) return new Response('', { status: 204 });
|
if (!reference) return new Response('', { status: 204 });
|
||||||
|
|
||||||
@@ -267,52 +270,6 @@ router.get('/api/reference', async (call) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/api/verse', async (call) => {
|
|
||||||
const verse = await verseOf(call.currentUrl(), call.url.searchParams.get('at'));
|
|
||||||
if (!verse) return new Response('', { status: 204 });
|
|
||||||
return view.render('verse.njk', { verse: verse });
|
|
||||||
});
|
|
||||||
|
|
||||||
router.post('/api/bookmark', async (call) => {
|
|
||||||
try {
|
|
||||||
const form = await call.form();
|
|
||||||
const ref = String(form.get('ref') || '').trim();
|
|
||||||
const href = String(form.get('href') || '').trim();
|
|
||||||
if (!ref || !href) return new Response('', { status: 400 });
|
|
||||||
await withStore('readwrite',
|
|
||||||
(s) => s.put({ ref: ref, href: href, savedAt: Date.now() }, BOOKMARK_KEY));
|
|
||||||
return new Response(await bookmarkFragment('bookmarked'), {
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'text/html; charset=utf-8',
|
|
||||||
'Cache-Control': 'no-store',
|
|
||||||
'HX-Trigger-After-Settle': 'verse-done'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (err) {
|
|
||||||
return bookmarkFragment('bookmark-refused');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const TOASTS = {
|
|
||||||
'copied': { text: 'Link copied.' },
|
|
||||||
'copy-refused': { text: 'Copy the link above: this browser would not '
|
|
||||||
+ 'take it.', bad: true },
|
|
||||||
'bookmarked': { text: 'Bookmark set.' },
|
|
||||||
'bookmark-refused': { text: 'Could not save the bookmark: storage '
|
|
||||||
+ 'unavailable.', bad: true }
|
|
||||||
};
|
|
||||||
|
|
||||||
function toastFragment(say, oob) {
|
|
||||||
const toast = TOASTS[say];
|
|
||||||
return view.render('toast.njk', { text: toast.text, bad: toast.bad, oob: oob });
|
|
||||||
}
|
|
||||||
|
|
||||||
router.get('/api/toast', (call) => {
|
|
||||||
const say = call.url.searchParams.get('say');
|
|
||||||
if (!TOASTS[say]) return new Response('', { status: 204 });
|
|
||||||
return toastFragment(say, false);
|
|
||||||
});
|
|
||||||
|
|
||||||
let filling = null;
|
let filling = null;
|
||||||
let complete = false;
|
let complete = false;
|
||||||
|
|
||||||
@@ -349,43 +306,3 @@ async function fillLibrary() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const DB_NAME = 'bible';
|
|
||||||
const DB_STORE = 'kv';
|
|
||||||
const BOOKMARK_KEY = 'bookmark';
|
|
||||||
|
|
||||||
const DEFAULT_BOOKMARK = { ref: 'GEN 1:1', href: 'GEN#v1_1' };
|
|
||||||
|
|
||||||
function openDb() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const req = indexedDB.open(DB_NAME, 1);
|
|
||||||
req.onupgradeneeded = () => req.result.createObjectStore(DB_STORE);
|
|
||||||
req.onsuccess = () => resolve(req.result);
|
|
||||||
req.onerror = () => reject(req.error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function withStore(mode, fn) {
|
|
||||||
const db = await openDb();
|
|
||||||
try {
|
|
||||||
return await new Promise((resolve, reject) => {
|
|
||||||
const tx = db.transaction(DB_STORE, mode);
|
|
||||||
const req = fn(tx.objectStore(DB_STORE));
|
|
||||||
tx.oncomplete = () => resolve(req ? req.result : undefined);
|
|
||||||
tx.onabort = tx.onerror = () => reject(tx.error);
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getBookmark() {
|
|
||||||
return withStore('readonly', (s) => s.get(BOOKMARK_KEY))
|
|
||||||
.catch(() => null)
|
|
||||||
.then((mark) => mark || DEFAULT_BOOKMARK);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function bookmarkFragment(say) {
|
|
||||||
return await view.render('bookmark.njk', { mark: await getBookmark() })
|
|
||||||
+ '\n' + await toastFragment(say, true);
|
|
||||||
}
|
|
||||||
@@ -4,70 +4,40 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>{% block title %}{{ title | safe }}{% endblock %}</title>
|
<title>{% block title %}{{ title | safe }}{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="css/bootstrap.min.css">
|
|
||||||
<link rel="stylesheet" href="css/app.css">
|
<link rel="stylesheet" href="css/app.css">
|
||||||
<meta name="htmx-config"
|
<meta name="htmx-config"
|
||||||
content='{"historyCacheSize":0,"refreshOnHistoryMiss":false}'>
|
content='{"historyCacheSize":0,"refreshOnHistoryMiss":false}'>
|
||||||
<script src="js/bootstrap.bundle.min.js" defer></script>
|
|
||||||
<script src="js/htmx.min.js"></script>
|
<script src="js/htmx.min.js"></script>
|
||||||
<link rel="manifest" href="manifest.webmanifest">
|
<link rel="manifest" href="manifest.webmanifest">
|
||||||
<meta name="theme-color" content="#1a202c">
|
<meta name="theme-color" content="#1a202c">
|
||||||
|
<link rel="icon" href="icons/favicon.ico" sizes="16x16 32x32 48x48">
|
||||||
|
<link rel="icon" href="icons/favicon.svg" type="image/svg+xml">
|
||||||
<link rel="apple-touch-icon" href="icons/apple-touch-icon.png">
|
<link rel="apple-touch-icon" href="icons/apple-touch-icon.png">
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||||
<meta name="apple-mobile-web-app-title" content="Bible">
|
<meta name="apple-mobile-web-app-title" content="Bible">
|
||||||
</head>
|
</head>
|
||||||
<body class="{% block body_class %}{% endblock %} bg-body-tertiary"
|
<body class="{% block body_class %}{% endblock %}"
|
||||||
hx-boost="true" hx-target="#content" hx-swap="innerHTML show:window:top">
|
hx-boost="true" hx-target="#content" hx-swap="innerHTML show:window:top">
|
||||||
|
|
||||||
<nav class="site-header navbar navbar-expand-lg bg-dark sticky-top"
|
{% include "sidebar.njk" %}
|
||||||
data-bs-theme="dark">
|
|
||||||
<div class="container-xl">
|
|
||||||
<a class="navbar-brand" href="./">Bible</a>
|
|
||||||
{% include "reference.njk" %}
|
|
||||||
<button class="navbar-toggler" type="button"
|
|
||||||
data-bs-toggle="collapse" data-bs-target="#site-nav"
|
|
||||||
aria-controls="site-nav" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="site-nav">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
{% block navbar_nav %}
|
|
||||||
{% endblock %}
|
|
||||||
</ul>
|
|
||||||
{% include "bookmark.njk" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<main class="container-xl my-4">
|
<main id="content" hx-history-elt>
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div id="content" class="col-12 col-xl-8" hx-history-elt
|
|
||||||
hx-on:click="var verse = event.target.closest('.v[id]');
|
|
||||||
if (verse) htmx.ajax('GET', 'api/verse?at=' + verse.id,
|
|
||||||
{ target: '#verse-dialog .modal-content',
|
|
||||||
swap: 'innerHTML' });"
|
|
||||||
hx-on:keydown="if (event.key !== 'Enter' && event.key !== ' ') return;
|
|
||||||
if (!event.target.matches('.v[id]')) return;
|
|
||||||
event.preventDefault();
|
|
||||||
event.target.click();">
|
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="modal fade" id="verse-dialog" tabindex="-1"
|
<script>
|
||||||
aria-labelledby="verse-dialog-ref" aria-hidden="true"
|
// The sidebar, and on a phone its button, fade out once the page leaves the
|
||||||
hx-on::after-swap="bootstrap.Modal.getOrCreateInstance(this).show();"
|
// top, so they are out of the way while reading; the stylesheet brings the
|
||||||
hx-on:verse-done="bootstrap.Modal.getOrCreateInstance(this).hide();">
|
// sidebar back under the pointer.
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
(function () {
|
||||||
<div class="modal-content"></div>
|
var root = document.documentElement;
|
||||||
</div>
|
function update() { root.classList.toggle('scrolled', window.scrollY > 0); }
|
||||||
</div>
|
addEventListener('scroll', update, { passive: true });
|
||||||
|
update();
|
||||||
<div class="toast-container position-fixed bottom-0 end-0 p-3" id="toasts"></div>
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<span class="bookmark navbar-text d-flex align-items-center gap-1" id="bookmark">
|
|
||||||
<span class="bookmark-label">Bookmark:</span>
|
|
||||||
<a class="bookmark-link link-light text-truncate" href="{{ mark.href }}"
|
|
||||||
hx-boost="false">{{ mark.ref }}</a>
|
|
||||||
</span>
|
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
{# The index inside a Schuil frame, after the specimen page in the American
|
||||||
|
Specimen Book of Type Styles. Each tile is placed as the specimen placed it,
|
||||||
|
in its units (a pica is 100), and the stylesheet scales the units to the
|
||||||
|
screen. Only brass rule stretches: the frame's fixed pieces sit at the
|
||||||
|
corners and in the middle, and the rule between them takes up the rest.
|
||||||
|
|
||||||
|
The right half is the left half turned over. A tile with --ax: 1 is placed
|
||||||
|
from the middle of the frame rather than its left edge, and one with
|
||||||
|
--ay: 1 from its foot rather than its head; --m is the tile's turn. #}
|
||||||
|
<div class="home">
|
||||||
|
<div class="schuil">
|
||||||
|
<div class="schuil-ornaments" aria-hidden="true">
|
||||||
|
{%- for side in ["left", "right"] %}
|
||||||
|
<div class="schuil-half schuil-{{ side }}">
|
||||||
|
{# The corner: four square corners round a box, and the lanterns that
|
||||||
|
lead away from it along the head and down the side. #}
|
||||||
|
<i class="schuil-tile schuil-10" style="--x:150;--y:0;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-10" style="--x:300;--y:150;--m:-1,0,0,-1,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-10" style="--x:0;--y:150"></i>
|
||||||
|
<i class="schuil-tile schuil-10" style="--x:150;--y:300;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-14" style="--x:300;--y:300;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-14" style="--x:0;--y:300"></i>
|
||||||
|
|
||||||
|
{# The head's triple rule, closed at the lantern; its brass runs on
|
||||||
|
across the middle to the other side. #}
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:900;--y:75"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:900;--y:125"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:900;--y:175"></i>
|
||||||
|
|
||||||
|
{# The side's triple rule, from the lantern down to the junction. #}
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:125;--y:900;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:175;--y:900;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:225;--y:900;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-brass-v" style="--x:75;--y:950"></i>
|
||||||
|
<i class="schuil-tile schuil-brass-v" style="--x:125;--y:950"></i>
|
||||||
|
<i class="schuil-tile schuil-brass-v" style="--x:175;--y:950"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:75;--y:1100;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:125;--y:1100;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:175;--y:1100;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-13" style="--x:25;--y:1100"></i>
|
||||||
|
|
||||||
|
{# The side's brass, from the junction down to the foot. #}
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:175;--y:1400;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-rule-v" style="--x:125;--y:1450;--b:850"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:125;--y:-800;--ay:1;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-06" style="--x:100;--y:-800;--ay:1"></i>
|
||||||
|
<i class="schuil-tile schuil-16" style="--x:325;--y:0;--ay:1;--m:-1,0,0,-1,0,0"></i>
|
||||||
|
|
||||||
|
{# The panel round the title. #}
|
||||||
|
<i class="schuil-tile schuil-10 schuil-panel" style="--x:575;--y:425;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-01 schuil-panel" style="--x:575;--y:425"></i>
|
||||||
|
<i class="schuil-tile schuil-01 schuil-panel" style="--x:475;--y:575;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-brass-v schuil-panel" style="--x:425;--y:625"></i>
|
||||||
|
<i class="schuil-tile schuil-01 schuil-panel" style="--x:425;--y:775;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-10 schuil-panel" style="--x:425;--y:775"></i>
|
||||||
|
<i class="schuil-tile schuil-01 schuil-panel" style="--x:575;--y:875"></i>
|
||||||
|
|
||||||
|
{# The band under the title: a curved corner off the junction, brass,
|
||||||
|
and four heads joined in the middle. #}
|
||||||
|
<i class="schuil-tile schuil-12" style="--x:275;--y:1250;--m:1,0,0,-1,0,0"></i>
|
||||||
|
<i class="schuil-rule" style="--x:425;--y:1175;--r:900"></i>
|
||||||
|
<i class="schuil-tile schuil-06" style="--x:-800;--y:1150;--ax:1;--m:0,1,-1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-06" style="--x:-800;--y:1250;--ax:1;--m:0,-1,1,0,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-15" style="--x:-700;--y:1025;--ax:1"></i>
|
||||||
|
<i class="schuil-tile schuil-15" style="--x:-350;--y:1025;--ax:1"></i>
|
||||||
|
<i class="schuil-tile schuil-06" style="--x:-575;--y:1375;--ax:1"></i>
|
||||||
|
<i class="schuil-tile schuil-06" style="--x:-225;--y:1375;--ax:1"></i>
|
||||||
|
|
||||||
|
{# The foot: a curved corner off the finial, closing the brass. #}
|
||||||
|
<i class="schuil-tile schuil-11" style="--x:325;--y:-275;--ay:1"></i>
|
||||||
|
<i class="schuil-tile schuil-01" style="--x:475;--y:-200;--ay:1"></i>
|
||||||
|
</div>
|
||||||
|
{%- endfor %}
|
||||||
|
{# Rules that cross the middle, so there is no seam where the halves
|
||||||
|
meet. #}
|
||||||
|
<i class="schuil-rule" style="--x:950;--y:75"></i>
|
||||||
|
<i class="schuil-rule" style="--x:950;--y:125"></i>
|
||||||
|
<i class="schuil-rule" style="--x:950;--y:175"></i>
|
||||||
|
<i class="schuil-rule schuil-panel" style="--x:625;--y:425"></i>
|
||||||
|
<i class="schuil-rule schuil-panel" style="--x:625;--y:875"></i>
|
||||||
|
|
||||||
|
{# On a phone the panel stands alone, a pair of heads on its head and a
|
||||||
|
pair hung from its foot, their curls meeting in the middle. #}
|
||||||
|
<i class="schuil-tile schuil-07 schuil-crest" style="--ax:.5;--x:-300;--y:0"></i>
|
||||||
|
<i class="schuil-tile schuil-08 schuil-crest" style="--ax:.5;--x:0;--y:0"></i>
|
||||||
|
<i class="schuil-tile schuil-07 schuil-crest" style="--ax:.5;--x:-300;--y:700;--m:1,0,0,-1,0,0"></i>
|
||||||
|
<i class="schuil-tile schuil-08 schuil-crest" style="--ax:.5;--x:0;--y:700;--m:1,0,0,-1,0,0"></i>
|
||||||
|
<i class="schuil-rule" style="--x:525;--y:-200;--ay:1"></i>
|
||||||
|
</div>
|
||||||
|
<h1 class="schuil-title">Holy Bible</h1>
|
||||||
|
{{ content | safe }}
|
||||||
|
</div>
|
||||||
|
{% include "version.njk" %}
|
||||||
|
</div>
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
{% extends "base.njk" %}
|
{% extends "base.njk" %}
|
||||||
{% block body_class %}browsing{% endblock %}
|
{% block body_class %}browsing{% endblock %}
|
||||||
{% block navbar_nav %}
|
|
||||||
{% endblock %}
|
|
||||||
{% block content %}{{ content | safe }}{% endblock %}
|
{% block content %}{{ content | safe }}{% endblock %}
|
||||||
@@ -1,16 +1,6 @@
|
|||||||
<div class="reference navbar-text d-flex{% if not reference %} invisible{% endif %} align-items-center gap-1 ms-3"
|
<div class="reference" id="reference">
|
||||||
id="reference"
|
<label for="reference-chapter">Chapter</label>
|
||||||
{%- if oob %} hx-swap-oob="true"{% endif %}
|
<select class="reference-chapter" id="reference-chapter" name="at"
|
||||||
hx-get="api/reference"
|
|
||||||
{# htmx keeps an event only when the filter returns true exactly, so a
|
|
||||||
string is discarded. #}
|
|
||||||
hx-trigger="{% if reference and not settled %}load[!!location.hash], {% endif %}htmx:historyRestore from:body"
|
|
||||||
hx-target="this" hx-swap="outerHTML">
|
|
||||||
<span class="reference-book text-light fw-semibold"
|
|
||||||
id="reference-book">{{ reference.book }}</span>
|
|
||||||
<label class="visually-hidden" for="reference-chapter">Chapter</label>
|
|
||||||
<select class="reference-chapter form-select form-select-sm"
|
|
||||||
id="reference-chapter" name="at"
|
|
||||||
hx-get="api/reference" hx-target="#reference-verse"
|
hx-get="api/reference" hx-target="#reference-verse"
|
||||||
hx-swap="innerHTML">
|
hx-swap="innerHTML">
|
||||||
{%- for chapter in reference.chapters %}
|
{%- for chapter in reference.chapters %}
|
||||||
@@ -18,10 +8,8 @@
|
|||||||
{%- if chapter.id == reference.chapter %} selected{% endif %}>{{ chapter.label }}</option>
|
{%- if chapter.id == reference.chapter %} selected{% endif %}>{{ chapter.label }}</option>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
</select>
|
</select>
|
||||||
<span class="reference-sep text-light">:</span>
|
<label for="reference-verse">Verse</label>
|
||||||
<label class="visually-hidden" for="reference-verse">Verse</label>
|
<select class="reference-verse" id="reference-verse" name="at"
|
||||||
<select class="reference-verse form-select form-select-sm"
|
|
||||||
id="reference-verse" name="at"
|
|
||||||
hx-get="api/reference" hx-target="this" hx-swap="innerHTML">
|
hx-get="api/reference" hx-target="this" hx-swap="innerHTML">
|
||||||
{% include "verses.njk" %}
|
{% include "verses.njk" %}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{# Only the /:page routes have one. The element is always there, hidden on the
|
||||||
|
others, so that a boosted link in either direction has something to swap
|
||||||
|
out of band, and so a history restore can ask for the right one. #}
|
||||||
|
<div class="sidebar-shell" id="sidebar"
|
||||||
|
{%- if not sidebar %} hidden{% endif %}
|
||||||
|
{%- if oob %} hx-swap-oob="true"{% endif %}
|
||||||
|
hx-get="api/reference"
|
||||||
|
{# htmx keeps an event only when the filter returns true exactly, so a
|
||||||
|
string is discarded. #}
|
||||||
|
hx-trigger="{% if reference and not settled %}load[!!location.hash], {% endif %}htmx:historyRestore from:body"
|
||||||
|
hx-target="this" hx-swap="outerHTML">
|
||||||
|
{# Always open: beside the text on a wide screen, and hidden by the
|
||||||
|
stylesheet on a phone until the button below opens it as a modal. Closing
|
||||||
|
the modal opens it again the plain way, so it is there after a resize.
|
||||||
|
Its box has no padding, so a click on the dialog itself is the backdrop.
|
||||||
|
autofocus has opening focus the dialog itself; otherwise it goes to the
|
||||||
|
first select, and a phone opens the select's picker with it. #}
|
||||||
|
<dialog class="sidebar" open autofocus aria-label="Contents"
|
||||||
|
hx-on:click="if (event.target === this && this.matches(':modal')) this.close();"
|
||||||
|
hx-on:close="if (!this.open) this.show();">
|
||||||
|
<div class="sidebar-body">
|
||||||
|
<h2 class="sidebar-title">Navigation</h2>
|
||||||
|
<hr class="sidebar-rule">
|
||||||
|
{%- if reference %}
|
||||||
|
{% include "reference.njk" %}
|
||||||
|
{%- endif %}
|
||||||
|
{# Names the body's target and swap again: it would otherwise inherit
|
||||||
|
the shell's, and swap the index in for the sidebar. #}
|
||||||
|
<a class="sidebar-index" href="./"
|
||||||
|
hx-target="#content" hx-swap="innerHTML show:window:top">Back to index</a>
|
||||||
|
</div>
|
||||||
|
{# Takes the place of the frame's last corner on a phone, right where the
|
||||||
|
button that opened it was. #}
|
||||||
|
<button class="sidebar-fab sidebar-close" type="button" aria-label="Close"
|
||||||
|
hx-on:click="this.closest('dialog').close();"></button>
|
||||||
|
</dialog>
|
||||||
|
<button class="sidebar-fab sidebar-open" type="button" aria-label="Contents"
|
||||||
|
hx-on:click="var dialog = this.previousElementSibling;
|
||||||
|
dialog.close();
|
||||||
|
dialog.showModal();"></button>
|
||||||
|
</div>
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{% if oob %}<div hx-swap-oob="beforeend:#toasts">{% endif %}
|
|
||||||
<div class="toast align-items-center{% if bad %} text-bg-danger{% endif %}"
|
|
||||||
role="alert" aria-live="assertive" aria-atomic="true"
|
|
||||||
hx-on::load="bootstrap.Toast.getOrCreateInstance(this).show();"
|
|
||||||
hx-on:hidden.bs.toast="this.remove();">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="toast-body">{{ text }}</div>
|
|
||||||
<button type="button"
|
|
||||||
class="btn-close{% if bad %} btn-close-white{% endif %} me-2 m-auto"
|
|
||||||
data-bs-dismiss="toast" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% if oob %}</div>{% endif %}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
<div class="modal-header">
|
|
||||||
<h2 class="modal-title fs-5 verse-dialog-ref" id="verse-dialog-ref">{{ verse.ref }}</h2>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<label class="visually-hidden" for="verse-dialog-url">Link to {{ verse.ref }}</label>
|
|
||||||
<input class="verse-dialog-url form-control form-control-sm" id="verse-dialog-url"
|
|
||||||
type="text" readonly value="{{ verse.url }}">
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<form class="verse-dialog-actions d-flex flex-wrap gap-2 m-0"
|
|
||||||
hx-post="api/bookmark" hx-target="#bookmark" hx-swap="outerHTML">
|
|
||||||
<input type="hidden" name="ref" value="{{ verse.ref }}">
|
|
||||||
<input type="hidden" name="href" value="{{ verse.href }}">
|
|
||||||
<button class="btn btn-outline-secondary" type="button"
|
|
||||||
hx-on:click="var button = this;
|
|
||||||
var field = document.getElementById('verse-dialog-url');
|
|
||||||
var toast = function (say) {
|
|
||||||
htmx.ajax('GET', 'api/toast?say=' + say,
|
|
||||||
{ target: '#toasts', swap: 'beforeend' });
|
|
||||||
};
|
|
||||||
var copied = function () {
|
|
||||||
toast('copied');
|
|
||||||
button.dispatchEvent(
|
|
||||||
new CustomEvent('verse-done', { bubbles: true }));
|
|
||||||
};
|
|
||||||
var select = function () {
|
|
||||||
field.focus();
|
|
||||||
field.select();
|
|
||||||
};
|
|
||||||
var refused = function () {
|
|
||||||
select();
|
|
||||||
toast('copy-refused');
|
|
||||||
};
|
|
||||||
if (navigator.clipboard) {
|
|
||||||
navigator.clipboard.writeText(field.value)
|
|
||||||
.then(copied, refused);
|
|
||||||
} else {
|
|
||||||
select();
|
|
||||||
if (document.execCommand('copy')) copied();
|
|
||||||
else toast('copy-refused');
|
|
||||||
}">Copy link</button>
|
|
||||||
<button class="btn btn-primary" type="submit">Set bookmark</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
<div class="app-version text-center mt-5 mb-2">
|
<div class="app-version">
|
||||||
<p class="app-version-digests form-text m-0">
|
<p>shell {{ version.shell }} · library {{ version.library }}</p>
|
||||||
shell {{ version.shell }} · library {{ version.library }}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -43,6 +43,8 @@ class Handler(SimpleHTTPRequestHandler):
|
|||||||
".webmanifest": "application/manifest+json; charset=utf-8",
|
".webmanifest": "application/manifest+json; charset=utf-8",
|
||||||
".png": "image/png",
|
".png": "image/png",
|
||||||
".svg": "image/svg+xml",
|
".svg": "image/svg+xml",
|
||||||
|
".ico": "image/x-icon",
|
||||||
|
".woff2": "font/woff2",
|
||||||
}
|
}
|
||||||
server_version = "bible-static"
|
server_version = "bible-static"
|
||||||
sys_version = ""
|
sys_version = ""
|
||||||
|
|||||||
@@ -453,16 +453,66 @@ def ref_href(node, book, chapter):
|
|||||||
return "%s#%s" % (base, verse_id(target_ch, verse))
|
return "%s#%s" % (base, verse_id(target_ch, verse))
|
||||||
return "%s#ch%d" % (base, target_ch)
|
return "%s#ch%d" % (base, target_ch)
|
||||||
|
|
||||||
|
DROPCAP_BLOCKS = ("paragraph", "line", "item")
|
||||||
|
|
||||||
|
def with_dropcap(nodes):
|
||||||
|
"""Split the first letter of the first text off into a dropcap node.
|
||||||
|
|
||||||
|
Returns the new node list, or None when the text does not start with a
|
||||||
|
letter. The initials font has only A-Z and a-z, so a chapter opening on
|
||||||
|
a quotation mark or a digit gets no drop cap rather than a fallback one.
|
||||||
|
"""
|
||||||
|
nodes = list(nodes)
|
||||||
|
for i, node in enumerate(nodes):
|
||||||
|
kind = node["t"]
|
||||||
|
if kind == "verse":
|
||||||
|
continue
|
||||||
|
# A note caller would land between the letter and the rest of its word.
|
||||||
|
if kind == "noteref":
|
||||||
|
return None
|
||||||
|
if kind == "text":
|
||||||
|
text = node["v"].lstrip()
|
||||||
|
if not text:
|
||||||
|
continue
|
||||||
|
if not ("A" <= text[0] <= "Z" or "a" <= text[0] <= "z"):
|
||||||
|
return None
|
||||||
|
nodes[i:i + 1] = [{"t": "dropcap", "v": text[0]},
|
||||||
|
dict(node, v=text[1:])]
|
||||||
|
else:
|
||||||
|
inner = with_dropcap(node.get("c", []))
|
||||||
|
if inner is None:
|
||||||
|
return None
|
||||||
|
nodes[i] = dict(node, c=inner)
|
||||||
|
# The verse number before the drop cap would otherwise sit between
|
||||||
|
# the floated letter and the rest of its word.
|
||||||
|
for j in range(i):
|
||||||
|
if nodes[j]["t"] == "verse":
|
||||||
|
nodes[j] = dict(nodes[j], dropcap=True)
|
||||||
|
return nodes
|
||||||
|
return None
|
||||||
|
|
||||||
def render_inline(nodes, book, chapter, out):
|
def render_inline(nodes, book, chapter, out):
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
kind = node["t"]
|
kind = node["t"]
|
||||||
if kind == "text":
|
if kind == "text":
|
||||||
out.append(esc(node["v"]))
|
out.append(esc(node["v"]))
|
||||||
|
elif kind == "dropcap":
|
||||||
|
out.append('<span class="dropcap">%s</span>' % esc(node["v"]))
|
||||||
elif kind == "verse":
|
elif kind == "verse":
|
||||||
label = esc(node["label"])
|
label = esc(node["label"])
|
||||||
out.append('<span class="v" id="%s" role="button" tabindex="0" '
|
vid = verse_id(chapter, node["label"])
|
||||||
'aria-label="Verse %s, options">%s</span> '
|
# A link to itself: the click both puts the verse in the address
|
||||||
% (verse_id(chapter, node["label"]), label, label))
|
# bar, which is what the options dialog offers to copy, and opens
|
||||||
|
# that dialog. Being a real link is also what gives it the
|
||||||
|
# keyboard and context menu a reader expects.
|
||||||
|
out.append('<a class="v" id="%s" href="#%s" '
|
||||||
|
'aria-label="Verse %s, options">%s</a>'
|
||||||
|
% (vid, vid, label, label))
|
||||||
|
# A non-breaking space keeps the number on the same line as the
|
||||||
|
# word it introduces, as the source does. Before a drop cap the
|
||||||
|
# number is hidden and the space would only push the word away.
|
||||||
|
if not node.get("dropcap"):
|
||||||
|
out.append(" ")
|
||||||
elif kind == "noteref":
|
elif kind == "noteref":
|
||||||
n = node["id"].replace("FN", "")
|
n = node["id"].replace("FN", "")
|
||||||
out.append('<a class="noteref" id="fnref%s_%s" href="#fn%s_%s">'
|
out.append('<a class="noteref" id="fnref%s_%s" href="#fn%s_%s">'
|
||||||
@@ -529,7 +579,9 @@ def render_chapter(chapter, book, out):
|
|||||||
num = chapter["number"]
|
num = chapter["number"]
|
||||||
out.append(' <section class="chapter" id="ch%d" data-chapter="%d">\n'
|
out.append(' <section class="chapter" id="ch%d" data-chapter="%d">\n'
|
||||||
% (num, num))
|
% (num, num))
|
||||||
out.append(' <h2 class="chapter-number">%d</h2>\n' % num)
|
out.append(' <h2 class="chapter-number">'
|
||||||
|
'<a href="#ch%d" aria-label="Chapter %d">%d</a></h2>\n'
|
||||||
|
% (num, num, num))
|
||||||
|
|
||||||
group = None
|
group = None
|
||||||
|
|
||||||
@@ -541,8 +593,14 @@ def render_chapter(chapter, book, out):
|
|||||||
out.append(" </ul>\n")
|
out.append(" </ul>\n")
|
||||||
group = None
|
group = None
|
||||||
|
|
||||||
|
dropcap = True
|
||||||
for block in chapter["blocks"]:
|
for block in chapter["blocks"]:
|
||||||
btype = block["type"]
|
btype = block["type"]
|
||||||
|
if dropcap and btype in DROPCAP_BLOCKS:
|
||||||
|
dropcap = False
|
||||||
|
content = with_dropcap(block.get("content", []))
|
||||||
|
if content is not None:
|
||||||
|
block = dict(block, content=content)
|
||||||
if btype == "break":
|
if btype == "break":
|
||||||
close_group()
|
close_group()
|
||||||
continue
|
continue
|
||||||
|
|||||||