This commit is contained in:
Kyle
2020-12-16 15:30:48 -08:00
parent 2b931a1fdf
commit 1a9d15d94b
596 changed files with 4053 additions and 1205 deletions

9
.gitignore vendored
View File

@@ -1,8 +1 @@
.DS_Store
data/.DS_Store
data/borders/.DS_Store
data/borders/m15/.DS_Store
gallery/buildImageList.bat
gallery/buildImageList.py
debug.log
debug.log

View File

@@ -1,5 +1,30 @@
<!DOCTYPE html5>
<html>
<meta http-equiv="refresh" content="3; URL='/'" />
<div style='text-align: center; font-size: 40pt'>Page not found. Redirecting to home page momentarily...</div>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="description">
<meta name="keywords" content="keywords">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="shortcut icon" href="/favicon.ico">
<script src='/js/includeHTML.js'></script>
<script src='/js/main.js'></script>
</head>
<body onload='includeHTML();'>
<div class='background'></div>
<header html-include='/globalHTML/header.html'></header>
<div html-include='/globalHTML/menu.html'></div>
<!-- Page Specific Content Begins Here -->
<title>404 - Card Conjurer</title>
<div class='layer center'>
<h2 class='padding margin-bottom' style='font-size: 10rem;'>404</h2>
<h4 class='padding'>Page Not Found</h4>
</div>
<div class='layer center'>
<h4 class='padding'>The page you seek is as lost as Fblthp.</h4>
</div>
<!-- Page Specific Content Ends Here -->
<footer html-include='/globalHTML/footer.html'></footer>
</body>
</html>

View File

@@ -1,39 +0,0 @@
<!DOCTYPE html5>
<html>
<head>
<script data-ad-client="ca-pub-8226515140557560" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script async src="/data/scripts/localStorage.js"></script>
<link rel="stylesheet" href="/data/styles/main.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/data/site/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/data/site/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/data/site/favicons/favicon-16x16.png">
<link rel="manifest" href="/data/site/favicons/site.webmanifest">
</head>
<body>
<title>CC - About</title>
<div class='animated layer fadeIn title'>About Me</div>
<div class='animated layer clearLayer fadeIn'>
<div class='indent'>
Hello! My name is Kyle Burton, and I'm the creator of Card Conjurer. I started playing Magic with the M14 deckbuilder's toolkit. I played 60-card casual games with several close friends, and when Khans of Tarkir was released we attended our first prerelease. As the years passed I got more and more into Magic and ultimately discovered Commander, which is the format I currently play.
</div><br>
<div class='indent'>
During middle school I did some light programming with Processing and Lego's NXT, and halfway through high school I taught myself Javascript, HTML, and CSS (the languages that compose websites). Then, in the summer of 2018, I combined my love for Magic and curiosity for programming by creating Card Conjurer.
</div><br>
<div class='indent'>
I initially wanted to make some Commander Achievement cards that looked like real Magic cards, so I decided to make a small web-based application to fill blank magic card images with text and mana symbols. It worked surprisingly well, and I soon began to expand on the original idea by adding more customization and more frames. By the end of summer break I decided to purchase the domain CardConjurer.com so I could share my program with the world. Since then I've remade the entire website from the ground-up three times, and am very pleased with its current state. While I don't plan on any major revisions, I will continue adding new frames and features.
</div><br>
<div class='indent'>
I "graduated" (no ceremony &#128557) high school in 2020, and because I had such a great time learning to code and discovering how much it could accomplish I decided to pursue programming. As of Fall of 2020, I've been attending CalPoly SLO majoring in Software Engineering.
</div><br>
<div class='indent'>
Whether you'd like to see what I'm up to in the Magic world or take a look at some of the cards I've made with Card Conjurer, please consider taking a moment to check out my Twitter <a style='color: #00aced;' href="https://twitter.com/ImKyle4815" target='_blank'>@ImKyle4815</a>!
</div>
</div>
</body>
<footer id='footer'>
<script async src='/data/scripts/footer.js'></script>
<script defer src="/data/scripts/animations.js"></script>
</footer>
<html>

View File

@@ -1 +0,0 @@
google.com, pub-8226515140557560, DIRECT, f08c47fec0942fa0

View File

@@ -1,140 +0,0 @@
<!DOCTYPE html5>
<html>
<head>
<script data-ad-client="ca-pub-8226515140557560" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script async src="/data/scripts/localStorage.js"></script>
<link rel="stylesheet" href="/data/styles/main.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/data/site/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/data/site/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/data/site/favicons/favicon-16x16.png">
<link rel="manifest" href="/data/site/favicons/site.webmanifest">
</head>
<body>
<title>CC - Ask Urza 2.0</title>
<style>
.askUrzaGrid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto 90pt auto;
align-items: center;
justify-items: center;
}
.urzaCard {
width: 90vw;
text-align: center;
grid-column: 1 / span 3;
}
.urzaCard > img {
width: 100%;
height: auto;
}
.askUrzaButton {
height: auto;
width: 22vw;
transition: 0.25s;
cursor: pointer;
}
#askUrzaResult {
grid-column: 1 / span 3;
padding: 1rem;
margin: 0.5rem;
background: var(--layer-background);
border-radius: 1rem;
font: 1.5rem belerenb;
}
@media screen and (min-width: 864pt) {
.askUrzaGrid {
grid-template-columns: calc(360pt) 1fr 1fr 1fr !important;
grid-template-rows: 92pt auto !important;
}
.urzaCard {
grid-column: 1;
grid-row: 1 / span 2 !important;
}
#askUrzaResult {
grid-column: 2 / span 3 !important;
}
}
@media screen and (min-width: 380pt) {
.urzaCard {
width: 360pt;
}
.askUrzaButton {
height: auto;
width: 100pt;
transition: 0.25s;
}
.askUrzaButton:hover {
width: 110pt;
}
.askUrzaButton:active {
width: 120pt !important;
}
}
</style>
<div>
<div class="title layer">
Ask Urza 2.0
</div>
<div class="animated layer clearLayer slideFromRight">
<div>
<div class="askUrzaGrid">
<div class="urzaCard">
<img src="/data/site/other/askUrza/urzaBlank.png">
</div>
<div>
<img class="askUrzaButton" src="/data/site/other/askUrza/plus.png" onclick="randomAbility(0)">
</div>
<div>
<img class="askUrzaButton" src="/data/site/other/askUrza/minus.png" onclick="randomAbility(1)">
</div>
<div>
<img class="askUrzaButton" src="/data/site/other/askUrza/ultimate.png" onclick="randomAbility(2)">
</div>
<div id="askUrzaResult">
</div>
</div>
</div>
</div>
<div class="animated layer slideFromLeft">
<div class="indent">
Ask Urza 2.0 is a replacement for AskUrza.com that periodically compiles all planeswalker abilities and sorts them into three categories for use with Urza, Academy Headmaster. This allows for much more unpredictability and, in my opinion, much more fun. To use Ask Urza, simply click on the +1, -1, or -6, and let the gods of chaos decide your fate!
</div>
</div>
<div class="adGrid">
<div>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-8226515140557560"
data-ad-slot="7142663356"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
<div>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-8226515140557560"
data-ad-slot="4606153449"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
</div>
</div>
<script defer src="/data/site/other/askUrza/askUrza.js"></script>
</body>
<footer id='footer'>
<script async src='/data/scripts/footer.js'></script>
<script defer src="/data/scripts/animations.js"></script>
</footer>
<html>

