This commit is contained in:
metacryst
2025-09-20 12:58:28 -05:00
parent ffb4d1ef52
commit 04f4155a19
20 changed files with 4422 additions and 279 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
.DS_Store
package-lock.json
_/build
content
content
db/*

1
ui/.gitignore vendored
View File

@@ -1 +0,0 @@
.DS_Store

View File

@@ -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;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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>

View 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');
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 553 KiB

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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()))

View File

@@ -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>

View File

@@ -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.