castle
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.DS_Store
|
||||
package-lock.json
|
||||
_/build
|
||||
content
|
||||
content
|
||||
db/*
|
||||
1
ui/.gitignore
vendored
1
ui/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
.DS_Store
|
||||
@@ -1,40 +0,0 @@
|
||||
:root {
|
||||
--green: #0B5538;
|
||||
--tan: #FFDFB4;
|
||||
--red: rgb(206, 84, 61);
|
||||
--brown: #c6a476
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Canterbury';
|
||||
src: url('/_/fonts/Canterbury/Canterbury.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'CrimsonText';
|
||||
src: url('/_/fonts/CrimsonText/CrimsonText-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'CrimsonText';
|
||||
src: url('/_/fonts/CrimsonText/CrimsonText-Bold.ttf') format('truetype');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'CrimsonText', sans-serif;
|
||||
background-color: var(--tan);
|
||||
color: var(--green);
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: var(--green);
|
||||
color: var(--tan);
|
||||
padding: 1em;
|
||||
box-shadow: none;
|
||||
}
|
||||
BIN
ui/_/fonts/BonaNova/BonaNova-Bold.woff
Normal file
BIN
ui/_/fonts/BonaNova/BonaNova-Bold.woff
Normal file
Binary file not shown.
BIN
ui/_/fonts/BonaNova/BonaNova-Italic.woff
Normal file
BIN
ui/_/fonts/BonaNova/BonaNova-Italic.woff
Normal file
Binary file not shown.
BIN
ui/_/fonts/BonaNova/BonaNova-Regular.woff
Normal file
BIN
ui/_/fonts/BonaNova/BonaNova-Regular.woff
Normal file
Binary file not shown.
BIN
ui/_/fonts/BonaNova/bona-nova-webfont.zip
Normal file
BIN
ui/_/fonts/BonaNova/bona-nova-webfont.zip
Normal file
Binary file not shown.
18
ui/_/fonts/BonaNova/bona-nova-webfont/example.html
Normal file
18
ui/_/fonts/BonaNova/bona-nova-webfont/example.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="style.css"/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Generated from: http://font.download</h1><br/>
|
||||
<h1 style="font-family:'Bona Nova Regular';font-weight:normal;font-size:42px">AaBbCcDdEeFfGgHhŞşIıİi Example</h1>
|
||||
<h1 style="font-family:'Bona Nova Italic';font-weight:normal;font-size:42px">AaBbCcDdEeFfGgHhŞşIıİi Example</h1>
|
||||
<h1 style="font-family:'Bona Nova Bold';font-weight:normal;font-size:42px">AaBbCcDdEeFfGgHhŞşIıİi Example</h1>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
24
ui/_/fonts/BonaNova/bona-nova-webfont/style.css
Normal file
24
ui/_/fonts/BonaNova/bona-nova-webfont/style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
/* #### Generated By: http://font.download #### */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Bona Nova Regular';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Bona Nova Regular'), url('BonaNova-Regular.woff') format('woff');
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'Bona Nova Italic';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Bona Nova Italic'), url('BonaNova-Italic.woff') format('woff');
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'Bona Nova Bold';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Bona Nova Bold'), url('BonaNova-Bold.woff') format('woff');
|
||||
}
|
||||
BIN
ui/_/fonts/BonaNova/old/BonaNova-Bold.ttf
Executable file
BIN
ui/_/fonts/BonaNova/old/BonaNova-Bold.ttf
Executable file
Binary file not shown.
BIN
ui/_/fonts/BonaNova/old/BonaNova-Italic.ttf
Executable file
BIN
ui/_/fonts/BonaNova/old/BonaNova-Italic.ttf
Executable file
Binary file not shown.
BIN
ui/_/fonts/BonaNova/old/BonaNova-Regular.ttf
Executable file
BIN
ui/_/fonts/BonaNova/old/BonaNova-Regular.ttf
Executable file
Binary file not shown.
576
ui/_/images/castle-dark.svg
Normal file
576
ui/_/images/castle-dark.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 553 KiB |
3094
ui/_/images/castle-dark2.svg
Normal file
3094
ui/_/images/castle-dark2.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.6 MiB |
578
ui/_/images/castle.svg
Normal file
578
ui/_/images/castle.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 553 KiB |
@@ -1,143 +1,78 @@
|
||||
.card-header {
|
||||
padding: 2vw;
|
||||
:root {
|
||||
--tan: #E6D7AA;
|
||||
--accent: black;
|
||||
--purple: #251D44;
|
||||
--green: #0B5538;
|
||||
--red: #BC1C02;
|
||||
--brown: #c6a476;
|
||||
}
|
||||
|
||||
.card-content {
|
||||
padding: 2vw;
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--tan: #251D44;
|
||||
--accent: #AF7323;
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
padding: 10px 10px 3vw;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.card a {
|
||||
background: #af936226;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.card-image figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.card {
|
||||
width: 40vw;
|
||||
border: 1px solid var(--green);
|
||||
}
|
||||
|
||||
|
||||
.card-image img {
|
||||
width: 100%;
|
||||
height: 40vh;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 5vw;
|
||||
max-width: 90vw;
|
||||
margin-top: 20vh;
|
||||
margin-left: 5vw;
|
||||
margin-bottom: 5vw
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'CrimsonText';
|
||||
src: url('/_/CrimsonText/CrimsonText-Regular.ttf') format('truetype');
|
||||
font-family: 'Canterbury';
|
||||
src: url('/_/fonts/Canterbury/Canterbury.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'CrimsonText';
|
||||
src: url('/_/CrimsonText/CrimsonText-Bold.ttf') format('truetype');
|
||||
font-family: 'BonaNova';
|
||||
src: url('/_/fonts/BonaNova/BonaNova-Regular.woff') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'BonaNova';
|
||||
src: url('/_/fonts/BonaNova/BonaNova-Bold.woff') format('truetype');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px){
|
||||
.card a {
|
||||
background: var(--green);
|
||||
margin-right: 10px;
|
||||
}
|
||||
body {
|
||||
font-family: 'BonaNova', sans-serif;
|
||||
font-size: 16px;
|
||||
background-color: var(--tan);
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'CrimsonText', sans-serif;
|
||||
background-color: var(--tan);
|
||||
color: var(--green);
|
||||
}
|
||||
#title {
|
||||
padding: 5px 10px;
|
||||
font-size: 1.7rem;
|
||||
position: fixed; top: 4.5vh; left: 6vw;
|
||||
cursor: pointer; z-index: 1;
|
||||
}
|
||||
|
||||
:root {
|
||||
--green: #0B5538;
|
||||
--tan: #FFDFB4;
|
||||
}
|
||||
a {
|
||||
cursor: default;
|
||||
text-decoration: none;
|
||||
text-underline-offset: 5px;
|
||||
transition: background .02s, color .2s;
|
||||
user-select: none;
|
||||
color: var(--accent);
|
||||
display: inline-block; /* makes background and padding behave */
|
||||
padding: 0.2em 0.5em; /* adds breathing room */
|
||||
}
|
||||
|
||||
.card-image img {
|
||||
height: 70vh;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
background: var(--green);
|
||||
color: var(--tan);
|
||||
}
|
||||
|
||||
.card {
|
||||
margin-bottom: 4vw;
|
||||
padding-bottom: 4vw;
|
||||
width: auto;
|
||||
}
|
||||
a:active {
|
||||
background: var(--red); /* background color works now */
|
||||
}
|
||||
|
||||
.content a {
|
||||
background: var(--green);
|
||||
color: var(--tan);
|
||||
border-radius: 6px;
|
||||
padding: 1vw;
|
||||
}
|
||||
|
||||
.card-footer-item {
|
||||
background: var(--green);
|
||||
color: var(--tan);
|
||||
border-radius: 6px;
|
||||
padding: 1vw;
|
||||
margin-right: 1vw;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
padding: 2vw;
|
||||
}
|
||||
|
||||
.card-content {
|
||||
padding: 2vw;
|
||||
}
|
||||
|
||||
.card-image {
|
||||
margin: 0; /* Removes spacing around image container */
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.card-image figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
padding: 10px 10px 10px 2vw;
|
||||
font-size: 1.2em;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
gap: 5vw;
|
||||
max-width: 90vw;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
button {
|
||||
background-color: var(--green);
|
||||
color: var(--tan);
|
||||
padding: 1em;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
@@ -4,60 +4,29 @@
|
||||
<title>Hyperia</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="_/icons/logo.svg">
|
||||
<link rel="stylesheet" href="_/code/shared.css">
|
||||
<link rel="stylesheet" href="index.css">
|
||||
<style>
|
||||
:root {
|
||||
--green: #0B5538;
|
||||
--tan: #FFDFB4;
|
||||
--red: #BC1C02;
|
||||
--brown: #c6a476
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#items {
|
||||
position: absolute;
|
||||
top: 47vh;
|
||||
left: 50vw;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center; /* centers children horizontally */
|
||||
text-align: center; /* ensures text inside spans is centered */
|
||||
.main-image {
|
||||
content:url("_/images/castle.svg"); position: absolute; height: 70vh; bottom: 2vh; left: 55vw; transform: translateX(-50%)
|
||||
}
|
||||
|
||||
#title {
|
||||
font-size: 22vh;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: default;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 5px;
|
||||
transition: background .02s, color .2s;
|
||||
user-select: none;
|
||||
color: black;
|
||||
|
||||
display: inline-block; /* makes background and padding behave */
|
||||
padding: 0.2em 0.5em; /* adds breathing room */
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
background: var(--green);
|
||||
color: var(--tan);
|
||||
}
|
||||
|
||||
a:active {
|
||||
background: var(--red); /* background color works now */
|
||||
color: white; /* optional: change text color for contrast */
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
#title {
|
||||
font-size: 30vw
|
||||
}
|
||||
}
|
||||
.main-image {
|
||||
max-width: 90vw; bottom: -7vh;
|
||||
}}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.main-image {
|
||||
content:url("_/images/castle-dark2.svg");
|
||||
height: 120vmin; bottom: -17vmin; left: 31vw;
|
||||
}}
|
||||
@media (prefers-color-scheme: dark) and (max-width: 600px) {
|
||||
.main-image {
|
||||
max-width: 195vw; height: 80vh; bottom: -17vmin; left: 0vw;
|
||||
}}
|
||||
</style>
|
||||
<script src="_/code/util.js"></script>
|
||||
<script type="module">
|
||||
@@ -67,18 +36,42 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="items">
|
||||
<span id="title" style="font-family: Canterbury; color: var(--red); margin-bottom: 10vh">hyperia</span>
|
||||
<img src="_/icons/logo.svg" style="width: 17vh; z-index: 1">
|
||||
<img src="_/icons/left_plant.svg" style="position: absolute; left: 25%; top: 23vh; width: 70%; transform: translateX(-50%)">
|
||||
<img src="_/icons/right_plant.svg" style="position: absolute; left: 75%; top: 23vh; width: 70%; transform: translateX(-50%)">
|
||||
<div style="height: 2vh"></div>
|
||||
<span style="font-family: Canterbury; color: black; font-size: 4.5vh;">A <br>Classical <br> Christian <br> Society</span>
|
||||
<div style="height: 2vh"></div>
|
||||
<div style="color: black; font-size: 2vh; z-index: 1; cursor: default;">
|
||||
<a href="signin">SIGN IN</a>
|
||||
<a href="join">JOIN</a>
|
||||
</div>
|
||||
<span id="title" class="link" onclick='window.location.href="/"'>hyperia
|
||||
</span>
|
||||
<img class="main-image">
|
||||
<div class="links" style="z-index: 1; cursor: default; position: fixed; top: 5.5vh; right: 4.5vw">
|
||||
<a href="join">join</a>
|
||||
<span>|</span>
|
||||
<a href="signin">sign in</a>
|
||||
</div>
|
||||
<style>
|
||||
.link, a {
|
||||
transition: background-color 0.3s ease, scale 0.3s;
|
||||
padding: 5px 10px; /* optional padding for visual clarity */
|
||||
border-radius: 4px; /* optional */
|
||||
}
|
||||
|
||||
.link.touched, a.touched {
|
||||
background-color: orange;
|
||||
color: black;
|
||||
scale: 1.3;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
document.querySelectorAll('.link, a').forEach(link => {
|
||||
link.addEventListener('touchstart', () => {
|
||||
link.classList.add('touched');
|
||||
});
|
||||
|
||||
link.addEventListener('touchend', () => {
|
||||
link.classList.remove('touched');
|
||||
});
|
||||
|
||||
// Optional: also handle touchcancel in case the user moves their finger away
|
||||
link.addEventListener('touchcancel', () => {
|
||||
link.classList.remove('touched');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,15 +4,8 @@
|
||||
<title>Hyperia</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="_/icons/logo.svg">
|
||||
<link rel="stylesheet" href="_/code/shared.css">
|
||||
<link rel="stylesheet" href="index.css">
|
||||
<style>
|
||||
:root {
|
||||
--green: #0B5538;
|
||||
--tan: #FFDFB4;
|
||||
--red: #BC1C02;
|
||||
--brown: #c6a476
|
||||
}
|
||||
|
||||
#items {
|
||||
position: absolute;
|
||||
@@ -26,13 +19,6 @@
|
||||
text-align: center; /* ensures text inside spans is centered */
|
||||
}
|
||||
|
||||
#title {
|
||||
font-size: 10vh;
|
||||
position: absolute;
|
||||
left: 2vw;
|
||||
top: 2vh;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: default;
|
||||
text-decoration: underline;
|
||||
@@ -64,10 +50,9 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<span id="title" style="font-family: Canterbury; color: var(--red); margin-bottom: 10vh">hyperia</span>
|
||||
<div id="items">
|
||||
|
||||
</div>
|
||||
<span id="title" onclick='window.location.href="/"'>hyperia
|
||||
</span>
|
||||
|
||||
<script>
|
||||
Array.from($("a*")).forEach((link) => {
|
||||
link.addEventListener("click", () => window.history.pushState("", "", link.innerHTML.toLowerCase()))
|
||||
|
||||
@@ -4,16 +4,8 @@
|
||||
<title>Hyperia</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="_/icons/logo.svg">
|
||||
<link rel="stylesheet" href="_/code/shared.css">
|
||||
<link rel="stylesheet" href="index.css">
|
||||
<style>
|
||||
:root {
|
||||
--green: #0B5538;
|
||||
--tan: #FFDFB4;
|
||||
--red: #BC1C02;
|
||||
--brown: #c6a476
|
||||
}
|
||||
|
||||
#items {
|
||||
position: absolute;
|
||||
top: 45vh;
|
||||
@@ -26,13 +18,6 @@
|
||||
text-align: center; /* ensures text inside spans is centered */
|
||||
}
|
||||
|
||||
#title {
|
||||
font-size: 10vh;
|
||||
position: absolute;
|
||||
left: 2vw;
|
||||
top: 2vh;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: default;
|
||||
text-decoration: underline;
|
||||
@@ -60,36 +45,33 @@
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
border-top: 2px solid var(--green);
|
||||
border-bottom: 2px solid var(--green);
|
||||
border-top: 2px solid var(--accent);
|
||||
border-bottom: 2px solid var(--accent);
|
||||
height: 2em;
|
||||
width: 15vw;
|
||||
padding: 0.2em;
|
||||
transition: border .2s, padding .2s;
|
||||
color: var(--accent)
|
||||
}
|
||||
input::placeholder {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
input:focus {
|
||||
outline: none;
|
||||
padding: 0.4em;
|
||||
border-top: 2px solid var(--red);
|
||||
border-bottom: 2px solid var(--red);
|
||||
}
|
||||
|
||||
input:focus::placeholder {
|
||||
color: var(--red)
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: var(--green);
|
||||
input:-webkit-autofill,
|
||||
input:-webkit-autofill:focus {
|
||||
transition: background-color 600000s 0s, color 600000s 0s;
|
||||
}
|
||||
input[data-autocompleted] {
|
||||
background-color: #c7a67b !important;
|
||||
}
|
||||
|
||||
input:-webkit-autofill,
|
||||
input:-webkit-autofill:focus {
|
||||
transition: background-color 600000s 0s, color 600000s 0s;
|
||||
}
|
||||
input[data-autocompleted] {
|
||||
background-color: #c7a67b !important;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
input {
|
||||
@@ -107,16 +89,11 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<span onclick="window.location = '/'"id="title" style="cursor: default; font-family: Canterbury; color: var(--red); margin-bottom: 10vh">hyperia</span>
|
||||
<span id="title" onclick='console.log("hey"); window.location.href="/"'>hyperia</span>
|
||||
<div id="items">
|
||||
<input placeholder="email"></input>
|
||||
<br>
|
||||
<input placeholder="password"></input>
|
||||
</div>
|
||||
<script>
|
||||
Array.from($("a*")).forEach((link) => {
|
||||
link.addEventListener("click", () => window.history.pushState("", "", link.innerHTML.toLowerCase()))
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +1,4 @@
|
||||
See https://github.com/return-to-the-land/go-backend for instructions.
|
||||
|
||||
# Style Guidelines
|
||||
- Font size is defined in the index.html. Only use rem as a unit.
|
||||
Reference in New Issue
Block a user