View File

@@ -1,61 +0,0 @@
<!DOCTYPE html5>
<html>
<head>
<script data-ad-client="ca-pub-8226515140557560" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script async src="/data/scripts/cookies.js"></script>
<link rel="stylesheet" href="/data/styles/main.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/data/site/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/data/site/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/data/site/favicons/favicon-16x16.png">
<link rel="manifest" href="/data/site/favicons/site.webmanifest">
</head>
<body>
<title>CC - Box Generator</title>
<link rel="stylesheet" href="askScryfallStyles.css">
<div>
<div class="title darkLayer">
Box Generator
</div>
<div class="layer slideFromRight">
Pixels Per Inch:
<input id='inputPPI' type='number' min='1' step='1' max='1200' value='72'>
Material thickness:
<input id='inputMaterialThickness' type='number' min='0.01' step='0.01' max='2' value='0.25'>
<!-- Number of rows:
<input id='inputRowCount' type='number' step='1' min='1' max='5' value='1'> --> <!-- WIP -->
Row length (interior):
<input id='inputRowLength' type='number' step='0.25' min='1' max='60' value='12'>
Card width (sleeved):
<input id='inputCardWidth' type='number' step='0.1' min='1' max='5' value='2.5'>
Card height (sleeved):
<input id='inputCardHeight' type='number' step='0.1' min='1' max='7' value='3.5'>
Wiggle room:
<input id='inputWiggleRoom' type='number' step='0.01' min='0' max='1' value='0.125'>
Vertical Tab Count:
<input id='inputVerticalTabCount' type='number' step='1' min='2' max='20' value='5'>
Horizontal Tab Count (down the rows):
<input id='inputHorizontalTabCount1' type='number' step='1' min='2' max='20' value='15'>
Horizontal Tab Count (across the rows):
<input id='inputHorizontalTabCount2' type='number' step='1' min='2' max='20' value='5'><br><br>
<button onclick='generateSVGs()'>Generate & Download SVGs</button>
</div>
<div class="layer darkLayer slideFromLeft">
<div class="indent">
Currently this box generator only supports odd numbers of tabs and single-row boxes with sliding lids. Hopefully in the future I'll add more options!
</div>
</div>
<div class="layer slideFromRight">
<div class="indent">
Before laser cutting, you'll have to adjust the stroke width and color, as well as scale SVG correctly. Note down the PPI (default is 72) when you download the SVGs. In case you forget which PPI you used, the margins on the SVG files are one inch.
</div>
</div>
</div>
<script defer src="/data/site/other/boxGenerator/boxGenerator.js"></script>
</body>
<footer id='footer'>
<script async src='/data/scripts/footer.js'></script>
<script defer src="/data/scripts/animations.js"></script>
</footer>
<html>

48
css/reset.css Normal file
View File

@@ -0,0 +1,48 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: normal;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

593
css/style.css Normal file
View File

@@ -0,0 +1,593 @@
/*fonts*/
@font-face {
font-family: gothammedium;
src: url("/fonts/gotham-medium.ttf");
}
@font-face {
font-family: belerenb;
src: url("/fonts/beleren-b.ttf");
}
@font-face {
font-family: belerenbsc;
src: url("/fonts/beleren-bsc.ttf");
}
@font-face {
font-family: matrix;
src: url("/fonts/matrix.ttf");
}
@font-face {
font-family: matrixb;
src: url("/fonts/matrix-b.ttf");
}
@font-face {
font-family: mplantin;
src: url("/fonts/mplantin.ttf");
}
@font-face {
font-family: mplantini;
src: url("/fonts/mplantin-i.ttf");
}
@font-face {
font-family: plantinsemibold;
src: url("/fonts/plantin-semibold.otf");
}
@font-face {
font-family: goudymedieval;
src: url("/fonts/goudy-medieval.ttf");
}
@font-face {
font-family: phyrexian;
src: url("/fonts/phyrexian.ttf");
}
@font-face {
font-family: Montserrat-SemiBold;
src: url("/fonts/Montserrat-SemiBold.ttf");
}
@font-face {
font-family: Montserrat-Medium;
src: url("/fonts/Montserrat-Medium.ttf");
}
/*Variables*/
:root {
--darkened-backdrop-filter: grayscale(1) brightness(0.3);
--regular-backdrop-filter: none;
--window-diagonal-size: 400px;
}
/*Main Site Elements*/
.background {
position: fixed;
z-index: -1;
width: 100vw;
height: 100vh;
background: url('/img/lowpolyBackground.svg');
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-position: center;
filter: var(--regular-backdrop-filter);
}
html {
font-size: 12pt;
overflow-x: hidden;
background: none;
color: white;
}
body {
width: 100vw;
}
header, footer, .main-content {
/*width: 100%;*/
}
header, footer {
backdrop-filter: var(--darkened-backdrop-filter);
}
header {
padding: 2rem 0;
}
.header-extension {
padding-bottom: 2rem;
}
footer {
padding: 2rem;
/*background: #427A36;*/
display: grid;
grid-template-columns: calc(1fr - 4rem);
grid-gap: 1rem;
}
@media only screen and (min-width: 750px) {
footer {
grid-template-columns: repeat(3, 1fr);
}
}
footer > div > * {
margin: 1rem 0;
}
/*Viewport*/
img {
max-width: 100%;
}
/*Scrollbar Mod*/
::-webkit-scrollbar {
width: 0.5rem;
height: 0;
background: #222;
}
::-webkit-scrollbar-thumb {
background: #888;
border-radius: 0.25rem;
}
/*Fonts*/
.title {
font-family: belerenbsc;
text-shadow: 0.2rem 0.2rem 0.5rem black;
}
h1 {
font-size: 4rem;
font-family: Montserrat-SemiBold, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
h2 {
font-size: 2.5rem;
font-family: Montserrat-SemiBold, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
h3 {
font-size: 2rem;
font-family: Montserrat-SemiBold, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
h4 {
font-size: 1.5rem;
font-family: Montserrat-SemiBold, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
h5 {
font-size: 1.25rem;
font-family: Montserrat-SemiBold, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
p {
font-size: 1rem;
font-family: Montserrat-Medium, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
}
a {
color: inherit;
text-decoration: inherit;
}
a:hover {
text-decoration: underline;
}
::selection {
color: white;
background: #8f8;
}
::moz-selection {
color: white;
background: #8f8;
}
/*General styles*/
.hidden {
display: none;
}
.margin-bottom {
margin-bottom: 0.5rem;
}
.margin-large {
margin: 4rem 0;
}
.margin-top {
margin-top: 0.5rem;
}
.padding {
padding: 0.5rem;
}
.readable-background {
backdrop-filter: var(--darkened-backdrop-filter);
}
.box-shadow {
box-shadow: 0 2px 8px #0008;
}
.split-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 0.5rem;
}
.center {
text-align: center;
}
.layer {
padding: 4rem;
}
/*Hamburger*/
.hamburger {
position: fixed;
right: 2rem;
top: 2rem;
width: 4rem;
height: 4rem;
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 1.5;
cursor: pointer;
z-index: 100;
background: #35603E;
border-radius: 0.5rem;
}
.hamburger > path {
fill: none;
stroke: white;
stroke-width: 8px;
transition: 0.5s;
}
.line1, .line3 {
stroke-dasharray: 80 183;
stroke-dashoffset: 0;
}
.line2 {
stroke-dasharray: 80 80;
stroke-dashoffset: 0;
}
.opened > .line1, .opened > .line3 {
stroke-dasharray: 103 183;
stroke-dashoffset: -80;
}
.opened > .line2 {
stroke-dasharray: 0 60;
stroke-dashoffset: -40;
}
.circle {
z-index: 5;
position: fixed;
right: 4rem;
top: 4rem;
padding: 0;
background: #35603E;
border-radius: 100%;
transition: 0.333s ease;
}
.hamburger:hover + .circle {
padding: 3rem;
right: 1rem;
top: 1rem;
}
.hamburger.opened + .circle {
padding: var(--window-diagonal-size);
right: calc(4rem - var(--window-diagonal-size));
top: calc(4rem - var(--window-diagonal-size));
transition: 0.75s cubic-bezier(.53,.47,.76,-0.52);
}
/*Menus*/
.menu {
position: fixed;
z-index: 10;
bottom: 100vh;
left: 0;
width: 100vw;
height: 100vh;
overflow-y: scroll;
transition: 0.5s;
text-align: center;
}
.menu.menu-visible {
bottom: 0;
transition-delay: 0.667s;
}
.menu > div {
display: inline-block;
margin: 0 auto;
text-align: left;
}
/*Main (Nav) Menu*/
.main-menu {
padding: 2rem;
line-height: 3rem;
}
.main-menu > h2 {
margin-top: 4rem;
}
/*Inputs*/
.input {
box-sizing: border-box;
width: 100%;
background: #333;
color: inherit;
font-size: 1.25rem;
font-family: Montserrat-Medium, Helvetica, Tahoma, Verdana, Geneva, sans-serif;
font-weight: 100;
border-width: 0.25rem 0 0 0;
border-style: solid;
border-color: #0000;
padding: 0 0.25rem 0.25rem 0.25rem;
transition: 0.5s;
}
.input:hover {
box-shadow: 0 0px 16px black;
transition: 0.05s;
}
.input:focus {
outline: none;
}
.input:active {
border-color: #ae9;
}
.input:disabled {
opacity: 0.5;
}
.input:disabled:hover {
box-shadow: none;
}
.input-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
grid-gap: 0.5rem;
}
.input-description {
color: #bbb;
font-style: italic;
}
input[type=checkbox].input {
/*nothing for now*/
}
.input:not([type=text]):not([type=number]) {
cursor: pointer;
}
textarea.input {
cursor: text !important;
resize: vertical;
box-sizing: border-box;
min-height: 10rem;
max-height: 20rem;
transition: height 0s;
}
/*Collapsible*/
.collapsible {
cursor: pointer;
user-select: none;
}
.collapsible:after {
content: '';
border: solid white;
border-width: 0 0.15em 0.15em 0;
display: inline-block;
padding: 0.15em;
transform: rotate(-135deg) translate(-0.2em, 0.2em);
-webkit-transform: rotate(-135deg) translate(-0.2em, 0.2em);
}
.collapsible.collapsed:after {
transform: rotate(45deg) translate(0, -0.3em);
-webkit-transform: rotate(45deg) translate(0, -0.3em);
}
.collapsed + div {
display: none;
}
/*Videos*/
.video {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video iframe, .video object, .video embed, .video video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/*Creator related only*/
/*Creator Grid/Canvas/Menu*/
.creator-grid {
width: 100%;
display: grid;
grid-template-columns: 1fr;
justify-items: center;
grid-gap: 1rem;
padding: 1rem 0;
}
.creator-canvas {
max-width: 750px;
width: 100vw;
height: auto;
/*backdrop-filter: hue-rotate(80deg);*/
}
.creator-menu {
width: 100%;
}
@media only screen and (min-width: 1250px) {
.creator-grid {
grid-template-columns: 750px auto;
padding: 1rem;
justify-items: left;
}
.creator-menu {
width: calc(100% - 2rem);
}
.creator-canvas {
border-radius: 37.5px;
}
}
/*Creator Menu Tabs*/
.creator-menu-tabs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
grid-gap: 0.5rem;
margin-bottom: 0.5rem;
}
/*Selectables*/
.selectable {
text-align: center;
user-select: none;
padding: 1rem;
padding-top: 0.9rem;
border-top: 0.1rem;
border-style: solid;
border-color: #0000;
transition: 0.5s;
cursor: pointer;
}
.selectable.selected {
padding-top: 0.5rem;
border-top: 0.5rem;
border-style: solid;
border-color: #ae9;
transition: 0.5s !important;
}
.selectable:hover {
box-shadow: 0 0px 16px black;
transition: 0.05s;
}
/*Draggables*/
.draggable {
background: #333;
}
.dragging {
box-shadow: 0 0px 16px black;
background: #555;
cursor: move;
}
.frame-list{
display: grid;
grid-template-columns: 1fr;
grid-gap: 0.25rem;
user-select: none;
}
/*Frame/Mask-Pickers*/
.frame-picker, .mask-picker {
display: grid;
grid-gap: 0.5rem;
height: 20rem;
overflow-y: scroll;
grid-auto-rows: 6.5rem;
}
.frame-picker {
grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
justify-items: left;
align-items: left;
}
.mask-picker {
grid-template-columns: 1fr;
}
.frame-option, .mask-option {
cursor: pointer;
background: #333;
width: 100%;
height: 6rem;
padding: 0.25rem 0;
text-align: center;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
transition: 0.25s;
}
.frame-option.selected, .mask-option.selected {
background: #555;
}
.frame-option > img, .mask-option > img {
width: 100%;
height: 100%;
object-fit: contain;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
.mask-option {
display: grid;
grid-template-columns: 6rem auto;
text-align: left;
grid-gap: 0.5rem;
align-items: center;
height: 6rem;
}
/*Frame Elements*/
.frame-element {
display: grid;
grid-template-columns: 4rem 4rem 1fr 4rem;
grid-gap: 0.5rem;
padding: 0.25rem;
align-items: center;
cursor: grab;
}
.frame-element > h4 {
overflow-x: scroll;
}
.frame-element > img {
width: 4rem;
height: 4rem;
object-fit: contain;
padding: none;
}
.frame-element:hover {
box-shadow: 0 0px 16px black;
transition: 0.05s;
}
.frame-element-close {
font-size: 2rem;
cursor: pointer;
text-align: center;
padding: 0.5rem 0;
}
.frame-element-editor {
display: none;
position: fixed;
max-width: calc(100vw - 6rem);
width: 64rem; /*multiple of 16?*/
height: auto;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
top: 50%;
left: 50%;
background: #35603E;
border: 0.5rem solid #333;
border-radius: 1rem;
box-shadow: 0.5rem 0.5rem 1rem 0.5rem black;
z-index: 10;
padding: 2rem;
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
grid-gap: 1rem;
}
.frame-element-editor.opened {
display: grid;
}
.frame-element-editor > .frame-element-editor-title {
grid-column: 1 / -2;
}
.frame-element-editor > .frame-element-editor-close {
cursor: pointer;
width: auto;
height: auto;
grid-column: -1 span 1;
user-select: none;
justify-self: right;
}
/*Text tab*/
.text-option {
background: #333;
}
.text-codes {
display: grid;
grid-template-columns: 11rem auto;
}
.text-codes > * {
border: 1px solid black;
padding: 0.5rem;
}
/*download button*/
.download {
text-align: center;
user-select: none;
cursor: pointer;
}
.download:hover {
text-decoration: underline;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

BIN
fonts/Montserrat-Medium.ttf Normal file

Binary file not shown.

Binary file not shown.

BIN
fonts/beleren-b.ttf Normal file

Binary file not shown.

BIN
fonts/beleren-bsc.ttf Normal file

Binary file not shown.

7
fonts/brush.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1266 268" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-110.464,-93.8908)">
<path d="M1103,94.603C1199.9,91.031 1217.31,101.898 1245,105C1265.54,107.3 1341.66,116.595 1376,108C1371.57,116.125 1362.53,121.368 1353,127C1358.52,129.223 1369.1,124.608 1375,125C1257.63,242.796 1219.03,270.208 1063,274C1009.63,275.297 957.293,261.377 920,264C769.892,274.56 154,361 154,361C99.963,367.643 96.931,303.599 141,292.966C141,292.966 761.498,200.591 903,174C920.471,170.717 947.889,153.811 962,143C986.391,124.314 1048.43,96.615 1103,94.603ZM912,194C891.833,194.333 815,212.373 796,218C792.736,218.967 794.596,226.818 798,226.762C818.167,226.429 897,216.627 916,211C923.147,208.883 919.453,193.877 912,194ZM981,164C964.483,178.044 991.255,197.119 1003,186C1052.66,138.988 1116.49,141.224 1170,116C1044.01,124.649 1029.83,122.481 981,164Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
fonts/gotham-medium.ttf Normal file

Binary file not shown.

BIN
fonts/goudy-medieval.ttf Normal file

Binary file not shown.

BIN
fonts/matrix-b - Copy.ttf Normal file

Binary file not shown.

BIN
fonts/matrix-b.ttf Normal file

Binary file not shown.

BIN
fonts/matrix.ttf Normal file

Binary file not shown.

BIN
fonts/mplantin-i.ttf Normal file

Binary file not shown.

BIN
fonts/mplantin.ttf Normal file

Binary file not shown.

BIN
fonts/phyrexian.ttf Normal file

Binary file not shown.

BIN
fonts/plantin-semibold.otf Normal file

Binary file not shown.

View File

@@ -1,93 +0,0 @@
#imageGallery {
margin-top: 2rem;
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(375px, 1fr));
grid-auto-rows: min-content;
grid-gap: 1rem;
justify-items: center;
align-items: center;
}
.galleryCard {
/*margin: 1rem;*/
cursor: pointer;
width: 375px;
height: 525px;
transition: 2s;
text-align: center;
}
.galleryCard > img {
z-index: 1;
width: 100%;
height: auto;
}
.galleryCard > div {
opacity: 0;
position: relative;
top: -2rem;
left: 0;
z-index: -1;
}
.galleryHidden {
opacity: 0;
}
.galleryVisible {
opacity: 1;
}
.filterHidden {
display: none;
}
#fullImageViewbox {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
backdrop-filter: brightness(40%) blur(8px);
-webkit-backdrop-filter: brightness(40%) blur(8px);
text-align: center;
cursor: pointer;
}
#fullImageViewbox.visible {
display: block;
}
#fullImageViewbox > img {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
object-fit: contain;
width: calc(100vw - 2rem);
height: calc(100vh - 2rem);
animation-duration: 0.5s;
}
#fullImageViewbox.visible > img.visible {
animation-name: previewIn;
}
#fullImageViewbox.visible > img:not(.visible) {
animation-name: previewOut;
animation-duration: 0.3s;
transform: translate(-50%, calc(50% + 1rem));
}
@keyframes previewIn {
from {transform: translate(-50%, calc(50% + 1rem));}
to {transform: translate(-50%, -50%);}
}
@keyframes previewOut {
from {transform: translate(-50%, -50%);}
to {transform: translate(-50%, calc(50% + 1rem));}
}

View File

@@ -1,80 +0,0 @@
var imageElementList = []
const imageHeight = 525
var windowY
function readGalleryImageList() {
var xhttp = new XMLHttpRequest()
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
buildHTML(this.responseText.split('\n'))
}
}
xhttp.open('GET', '/gallery/galleryImageNameList.txt', true)
xhttp.send()
}
readGalleryImageList()
function buildHTML(imageNameList) {
imageNameList.forEach(function(item) {
var element = document.createElement('div')
var label = document.createElement('div')
var image = document.createElement('img')
element.classList = 'galleryCard galleryHidden'
if (item.includes('Wasteland.png')) {
element.classList += ' filterHidden'
}
image.imageName = item
image.addEventListener('click', zoomImage)
label.innerHTML = item.replace('.png', '').replace('_', ' ')
element.appendChild(image)
element.appendChild(label)
document.getElementById('imageGallery').appendChild(element)
imageElementList.push(element)
})
scrollEvent()
}
function zoomImage(event) {
document.getElementById('fullImage').src = '/gallery/images/fullres/' + event.target.imageName
document.getElementById('fullImage').classList = 'visible'
document.getElementById('fullImagePreview').src = '/gallery/images/preview/' + event.target.imageName
document.getElementById('fullImagePreview').classList = 'visible'
document.getElementById('fullImageViewbox').classList = 'visible'
windowY = window.scrollY
}
function unzoomImage() {
document.getElementById('fullImage').classList = ''
document.getElementById('fullImagePreview').classList = ''
setTimeout(function(){document.getElementById('fullImageViewbox').classList = ''; document.getElementById('fullImage').src = ''}, 300)
}
window.addEventListener('scroll', scrollEvent, false)
function scrollEvent() {
if (document.getElementById('fullImageViewbox').classList == 'visible') {
window.scrollTo(0, windowY)
return
}
windowInnerHeight = window.innerHeight
imageElementList.forEach(function(element) {
boundingRect = element.getBoundingClientRect()
if (element.classList.contains('galleryHidden') && boundingRect.bottom >= 0 && boundingRect.top - windowInnerHeight <= 0) {
element.children[0].src = '/gallery/images/preview/' + element.children[0].imageName
element.classList.replace('galleryHidden', 'galleryVisible')
}
})
}
function sort(word) {
imageElementList.forEach(function(element) {
if (!element.classList.contains('filterHidden')) {
element.classList.add('filterHidden')
}
if (element.children[1].innerHTML.toLowerCase().includes(word.toLowerCase())) {
element.classList.remove('filterHidden')
}
})
scrollEvent()
}

View File

@@ -1,252 +0,0 @@
Opposition Agent.png
Sol Ring.png
Omnath, Locus of Mana.png
Valakut Stoneforge (Mustufar Forges).png
Valakut Awakening (Mustufar's Meltdown).png
Expedition Map.png
Craterhoof Behemoth.png
Wasteland.png
Turntimber Symbiosis.png
Shatterskull Smashing.png
Agadeem's Awakening.png
Emeria's Call.png
sea_gate,_reborn.png
rick, steadfast leader (odric, steadfast leader) (1).png
sea_gate_restoration.png
rick, steadfast leader (thalia, steadfast leader).png
rick, steadfast leader (odric, steadfast leader).png
child of alara (creeper, child of notch).png
merciless eviction (not the impostor...).png
polluted_delta.png
rogue's passage (the vent).png
darksteel reactor (the reactor).png
council's judgment (who is the impostor).png
teferi's protection (emergency meeting).png
murder.png
negan,_the_cold_blooded (aurra_sing,_bounty_hunter).png
negan,_the_cold_blooded (dryden_vos,_crime_lord).png
breeding_pool (2).png
sacred_foundry (2).png
overgrown_tomb (2).png
steam_vents (2).png
godless_shrine (2).png
windswept_heath (2).png
fellwar stone.png
kozilek,_the_great_distortion.png
ulamog,_the_ceaseless_hunger.png
emrakul,_the_promised_end (2).png
darksteel plate (aang's_epic_armor).png
sram, senior edificer (sokka,_veteran_combatant).png
stoneforge mystic (piandao,_master_swordsman).png
animar,_soul_of_elements.png
emrakul,_the_aeons_torn.png
ulamog,_the_infinite_gyre.png
kozilek,_butcher_of_truth (2).png
emeria_angel.png
temple_garden (2).png
wooded_foothills (1).png
stomping_ground (2).png
bloodstained_mire (2).png
blood_crypt (2).png
watery_grave (2).png
flooded_strand (3).png
hallowed_fountain (2).png
command_tower (2).png
helm_of_the_host.png
vanquisher's_banner.png
dryad_of_the_ilysian_grove (2).png
deadeye_navigator .png
talisman_of_curiosity.png
talisman_of_hierarchy.png
panharmonicon.png
yarok,_the_desecrated.png
brago,_king_eternal.png
wooded_foothills (2).png
flooded_strand (2).png
mountain.png
forest.png
island.png
swamp.png
mana_confluence (2).png
valakut,_the_molten_pinnacle.png
jace, mirror mage (double_identity).png
karn's_bastion.png
nesting_grounds.png
mana_confluence.png
metallic_mimic.png
the_ozolith.png
lightning_greaves.png
blood_artist.png
manascape_refractor.png
dimir_signet (1).png
rakdos_signet.png
arcane_signet.png
chromatic_lantern.png
phyrexian_metamorph.png
phyrexian_altar (1).png
sol_ring (2).png
zurzoth,_chaos_rider.png
maze_of_ith.png
hammer_of_nazahn.png
sword_of_feast_and_famine (2).png
gaea's_cradle (3).png
gaea's_cradle (2).png
gaea's_cradle (1).png
gaea's_cradle.png
revel_in_riches.png
skullclamp.png
ashnod's_altar.png
jhoira,_weatherlight_captain.png
avenger_of_zendikar.png
doubling_season.png
solemn_simulacrum.png
mox_opal.png
the_storm_crow.png
sword_of_feast_and_famine.png
academy_ruins (3).png
academy_ruins (2).png
academy_ruins (1).png
academy_ruins.png
blood_moon.png
sword_of_fire_and_ice.png
cyclonic_rift.png
thriving_heath.png
thriving_grove.png
thriving_moor.png
thriving_bluff.png
demonic_tutor.png
aven_mindcensor.png
opt.png
return_of_the_wildspeaker.png
buried_ruin.png
whispersilk_cloak.png
mystic_remora.png
force_of_vigor.png
generous_gift.png
farseek (1).png
farseek.png
orzhov_signet.png
liliana's_caress.png
hall_of_heliod's_generosity.png
nykthos,_shrine_to_nyx (1).png
inventors'_fair.png
steelshaper's_gift.png
sword_of_light_and_shadow.png
sword_of_sinew_and_steel.png
sword_of_truth_and_justice.png
chandra's_ignition.png
ash_barrens (1).png
true_conviction.png
coalition_relic.png
talisman_of_conviction.png
boros_signet.png
azorius_signet.png
phyrexian_altar.png
craterhoof_behemoth.png
beastmaster_ascension.png
goblin_bombardment.png
bloodstained_mire.png
growing_rites_of_itlimoc.png
rogue's_passage.png
zacama,_primal_calamity.png
solemn_simulacrum (1).png
solemn_simulacrum (2).png
thassa's_oracle.png
eladamri's_call.png
intruder_alarm.png
idyllic_tutor.png
cryptolith_rite.png
eternal_witness.png
vizier_of_the_menagerie.png
rhystic_study.png
emrakul,_the_promised_end.png
breeding_pool.png
temple_garden.png
sacred_foundry.png
stomping_ground.png
blood_crypt.png
steam_vents.png
godless_shrine.png
hallowed_fountain.png
darksteel_plate.png
blade_of_selves.png
return_to_dust.png
smothering_tithe.png
ren and seri, inseperable (catdog,_inseperable).png
kalamax,_the_stormsire.png
helm_of_awakening.png
reflecting_pool.png
seedborn_muse.png
dryad_of_the_ilysian_grove.png
emerald_medallion.png
ruby_medallion.png
fire_diamond.png
moss_diamond.png
gruul_signet.png
simic_signet.png
izzet_signet.png
oona,_queen_of_the_fae.png
vilis,_broker_of_blood.png
thryx, the sudden storm (aquaman).png
sol_ring.png
show_and_tell.png
enlightened_tutor.png
zirda, the dawnwaker (flareon).png
reliquary_tower (1).png
reliquary_tower.png
nykthos,_shrine_to_nyx.png
watery_grave.png
flooded_strand.png
dolmen_gate.png
sensei's_divining_top.png
rune-scarred_demon.png
rhystic_study (2).png
propaganda.png
evacuation.png
spark_double.png
gilded_lotus.png
dimir_signet.png
thran_dynamo.png
solemn simulacrum (c-3po).png
keruga, the macrosage (jabba_the_hutt,_crime_lord).png
ramos, dragon engine (super_mechagodzilla,_kaiju_engine).png
ramos, dragon engine (mechagodzilla,_kaiju_engine).png
zirda,_the_dawnwaker.png
fertilid.png
ash_barrens.png
the-gitrog-monster.png
life_from_the_loam.png
songs-of-the-damned.png
band_of_brushwaggs.png
niv-mizzet, parun (nivvy_m).png
kaheera, the orphanguard (katniss, friend to all).png
arahbo, roar of the world (griffin, rambunctious boyo).png
golgari_signet (1).png
golgari_signet.png
lotus_petal (1).png
kozilek,_butcher_of_truth.png
culling_the_weak.png
fabricate (1).png
fabricate.png
talisman_of_resilience.png
talisman_of_creativity.png
command_tower (1).png
command_tower.png
lotus_petal.png
overgrown_tomb.png
windswept_heath.png
wooded_foothills.png
worldly_tutor.png
demonic_tutor (2).png
squee's_embrace (smeagol's final embrace).png
squee's_revenge (gollum's betrayal).png
squee's_toy (gollum's precious).png
squee,_goblin_nabob (smeagol, unlikely ally).png
maze_of_ith (the mines of moria).png
gavi_nest_warden (gavin verhey).png
sakura_tribe_elder (baby yoda, the innocent).png
tiana_ship's_caretaker (kaylee frye).png
gerrard,_weatherlight_hero (malcolm reynolds).png
predator,_flagship (reaver cutter).png
weatherlight (serenity).png
kozilek,_the_great_distortion (saitama).png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Some files were not shown because too many files have changed in this diff Show More