+
+ Back to Shop
+
+
-
+
-
{{ page.category | upcase }}
-
{{ page.title }}
-
{{ page.coins | number_with_delimiter }} PCoins
+
{{ page.title }}
+ {% if page.coins %}
{{ page.coins | number_with_delimiter }} PCoins
{% endif %}
{{ page.description }}
-
- {% if page.content != "" %}
-
{{ page.content }}
- {% endif %}
+ {% assign product_content = content | strip %}
+ {% if product_content != '' %}
{{ content }}
{% endif %}
-
+
USD
${{ page.price_usd }}
+ Promo code
- Apply
+ Apply
-
+
-
- Add to Cart β RM{{ page.price_myr }}
-
+
Add to Cart β ${{ page.price_usd }}
Added items will appear in your shopping cart.
-
-
-
+
diff --git a/assets/css/news.css b/assets/css/news.css
deleted file mode 100644
index 3b43e5a..0000000
--- a/assets/css/news.css
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Default (light mode / brand base) */
-body {
- background: #ffffff; /* brand white background */
- color: #000000;
-}
-
-.news-banner img {
- height: 670px; /* set a fixed height */
- object-fit: cover; /* crop instead of squish */
- width: 100%; /* keep full width */
- margin-bottom: 1rem;
-}
-
-.news-item h1 h2 h3 {
- font-family: 'Minecraft Ten v2';
- margin-bottom: 10px;
-}
-
-.minecraft-box {
- position: absolute; /* overlay on banner */
- top: 650px; /* distance from bottom */
- left: 50%; /* center horizontally */
- transform: translateX(-50%); /* true centering */
-
- background-color: #171615;
- padding: 12px 20px;
- font-size: 1.2rem;
- color: #ffffff;
- text-align: center;
-}
-
-.news-body {
- display: flex;
- align-items: flex-start;
- gap: 90px;
- max-width: 1000px;
- margin: 0 auto;
- padding: 20px;
-}
-
-.author-info {
- flex: 0 0 200px; /* fixed width column */
- text-align: center;
-}
-
-.author-pfp {
- display: block; /* default for images */
- margin: 0 auto;
- max-width: 120px; /* sets a max width */
- height: auto; /* keeps natural aspect ratio */
- object-fit: contain; /* ensures the whole image shows */
- margin-bottom: 10px;
- display: block;
-}
-
-.author-name {
- font-weight: bold;
- margin-bottom: 6px;
-}
-
-.author-date {
- font-size: 0.9rem;
- color: #555;
-}
-
-.summary {
- margin-top: 10px;
- margin-bottom: 30px;
-}
-
-.content {
- line-height: 1.3;
-}
-
-@media (prefers-color-scheme: dark) {
- body {
- background: #171615;
- color: #e0e0e0;
- }
-
- .minecraft-box {
- background-color: #ffffff;
- color: #1D1E1E;
- }
-}
-
-@media (max-width: 768px) {
- .news-body {
- flex-direction: column; /* stack vertically */
- gap: 30px; /* smaller gap for mobile */
- }
-
- .author-info {
- order: -1; /* move author block to the top */
- flex: none; /* remove fixed width */
- width: 100%; /* full width on mobile */
- margin-bottom: 20px;
- }
-
- .article {
- width: 100%; /* ensure article fills the width */
- }
-}
diff --git a/assets/css/shop.css b/assets/css/shop.css
index bd0d72b..b522729 100644
--- a/assets/css/shop.css
+++ b/assets/css/shop.css
@@ -1,1033 +1,735 @@
-/* =====================
- GATE PAGE
- ===================== */
+/* Shared shop surfaces */
+.gate-wrap,
+.shop-wrap,
+.product-page-wrap {
+ width: min(var(--content-width), calc(100% - 40px));
+ margin: 0 auto;
+}
+
+.gate-card,
+.product-card,
+.product-page {
+ border: 2px solid var(--card-border);
+ background: var(--card-background);
+ box-shadow: var(--card-shadow);
+}
+/* Username gate */
.gate-wrap {
- min-height: 100vh;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 100px 20px 40px;
+ display: grid;
+ min-height: calc(100vh - var(--topbar-height));
+ place-items: center;
+ padding: 72px 0 92px;
}
.gate-card {
- background: rgba(255,255,255,0.97);
- border-radius: 24px;
- border: 1px solid rgba(255,206,2,0.25);
- padding: 48px 40px 40px;
- max-width: 480px;
- width: 100%;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 0;
- box-shadow: 0 20px 60px rgba(0,0,0,0.08), 0 0 30px rgba(255,206,2,0.08);
+ width: min(100%, 650px);
+ padding: 52px;
+ text-align: center;
}
.gate-logo {
- margin-bottom: 20px;
+ width: min(360px, 80%);
+ margin: 0 auto 1.4rem;
}
-.gate-logo img {
- height: 40px;
- object-fit: contain;
+.gate-title,
+.gate-welcome {
+ margin-bottom: 0.8rem;
+ font-size: clamp(2.1rem, 6vw, 3.6rem);
}
-.gate-title {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: clamp(1.4rem, 5vw, 2rem);
- font-weight: 400;
- color: #333;
- text-align: center;
- line-height: 1.3;
- margin-bottom: 10px;
+.gate-title span {
+ display: block;
+ color: var(--green-5);
+ text-shadow: 3px 3px 0 rgba(42, 100, 28, 0.18);
}
-.gate-yellow {
- color: #ffce02;
- text-shadow: 0 0 20px rgba(255,206,2,0.4);
+.gate-sub {
+ margin: 0 auto 1.8rem;
+ color: var(--coldgrey-4);
+ font-size: 1.05rem;
}
-.gate-sub {
- font-family: 'Minecraft Seven v2', monospace;
+.gate-form label {
+ display: block;
+ margin-bottom: 0.55rem;
+ font-family: var(--font-pixel);
font-size: 0.85rem;
- color: #888;
- text-align: center;
- margin-bottom: 28px;
+ font-weight: 700;
+ text-align: left;
}
.gate-input-row {
- display: flex;
- gap: 10px;
- width: 100%;
- margin-bottom: 8px;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ gap: 12px;
}
-.gate-input {
- flex: 1;
- padding: 12px 16px;
- border: 1px solid rgba(255,206,2,0.3);
- border-radius: 12px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #333;
+.gate-input,
+.shop-search,
+.promo-input,
+.cart-promo-input,
+.donate-input-wrap input {
+ min-width: 0;
+ min-height: 48px;
+ padding: 0.75rem 0.95rem;
+ border: 2px solid var(--coldgrey-2);
+ border-radius: 0;
+ color: var(--coldgrey-6);
background: #fff;
- outline: none;
- transition: border-color 0.2s;
+ box-shadow: inset 0 3px 0 rgba(44, 47, 58, 0.08);
+ font-family: var(--font-pixel);
}
-.gate-input:focus {
- border-color: #ffce02;
- box-shadow: 0 0 0 3px rgba(255,206,2,0.15);
+.gate-input:focus,
+.shop-search:focus,
+.promo-input:focus,
+.cart-promo-input:focus,
+.donate-input-wrap input:focus {
+ border-color: var(--green-5);
+ outline: 3px solid rgba(82, 165, 53, 0.22);
+ outline-offset: 1px;
}
-.gate-btn {
- padding: 12px 20px;
- background: #ffce02;
- color: #333;
- border: none;
- border-radius: 12px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- font-weight: 700;
- cursor: pointer;
- transition: all 0.2s ease;
- white-space: nowrap;
- text-decoration: none;
- display: inline-block;
- text-align: center;
-}
-
-.gate-btn:hover {
- background: #f0c000;
- transform: translateY(-2px);
- box-shadow: 0 6px 20px rgba(255,206,2,0.35);
-}
-
-.gate-btn--full {
- width: 100%;
- padding: 14px;
- font-size: 0.9rem;
+.gate-error,
+.gate-hint {
+ min-height: 1.5rem;
+ margin: 0.45rem 0 0;
+ font-family: var(--font-pixel);
+ font-size: 0.84rem;
}
.gate-error {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- color: #e74c3c;
- text-align: center;
- min-height: 18px;
- width: 100%;
+ color: #b3261e;
}
.gate-hint {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.78rem;
- color: #aaa;
- text-align: center;
- margin-top: -4px;
- margin-bottom: 4px;
+ color: var(--coldgrey-3);
}
.gate-divider {
display: flex;
align-items: center;
- width: 100%;
- margin: 20px 0;
- gap: 12px;
- color: #ccc;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
+ gap: 0.85rem;
+ margin: 1.6rem 0 1rem;
+ color: var(--coldgrey-2);
+ font-family: var(--font-pixel);
+ font-size: 0.76rem;
+ text-transform: uppercase;
}
.gate-divider::before,
.gate-divider::after {
- content: '';
+ height: 2px;
flex: 1;
- height: 1px;
- background: rgba(0,0,0,0.08);
-}
-
-.gate-alt-row {
- display: flex;
- gap: 10px;
- width: 100%;
+ background: rgba(61, 66, 80, 0.16);
+ content: "";
}
-.gate-alt-btn {
- flex: 1;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- padding: 12px 16px;
- border-radius: 12px;
- border: 1px solid rgba(0,0,0,0.1);
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.82rem;
- color: #555;
- text-decoration: none;
- background: #fafafa;
- transition: all 0.2s ease;
- cursor: pointer;
+.gate-alt-row,
+.gate-success-btns {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 12px;
}
-.gate-alt-btn:hover {
- border-color: rgba(255,206,2,0.4);
- background: #fffbe6;
- transform: translateY(-1px);
+.gate-success {
+ justify-items: center;
}
-.gate-alt-btn--yellow {
- border-color: rgba(255,206,2,0.4);
- background: rgba(255,206,2,0.06);
- color: #b8860b;
+.gate-success-btns {
+ width: 100%;
}
-.gate-success {
- gap: 12px;
+.gate-btn--full {
+ grid-column: 1 / -1;
}
.gate-avatar {
- width: 80px;
- height: 80px;
- border-radius: 12px;
- background-color: #f0f0f0;
- background-size: cover;
- background-position: center;
- border: 2px solid rgba(255,206,2,0.3);
-}
-
-.gate-welcome {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.5rem;
- font-weight: 400;
- color: #333;
- text-align: center;
+ width: 96px;
+ height: 96px;
+ margin: 0 auto 1.4rem;
+ border: 4px solid #fff;
+ background: var(--coldgrey-2) center / cover;
+ box-shadow: 0 0 0 4px var(--green-5), 7px 7px 0 rgba(42, 100, 28, 0.25);
+ image-rendering: pixelated;
}
-.gate-success-btns {
- display: flex;
- flex-direction: column;
- gap: 10px;
- width: 100%;
- align-items: center;
+/* Catalog */
+.shop-hero {
+ color: #fff;
+ background: var(--coldgrey-6) url("../mojang/img/bg-wool-dark.png");
}
-/* =====================
- SHOP HERO
- ===================== */
-
-.shop-hero {
- padding-top: 100px;
- padding-bottom: 32px;
- text-align: center;
- background-image: url('/assets/mojang/img/bg-grass.png');
- background-size: cover;
- background-position: center;
+.shop-hero-inner {
position: relative;
- margin: 15px;
- margin-top: 95px;
- border-radius: 20px;
- overflow: hidden;
+ width: min(var(--content-width), calc(100% - 40px));
+ margin: 0 auto;
+ padding: 68px 0 58px;
+ text-align: center;
}
-.shop-hero::before {
- content: '';
- position: absolute;
- inset: 0;
- background: rgba(255,255,255,0.7);
- backdrop-filter: blur(4px);
+.shop-title {
+ margin: 0;
+ color: #fff;
+ font-size: clamp(2.6rem, 7vw, 5rem);
+ text-shadow: 4px 4px 0 rgba(0, 0, 0, 0.32);
}
-.shop-hero-inner {
- position: relative;
- z-index: 1;
- padding: 0 20px;
+.shop-sub {
+ margin: 0.8rem 0 2rem;
+ color: #d7dae2;
+ font-size: 1.08rem;
}
.shop-user-pill {
- display: inline-flex;
+ position: absolute;
+ top: 24px;
+ right: 0;
+ display: flex;
align-items: center;
- gap: 10px;
- background: rgba(255,255,255,0.95);
- border: 1px solid rgba(255,206,2,0.3);
- border-radius: 99px;
- padding: 6px 14px 6px 6px;
- margin-bottom: 16px;
- font-family: 'Minecraft Seven v2', monospace;
+ gap: 0.65rem;
+ padding: 0.45rem 0.65rem;
+ border: 2px solid rgba(255, 255, 255, 0.16);
+ background: rgba(255, 255, 255, 0.09);
+ font-family: var(--font-pixel);
font-size: 0.82rem;
- color: #333;
}
.shop-user-avatar {
- width: 28px;
- height: 28px;
- border-radius: 6px;
- background-size: cover;
- background-color: #eee;
+ width: 34px;
+ height: 34px;
+ background: var(--coldgrey-4) center / cover;
+ image-rendering: pixelated;
}
.shop-user-switch {
- background: none;
- border: none;
- color: #aaa;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- cursor: pointer;
padding: 0;
- margin-left: 4px;
-}
-
-.shop-user-switch:hover { color: #e74c3c; }
-
-.shop-title {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: clamp(1.8rem, 5vw, 2.8rem);
- font-weight: 400;
- color: #333;
- margin-bottom: 8px;
-}
-
-.shop-sub {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.88rem;
- color: #666;
- margin-bottom: 24px;
+ border: 0;
+ color: var(--primary);
+ background: transparent;
+ cursor: pointer;
+ font-family: var(--font-pixel);
+ font-size: 0.72rem;
+ text-decoration: underline;
}
.shop-controls {
display: flex;
- flex-direction: column;
- align-items: center;
- gap: 12px;
- max-width: 480px;
+ max-width: 760px;
+ align-items: stretch;
+ justify-content: center;
+ gap: 14px;
margin: 0 auto;
}
.shop-search {
- width: 100%;
- padding: 12px 18px;
- border: 1px solid rgba(255,206,2,0.35);
- border-radius: 12px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #333;
- background: rgba(255,255,255,0.95);
- outline: none;
- transition: border-color 0.2s;
-}
-
-.shop-search:focus {
- border-color: #ffce02;
- box-shadow: 0 0 0 3px rgba(255,206,2,0.15);
+ width: min(100%, 370px);
+ border-color: transparent;
}
.shop-cats {
display: flex;
- gap: 8px;
- flex-wrap: wrap;
- justify-content: center;
+ gap: 7px;
}
.cat-btn {
- padding: 8px 18px;
- border-radius: 99px;
- border: 1px solid rgba(0,0,0,0.12);
- background: rgba(255,255,255,0.9);
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- color: #666;
- cursor: pointer;
- transition: all 0.2s ease;
-}
-
-.cat-btn:hover {
- border-color: rgba(255,206,2,0.4);
- background: #fffbe6;
+ --btn-bg: var(--mc-vanilla-coldgrey-5);
+ --btn-bottom: var(--mc-vanilla-coldgrey-6);
+ --btn-top: var(--mc-vanilla-coldgrey-4);
+ --btn-active-border: white;
+ min-height: 48px;
+ padding: 12px 16px;
}
.cat-btn.active {
- background: #ffce02;
- border-color: #ffce02;
- color: #333;
- font-weight: 700;
+ --btn-bg: var(--secondary);
+ --btn-bottom: var(--secondary-darker);
+ --btn-top: var(--primary);
+ --btn-idle-shade: rgba(0, 0, 0, 0.05);
+ --btn-hover-shade: rgba(0, 0, 0, 0.1);
}
-/* =====================
- PRODUCT GRID
- ===================== */
-
.shop-wrap {
- padding: 32px 20px 60px;
- max-width: 1200px;
- margin: 0 auto;
+ padding: 72px 0 96px;
}
.product-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
- gap: 20px;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 30px;
}
.grid-item {
position: relative;
+ display: flex;
+ min-width: 0;
+ flex-direction: column;
}
.product-card-link {
- text-decoration: none;
+ display: flex;
+ flex: 1;
color: inherit;
- display: block;
- height: 100%;
+ text-decoration: none;
}
.product-card {
- background: rgba(255,255,255,0.97);
- border: 1px solid rgba(255,206,2,0.2);
- border-radius: 16px;
- overflow: hidden;
- text-decoration: none;
- color: inherit;
+ position: relative;
display: flex;
+ width: 100%;
+ min-width: 0;
flex-direction: column;
- transition: all 0.25s ease;
- position: relative;
- height: 100%;
+ overflow: hidden;
+ transition: transform 0.18s ease, box-shadow 0.18s ease;
}
-.product-card:hover {
- transform: translateY(-4px);
- box-shadow: 0 16px 40px rgba(0,0,0,0.1), 0 0 20px rgba(255,206,2,0.2);
- border-color: rgba(255,206,2,0.4);
+.product-card-link:hover .product-card,
+.product-card-link:focus-visible .product-card {
+ border-color: rgba(61, 66, 80, 0.4);
}
.product-card--featured {
- border: 2px solid #ffce02;
- box-shadow: 0 0 20px rgba(255,206,2,0.2);
+ border-color: var(--primary);
+ box-shadow: 0 8px 0 var(--secondary-darker), 0 18px 40px rgba(0, 0, 0, 0.14);
}
.product-badge {
position: absolute;
- top: 12px;
- right: 12px;
- background: #ffce02;
- color: #333;
- font-family: 'Minecraft Seven v2', monospace;
+ z-index: 2;
+ top: 14px;
+ right: 0;
+ padding: 0.5rem 0.8rem;
+ color: var(--coldgrey-6);
+ background: var(--primary);
+ box-shadow: inset 0 -4px 0 var(--secondary-darker);
+ font-family: var(--font-pixel);
font-size: 0.7rem;
font-weight: 700;
- padding: 4px 10px;
- border-radius: 99px;
+ text-transform: uppercase;
}
.product-img-wrap {
- background: #fffbe6;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 24px;
- min-height: 140px;
+ display: grid;
+ min-height: 220px;
+ place-items: center;
+ padding: 28px;
+ background: #eef0ea url("../mojang/img/bg-wool-white-dark.png");
}
.product-img-wrap img {
- width: 80px;
- height: 80px;
+ width: 100%;
+ height: 180px;
object-fit: contain;
+ filter: drop-shadow(8px 10px 0 rgba(44, 47, 58, 0.12));
image-rendering: pixelated;
}
.product-body {
- padding: 16px 16px 8px;
flex: 1;
+ padding: 24px 24px 16px;
}
.product-coins {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 0.85rem;
- color: #ffce02;
- text-shadow: 0 0 10px rgba(255,206,2,0.4);
- margin-bottom: 4px;
+ margin: 0 0 0.45rem;
+ color: var(--green-5);
+ font-family: var(--font-pixel);
+ font-size: 0.78rem;
+ font-weight: 700;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
}
.product-name {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.1rem;
- font-weight: 400;
- color: #333;
- margin-bottom: 6px;
+ margin: 0 0 0.65rem;
+ font-size: 1.55rem;
}
.product-desc {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #888;
- line-height: 1.5;
+ margin: 0;
+ color: var(--coldgrey-4);
+ font-size: 0.93rem;
}
.product-footer {
display: flex;
+ min-height: 64px;
align-items: center;
- justify-content: flex-start;
- padding: 12px 16px;
- border-top: 1px solid rgba(255,206,2,0.1);
- margin-top: auto;
- gap: 12px;
- padding-right: 80px;
-}
-
-.product-prices {
- display: flex;
- flex-direction: column;
- gap: 1px;
+ justify-content: space-between;
+ padding: 16px 24px 20px;
+ border-top: 2px solid rgba(61, 66, 80, 0.11);
}
.product-price {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1rem;
- color: #333;
+ font-family: var(--font-display);
+ font-size: 1.35rem;
}
-.product-price--primary {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1rem;
- color: #333;
+.product-btn {
+ width: calc(100% - 30px);
+ margin: -4px auto 0;
}
-.product-price--secondary {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #aaa;
+.donate-card {
+ flex: 1;
}
-/* Donate card */
.donate-heart {
- background: #fffbe6;
+ color: var(--primary);
+ font-family: var(--font-display);
+ font-size: 6rem;
+ line-height: 1;
+ text-shadow: 6px 6px 0 var(--secondary-darker);
}
.donate-footer {
- gap: 10px;
+ display: block;
}
.donate-input-wrap {
display: flex;
align-items: center;
- gap: 4px;
- background: #f9f9f9;
- border: 1px solid rgba(255,206,2,0.3);
- border-radius: 8px;
- padding: 6px 10px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- color: #888;
+ gap: 0.55rem;
+ font-family: var(--font-display);
+ font-size: 1.3rem;
}
.donate-input-wrap input {
- width: 60px;
- border: none;
- background: none;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- color: #333;
- outline: none;
+ width: 100%;
}
-.donate-cta {
- background: #ffce02;
- color: #333;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- font-weight: 700;
- padding: 8px 14px;
- border-radius: 8px;
- border: none;
- cursor: pointer;
+.empty-state {
+ padding: 3rem;
+ color: var(--coldgrey-3);
+ font-family: var(--font-pixel);
+ text-align: center;
}
-/* =====================
- INDIVIDUAL PRODUCT PAGE
- ===================== */
-
+/* Product details */
.product-page-wrap {
- max-width: 960px;
- margin: 0 auto;
- padding: 120px 24px 60px;
+ padding: 58px 0 92px;
}
.back-link {
- font-family: 'Minecraft Seven v2', monospace;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ margin-bottom: 1.4rem;
+ color: var(--green-6);
+ font-family: var(--font-pixel);
font-size: 0.85rem;
- color: #888;
+ font-weight: 700;
text-decoration: none;
- display: inline-block;
- margin-bottom: 28px;
- transition: color 0.2s;
}
-.back-link:hover { color: #ffce02; }
+.back-link::before {
+ content: "β";
+}
+
+.back-link:hover {
+ text-decoration: underline;
+}
.product-page {
display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 48px;
- align-items: start;
+ overflow: hidden;
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
-.product-page-img-wrap {
- background: #fffbe6;
- border-radius: 20px;
- border: 1px solid rgba(255,206,2,0.25);
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 48px;
- min-height: 300px;
+.product-page-left {
+ display: grid;
+ min-width: 0;
+ place-items: center;
+ padding: 52px;
+ background: #eef0ea url("../mojang/img/bg-wool-dark.png");
}
.product-page-img-wrap img {
- width: 160px;
- height: 160px;
+ width: min(100%, 440px);
+ max-height: 440px;
object-fit: contain;
+ filter: drop-shadow(12px 14px 0 rgba(44, 47, 58, 0.14));
image-rendering: pixelated;
}
-.product-page-cat {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #ffce02;
- letter-spacing: 0.1em;
- margin-bottom: 8px;
+.product-page-right {
+ min-width: 0;
+ padding: 58px 50px;
}
.product-page-title {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: clamp(1.8rem, 4vw, 2.4rem);
- font-weight: 400;
- color: #333;
- margin-bottom: 6px;
+ margin-bottom: 0.55rem;
+ font-size: clamp(2.2rem, 5vw, 3.8rem);
}
.product-page-coins {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.1rem;
- color: #ffce02;
- text-shadow: 0 0 15px rgba(255,206,2,0.4);
- margin-bottom: 16px;
+ margin: 0 0 1.3rem;
+ color: var(--green-5);
+ font-family: var(--font-pixel);
+ font-weight: 700;
}
-.product-page-desc {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.88rem;
- color: #666;
- line-height: 1.7;
- margin-bottom: 24px;
+.product-page-desc,
+.product-page-content {
+ color: var(--coldgrey-4);
}
.product-page-prices {
- display: flex;
- gap: 12px;
- margin-bottom: 24px;
- flex-wrap: wrap;
+ margin: 1.7rem 0;
}
.price-option {
display: flex;
- flex-direction: column;
- background: #fafafa;
- border: 1px solid rgba(0,0,0,0.08);
- border-radius: 10px;
- padding: 10px 16px;
- min-width: 90px;
-}
-
-.price-option--primary {
- border-color: rgba(255,206,2,0.4);
- background: rgba(255,206,2,0.06);
+ align-items: center;
+ justify-content: space-between;
+ padding: 1rem 1.2rem;
+ border: 2px solid var(--green-5);
+ background: rgba(160, 224, 129, 0.16);
}
.price-label {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.7rem;
- color: #aaa;
- margin-bottom: 2px;
+ color: var(--green-6);
+ font-family: var(--font-pixel);
+ font-size: 0.8rem;
+ font-weight: 700;
}
.price-value {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1rem;
- color: #333;
+ font-family: var(--font-display);
+ font-size: 1.65rem;
}
.promo-row {
- display: flex;
- gap: 8px;
- margin-bottom: 6px;
-}
-
-.promo-input {
- flex: 1;
- padding: 10px 14px;
- border: 1px solid rgba(0,0,0,0.12);
- border-radius: 10px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- color: #333;
- outline: none;
- transition: border-color 0.2s;
-}
-
-.promo-input:focus {
- border-color: #ffce02;
- box-shadow: 0 0 0 3px rgba(255,206,2,0.12);
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ gap: 10px;
}
.promo-btn {
- padding: 10px 16px;
- background: #f5f5f5;
- border: 1px solid rgba(0,0,0,0.1);
- border-radius: 10px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.82rem;
- color: #555;
- cursor: pointer;
- transition: all 0.2s;
-}
-
-.promo-btn:hover {
- background: #ffce02;
- border-color: #ffce02;
- color: #333;
+ min-width: 92px;
}
.promo-msg {
- font-family: 'Minecraft Seven v2', monospace;
+ min-height: 1.4rem;
+ margin: 0.5rem 0;
+ font-family: var(--font-pixel);
font-size: 0.78rem;
- min-height: 18px;
- margin-bottom: 16px;
}
.buy-btn {
width: 100%;
- padding: 16px;
- background: #ffce02;
- color: #333;
- border: none;
- border-radius: 14px;
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1rem;
- font-weight: 400;
- cursor: pointer;
- transition: all 0.2s ease;
- margin-bottom: 10px;
-}
-
-.buy-btn:hover {
- background: #f0c000;
- transform: translateY(-2px);
- box-shadow: 0 8px 24px rgba(255,206,2,0.4);
-}
-
-.buy-btn:disabled {
- opacity: 0.6;
- cursor: not-allowed;
- transform: none;
+ margin-top: 0.45rem;
}
.buy-note {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #bbb;
+ margin: 0.75rem 0 0;
+ color: var(--coldgrey-2);
+ font-size: 0.78rem;
text-align: center;
}
-/* =====================
- SHOPPING CART
- ===================== */
-
+/* Cart */
.cart-btn {
- position: fixed;
- top: 20px;
- right: 40px;
- z-index: 1004;
- width: 48px;
- height: 48px;
- border-radius: 50%;
- background: #ffce02;
- border: 2px solid #333;
- color: #333;
- cursor: pointer;
- display: flex;
+ position: relative;
+ display: inline-flex;
+ width: auto;
+ height: auto;
align-items: center;
- justify-content: center;
- transition: all 0.3s ease;
- box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3);
+ gap: 0.55rem;
}
-.cart-btn:hover {
- transform: scale(1.1);
- box-shadow: 0 8px 25px rgba(255, 206, 2, 0.5);
+.cart-btn svg {
+ display: inline-block;
+ flex: 0 0 auto;
}
.cart-count {
position: absolute;
- top: -8px;
- right: -8px;
- background: #e74c3c;
- color: white;
- font-family: 'Minecraft Seven v2', monospace;
+ top: 1px;
+ right: 0;
+ display: grid;
+ min-width: 21px;
+ height: 21px;
+ place-items: center;
+ padding: 0 5px;
+ color: var(--coldgrey-6);
+ background: var(--primary);
+ box-shadow: 2px 2px 0 var(--secondary-darker);
+ font-family: var(--font-pixel);
font-size: 0.65rem;
font-weight: 700;
- width: 20px;
- height: 20px;
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 2px solid white;
}
.cart-overlay {
position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: rgba(0, 0, 0, 0);
- z-index: 1005;
+ z-index: 1100;
+ inset: 0;
+ visibility: hidden;
+ background: rgba(13, 16, 20, 0.66);
opacity: 0;
- pointer-events: none;
- transition: all 0.3s ease;
+ transition: opacity 0.22s ease, visibility 0.22s ease;
}
.cart-overlay.open {
- background: rgba(0, 0, 0, 0.5);
+ visibility: visible;
opacity: 1;
- pointer-events: all;
}
.cart-sidebar {
position: fixed;
+ z-index: 1101;
top: 0;
- right: -400px;
- width: 400px;
- height: 100vh;
- background: rgba(255, 255, 255, 0.98);
- backdrop-filter: blur(20px);
- z-index: 1006;
- transition: right 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
+ right: 0;
display: flex;
+ width: min(450px, 100%);
+ height: 100dvh;
flex-direction: column;
- box-shadow: -4px 0 30px rgba(0, 0, 0, 0.1);
+ background: #fff url("../mojang/img/bg-wool-white.png");
+ box-shadow: -8px 0 0 rgba(44, 47, 58, 0.2);
+ transform: translateX(105%);
+ transition: transform 0.28s ease;
}
.cart-sidebar.open {
- right: 0;
+ transform: translateX(0);
}
.cart-header {
display: flex;
align-items: center;
justify-content: space-between;
- padding: 20px;
- border-bottom: 1px solid rgba(255, 206, 2, 0.2);
- background: rgba(255, 206, 2, 0.04);
+ padding: 24px;
+ border-bottom: 3px solid var(--coldgrey-6);
+ color: #fff;
+ background: var(--coldgrey-6);
}
.cart-header h2 {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.3rem;
- color: #333;
margin: 0;
+ font-size: 1.65rem;
}
.cart-close {
- width: 32px;
- height: 32px;
- border: none;
- background: none;
- font-size: 1.5rem;
- color: #999;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- transition: all 0.2s;
-}
-
-.cart-close:hover {
- color: #333;
- transform: rotate(90deg);
+ display: grid;
+ width: 40px;
+ height: 40px;
+ place-items: center;
+ padding: 0;
+ font-size: 1.6rem;
+ line-height: 1;
}
.cart-items {
flex: 1;
+ padding: 18px;
overflow-y: auto;
- padding: 16px;
+}
+
+.cart-empty {
+ padding: 2rem;
+ color: var(--coldgrey-3);
+ text-align: center;
}
.cart-item {
- display: flex;
+ display: grid;
+ align-items: center;
+ padding: 14px 0;
+ border-bottom: 2px solid rgba(61, 66, 80, 0.13);
+ grid-template-columns: 64px minmax(0, 1fr);
gap: 12px;
- padding: 12px;
- background: #fafafa;
- border-radius: 10px;
- margin-bottom: 12px;
- border: 1px solid rgba(255, 206, 2, 0.1);
}
.cart-item-img {
- width: 60px;
- height: 60px;
- border-radius: 8px;
+ width: 64px;
+ height: 64px;
+ padding: 5px;
+ background: #eceee8;
object-fit: contain;
- background: #fffbe6;
- padding: 4px;
- flex-shrink: 0;
+ image-rendering: pixelated;
}
.cart-item-info {
- flex: 1;
- display: flex;
- flex-direction: column;
- justify-content: center;
+ min-width: 0;
}
-.cart-item-info h4 {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #333;
- margin: 0 0 3px 0;
+.cart-item-info h3 {
+ margin: 0;
+ overflow-wrap: anywhere;
+ font-family: var(--font-pixel);
+ font-size: 0.88rem;
}
-.cart-item-coins {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #ffce02;
- margin: 0 0 3px 0;
+.cart-item-coins,
+.cart-item-price {
+ margin: 0.2rem 0 0;
+ color: var(--coldgrey-3);
+ font-size: 0.76rem;
}
.cart-item-price {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 0.9rem;
- color: #333;
- margin: 0;
+ color: var(--green-6);
+ font-family: var(--font-pixel);
+ font-weight: 700;
}
.cart-item-controls {
display: flex;
align-items: center;
- gap: 8px;
- flex-wrap: wrap;
-}
-
-.qty-btn {
- width: 24px;
- height: 24px;
- border: 1px solid rgba(255, 206, 2, 0.4);
- background: #fff;
- color: #333;
- border-radius: 4px;
- cursor: pointer;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- display: flex;
- align-items: center;
- justify-content: center;
- transition: all 0.2s;
+ gap: 7px;
+ grid-column: 2;
}
-.qty-btn:hover {
- background: #ffce02;
- border-color: #ffce02;
+.qty-btn,
+.cart-item-remove {
+ display: grid;
+ width: 34px;
+ height: 34px;
+ place-items: center;
+ padding: 0;
+ font-size: 0.75rem;
}
.qty-display {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- color: #333;
- min-width: 20px;
+ min-width: 28px;
+ font-family: var(--font-pixel);
text-align: center;
}
.cart-item-remove {
- width: 24px;
- height: 24px;
- border: none;
- background: #ffcccc;
- color: #e74c3c;
- border-radius: 4px;
- cursor: pointer;
- font-size: 0.8rem;
- display: flex;
- align-items: center;
- justify-content: center;
- transition: all 0.2s;
-}
-
-.cart-item-remove:hover {
- background: #e74c3c;
- color: #fff;
+ width: auto;
+ margin-left: auto;
+ padding: 0 0.65rem;
+ font-size: 0.7rem;
}
.cart-footer {
- padding: 16px;
- border-top: 1px solid rgba(255, 206, 2, 0.2);
- background: rgba(255, 206, 2, 0.04);
+ padding: 20px;
+ border-top: 3px solid var(--coldgrey-5);
+ background: #f6f6f2;
}
.cart-promo {
- display: flex;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
- margin-bottom: 10px;
-}
-
-.cart-promo-input {
- flex: 1;
- padding: 10px 12px;
- border: 1px solid rgba(255, 206, 2, 0.3);
- border-radius: 8px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- color: #333;
- outline: none;
- transition: border-color 0.2s;
-}
-
-.cart-promo-input:focus {
- border-color: #ffce02;
- box-shadow: 0 0 0 3px rgba(255, 206, 2, 0.12);
}
.cart-promo-btn {
- padding: 10px 12px;
- background: #f5f5f5;
- border: 1px solid rgba(0, 0, 0, 0.1);
- border-radius: 8px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.75rem;
- color: #555;
- cursor: pointer;
- transition: all 0.2s;
- white-space: nowrap;
-}
-
-.cart-promo-btn:hover {
- background: #ffce02;
- border-color: #ffce02;
- color: #333;
+ padding: 0 1rem;
}
.cart-promo-msg {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.7rem;
- min-height: 16px;
- margin-bottom: 12px;
- color: #666;
+ min-height: 1.25rem;
+ margin: 0.35rem 0;
+ font-family: var(--font-pixel);
+ font-size: 0.72rem;
}
.cart-totals {
- background: white;
- border: 1px solid rgba(255, 206, 2, 0.2);
- border-radius: 10px;
- padding: 12px 14px;
- margin-bottom: 12px;
+ padding: 0.9rem 0;
+ border-top: 2px solid rgba(61, 66, 80, 0.13);
}
.cart-subtotal,
@@ -1035,95 +737,140 @@
.cart-total {
display: flex;
justify-content: space-between;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- color: #666;
- margin-bottom: 6px;
+ margin: 0.35rem 0;
}
.cart-total {
- border-top: 1px solid rgba(255, 206, 2, 0.2);
- padding-top: 8px;
- margin-bottom: 0;
- font-weight: 700;
- color: #333;
+ margin-top: 0.7rem;
+ font-family: var(--font-display);
+ font-size: 1.3rem;
}
.cart-checkout-btn {
width: 100%;
- padding: 14px;
- background: #ffce02;
- color: #333;
- border: none;
- border-radius: 10px;
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 0.9rem;
- font-weight: 400;
- cursor: pointer;
- transition: all 0.2s ease;
+ max-width: none;
+ min-height: 48px;
}
-.cart-checkout-btn:hover:not(:disabled) {
- background: #f0c000;
- transform: translateY(-2px);
- box-shadow: 0 8px 24px rgba(255, 206, 2, 0.4);
-}
+@media (max-width: 980px) {
+ .product-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
-.cart-checkout-btn:disabled {
- opacity: 0.6;
- cursor: not-allowed;
-}
+ .product-page {
+ grid-template-columns: 1fr;
+ }
-/* Product card button style update */
-.product-btn {
- background: #ffce02;
- color: #333;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.8rem;
- font-weight: 700;
- padding: 8px 16px;
- border-radius: 8px;
- border: none;
- cursor: pointer;
- transition: all 0.2s;
- white-space: nowrap;
- position: absolute;
- bottom: 16px;
- right: 16px;
- z-index: 10;
+ .product-page-left {
+ min-height: 400px;
+ }
}
-.product-btn:hover {
- background: #f0c000;
- transform: scale(1.05);
-}
+@media (max-width: 700px) {
+ .gate-wrap,
+ .shop-wrap,
+ .product-page-wrap,
+ .shop-hero-inner {
+ width: min(100% - 28px, var(--content-width));
+ }
-.product-btn:active {
- transform: scale(0.95);
-}
+ .gate-wrap {
+ padding: 42px 0 62px;
+ place-items: start center;
+ }
-/* =====================
- RESPONSIVE CART
- ===================== */
+ .gate-card {
+ padding: 36px 24px;
+ }
-@media (max-width: 768px) {
- .cart-btn {
- top: 15px;
- right: 15px;
- width: 44px;
- height: 44px;
+ .gate-input-row,
+ .gate-alt-row,
+ .gate-success-btns {
+ grid-template-columns: 1fr;
+ }
+
+ .gate-btn--full {
+ grid-column: auto;
}
- .cart-sidebar {
+ .shop-hero-inner {
+ padding: 82px 0 44px;
+ }
+
+ .shop-user-pill {
+ top: 18px;
+ right: 50%;
+ transform: translateX(50%);
+ }
+
+ .shop-controls {
+ flex-direction: column;
+ }
+
+ .shop-search {
width: 100%;
- right: -100%;
}
- .cart-item-info h4 {
- font-size: 0.8rem;
+ .shop-cats {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ }
+
+ .shop-wrap {
+ padding: 52px 0 68px;
+ }
+
+ .product-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .product-page-wrap {
+ padding: 40px 0 64px;
+ }
+
+ .product-page-left {
+ min-height: 300px;
+ padding: 34px;
+ }
+
+ .product-page-img-wrap img {
+ max-height: 300px;
+ }
+
+ .product-page-right {
+ padding: 38px 26px;
+ }
+}
+
+@media (max-width: 768px) {
+ .cart-label {
+ display: none;
+ }
+
+ .topbar > .cart-btn {
+ padding-inline: 13px;
+ }
+}
+
+@media (max-width: 420px) {
+ .gate-card {
+ padding-right: 18px;
+ padding-left: 18px;
+ }
+
+ .cat-btn {
+ padding-right: 0.45rem;
+ padding-left: 0.45rem;
+ font-size: 0.72rem;
+ }
+
+ .product-body,
+ .product-footer {
+ padding-right: 18px;
+ padding-left: 18px;
}
- .cart-item-price {
- font-size: 0.8rem;
+ .promo-row {
+ grid-template-columns: 1fr;
}
}
diff --git a/assets/css/style.css b/assets/css/style.css
deleted file mode 100644
index 3c79268..0000000
--- a/assets/css/style.css
+++ /dev/null
@@ -1,1069 +0,0 @@
-@font-face {
- font-family: 'Minecraft Ten v2';
- src: url('../mojang/fonts/Minecraft-Tenv2.ttf') format('truetype');
- font-display: swap;
-}
-
-@font-face {
- font-family: 'Minecraft Seven v2';
- src: url('../mojang/fonts/Minecraft-Seven_v2.ttf') format('truetype');
- font-display: swap;
-}
-
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
-}
-
-body {
- font-family: 'Minecraft Seven v2', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
- background-image: url('../mojang/img/bg-wool-white.png');
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- background-attachment: fixed;
- color: #333333;
- overflow-x: hidden;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-family: 'Minecraft Ten v2', 'Impact', 'Trebuchet MS', 'Segoe UI', sans-serif;
-}
-
-/* Topbar Styles with enhanced glow */
-.topbar {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- height: 80px;
- background: rgba(255, 255, 255, 0.95);
- backdrop-filter: blur(15px);
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 0 40px;
- z-index: 1003;
- border-bottom: 1px solid rgba(255, 206, 2, 0.2);
- box-shadow: 0 4px 20px rgba(255, 206, 2, 0.1);
-}
-
-/* Hamburger Menu Styles */
-.hamburger {
- width: 35px;
- height: 35px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- gap: 4px;
- cursor: pointer;
- z-index: 1002;
- padding: 8px;
- border-radius: 8px;
- transform: rotate(0deg);
- transition: all 0.4s ease, transform 0.4s ease;
-}
-
- .hamburger:hover {
- background: rgba(255, 206, 2, 0.1);
- box-shadow: 0 0 20px rgba(255, 206, 2, 0.3);
- }
-
- .hamburger span {
- width: 100%;
- height: 3px;
- background: linear-gradient(45deg, #333, #555);
- border-radius: 2px;
- transition: all 0.4s ease;
- transform-origin: center;
- box-shadow: 0 0 6px rgba(255, 206, 2, 0.4);
- }
-
- /* Hamburger Animation - Simple 90 degree rotation, keep all 3 lines */
- .hamburger.active {
- transform: rotate(90deg);
- }
-
- .hamburger.active span {
- background: linear-gradient(45deg, #ffce02, #e6b800);
- box-shadow: 0 0 8px rgba(255, 206, 2, 0.6);
- }
-
-/* Mobile Menu Overlay - Desktop sidebar, mobile full screen */
-.menu-overlay {
- position: fixed;
- top: 0;
- left: -400px;
- width: 400px;
- height: 100vh;
- background: rgba(255, 255, 255, 0.98);
- backdrop-filter: blur(20px);
- z-index: 1001;
- transition: left 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- display: flex;
- flex-direction: column;
- padding-top: 100px;
- overflow-y: auto;
- box-shadow: 0 0 50px rgba(255, 206, 2, 0.2);
-}
-
- .menu-overlay.active {
- left: 0;
- }
-
-/* Navigation Menu */
-.nav-menu {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 25px;
- padding: 40px 20px;
- max-width: 400px;
- margin: 0 auto;
- width: 100%;
-}
-
-.nav-item {
- text-decoration: none;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 1.1rem;
- color: #333;
- padding: 18px 35px;
- border-radius: 16px;
- background: rgba(255, 255, 255, 0.8);
- border: 1px solid rgba(255, 206, 2, 0.2);
- transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- width: 100%;
- text-align: center;
- position: relative;
- overflow: hidden;
- box-shadow: 0 4px 15px rgba(0,0,0,0.05);
-}
-
- .nav-item::before {
- content: '';
- position: absolute;
- top: 0;
- left: -100%;
- width: 100%;
- height: 100%;
- background: linear-gradient(90deg, transparent, rgba(255, 206, 2, 0.3), transparent);
- transition: left 0.6s;
- }
-
- .nav-item:hover::before {
- left: 100%;
- }
-
- .nav-item:hover {
- background: rgba(255, 255, 255, 0.95);
- border-color: rgba(255, 206, 2, 0.4);
- transform: translateY(-3px) scale(1.02);
- box-shadow: 0 10px 30px rgba(0,0,0,0.1), 0 0 20px rgba(255, 206, 2, 0.3);
- }
-
- .nav-item:active {
- transform: translateY(-1px) scale(1.01);
- }
-
- /* Special styling for different nav items */
- .nav-item.primary {
- background: linear-gradient(135deg, #ffce02, #ffd93d);
- color: #333;
- border-color: #ffce02;
- box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3), 0 0 20px rgba(255, 206, 2, 0.2);
- }
-
- .nav-item.primary:hover {
- background: linear-gradient(135deg, #ffd93d, #ffce02);
- box-shadow: 0 15px 40px rgba(255, 206, 2, 0.4), 0 0 30px rgba(255, 206, 2, 0.5);
- transform: translateY(-4px) scale(1.03);
- }
-
- .nav-item.secondary {
- background: linear-gradient(135deg, rgba(34, 197, 94, 0.1), rgba(34, 197, 94, 0.2));
- border-color: rgba(34, 197, 94, 0.3);
- color: #22c55e;
- box-shadow: 0 4px 15px rgba(34, 197, 94, 0.1);
- }
-
- .nav-item.secondary:hover {
- background: linear-gradient(135deg, rgba(34, 197, 94, 0.2), rgba(34, 197, 94, 0.3));
- box-shadow: 0 15px 40px rgba(34, 197, 94, 0.2), 0 0 30px rgba(34, 197, 94, 0.3);
- }
-
-/* Menu Footer */
-.menu-footer {
- margin-top: auto;
- padding: 30px 20px;
- text-align: center;
- border-top: 1px solid rgba(255, 206, 2, 0.2);
-}
-
- .menu-footer p {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.7rem;
- color: #666;
- margin-bottom: 20px;
- }
-
-.social-links {
- display: flex;
- justify-content: center;
- gap: 15px;
-}
-
-.social-link {
- width: 45px;
- height: 45px;
- background: rgba(255, 206, 2, 0.1);
- border: 1px solid rgba(255, 206, 2, 0.3);
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- text-decoration: none;
- color: #ffce02;
- font-size: 1.1rem;
- transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- box-shadow: 0 4px 15px rgba(255, 206, 2, 0.1);
-}
-
- .social-link:hover {
- background: linear-gradient(135deg, #ffce02, #ffd93d);
- color: #333;
- box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3);
- }
-
-/* Logo with enhanced interactivity */
-.logo {
- height: 27px;
- display: flex;
- align-items: center;
- justify-content: center;
- position: absolute;
- left: 50%;
- transform: translateX(-50%);
- cursor: pointer;
- transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- padding: 8px;
-}
-
- .logo:hover {
- transform: translateX(-50%) scale(1.1);
- }
-
- .logo:active {
- transform: translateX(-50%) scale(1.05);
- }
-
-.logo-img {
- max-width: 400%;
- max-height: 400%;
- object-fit: contain;
- transition: all 0.3s ease;
-}
-
-.logo:hover .logo-img {
- filter: drop-shadow(0 0 10px rgba(255, 206, 2, 0.6));
-}
-
-/* About button with glow */
-.about-btn {
- padding: 12px 24px;
- background: linear-gradient(135deg, #333, #555);
- color: white;
- text-decoration: none;
- border-radius: 20px;
- font-weight: 600;
- transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- border: none;
- cursor: pointer;
- font-size: 12px;
- font-family: 'Minecraft Seven v2', monospace;
- box-shadow: 0 4px 15px rgba(0,0,0,0.2);
-}
-
- .about-btn:hover {
- background: linear-gradient(135deg, #555, #777);
- transform: translateY(-2px) scale(1.05);
- box-shadow: 0 8px 25px rgba(0,0,0,0.3), 0 0 20px rgba(255, 206, 2, 0.2);
- }
-
-/* Landing Section with subtle glow */
-.landing {
- height: 100vh;
- background-image: url('../mojang/img/bg-grass.png');
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- display: flex;
- flex-direction: column;
- position: relative;
- padding-top: 80px;
- border-radius: 25px;
- margin: 15px;
- margin-top: 100px;
- box-shadow: 0 25px 80px rgba(0,0,0,0.15), 0 0 40px rgba(255, 206, 2, 0.1);
- overflow: hidden;
- max-height: 650px;
-}
-
- .landing::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: linear-gradient(45deg, rgba(255, 206, 2, 0.05), transparent);
- opacity: 0.7;
- z-index: 0;
- }
-
-.landing-content {
- flex: 1;
- display: flex;
- flex-direction: column;
- justify-content: flex-start;
- align-items: center;
- padding: 40px 40px 60px;
- max-width: 1200px;
- margin: 0 auto;
- width: 100%;
- position: relative;
- z-index: 2;
-}
-
-/* Hero Card with enhanced glow */
-.hero-card {
- background: rgba(255, 255, 255, 0.95);
- backdrop-filter: blur(20px);
- border-radius: 25px;
- padding: 30px 35px 5px 35px;
- box-shadow: 0 25px 80px rgba(0,0,0,0.15), 0 0 40px rgba(255, 206, 2, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.9);
- border: 1px solid rgba(255, 206, 2, 0.3);
- background-image: url('../mojang/img/bg-wool-white.png');
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- position: relative;
- overflow: hidden;
- margin-top: 0px;
- margin-bottom: 0px;
- max-width: 850px;
- transition: all 0.3s ease;
-}
-
- .hero-card:hover {
- transform: translateY(-2px);
- box-shadow: none;
- }
-
- .hero-card::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: radial-gradient(circle at center, rgba(255, 206, 2, 0.05), transparent);
- z-index: -1;
- }
-
-/* Animated Heading with text glow */
-.hero-heading {
- text-align: center;
- font-size: clamp(2rem, 6vw, 3.5rem);
- font-weight: 400;
- color: #333;
- margin-bottom: 0;
- line-height: 1.4;
- font-family: 'Minecraft Ten v2', monospace;
- position: relative;
- z-index: 1;
-}
-
-.hero-line-1 {
- display: block;
- text-shadow: 0 0 10px rgba(0,0,0,0.1);
-}
-
-.hero-line-2 {
- display: block;
- color: #ffce02;
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3);
-}
-
-.animated-word {
- color: #ffce02;
- display: block;
- position: relative;
- text-align: center;
- margin-top: 0.2em;
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3);
-}
-
-.word-container {
- display: inline-block;
- position: relative;
- height: 1.3em;
- overflow: hidden;
- min-width: 500px;
-}
-
-.words-list {
- position: relative;
- animation: perfectWordScroll 9s ease-in-out infinite;
-}
-
-.word {
- display: block;
- height: 1.3em;
- line-height: 1.3em;
- text-align: center;
- padding: 0;
- font-family: 'Minecraft Ten v2', monospace;
- animation: glow 2s ease-in-out infinite alternate;
-}
-
-@keyframes glow {
- from {
- text-shadow: 0 0 10px rgba(255, 206, 2, 0.5);
- }
-
- to {
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.7);
- }
-}
-
-@keyframes perfectWordScroll {
- 0%, 25% {
- transform: translateY(0);
- }
-
- 33%, 58% {
- transform: translateY(-1.3em);
- }
-
- 66%, 91% {
- transform: translateY(-2.6em);
- }
-
- 100% {
- transform: translateY(-3.9em);
- }
-}
-
-/* Bottom Content with enhanced interactivity */
-.bottom-content {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 25px;
- margin-top: 45px;
-}
-
-.server-info {
- background: rgba(255, 255, 255, 0.95);
- backdrop-filter: blur(15px);
- border: none;
- border-radius: 16px;
- padding: 18px 28px;
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #ffce02;
- font-weight: 400;
- box-shadow: 0 8px 32px rgba(0,0,0,0.1), 0 0 20px rgba(255, 206, 2, 0.2);
- border: 1px solid rgba(255, 206, 2, 0.3);
- cursor: pointer;
- transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.3s ease;
- position: relative;
-}
-
- .server-info:hover {
- transform: translateY(-5px);
- box-shadow: none;
- background: rgba(255, 255, 255, 1);
- border-color: rgba(255, 206, 2, 0.5);
- }
-
- .server-info::after {
- content: 'Copied!';
- position: absolute;
- top: -35px;
- left: 50%;
- transform: translateX(-50%);
- background: linear-gradient(135deg, rgba(34, 197, 94, 0.9), rgba(34, 197, 94, 0.8));
- color: white;
- padding: 6px 12px;
- border-radius: 8px;
- font-size: 0.7rem;
- opacity: 0;
- pointer-events: none;
- transition: all 0.3s ease;
- box-shadow: 0 4px 15px rgba(34, 197, 94, 0.3);
- }
-
- .server-info.copied::after {
- opacity: 1;
- transform: translateX(-50%) translateY(-5px);
- }
-
- .server-info:active {
- transform: translateY(-5px) scale(1.05);
- box-shadow: 0 15px 50px rgba(0,0,0,0.15), 0 0 30px rgba(255, 206, 2, 0.3);
- }
-
-.launch-btn {
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.9));
- color: #22c55e;
- padding: 18px 36px;
- border: none;
- border-radius: 16px;
- font-size: 0.9rem;
- font-weight: 500;
- cursor: pointer;
- text-decoration: none;
- display: inline-block;
- transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- box-shadow: 0 8px 32px rgba(0,0,0,0.1), 0 0 20px rgba(34, 197, 94, 0.2);
- backdrop-filter: blur(15px);
- border: 1px solid rgba(34, 197, 94, 0.3);
- font-family: 'Minecraft Seven v2', monospace;
-}
-
- .launch-btn:hover {
- transform: translateY(-3px) scale(1.02);
- box-shadow: 0 15px 50px rgba(0,0,0,0.2), 0 0 30px rgba(34, 197, 94, 0.4);
- background: linear-gradient(135deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.95));
- }
-
-/* Transition Section */
-.transition-section {
- min-height: 10vh;
- background-image: url('../mojang/img/bg-wool-white-dark.png');
- background-size: cover;
- background-position: center;
- background-repeat: repeat-x;
- display: flex;
- align-items: center;
- justify-content: center;
- position: relative;
- overflow: hidden;
-}
-
-.about-content {
- max-width: 800px;
- margin: 0 auto;
- text-align: center;
- color: white;
-}
-
-.about-section h2 {
- font-size: 2rem;
- margin-bottom: 30px;
- color: #ffce02;
- font-weight: 400;
- font-family: 'Minecraft Ten v2', monospace;
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3);
-}
-
-.about-section p {
- font-size: 0.9rem;
- line-height: 1.8;
- margin-bottom: 20px;
- opacity: 0.9;
- font-family: 'Minecraft Seven v2', monospace;
-}
-
-/* How to Join Section */
-.howtojoin {
- min-height: 50vh;
- background-image: url('../mojang/img/bg-wool-dark.png');
- background-size: cover;
- background-position: center;
- background-repeat: repeat;
- display: flex;
- align-items: center;
- justify-content: center;
- position: relative;
- overflow: hidden;
- padding: 80px 40px;
-}
-
-.howtojoin-heading {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: clamp(2.5rem, 7vw, 4rem);
- font-weight: 400;
- color: #ffffff;
- text-align: center;
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3);
- margin-bottom: 60px;
-}
-
- .howtojoin-heading::after {
- content: "Applies to Minecraft server only";
- display: block;
- font-size: 0.8rem;
- color: #cccccc;
- margin-top: 10px;
- font-family: 'Minecraft Seven v2', monospace;
- opacity: 0.8;
- }
-
-.howtojoin-cards {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
- gap: 30px;
- max-width: 1200px;
- width: 100%;
- padding: 0 20px;
-}
-
-.flip-card {
- perspective: 1000px;
- height: 320px;
- cursor: pointer;
-}
-
-.flip-card-inner {
- position: relative;
- width: 100%;
- height: 100%;
- transition: transform 0.6s;
- transform-style: preserve-3d;
-}
-
-.flip-card:hover .flip-card-inner {
- transform: rotateY(180deg);
- transition: transform 0.4s ease-in-out; /* Reduced duration */
-}
-
-.flip-card-front,
-.flip-card-back {
- position: absolute;
- width: 100%;
- height: 100%;
- backface-visibility: hidden;
- border-radius: 20px;
- padding: 30px;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
-}
-
-.flip-card-front {
- background: rgba(255, 255, 255, 0.95);
- backdrop-filter: blur(15px);
- border: 2px solid rgba(255, 206, 2, 0.3);
-}
-
-.flip-card-back {
- background: linear-gradient(135deg, #ffce02, #ffd93d);
- transform: rotateY(180deg);
- border: 2px solid rgba(255, 206, 2, 0.5);
-}
-
-.flip-card-icon {
- font-size: 4rem;
- margin-bottom: 30px;
- filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2));
-}
-
-.flip-card-title {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.5rem;
- color: #333;
- margin-bottom: 15px;
- text-align: center;
-}
-
-.flip-card-subtitle {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #666;
- text-align: center;
-}
-
-.flip-card-back-content {
- text-align: center;
- width: 100%;
-}
-
-.flip-card-back-title {
- font-family: 'Minecraft Ten v2', monospace;
- font-size: 1.3rem;
- color: #333;
- margin-bottom: 20px;
-}
-
-.flip-card-back-text {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.85rem;
- color: #333;
- line-height: 1.6;
- margin-bottom: 25px;
-}
-
-.flip-card-button {
- font-family: 'Minecraft Seven v2', monospace;
- font-size: 0.9rem;
- color: #333;
- background: rgba(255, 255, 255, 0.9);
- padding: 14px 24px;
- border-radius: 12px;
- font-weight: bold;
- border: 2px solid rgba(51, 51, 51, 0.2);
- cursor: pointer;
- transition: all 0.3s ease;
- text-decoration: none;
- display: inline-block;
- position: relative;
-}
-
- .flip-card-button:hover {
- background: rgba(255, 255, 255, 1);
- transform: translateY(-2px);
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
- border-color: rgba(51, 51, 51, 0.4);
- animation: pulse 0.3s ease;
- }
-
- .flip-card-button:active {
- transform: translateY(0);
- }
-
- .flip-card-button.disabled {
- opacity: 0.6;
- cursor: not-allowed;
- background: rgba(200, 200, 200, 0.5);
- }
-
- .flip-card-button.disabled:hover {
- transform: none;
- box-shadow: none;
- }
-
- .flip-card-button::after {
- content: 'Copied!';
- position: absolute;
- top: -35px;
- left: 50%;
- transform: translateX(-50%);
- background: linear-gradient(135deg, rgba(34, 197, 94, 0.9), rgba(34, 197, 94, 0.8));
- color: white;
- padding: 6px 12px;
- border-radius: 8px;
- font-size: 0.7rem;
- opacity: 0;
- pointer-events: none;
- transition: all 0.3s ease;
- box-shadow: 0 4px 15px rgba(34, 197, 94, 0.3);
- white-space: nowrap;
- }
-
- .flip-card-button.copied::after {
- opacity: 1;
- transform: translateX(-50%) translateY(-5px);
- }
-
-/* Responsive Design */
-@media (max-width: 768px) {
- .topbar {
- padding: 0 20px;
- height: 70px;
- }
-
- .logo {
- width: 66px;
- height: 66px;
- }
-
- .about-btn {
- display: none;
- }
-
- /* Mobile fullscreen menu overlay */
- .menu-overlay {
- left: -100%;
- width: 100vw;
- padding-top: 0; /* Remove padding to cover entire screen */
- box-shadow: none;
- }
-
- .menu-overlay.active {
- left: 0;
- }
-
- .nav-menu {
- max-width: none;
- width: 100%;
- padding: 100px 25px 40px; /* Add top padding for content spacing */
- gap: 20px;
- }
-
- .landing {
- margin: 8px;
- margin-top: 80px;
- border-radius: 20px;
- }
-
- .hero-card {
- padding: 25px 20px 15px 20px;
- border-radius: 20px;
- }
-
- .hero-heading {
- font-size: clamp(1.5rem, 8vw, 2.5rem);
- line-height: 1.2;
- margin-bottom: 0;
- }
-
- .word-container {
- min-width: 350px;
- }
-
- .server-info {
- display: none;
- }
-
- .bottom-content {
- padding: 0 20px;
- gap: 20px;
- }
-
- .launch-btn {
- padding: 16px 32px;
- font-size: 0.8rem;
- width: 100%;
- max-width: 300px;
- text-align: center;
- }
-
- .landing-content {
- padding: 40px 20px;
- }
-
- .howtojoin {
- display: flex;
- flex-direction: column;
- align-items: center;
- }
-
- .howtojoin-heading {
- margin-bottom: 20px;
- }
-
- .howtojoin-cards {
- margin-top: 20px;
- }
-
- .howtojoin-cards > .card {
- margin: 0 auto;
- }
-}
-
-@media (max-width: 480px) {
- .hero-heading {
- font-size: clamp(1.2rem, 10vw, 2rem);
- }
-
- .word-container {
- min-width: 300px;
- }
-
- .landing {
- margin: 5px;
- margin-top: 75px;
- border-radius: 16px;
- }
-
- .hero-card {
- padding: 20px;
- border-radius: 16px;
- margin-top: -30px;
- }
-}
-
-/* Optimized Animations */
-
-/* Simplified glow animation */
-@keyframes glow {
- from {
- text-shadow: 0 0 10px rgba(255, 206, 2, 0.5);
- }
- to {
- text-shadow: 0 0 20px rgba(255, 206, 2, 0.7);
- }
-}
-
-/* Optimized word scroll animation */
-@keyframes perfectWordScroll {
- 0%, 25% {
- transform: translateY(0);
- }
- 33%, 58% {
- transform: translateY(-1.3em);
- }
- 66%, 91% {
- transform: translateY(-2.6em);
- }
- 100% {
- transform: translateY(-3.9em);
- }
-}
-
-/* Removed box-shadow and reduced hover effects */
-.hero-card:hover {
- transform: translateY(-2px);
- box-shadow: none;
-}
-
-.server-info:hover {
- transform: translateY(-5px);
- box-shadow: none;
-}
-
-.flip-card:hover .flip-card-inner {
- transform: rotateY(180deg);
- transition: transform 0.4s ease-in-out; /* Reduced duration */
-}
-
-/* Removed wobble animation for better performance */
-.social-link:hover {
- background: linear-gradient(135deg, #ffce02, #ffd93d);
- color: #333;
- box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3);
-}
-
-/* Disabled hover effects on mobile */
-@media (hover: none) {
- .hero-card:hover, .server-info:hover, .flip-card:hover .flip-card-inner {
- transform: none;
- box-shadow: none;
- }
-}
-
-.articles-title {
- padding-top: 6rem;
- padding-bottom: 1rem;
- padding-left: 2rem;
- padding-right: 2rem;
-}
-
-.articles-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
-}
-
-#sort-select {
- padding: 0.4rem 0.8rem;
- font-size: 1rem;
- border-radius: 6px;
- border: 1px solid #ccc;
-}
-
-.banner {
- height: 180px;
- background-size: cover;
- background-position: center;
- width: 100%;
-}
-
-.article-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(260px, 270px));
- justify-content: start; /* keeps them centered */
- gap: 2rem;
- max-width: 1200px; /* optional: cap total width */
- padding: 0 2rem; /* side spacing */
-}
-
-
-.article-card {
- background: #f9f9f9; /* light card background */
- border: 1px solid #ddd; /* subtle border for contrast */
- border-radius: 8px;
- overflow: hidden;
- box-shadow: 0 2px 6px rgba(0,0,0,0.1);
- transition: transform 0.2s ease;
-}
-
- .article-card:hover {
- transform: translateY(-4px); /* subtle hover lift */
- }
-
- .article-card img.banner {
- width: 100%;
- height: 180px;
- object-fit: cover;
- display: block;
- }
-
-.card-content {
- padding: 1rem;
- color: #333; /* dark text for white background */
-}
-
-.type-label {
- display: inline-block;
- background: #ffd700;
- color: #000;
- font-size: 0.75rem;
- font-weight: bold;
- padding: 0.3em 0.6em;
- border-radius: 4px;
- margin-bottom: 0.5em;
- text-transform: uppercase;
-}
-
-.sort-controls {
- display: flex;
- align-items: center;
- gap: 1rem;
-}
-
-.featured-news {
- margin-top: 6rem;
- margin-left: 2rem;
- margin-bottom: -4rem;
-}
-
-.featured-title {
- margin-bottom: 1rem;
-}
-
-.sort-controls {
- margin-top: 5rem;
- margin-right: 2rem;
-}
-
-.featured-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(260px, 270px));
- gap: 2rem; /* optional spacing between cards */
-}
-
-.article-card a {
- text-decoration: none;
- color: inherit;
-}
-
-.sort-controls select {
- font-family: 'Minecraft Seven v2', sans-serif;
- font-size: 1rem;
- line-height: 1.2; /* tighter line height */
- padding: 6px 10px; /* give vertical breathing room */
- box-sizing: border-box;
- height: auto;
- vertical-align: middle;
-}
-
-.spacing-start {
- margin-top: 5rem;
-}
diff --git a/assets/icons/site/android-chrome-192x192.png b/assets/icons/site/android-chrome-192x192.png
new file mode 100644
index 0000000..155b7ff
Binary files /dev/null and b/assets/icons/site/android-chrome-192x192.png differ
diff --git a/assets/icons/site/android-chrome-512x512.png b/assets/icons/site/android-chrome-512x512.png
new file mode 100644
index 0000000..05966c3
Binary files /dev/null and b/assets/icons/site/android-chrome-512x512.png differ
diff --git a/assets/icons/site/apple-touch-icon.png b/assets/icons/site/apple-touch-icon.png
new file mode 100644
index 0000000..fcb475b
Binary files /dev/null and b/assets/icons/site/apple-touch-icon.png differ
diff --git a/assets/icons/site/favicon-16x16.png b/assets/icons/site/favicon-16x16.png
new file mode 100644
index 0000000..b8925be
Binary files /dev/null and b/assets/icons/site/favicon-16x16.png differ
diff --git a/assets/icons/site/favicon-32x32.png b/assets/icons/site/favicon-32x32.png
new file mode 100644
index 0000000..1c161c3
Binary files /dev/null and b/assets/icons/site/favicon-32x32.png differ
diff --git a/assets/icons/site/favicon.ico b/assets/icons/site/favicon.ico
new file mode 100644
index 0000000..d152fad
Binary files /dev/null and b/assets/icons/site/favicon.ico differ
diff --git a/assets/js/extra.js b/assets/js/extra.js
new file mode 100644
index 0000000..af23516
--- /dev/null
+++ b/assets/js/extra.js
@@ -0,0 +1,661 @@
+const CART_STORAGE_KEY = "pwindows_cart";
+const PROMO_STORAGE_KEY = "pwindows_promo";
+
+let userRegion = "US";
+let userCurrency = "USD";
+let menuController;
+let cartController;
+let locationPromise;
+
+function announce(message) {
+ const status = document.getElementById("site-status");
+ if (!status) return;
+ status.textContent = "";
+ window.requestAnimationFrame(() => {
+ status.textContent = message;
+ });
+}
+
+function getFocusable(container) {
+ return Array.from(
+ container.querySelectorAll(
+ 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',
+ ),
+ ).filter((element) => !element.hidden && element.getAttribute("aria-hidden") !== "true");
+}
+
+function syncBodyLock() {
+ const anyOpen = Boolean(menuController?.isOpen() || cartController?.isOpen());
+ document.body.classList.toggle("overlay-open", anyOpen);
+}
+
+function createOverlayController({ trigger, container, panel, overlay, openClass, openLabel, closeLabel }) {
+ let lastFocused = null;
+
+ function isOpen() {
+ return container.classList.contains(openClass);
+ }
+
+ function setOpen(open, { restoreFocus = true, moveFocus = true } = {}) {
+ if (open === isOpen()) return;
+
+ if (open) {
+ lastFocused = document.activeElement;
+ container.classList.add(openClass);
+ overlay?.classList.add(openClass);
+ container.setAttribute("aria-hidden", "false");
+ container.removeAttribute("inert");
+ overlay?.setAttribute("aria-hidden", "false");
+ trigger.setAttribute("aria-expanded", "true");
+ trigger.setAttribute("aria-label", closeLabel);
+ if (moveFocus) window.requestAnimationFrame(() => getFocusable(panel)[0]?.focus());
+ } else {
+ container.classList.remove(openClass);
+ overlay?.classList.remove(openClass);
+ container.setAttribute("aria-hidden", "true");
+ container.setAttribute("inert", "");
+ overlay?.setAttribute("aria-hidden", "true");
+ trigger.setAttribute("aria-expanded", "false");
+ trigger.setAttribute("aria-label", openLabel);
+ if (restoreFocus && lastFocused instanceof HTMLElement) lastFocused.focus();
+ }
+
+ syncBodyLock();
+ }
+
+ function handleKeydown(event) {
+ if (!isOpen()) return;
+ if (event.key === "Escape") {
+ event.preventDefault();
+ setOpen(false);
+ return;
+ }
+ if (event.key !== "Tab") return;
+
+ const focusable = getFocusable(panel);
+ if (!focusable.length) {
+ event.preventDefault();
+ return;
+ }
+ const first = focusable[0];
+ const last = focusable[focusable.length - 1];
+ if (event.shiftKey && document.activeElement === first) {
+ event.preventDefault();
+ last.focus();
+ } else if (!event.shiftKey && document.activeElement === last) {
+ event.preventDefault();
+ first.focus();
+ }
+ }
+
+ document.addEventListener("keydown", handleKeydown);
+ return { isOpen, setOpen };
+}
+
+function setupOverlays() {
+ const menuButton = document.getElementById("hamburger");
+ const menu = document.getElementById("mobileMenu");
+ const menuPanel = menu?.querySelector(".nav-menu");
+ const cartButton = document.getElementById("cart-btn");
+ const cart = document.getElementById("cart-sidebar");
+ const cartOverlay = document.getElementById("cart-overlay");
+
+ if (menuButton && menu && menuPanel) {
+ menuController = createOverlayController({
+ trigger: menuButton,
+ container: menu,
+ panel: menuPanel,
+ openClass: "active",
+ openLabel: "Open site menu",
+ closeLabel: "Close site menu",
+ });
+ menuButton.addEventListener("click", () => {
+ const open = !menuController.isOpen();
+ if (open) cartController?.setOpen(false, { restoreFocus: false });
+ menuController.setOpen(open);
+ });
+ menu.addEventListener("click", (event) => {
+ if (event.target === menu || event.target.closest("a")) menuController.setOpen(false);
+ });
+ }
+
+ if (cartButton && cart && cartOverlay) {
+ cartController = createOverlayController({
+ trigger: cartButton,
+ container: cart,
+ panel: cart,
+ overlay: cartOverlay,
+ openClass: "open",
+ openLabel: "Open shopping cart",
+ closeLabel: "Close shopping cart",
+ });
+ cartButton.addEventListener("click", () => {
+ const open = !cartController.isOpen();
+ if (open) {
+ menuController?.setOpen(false, { restoreFocus: false });
+ updateCartUI();
+ }
+ cartController.setOpen(open);
+ });
+ cartOverlay.addEventListener("click", () => cartController.setOpen(false));
+ document.getElementById("cart-close")?.addEventListener("click", () => cartController.setOpen(false));
+ }
+
+ window.addEventListener("resize", () => {
+ if (window.innerWidth > 768 && menuController?.isOpen()) menuController.setOpen(false);
+ });
+}
+
+function getLocationFromIP() {
+ if (!locationPromise) {
+ locationPromise = fetch("https://ipapi.co/json/")
+ .then((response) => (response.ok ? response.json() : null))
+ .then((data) => data?.country_code?.toUpperCase() || null)
+ .catch(() => null);
+ }
+ return locationPromise;
+}
+
+function detectRegion() {
+ const locales = [navigator.language, ...(navigator.languages || [])].filter(Boolean);
+ for (const locale of locales) {
+ try {
+ const region = typeof Intl.Locale === "function" ? new Intl.Locale(locale).region : null;
+ if (region) return region.toUpperCase();
+ } catch (_) {
+ const match = locale.match(/[-_]([A-Z]{2})/i);
+ if (match) return match[1].toUpperCase();
+ }
+ }
+ return "US";
+}
+
+function currencyByRegion(region) {
+ if (region === "MY") return "MYR";
+ if (region === "CN") return "CNY";
+ return "USD";
+}
+
+function formatCurrency(amount, currency = userCurrency) {
+ const numericAmount = Number(amount);
+ if (!Number.isFinite(numericAmount)) return "β";
+ try {
+ return new Intl.NumberFormat(undefined, {
+ style: "currency",
+ currency,
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ }).format(numericAmount);
+ } catch (_) {
+ return `$${numericAmount.toFixed(2)}`;
+ }
+}
+
+function priceForRegion(source) {
+ const usd = Number.parseFloat(source.dataset.priceUsd);
+ const myr = Number.parseFloat(source.dataset.priceMyr);
+ const cny = Number.parseFloat(source.dataset.priceCny);
+ if (userRegion === "MY" && Number.isFinite(myr)) return { amount: myr, currency: "MYR", label: "Malaysia" };
+ if (userRegion === "CN" && Number.isFinite(cny)) return { amount: cny, currency: "CNY", label: "China" };
+ return { amount: usd, currency: "USD", label: "USD" };
+}
+
+async function initRegionalPrices() {
+ userRegion = (await getLocationFromIP()) || detectRegion();
+ userCurrency = currencyByRegion(userRegion);
+ window.userRegion = userRegion;
+ window.userCurrency = userCurrency;
+
+ document.querySelectorAll(".js-regional-price").forEach((node) => {
+ const price = priceForRegion(node);
+ node.textContent = formatCurrency(price.amount, price.currency);
+ });
+
+ const detailPrice = document.getElementById("product-page-price");
+ if (detailPrice) {
+ const price = priceForRegion(detailPrice);
+ const label = document.getElementById("price-label");
+ const buyPrice = document.getElementById("buy-price");
+ if (label) label.textContent = price.label;
+ if (buyPrice) buyPrice.textContent = formatCurrency(price.amount, price.currency);
+ }
+
+ const donateCurrency = document.getElementById("donate-currency");
+ if (donateCurrency) donateCurrency.textContent = userCurrency === "MYR" ? "RM" : userCurrency === "CNY" ? "Β₯" : "$";
+ updateCartUI();
+}
+
+function getCart() {
+ try {
+ const value = JSON.parse(localStorage.getItem(CART_STORAGE_KEY) || "[]");
+ return Array.isArray(value) ? value : [];
+ } catch (_) {
+ return [];
+ }
+}
+
+function saveCart(cart) {
+ localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(cart));
+ updateCartUI();
+}
+
+function getItemPrice(item) {
+ if (userRegion === "MY") return Number(item.priceMyr) || 0;
+ if (userRegion === "CN") return Number(item.priceCny) || 0;
+ return Number(item.priceUsd) || 0;
+}
+
+function productFromElement(element) {
+ return {
+ productId: element.dataset.productId,
+ coins: Number.parseInt(element.dataset.coins, 10) || 0,
+ title: element.dataset.title || "Product",
+ image: element.dataset.image || "/assets/img/products/placeholder.png",
+ stripeId: element.dataset.stripeId || "",
+ priceUsd: Number.parseFloat(element.dataset.priceUsd) || 0,
+ priceMyr: Number.parseFloat(element.dataset.priceMyr) || 0,
+ priceCny: Number.parseFloat(element.dataset.priceCny) || 0,
+ quantity: 1,
+ };
+}
+
+function addProduct(product, feedbackButton) {
+ const cart = getCart();
+ const existing = cart.find((item) => item.productId === product.productId);
+ if (existing) existing.quantity += 1;
+ else cart.push(product);
+ saveCart(cart);
+ announce(`${product.title} added to cart.`);
+
+ if (feedbackButton) {
+ const original = feedbackButton.textContent;
+ feedbackButton.textContent = "Added! β";
+ feedbackButton.disabled = true;
+ window.setTimeout(() => {
+ feedbackButton.textContent = original;
+ feedbackButton.disabled = false;
+ }, 1600);
+ }
+}
+
+function removeCartItem(productId) {
+ const item = getCart().find((entry) => entry.productId === productId);
+ saveCart(getCart().filter((entry) => entry.productId !== productId));
+ announce(`${item?.title || "Item"} removed from cart.`);
+}
+
+function changeCartQuantity(productId, change) {
+ const cart = getCart();
+ const item = cart.find((entry) => entry.productId === productId);
+ if (!item) return;
+ item.quantity += change;
+ if (item.quantity <= 0) removeCartItem(productId);
+ else saveCart(cart);
+}
+
+function createCartItem(item) {
+ const wrapper = document.createElement("article");
+ wrapper.className = "cart-item";
+
+ const image = document.createElement("img");
+ image.className = "cart-item-img";
+ image.src = item.image;
+ image.alt = "";
+ image.addEventListener("error", () => {
+ image.src = "/assets/img/products/placeholder.png";
+ }, { once: true });
+
+ const info = document.createElement("div");
+ info.className = "cart-item-info";
+ const title = document.createElement("h3");
+ title.textContent = item.title;
+ const coins = document.createElement("p");
+ coins.className = "cart-item-coins";
+ coins.textContent = item.coins ? `${item.coins.toLocaleString()} PCoins` : "PWindows Support";
+ const price = document.createElement("p");
+ price.className = "cart-item-price";
+ price.textContent = formatCurrency(getItemPrice(item));
+ info.append(title, coins, price);
+
+ const controls = document.createElement("div");
+ controls.className = "cart-item-controls";
+ const decrease = document.createElement("button");
+ decrease.className = "qty-btn btn";
+ decrease.type = "button";
+ decrease.textContent = "β";
+ decrease.setAttribute("aria-label", `Decrease ${item.title} quantity`);
+ decrease.addEventListener("click", () => changeCartQuantity(item.productId, -1));
+ const quantity = document.createElement("span");
+ quantity.className = "qty-display";
+ quantity.textContent = item.quantity;
+ quantity.setAttribute("aria-label", `Quantity ${item.quantity}`);
+ const increase = document.createElement("button");
+ increase.className = "qty-btn btn";
+ increase.type = "button";
+ increase.textContent = "+";
+ increase.setAttribute("aria-label", `Increase ${item.title} quantity`);
+ increase.addEventListener("click", () => changeCartQuantity(item.productId, 1));
+ const remove = document.createElement("button");
+ remove.className = "cart-item-remove btn";
+ remove.type = "button";
+ remove.textContent = "Remove";
+ remove.setAttribute("aria-label", `Remove ${item.title} from cart`);
+ remove.addEventListener("click", () => removeCartItem(item.productId));
+ controls.append(decrease, quantity, increase, remove);
+
+ wrapper.append(image, info, controls);
+ return wrapper;
+}
+
+function updateCartUI() {
+ const count = document.getElementById("cart-count");
+ const itemsContainer = document.getElementById("cart-items");
+ const subtotalNode = document.getElementById("cart-subtotal");
+ const totalNode = document.getElementById("cart-total");
+ if (!count || !itemsContainer || !subtotalNode || !totalNode) return;
+
+ const cart = getCart();
+ const totalItems = cart.reduce((sum, item) => sum + (Number(item.quantity) || 0), 0);
+ count.textContent = totalItems;
+ count.hidden = totalItems === 0;
+ const cartLabel = cartController?.isOpen()
+ ? "Close shopping cart"
+ : totalItems
+ ? `Open shopping cart, ${totalItems} items`
+ : "Open shopping cart";
+ document.getElementById("cart-btn")?.setAttribute("aria-label", cartLabel);
+
+ itemsContainer.replaceChildren();
+ if (!cart.length) {
+ const empty = document.createElement("p");
+ empty.className = "cart-empty";
+ empty.textContent = "Your cart is empty.";
+ itemsContainer.append(empty);
+ } else {
+ cart.forEach((item) => itemsContainer.append(createCartItem(item)));
+ }
+
+ const subtotal = cart.reduce((sum, item) => sum + getItemPrice(item) * item.quantity, 0);
+ subtotalNode.textContent = formatCurrency(subtotal);
+ totalNode.textContent = formatCurrency(subtotal);
+ document.getElementById("cart-discount-row")?.toggleAttribute("hidden", true);
+ const checkoutButton = document.getElementById("cart-checkout-btn");
+ if (checkoutButton) checkoutButton.disabled = cart.length === 0;
+}
+
+function setupProductActions() {
+ document.querySelectorAll("[data-add-product]").forEach((button) => {
+ button.addEventListener("click", () => {
+ const card = button.closest(".grid-item")?.querySelector(".product-card");
+ if (card) addProduct(productFromElement(card), button);
+ });
+ });
+
+ document.getElementById("buy-btn")?.addEventListener("click", () => {
+ const product = document.getElementById("product-page-data");
+ const button = document.getElementById("buy-btn");
+ if (!product) return;
+ addProduct(productFromElement(product), button);
+ cartController?.setOpen(true);
+ });
+
+ document.getElementById("donate-add-btn")?.addEventListener("click", () => {
+ const input = document.getElementById("donate-amount");
+ const amount = Number.parseFloat(input?.value);
+ if (!Number.isFinite(amount) || amount < 1) {
+ input?.focus();
+ announce("Enter a donation amount of at least one.");
+ return;
+ }
+
+ const baseUsd = userCurrency === "USD" ? amount : userCurrency === "MYR" ? amount / 4.3 : amount / 6;
+ const product = {
+ productId: `donate_${Date.now()}`,
+ coins: 0,
+ title: `Support PWindows β ${formatCurrency(amount)}`,
+ image: "/assets/PWindows.svg",
+ stripeId: "donate",
+ priceUsd: userCurrency === "USD" ? amount : baseUsd,
+ priceMyr: userCurrency === "MYR" ? amount : baseUsd * 4.3,
+ priceCny: userCurrency === "CNY" ? amount : baseUsd * 6,
+ quantity: 1,
+ isDonation: true,
+ donationAmount: amount,
+ };
+ addProduct(product, document.getElementById("donate-add-btn"));
+ input.value = "";
+ });
+
+ document.getElementById("promo-btn")?.addEventListener("click", () => {
+ const input = document.getElementById("promo-input");
+ const message = document.getElementById("promo-msg");
+ if (!input?.value.trim() || !message) return;
+ message.textContent = "Checking code...";
+ window.setTimeout(() => {
+ message.textContent = "Promo codes are coming soon.";
+ }, 500);
+ });
+}
+
+function setupCatalog() {
+ const search = document.getElementById("shop-search");
+ const buttons = Array.from(document.querySelectorAll(".cat-btn"));
+ const items = Array.from(document.querySelectorAll(".grid-item"));
+ if (!search || !buttons.length || !items.length) return;
+
+ const params = new URLSearchParams(window.location.search);
+ let category = buttons.some((button) => button.dataset.cat === params.get("category")) ? params.get("category") : "all";
+ search.value = params.get("s") || "";
+
+ function filter() {
+ const query = search.value.trim().toLowerCase();
+ let visible = 0;
+ items.forEach((item) => {
+ const categoryMatch = category === "all" || item.dataset.cat === category;
+ const queryMatch = item.dataset.title.includes(query) || item.dataset.desc.includes(query);
+ item.hidden = !(categoryMatch && queryMatch);
+ if (!item.hidden) visible += 1;
+ });
+ document.getElementById("no-results").hidden = visible !== 0;
+ }
+
+ function syncUrl() {
+ const next = new URLSearchParams();
+ if (category !== "all") next.set("category", category);
+ if (search.value.trim()) next.set("s", search.value.trim());
+ history.replaceState(null, "", `${window.location.pathname}${next.size ? `?${next}` : ""}`);
+ }
+
+ buttons.forEach((button) => {
+ const active = button.dataset.cat === category;
+ button.classList.toggle("active", active);
+ button.setAttribute("aria-pressed", String(active));
+ button.addEventListener("click", () => {
+ category = button.dataset.cat;
+ buttons.forEach((candidate) => {
+ const selected = candidate === button;
+ candidate.classList.toggle("active", selected);
+ candidate.setAttribute("aria-pressed", String(selected));
+ });
+ syncUrl();
+ filter();
+ });
+ });
+
+ search.addEventListener("input", () => {
+ syncUrl();
+ filter();
+ });
+ filter();
+}
+
+function setupPlayerGate() {
+ const form = document.getElementById("gate-form");
+ const main = document.getElementById("gate-main");
+ const success = document.getElementById("gate-success");
+ if (!form || !main || !success) return;
+
+ const input = document.getElementById("gate-username");
+ const button = document.getElementById("gate-enter-btn");
+ const error = document.getElementById("gate-error");
+ const hint = document.getElementById("gate-hint");
+
+ function showVerified(username, uuid) {
+ main.hidden = true;
+ success.hidden = false;
+ document.getElementById("gate-welcome").textContent = `Hey, ${username}!`;
+ document.getElementById("gate-avatar").style.backgroundImage = `url("https://crafatar.com/avatars/${encodeURIComponent(uuid)}?size=96&overlay")`;
+ const redirect = new URLSearchParams(window.location.search).get("redirect");
+ const link = document.getElementById("gate-shop-link");
+ if (link && redirect?.startsWith("/") && !redirect.startsWith("//")) link.href = redirect;
+ }
+
+ const savedUsername = sessionStorage.getItem("pw_username");
+ const savedUuid = sessionStorage.getItem("pw_uuid");
+ if (savedUsername && savedUuid) showVerified(savedUsername, savedUuid);
+
+ form.addEventListener("submit", async (event) => {
+ event.preventDefault();
+ const username = input.value.trim();
+ error.textContent = "";
+ hint.textContent = "";
+
+ if (!/^[a-zA-Z0-9_]{3,16}$/.test(username)) {
+ error.textContent = username ? "Enter a valid Minecraft username." : "Please enter your username.";
+ input.focus();
+ return;
+ }
+
+ button.textContent = "Checking...";
+ button.disabled = true;
+ input.disabled = true;
+ try {
+ const response = await fetch(`https://api.pwindows.qzz.io/shop/login?username=${encodeURIComponent(username)}`);
+ if (!response.ok) throw new Error("Verification request failed");
+ const data = await response.json();
+ if (!data.exists) {
+ error.textContent = "You havenβt joined PWindows yet!";
+ hint.textContent = "Join at play.pwindows.qzz.io first, then come back.";
+ return;
+ }
+ sessionStorage.setItem("pw_username", data.username);
+ sessionStorage.setItem("pw_uuid", data.uuid);
+ showVerified(data.username, data.uuid);
+ announce(`Welcome, ${data.username}. Player verified.`);
+ } catch (_) {
+ error.textContent = "Something went wrong. Please try again.";
+ } finally {
+ button.textContent = "Enter Shop";
+ button.disabled = false;
+ input.disabled = false;
+ }
+ });
+}
+
+function setupPlayerSession() {
+ const pill = document.getElementById("shop-user-pill");
+ const productPage = document.getElementById("product-page-data");
+ if (!pill && !productPage) return;
+
+ const username = sessionStorage.getItem("pw_username");
+ const uuid = sessionStorage.getItem("pw_uuid");
+ if (!username || !uuid) {
+ const redirect = encodeURIComponent(window.location.pathname + window.location.search);
+ window.location.replace(`/?redirect=${redirect}`);
+ return;
+ }
+
+ if (pill) {
+ pill.hidden = false;
+ document.getElementById("shop-user-name").textContent = username;
+ document.getElementById("shop-user-avatar").style.backgroundImage = `url("https://crafatar.com/avatars/${encodeURIComponent(uuid)}?size=34&overlay")`;
+ document.getElementById("shop-user-switch")?.addEventListener("click", () => {
+ sessionStorage.removeItem("pw_username");
+ sessionStorage.removeItem("pw_uuid");
+ window.location.assign("/");
+ });
+ }
+}
+
+function applyPromoToCart() {
+ const input = document.getElementById("cart-promo-input");
+ const message = document.getElementById("cart-promo-msg");
+ const code = input?.value.trim().toUpperCase();
+ if (!message) return;
+ if (!code) {
+ message.textContent = "";
+ return;
+ }
+ message.textContent = "Validating...";
+ localStorage.setItem(PROMO_STORAGE_KEY, code);
+ window.setTimeout(() => {
+ message.textContent = `Promo code β${code}β saved for checkout.`;
+ announce("Promo code saved for checkout.");
+ }, 500);
+}
+
+async function checkoutFromCart() {
+ const cart = getCart();
+ const uuid = sessionStorage.getItem("pw_uuid");
+ const username = sessionStorage.getItem("pw_username");
+ if (!uuid || !username) {
+ window.location.assign("/?redirect=/products");
+ return;
+ }
+ if (!cart.length) {
+ announce("Your cart is empty.");
+ return;
+ }
+
+ const button = document.getElementById("cart-checkout-btn");
+ button.disabled = true;
+ button.textContent = "Processing...";
+ try {
+ const response = await fetch("https://your-worker.example.com/create-checkout", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ items: cart.map((item) => ({
+ stripe_price_id: item.stripeId,
+ quantity: item.quantity,
+ name: item.title,
+ amount: getItemPrice(item),
+ currency: userCurrency,
+ })),
+ player_uuid: uuid,
+ username,
+ promo: localStorage.getItem(PROMO_STORAGE_KEY),
+ region: userRegion,
+ }),
+ });
+ if (!response.ok) throw new Error("Checkout failed");
+ const session = await response.json();
+ if (session.session_url) window.location.assign(session.session_url);
+ else throw new Error(session.error || "Checkout session was not created");
+ } catch (error) {
+ announce(`Checkout could not start. ${error.message}`);
+ button.disabled = false;
+ button.textContent = "Proceed to Checkout";
+ }
+}
+
+function setupImageFallbacks() {
+ document.querySelectorAll("img[data-fallback-src]").forEach((image) => {
+ image.addEventListener("error", () => {
+ image.src = image.dataset.fallbackSrc;
+ }, { once: true });
+ });
+}
+
+document.addEventListener("DOMContentLoaded", async () => {
+ setupOverlays();
+ setupImageFallbacks();
+ setupPlayerGate();
+ setupPlayerSession();
+ setupCatalog();
+ setupProductActions();
+ document.getElementById("cart-promo-btn")?.addEventListener("click", applyPromoToCart);
+ document.getElementById("cart-checkout-btn")?.addEventListener("click", checkoutFromCart);
+ updateCartUI();
+ await initRegionalPrices();
+});
diff --git a/assets/js/main.js b/assets/js/main.js
deleted file mode 100644
index 4103700..0000000
--- a/assets/js/main.js
+++ /dev/null
@@ -1,595 +0,0 @@
-// Logo click functionality with bounce animation
-function goHome() {
- const logo = document.getElementById('logo');
- if (!logo) return;
-
- logo.style.animation = 'bounce 0.6s ease-in-out';
-
- setTimeout(() => {
- logo.style.animation = '';
- }, 600);
-
- // Navigate to index page instead of #home
- window.location.href = 'https://shop.pwindows.qzz.io/';
-}
-
-function goBack() {
- const logo = document.getElementById('logo');
- if (!logo) return;
-
- logo.style.animation = 'bounce 0.6s ease-in-out';
-
- setTimeout(() => {
- logo.style.animation = '';
- }, 600);
-
- // Navigate to index page instead of #home
- window.location.href = 'https://www.pwindows.qzz.io/';
-}
-
-// Hamburger Menu Functionality
-function toggleMenu() {
- const hamburger = document.getElementById('hamburger');
- const mobileMenu = document.getElementById('mobileMenu');
- const body = document.body;
-
- if (hamburger && mobileMenu) {
- hamburger.classList.toggle('active');
- mobileMenu.classList.toggle('active');
- body.classList.toggle('menu-open');
- }
-}
-
-function closeMenu() {
- const hamburger = document.getElementById('hamburger');
- const mobileMenu = document.getElementById('mobileMenu');
- const body = document.body;
-
- if (hamburger && mobileMenu) {
- hamburger.classList.remove('active');
- mobileMenu.classList.remove('active');
- body.classList.remove('menu-open');
- }
-}
-
-// Enhanced copy IP functionality
-function copyIP() {
- const ip = 'Play.PWindows.qzz.io';
- const button = document.querySelector('.server-info');
- if (!button) return;
-
- navigator.clipboard.writeText(ip).then(function () {
- button.classList.add('copied');
-
- setTimeout(() => {
- button.classList.remove('copied');
- }, 2000);
- }).catch(function (err) {
- console.error('Failed to copy IP: ', err);
- const textArea = document.createElement('textarea');
- textArea.value = ip;
- document.body.appendChild(textArea);
- textArea.select();
- document.execCommand('copy');
- document.body.removeChild(textArea);
-
- button.classList.add('copied');
- setTimeout(() => {
- button.classList.remove('copied');
- }, 2000);
- });
-}
-
-// Copy server IP from flip card button
-function copyServerIP(button) {
- const ip = 'Play.PWindows.qzz.io';
-
- navigator.clipboard.writeText(ip).then(function () {
- button.classList.add('copied');
-
- setTimeout(() => {
- button.classList.remove('copied');
- }, 2000);
- }).catch(function (err) {
- console.error('Failed to copy IP: ', err);
- const textArea = document.createElement('textarea');
- textArea.value = ip;
- document.body.appendChild(textArea);
- textArea.select();
- document.execCommand('copy');
- document.body.removeChild(textArea);
-
- button.classList.add('copied');
- setTimeout(() => {
- button.classList.remove('copied');
- }, 2000);
- });
-}
-
-const EUR_REGIONS = new Set([
- 'AT', 'BE', 'CY', 'DE', 'EE', 'ES', 'FI', 'FR', 'GR', 'HR',
- 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PT', 'SI', 'SK'
-]);
-
-let usdRatesPromise = null;
-
-let locationPromise = null;
-
-function getLocationFromIP() {
- if (!locationPromise) {
- locationPromise = fetch('https://ipapi.co/json/')
- .then(res => res.ok ? res.json() : null)
- .then(data => {
- if (data && data.country_code) {
- console.log('IP Geolocation country:', data.country_code);
- return data.country_code.toUpperCase();
- }
- return null;
- })
- .catch(err => {
- console.error('Geolocation API error:', err);
- return null;
- });
- }
- return locationPromise;
-}
-
-function detectRegion() {
- // This will be overridden by IP geolocation
- // Fallback to browser language only if geolocation fails
- const browserLang = navigator.language || navigator.userLanguage || '';
- const allLangs = [browserLang, ...(navigator.languages || [])].filter(Boolean);
-
- for (const locale of allLangs) {
- try {
- if (typeof Intl.Locale === 'function') {
- const intlLocale = new Intl.Locale(locale);
- const region = intlLocale.region;
- if (region) return region.toUpperCase();
- }
- } catch (e) {}
-
- const match = locale.match(/[-_]([A-Z]{2})/i);
- if (match) return match[1].toUpperCase();
- }
-
- return 'US';
-}
-
-function currencyByRegion(region) {
- if (region === 'MY') return 'MYR';
- if (region === 'CN') return 'CNY';
- return 'USD';
-}
-
-function formatCurrency(amount, currency) {
- const noDecimalCurrencies = new Set(['JPY', 'KRW']);
- const digits = noDecimalCurrencies.has(currency) ? 0 : 2;
-
- try {
- return new Intl.NumberFormat(undefined, {
- style: 'currency',
- currency,
- minimumFractionDigits: digits,
- maximumFractionDigits: digits
- }).format(amount);
- } catch (_) {
- return `$${Number(amount).toFixed(2)}`;
- }
-}
-
-function getUsdRates() {
- if (!usdRatesPromise) {
- usdRatesPromise = fetch('https://open.er-api.com/v6/latest/USD')
- .then(res => res.ok ? res.json() : null)
- .catch(() => null);
- }
- return usdRatesPromise;
-}
-
-async function initRegionalPrices() {
- const priceNodes = document.querySelectorAll('.js-regional-price');
- console.log('Found price nodes:', priceNodes.length);
-
- if (!priceNodes.length) return;
-
- // Get region from IP geolocation first, fallback to browser language
- let region = await getLocationFromIP();
- if (!region) {
- region = detectRegion();
- console.log('IP geolocation failed, using browser language fallback:', region);
- } else {
- console.log('Using IP geolocation region:', region);
- }
-
- const usePresetMyr = region === 'MY';
- const usePresetCny = region === 'CN';
-
- console.log('Detected region:', region);
- console.log('Use MYR?', usePresetMyr);
- console.log('Use CNY?', usePresetCny);
-
- // Store region for cart calculations
- window.userRegion = region;
- window.userCurrency = currencyByRegion(region);
-
- console.log('User currency:', window.userCurrency);
-
- priceNodes.forEach((node, idx) => {
- const usd = parseFloat(node.dataset.priceUsd);
- const myr = parseFloat(node.dataset.priceMyr);
- const cny = parseFloat(node.dataset.priceCny);
-
- console.log(`Node ${idx}: USD=${usd}, MYR=${myr}, CNY=${cny}`);
-
- let amount = usd;
- let currency = 'USD';
-
- if (usePresetMyr && Number.isFinite(myr)) {
- amount = myr;
- currency = 'MYR';
- } else if (usePresetCny && Number.isFinite(cny)) {
- amount = cny;
- currency = 'CNY';
- }
-
- if (Number.isFinite(amount)) {
- const formatted = formatCurrency(amount, currency);
- console.log(`Setting node ${idx} to: ${formatted}`);
- node.textContent = formatted;
- }
- });
-}
-
-// Shopping Cart Management
-const CART_STORAGE_KEY = 'pwindows_cart';
-const PROMO_STORAGE_KEY = 'pwindows_promo';
-
-function getCart() {
- const cart = localStorage.getItem(CART_STORAGE_KEY);
- return cart ? JSON.parse(cart) : [];
-}
-
-function saveCart(cart) {
- localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(cart));
- updateCartUI();
-}
-
-function addToCart(btnElement) {
- // Find the product card from the button's parent grid-item
- const gridItem = btnElement.closest('.grid-item');
- if (!gridItem) {
- console.error('Could not find grid-item');
- return;
- }
-
- const productElement = gridItem.querySelector('.product-card');
- if (!productElement) {
- console.error('Could not find product-card');
- return;
- }
-
- const productId = productElement.dataset.productId;
- const coins = parseInt(productElement.dataset.coins) || 0;
- const title = productElement.dataset.title || 'Unknown';
- const image = productElement.dataset.image || '/assets/img/products/placeholder.png';
- const stripeId = productElement.dataset.stripeId || '';
- const priceUsd = parseFloat(productElement.dataset.priceUsd) || 0;
- const priceMyr = parseFloat(productElement.dataset.priceMyr) || 0;
- const priceCny = parseFloat(productElement.dataset.priceCny) || 0;
-
- const cart = getCart();
-
- // Check if product already in cart
- const existing = cart.find(item => item.productId === productId);
- if (existing) {
- existing.quantity += 1;
- } else {
- cart.push({
- productId,
- coins,
- title,
- image,
- stripeId,
- priceUsd,
- priceMyr,
- priceCny,
- quantity: 1
- });
- }
-
- saveCart(cart);
-
- // Show feedback
- const original = btnElement.textContent;
- btnElement.textContent = 'Added! β';
- setTimeout(() => { btnElement.textContent = original; }, 2000);
-}
-
-function removeFromCart(productId) {
- let cart = getCart();
- cart = cart.filter(item => item.productId !== productId);
- saveCart(cart);
-}
-
-function updateCartItemQuantity(productId, quantity) {
- let cart = getCart();
- const item = cart.find(item => item.productId === productId);
- if (item) {
- if (quantity <= 0) {
- removeFromCart(productId);
- } else {
- item.quantity = quantity;
- saveCart(cart);
- }
- }
-}
-
-function getPrice(item) {
- if (window.userRegion === 'MY') return item.priceMyr;
- if (window.userRegion === 'CN') return item.priceCny;
- return item.priceUsd;
-}
-
-function updateCartUI() {
- const cart = getCart();
- const cartCount = document.getElementById('cart-count');
- const cartItemsDiv = document.getElementById('cart-items');
- const cartSubtotal = document.getElementById('cart-subtotal');
- const cartTotal = document.getElementById('cart-total');
-
- // Update count
- const totalItems = cart.reduce((sum, item) => sum + item.quantity, 0);
- if (totalItems > 0) {
- cartCount.textContent = totalItems;
- cartCount.style.display = 'flex';
- } else {
- cartCount.style.display = 'none';
- }
-
- // Update items display
- if (cart.length === 0) {
- cartItemsDiv.innerHTML = '
Your cart is empty
';
- } else {
- cartItemsDiv.innerHTML = cart.map(item => `
-
-
-
-
${item.title}
-
${item.coins} PCoins
-
${formatCurrency(getPrice(item), window.userCurrency || 'USD')}
-
-
- β
- ${item.quantity}
- +
- π
-
-
- `).join('');
- }
-
- // Update totals
- const subtotal = cart.reduce((sum, item) => sum + (getPrice(item) * item.quantity), 0);
- const promoCode = localStorage.getItem(PROMO_STORAGE_KEY);
- let discount = 0;
- let discountPercent = 0;
-
- // TODO: Get discount from Stripe or your backend
- // For now, store the promo code to send to Stripe later
- if (promoCode) {
- // You'll validate this when creating the Stripe session
- }
-
- const total = subtotal - discount;
- cartSubtotal.textContent = formatCurrency(subtotal, window.userCurrency || 'USD');
- cartTotal.textContent = formatCurrency(total, window.userCurrency || 'USD');
-
- if (discount > 0) {
- document.getElementById('cart-discount-row').style.display = 'flex';
- document.getElementById('cart-discount').textContent = formatCurrency(discount, window.userCurrency || 'USD');
- } else {
- document.getElementById('cart-discount-row').style.display = 'none';
- }
-}
-
-function toggleCart() {
- const sidebar = document.getElementById('cart-sidebar');
- const overlay = document.getElementById('cart-overlay');
- const isOpen = sidebar.classList.contains('open');
-
- if (isOpen) {
- sidebar.classList.remove('open');
- overlay.classList.remove('open');
- } else {
- sidebar.classList.add('open');
- overlay.classList.add('open');
- updateCartUI();
- }
-}
-
-function applyPromoToCart() {
- const input = document.getElementById('cart-promo-input');
- const msg = document.getElementById('cart-promo-msg');
- const code = input.value.trim().toUpperCase();
-
- if (!code) {
- msg.textContent = '';
- return;
- }
-
- msg.style.color = '#888';
- msg.textContent = 'Validating...';
-
- // TODO: Validate promo code via Stripe API or your backend
- // For now, just store it to send to Stripe during checkout
- localStorage.setItem(PROMO_STORAGE_KEY, code);
-
- setTimeout(() => {
- msg.style.color = '#27ae60';
- msg.textContent = `Promo code "${code}" applied!`;
- updateCartUI();
- }, 600);
-}
-
-async function checkoutFromCart() {
- const cart = getCart();
- const uuid = sessionStorage.getItem('pw_uuid');
- const username = sessionStorage.getItem('pw_username');
-
- if (!uuid || !username) {
- window.location.href = '/?redirect=/products';
- return;
- }
-
- if (cart.length === 0) {
- alert('Your cart is empty!');
- return;
- }
-
- const btn = document.getElementById('cart-checkout-btn');
- btn.disabled = true;
- btn.textContent = 'Processing...';
-
- try {
- const promoCode = localStorage.getItem(PROMO_STORAGE_KEY);
- const region = window.userRegion || 'US';
-
- // Prepare cart data for Stripe
- const checkoutData = {
- items: cart.map(item => ({
- stripe_price_id: item.stripeId,
- quantity: item.quantity,
- name: item.title,
- amount: getPrice(item),
- currency: window.userCurrency
- })),
- player_uuid: uuid,
- username: username,
- promo: promoCode,
- region: region
- };
-
- console.log('Sending to checkout:', checkoutData);
-
- // TODO: Replace with your actual Cloudflare Worker URL
- const response = await fetch('https://your-worker.example.com/create-checkout', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(checkoutData)
- });
-
- if (!response.ok) {
- throw new Error('Checkout failed');
- }
-
- const session = await response.json();
-
- if (session.session_url) {
- // Redirect to Stripe checkout
- window.location.href = session.session_url;
- } else if (session.error) {
- alert('Error: ' + session.error);
- }
- } catch (e) {
- console.error('Checkout error:', e);
- alert('Checkout error. Please try again.\n\nError: ' + e.message);
- btn.disabled = false;
- btn.textContent = 'Proceed to Checkout';
- }
-}
-
-// Initialize everything when DOM is ready
-document.addEventListener('DOMContentLoaded', function() {
- // Initialize regional pricing
- initRegionalPrices();
-
- // Initialize cart UI
- updateCartUI();
-
- // Setup hamburger menu
- const hamburger = document.getElementById('hamburger');
- const mobileMenu = document.getElementById('mobileMenu');
-
- if (hamburger) {
- hamburger.addEventListener('click', toggleMenu);
- }
-
- // Close menu when clicking outside
- if (mobileMenu) {
- mobileMenu.addEventListener('click', function (e) {
- if (e.target === mobileMenu) {
- closeMenu();
- }
- });
- }
-
- // Close menu on escape key
- document.addEventListener('keydown', function (e) {
- if (e.key === 'Escape') {
- if (mobileMenu && mobileMenu.classList.contains('active')) {
- closeMenu();
- }
- const cartSidebar = document.getElementById('cart-sidebar');
- if (cartSidebar && cartSidebar.classList.contains('open')) {
- toggleCart();
- }
- }
- });
-
- // Handle window resize
- window.addEventListener('resize', function () {
- if (window.innerWidth > 768 && mobileMenu && mobileMenu.classList.contains('active')) {
- closeMenu();
- }
- });
-
- // Enhanced smooth scrolling for anchor links
- document.querySelectorAll('a[href^="#"]').forEach(anchor => {
- anchor.addEventListener('click', function (e) {
- e.preventDefault();
- const target = document.querySelector(this.getAttribute('href'));
- if (target) {
- target.scrollIntoView({
- behavior: 'smooth',
- block: 'start'
- });
- }
- });
- });
-
- // Hero card hover effects (optimized with transform only)
- const heroCard = document.querySelector('.hero-card');
- if (heroCard) {
- heroCard.addEventListener('mouseenter', function () {
- this.style.transform = 'translateY(-5px)';
- });
-
- heroCard.addEventListener('mouseleave', function () {
- this.style.transform = 'translateY(0)';
- });
- }
-
- // Scroll animations (optimized with IntersectionObserver)
- const observer = new IntersectionObserver((entries) => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.style.opacity = '1';
- entry.target.style.transform = 'translateY(0)';
- observer.unobserve(entry.target); // Stop observing once animated
- }
- });
- }, {
- threshold: 0.1,
- rootMargin: '50px'
- });
-
- document.querySelectorAll('.hero-card, .server-info, .launch-btn').forEach(el => {
- el.style.opacity = '0';
- el.style.transform = 'translateY(20px)';
- el.style.transition = 'opacity 0.6s ease-out, transform 0.6s ease-out';
- observer.observe(el);
- });
-});
diff --git a/assets/manifest.json b/assets/manifest.json
new file mode 100644
index 0000000..9225a56
--- /dev/null
+++ b/assets/manifest.json
@@ -0,0 +1,23 @@
+---
+---
+{
+ "name": "PWindows Shop",
+ "short_name": "PWindows Shop",
+ "start_url": "{{ '/' | relative_url }}",
+ "scope": "{{ '/' | relative_url }}",
+ "icons": [
+ {
+ "src": "{{ '/assets/icons/site/android-chrome-192x192.png' | relative_url }}",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "{{ '/assets/icons/site/android-chrome-512x512.png' | relative_url }}",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/assets/mojang/fonts/LICENSE_OFL.txt b/assets/mojang/fonts/LICENSE_OFL.txt
deleted file mode 100644
index d952d62..0000000
--- a/assets/mojang/fonts/LICENSE_OFL.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-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:
-http://scripts.sil.org/OFL
-
------------------------------------------------------------
-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.
diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.otf b/assets/mojang/fonts/Minecraft-Seven_v2.otf
deleted file mode 100644
index 490e2ca..0000000
Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.otf and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.ttf b/assets/mojang/fonts/Minecraft-Seven_v2.ttf
deleted file mode 100644
index 87cc81b..0000000
Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.woff b/assets/mojang/fonts/Minecraft-Seven_v2.woff
deleted file mode 100644
index 57fb50d..0000000
Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.woff and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Tenv2.eot b/assets/mojang/fonts/Minecraft-Tenv2.eot
deleted file mode 100644
index 4bed47c..0000000
Binary files a/assets/mojang/fonts/Minecraft-Tenv2.eot and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Tenv2.ttf b/assets/mojang/fonts/Minecraft-Tenv2.ttf
deleted file mode 100644
index 22fddfb..0000000
Binary files a/assets/mojang/fonts/Minecraft-Tenv2.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Tenv2.woff b/assets/mojang/fonts/Minecraft-Tenv2.woff
deleted file mode 100644
index 312aebd..0000000
Binary files a/assets/mojang/fonts/Minecraft-Tenv2.woff and /dev/null differ
diff --git a/assets/mojang/fonts/Minecraft-Tenv2.woff2 b/assets/mojang/fonts/Minecraft-Tenv2.woff2
deleted file mode 100644
index 8976219..0000000
Binary files a/assets/mojang/fonts/Minecraft-Tenv2.woff2 and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.css b/assets/mojang/fonts/MinecraftFive-Bold.css
deleted file mode 100644
index 53210d7..0000000
--- a/assets/mojang/fonts/MinecraftFive-Bold.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Webfont: MinecraftFive-Bold */@font-face {
- font-family: 'MinecraftFive';
- src: url('MinecraftFive-Bold.eot'); /* IE9 Compat Modes */
- src: url('MinecraftFive-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('MinecraftFive-Bold.woff') format('woff'), /* Modern Browsers */
- url('MinecraftFive-Bold.ttf') format('truetype'), /* Safari, Android, iOS */
- url('MinecraftFive-Bold.svg#MinecraftFive-Bold') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: bold;
- text-rendering: optimizeLegibility;
-}
-
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.eot b/assets/mojang/fonts/MinecraftFive-Bold.eot
deleted file mode 100644
index 0f2d547..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Bold.eot and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.html b/assets/mojang/fonts/MinecraftFive-Bold.html
deleted file mode 100644
index 000c239..0000000
--- a/assets/mojang/fonts/MinecraftFive-Bold.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Minecraft Five Bold - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.svg b/assets/mojang/fonts/MinecraftFive-Bold.svg
deleted file mode 100644
index 9cb862b..0000000
--- a/assets/mojang/fonts/MinecraftFive-Bold.svg
+++ /dev/null
@@ -1,617 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.ttf b/assets/mojang/fonts/MinecraftFive-Bold.ttf
deleted file mode 100644
index 428179c..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Bold.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Bold.woff b/assets/mojang/fonts/MinecraftFive-Bold.woff
deleted file mode 100644
index 3e79092..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Bold.woff and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.css b/assets/mojang/fonts/MinecraftFive-Regular.css
deleted file mode 100644
index 7c4820b..0000000
--- a/assets/mojang/fonts/MinecraftFive-Regular.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Webfont: MinecraftFive-Regular */@font-face {
- font-family: 'MinecraftFive';
- src: url('MinecraftFive-Regular.eot'); /* IE9 Compat Modes */
- src: url('MinecraftFive-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('MinecraftFive-Regular.woff') format('woff'), /* Modern Browsers */
- url('MinecraftFive-Regular.ttf') format('truetype'), /* Safari, Android, iOS */
- url('MinecraftFive-Regular.svg#MinecraftFive-Regular') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
-
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.eot b/assets/mojang/fonts/MinecraftFive-Regular.eot
deleted file mode 100644
index 92b1d17..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Regular.eot and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.html b/assets/mojang/fonts/MinecraftFive-Regular.html
deleted file mode 100644
index 109ea05..0000000
--- a/assets/mojang/fonts/MinecraftFive-Regular.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Minecraft Five Regular - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.svg b/assets/mojang/fonts/MinecraftFive-Regular.svg
deleted file mode 100644
index 2dd6b69..0000000
--- a/assets/mojang/fonts/MinecraftFive-Regular.svg
+++ /dev/null
@@ -1,617 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.ttf b/assets/mojang/fonts/MinecraftFive-Regular.ttf
deleted file mode 100644
index 80f3b53..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Regular.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.woff b/assets/mojang/fonts/MinecraftFive-Regular.woff
deleted file mode 100644
index c82df34..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Regular.woff and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftFive-Regular.woff2 b/assets/mojang/fonts/MinecraftFive-Regular.woff2
deleted file mode 100644
index 6e2d356..0000000
Binary files a/assets/mojang/fonts/MinecraftFive-Regular.woff2 and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftSeven.css b/assets/mojang/fonts/MinecraftSeven.css
deleted file mode 100644
index f9ab634..0000000
--- a/assets/mojang/fonts/MinecraftSeven.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Webfont: MinecraftSeven */@font-face {
- font-family: 'MinecraftSeven';
- src: url('MinecraftSeven.eot'); /* IE9 Compat Modes */
- src: url('MinecraftSeven.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('MinecraftSeven.woff') format('woff'), /* Modern Browsers */
- url('MinecraftSeven.ttf') format('truetype'), /* Safari, Android, iOS */
- url('MinecraftSeven.svg#MinecraftSeven') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
-
diff --git a/assets/mojang/fonts/MinecraftSeven.eot b/assets/mojang/fonts/MinecraftSeven.eot
deleted file mode 100644
index 0c968a6..0000000
Binary files a/assets/mojang/fonts/MinecraftSeven.eot and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftSeven.html b/assets/mojang/fonts/MinecraftSeven.html
deleted file mode 100644
index 8702dd1..0000000
--- a/assets/mojang/fonts/MinecraftSeven.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Minecraft Seven - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/MinecraftSeven.svg b/assets/mojang/fonts/MinecraftSeven.svg
deleted file mode 100644
index f5eb735..0000000
--- a/assets/mojang/fonts/MinecraftSeven.svg
+++ /dev/null
@@ -1,620 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/fonts/MinecraftSeven.ttf b/assets/mojang/fonts/MinecraftSeven.ttf
deleted file mode 100644
index 0b738f7..0000000
Binary files a/assets/mojang/fonts/MinecraftSeven.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftSeven.woff b/assets/mojang/fonts/MinecraftSeven.woff
deleted file mode 100644
index c52c643..0000000
Binary files a/assets/mojang/fonts/MinecraftSeven.woff and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftTen.css b/assets/mojang/fonts/MinecraftTen.css
deleted file mode 100644
index d1aa35e..0000000
--- a/assets/mojang/fonts/MinecraftTen.css
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Webfont: MinecraftTen */@font-face {
- font-family: 'MinecraftTen';
- src: url('MinecraftTen.eot'); /* IE9 Compat Modes */
- src: url('MinecraftTen.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('MinecraftTen.woff') format('woff'), /* Modern Browsers */
- url('MinecraftTen.ttf') format('truetype'), /* Safari, Android, iOS */
- url('MinecraftTen.svg#MinecraftTen') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
-
diff --git a/assets/mojang/fonts/MinecraftTen.eot b/assets/mojang/fonts/MinecraftTen.eot
deleted file mode 100644
index 72bba8b..0000000
Binary files a/assets/mojang/fonts/MinecraftTen.eot and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftTen.html b/assets/mojang/fonts/MinecraftTen.html
deleted file mode 100644
index 9d17530..0000000
--- a/assets/mojang/fonts/MinecraftTen.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Minecraft Ten - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/MinecraftTen.svg b/assets/mojang/fonts/MinecraftTen.svg
deleted file mode 100644
index 18ca554..0000000
--- a/assets/mojang/fonts/MinecraftTen.svg
+++ /dev/null
@@ -1,603 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/fonts/MinecraftTen.ttf b/assets/mojang/fonts/MinecraftTen.ttf
deleted file mode 100644
index 28444b4..0000000
Binary files a/assets/mojang/fonts/MinecraftTen.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/MinecraftTen.woff b/assets/mojang/fonts/MinecraftTen.woff
deleted file mode 100644
index 8d69a58..0000000
Binary files a/assets/mojang/fonts/MinecraftTen.woff and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Bold.css b/assets/mojang/fonts/NotoSans-Bold.css
deleted file mode 100644
index 0889b85..0000000
--- a/assets/mojang/fonts/NotoSans-Bold.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Webfont: NotoSans-Bold */@font-face {
- font-family: 'Noto Sans';
- src: url('NotoSans-Bold.eot'); /* IE9 Compat Modes */
- src: local('Noto Sans Bold'), local('NotoSans-Bold'), /* locally installed */
- url('NotoSans-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('NotoSans-Bold.woff2') format('woff2'), /* Modern Browsers */
- url('NotoSans-Bold.woff') format('woff'), /* IE9-IE11 */
- url('NotoSans-Bold.ttf') format('truetype'), /* Safari, Android, iOS */
- url('NotoSans-Bold.svg#NotoSans-Bold') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: bold;
- text-rendering: optimizeLegibility;
-}
diff --git a/assets/mojang/fonts/NotoSans-Bold.eot b/assets/mojang/fonts/NotoSans-Bold.eot
deleted file mode 100644
index e298e59..0000000
Binary files a/assets/mojang/fonts/NotoSans-Bold.eot and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Bold.html b/assets/mojang/fonts/NotoSans-Bold.html
deleted file mode 100644
index aef9eeb..0000000
--- a/assets/mojang/fonts/NotoSans-Bold.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Noto Sans Bold - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/NotoSans-Bold.ttf b/assets/mojang/fonts/NotoSans-Bold.ttf
deleted file mode 100644
index ab11d31..0000000
Binary files a/assets/mojang/fonts/NotoSans-Bold.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Bold.woff b/assets/mojang/fonts/NotoSans-Bold.woff
deleted file mode 100644
index 679d1f8..0000000
Binary files a/assets/mojang/fonts/NotoSans-Bold.woff and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Bold.woff2 b/assets/mojang/fonts/NotoSans-Bold.woff2
deleted file mode 100644
index deb4fba..0000000
Binary files a/assets/mojang/fonts/NotoSans-Bold.woff2 and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.css b/assets/mojang/fonts/NotoSans-BoldItalic.css
deleted file mode 100644
index 881ffa0..0000000
--- a/assets/mojang/fonts/NotoSans-BoldItalic.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Webfont: NotoSans-BoldItalic */@font-face {
- font-family: 'Noto Sans';
- src: url('NotoSans-BoldItalic.eot'); /* IE9 Compat Modes */
- src: local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), /* locally installed */
- url('NotoSans-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('NotoSans-BoldItalic.woff2') format('woff2'), /* Modern Browsers */
- url('NotoSans-BoldItalic.woff') format('woff'), /* IE9-IE11 */
- url('NotoSans-BoldItalic.ttf') format('truetype'), /* Safari, Android, iOS */
- url('NotoSans-BoldItalic.svg#NotoSans-BoldItalic') format('svg'); /* Legacy iOS */
- font-style: italic;
- font-weight: bold;
- text-rendering: optimizeLegibility;
-}
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.eot b/assets/mojang/fonts/NotoSans-BoldItalic.eot
deleted file mode 100644
index 2d548d3..0000000
Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.eot and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.html b/assets/mojang/fonts/NotoSans-BoldItalic.html
deleted file mode 100644
index 00d0392..0000000
--- a/assets/mojang/fonts/NotoSans-BoldItalic.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Noto Sans Bold Italic - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.ttf b/assets/mojang/fonts/NotoSans-BoldItalic.ttf
deleted file mode 100644
index 6dfd1e6..0000000
Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.woff b/assets/mojang/fonts/NotoSans-BoldItalic.woff
deleted file mode 100644
index bbf3cba..0000000
Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.woff and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.woff2 b/assets/mojang/fonts/NotoSans-BoldItalic.woff2
deleted file mode 100644
index e587c7b..0000000
Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.woff2 and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Italic.css b/assets/mojang/fonts/NotoSans-Italic.css
deleted file mode 100644
index 66ac448..0000000
--- a/assets/mojang/fonts/NotoSans-Italic.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Webfont: NotoSans-Italic */@font-face {
- font-family: 'Noto Sans';
- src: url('NotoSans-Italic.eot'); /* IE9 Compat Modes */
- src: local('Noto Sans Italic'), local('NotoSans-Italic'), /* locally installed */
- url('NotoSans-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('NotoSans-Italic.woff2') format('woff2'), /* Modern Browsers */
- url('NotoSans-Italic.woff') format('woff'), /* IE9-IE11 */
- url('NotoSans-Italic.ttf') format('truetype'), /* Safari, Android, iOS */
- url('NotoSans-Italic.svg#NotoSans-Italic') format('svg'); /* Legacy iOS */
- font-style: italic;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
diff --git a/assets/mojang/fonts/NotoSans-Italic.eot b/assets/mojang/fonts/NotoSans-Italic.eot
deleted file mode 100644
index 83bc199..0000000
Binary files a/assets/mojang/fonts/NotoSans-Italic.eot and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Italic.html b/assets/mojang/fonts/NotoSans-Italic.html
deleted file mode 100644
index 5f1e712..0000000
--- a/assets/mojang/fonts/NotoSans-Italic.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Noto Sans Italic - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/NotoSans-Italic.ttf b/assets/mojang/fonts/NotoSans-Italic.ttf
deleted file mode 100644
index 1639ad7..0000000
Binary files a/assets/mojang/fonts/NotoSans-Italic.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Italic.woff b/assets/mojang/fonts/NotoSans-Italic.woff
deleted file mode 100644
index 4a1414d..0000000
Binary files a/assets/mojang/fonts/NotoSans-Italic.woff and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Italic.woff2 b/assets/mojang/fonts/NotoSans-Italic.woff2
deleted file mode 100644
index 3d821fc..0000000
Binary files a/assets/mojang/fonts/NotoSans-Italic.woff2 and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Regular.css b/assets/mojang/fonts/NotoSans-Regular.css
deleted file mode 100644
index 77c19d6..0000000
--- a/assets/mojang/fonts/NotoSans-Regular.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Webfont: NotoSans-Regular */@font-face {
- font-family: 'Noto Sans';
- src: url('NotoSans-Regular.eot'); /* IE9 Compat Modes */
- src: local('Noto Sans'), local('NotoSans'), /* locally installed */
- url('NotoSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('NotoSans-Regular.woff2') format('woff2'), /* Modern Browsers */
- url('NotoSans-Regular.woff') format('woff'), /* IE9-IE11 */
- url('NotoSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */
- url('NotoSans-Regular.svg#NotoSans-Regular') format('svg'); /* Legacy iOS */
- font-style: normal;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
diff --git a/assets/mojang/fonts/NotoSans-Regular.eot b/assets/mojang/fonts/NotoSans-Regular.eot
deleted file mode 100644
index 6505dd1..0000000
Binary files a/assets/mojang/fonts/NotoSans-Regular.eot and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Regular.html b/assets/mojang/fonts/NotoSans-Regular.html
deleted file mode 100644
index 608f001..0000000
--- a/assets/mojang/fonts/NotoSans-Regular.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
Noto Sans - Web Font Specimen
-
-
-
-
-
The quick brown fox jumps over the lazy dog. $123.45!
-
-
diff --git a/assets/mojang/fonts/NotoSans-Regular.ttf b/assets/mojang/fonts/NotoSans-Regular.ttf
deleted file mode 100644
index a1b8994..0000000
Binary files a/assets/mojang/fonts/NotoSans-Regular.ttf and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Regular.woff b/assets/mojang/fonts/NotoSans-Regular.woff
deleted file mode 100644
index 1aff4d9..0000000
Binary files a/assets/mojang/fonts/NotoSans-Regular.woff and /dev/null differ
diff --git a/assets/mojang/fonts/NotoSans-Regular.woff2 b/assets/mojang/fonts/NotoSans-Regular.woff2
deleted file mode 100644
index f5a9303..0000000
Binary files a/assets/mojang/fonts/NotoSans-Regular.woff2 and /dev/null differ
diff --git a/assets/mojang/img/bg-current.png b/assets/mojang/img/bg-current.png
deleted file mode 100644
index 451b9cf..0000000
Binary files a/assets/mojang/img/bg-current.png and /dev/null differ
diff --git a/assets/mojang/img/bg-grass.png b/assets/mojang/img/bg-grass.png
deleted file mode 100644
index 451b9cf..0000000
Binary files a/assets/mojang/img/bg-grass.png and /dev/null differ
diff --git a/assets/mojang/img/bg-snow.png b/assets/mojang/img/bg-snow.png
deleted file mode 100644
index 391589d..0000000
Binary files a/assets/mojang/img/bg-snow.png and /dev/null differ
diff --git a/assets/mojang/img/bg-wool-dark-white.png b/assets/mojang/img/bg-wool-dark-white.png
deleted file mode 100644
index a6ffaa5..0000000
Binary files a/assets/mojang/img/bg-wool-dark-white.png and /dev/null differ
diff --git a/assets/mojang/img/bg-wool-dark.png b/assets/mojang/img/bg-wool-dark.png
deleted file mode 100644
index 764d80d..0000000
Binary files a/assets/mojang/img/bg-wool-dark.png and /dev/null differ
diff --git a/assets/mojang/img/bg-wool-white-dark.png b/assets/mojang/img/bg-wool-white-dark.png
deleted file mode 100644
index 48621d4..0000000
Binary files a/assets/mojang/img/bg-wool-white-dark.png and /dev/null differ
diff --git a/assets/mojang/img/bg-wool-white.png b/assets/mojang/img/bg-wool-white.png
deleted file mode 100644
index e830aab..0000000
Binary files a/assets/mojang/img/bg-wool-white.png and /dev/null differ
diff --git a/assets/mojang/img/border-dungeons-25.png b/assets/mojang/img/border-dungeons-25.png
deleted file mode 100644
index 26692a4..0000000
Binary files a/assets/mojang/img/border-dungeons-25.png and /dev/null differ
diff --git a/assets/mojang/img/grass.png b/assets/mojang/img/grass.png
deleted file mode 100644
index 247a968..0000000
Binary files a/assets/mojang/img/grass.png and /dev/null differ
diff --git a/assets/mojang/svg/icons/color-cart.svg b/assets/mojang/svg/icons/color-cart.svg
deleted file mode 100644
index 9d71cb5..0000000
--- a/assets/mojang/svg/icons/color-cart.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-chest--animated.svg b/assets/mojang/svg/icons/color-chest--animated.svg
deleted file mode 100644
index 32285d9..0000000
--- a/assets/mojang/svg/icons/color-chest--animated.svg
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/color-chest.svg b/assets/mojang/svg/icons/color-chest.svg
deleted file mode 100644
index cdeca1c..0000000
--- a/assets/mojang/svg/icons/color-chest.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-close.svg b/assets/mojang/svg/icons/color-close.svg
deleted file mode 100644
index 21bad4f..0000000
--- a/assets/mojang/svg/icons/color-close.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-dungeons-launcher.svg b/assets/mojang/svg/icons/color-dungeons-launcher.svg
deleted file mode 100644
index 9eb4aba..0000000
--- a/assets/mojang/svg/icons/color-dungeons-launcher.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/color-facebook.svg b/assets/mojang/svg/icons/color-facebook.svg
deleted file mode 100644
index 7bfe88d..0000000
--- a/assets/mojang/svg/icons/color-facebook.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-grass-block.svg b/assets/mojang/svg/icons/color-grass-block.svg
deleted file mode 100644
index 986c509..0000000
--- a/assets/mojang/svg/icons/color-grass-block.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-instagram.svg b/assets/mojang/svg/icons/color-instagram.svg
deleted file mode 100644
index 6ccb214..0000000
--- a/assets/mojang/svg/icons/color-instagram.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-menu.svg b/assets/mojang/svg/icons/color-menu.svg
deleted file mode 100644
index 9e25e52..0000000
--- a/assets/mojang/svg/icons/color-menu.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-reddit.svg b/assets/mojang/svg/icons/color-reddit.svg
deleted file mode 100644
index 6440e43..0000000
--- a/assets/mojang/svg/icons/color-reddit.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-steve-alex.svg b/assets/mojang/svg/icons/color-steve-alex.svg
deleted file mode 100644
index 1db0972..0000000
--- a/assets/mojang/svg/icons/color-steve-alex.svg
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-ten-players.svg b/assets/mojang/svg/icons/color-ten-players.svg
deleted file mode 100644
index 1e2cbfc..0000000
--- a/assets/mojang/svg/icons/color-ten-players.svg
+++ /dev/null
@@ -1,268 +0,0 @@
-
- color-ten-players
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/color-twitter.svg b/assets/mojang/svg/icons/color-twitter.svg
deleted file mode 100644
index 5d6def1..0000000
--- a/assets/mojang/svg/icons/color-twitter.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/color-two-players.svg b/assets/mojang/svg/icons/color-two-players.svg
deleted file mode 100644
index a8e76fd..0000000
--- a/assets/mojang/svg/icons/color-two-players.svg
+++ /dev/null
@@ -1,56 +0,0 @@
-
- color-two-players
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/color-youtube.svg b/assets/mojang/svg/icons/color-youtube.svg
deleted file mode 100644
index 7769d4e..0000000
--- a/assets/mojang/svg/icons/color-youtube.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-book.svg b/assets/mojang/svg/icons/line-book.svg
deleted file mode 100644
index cb1815b..0000000
--- a/assets/mojang/svg/icons/line-book.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-box.svg b/assets/mojang/svg/icons/line-box.svg
deleted file mode 100644
index 2429a75..0000000
--- a/assets/mojang/svg/icons/line-box.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-calendar.svg b/assets/mojang/svg/icons/line-calendar.svg
deleted file mode 100644
index eda3bb7..0000000
--- a/assets/mojang/svg/icons/line-calendar.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-collapse.svg b/assets/mojang/svg/icons/line-collapse.svg
deleted file mode 100644
index 620c18e..0000000
--- a/assets/mojang/svg/icons/line-collapse.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/assets/mojang/svg/icons/line-console.svg b/assets/mojang/svg/icons/line-console.svg
deleted file mode 100644
index 34f21bf..0000000
--- a/assets/mojang/svg/icons/line-console.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-creeper.svg b/assets/mojang/svg/icons/line-creeper.svg
deleted file mode 100644
index 05b1e08..0000000
--- a/assets/mojang/svg/icons/line-creeper.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-device.svg b/assets/mojang/svg/icons/line-device.svg
deleted file mode 100644
index 52b77d8..0000000
--- a/assets/mojang/svg/icons/line-device.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-expand.svg b/assets/mojang/svg/icons/line-expand.svg
deleted file mode 100644
index 4ffa50d..0000000
--- a/assets/mojang/svg/icons/line-expand.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
- line-expand
-
-
diff --git a/assets/mojang/svg/icons/line-globe.svg b/assets/mojang/svg/icons/line-globe.svg
deleted file mode 100644
index 7b7b360..0000000
--- a/assets/mojang/svg/icons/line-globe.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/assets/mojang/svg/icons/line-heart.svg b/assets/mojang/svg/icons/line-heart.svg
deleted file mode 100644
index e1749f1..0000000
--- a/assets/mojang/svg/icons/line-heart.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-hide.svg b/assets/mojang/svg/icons/line-hide.svg
deleted file mode 100644
index b8f5524..0000000
--- a/assets/mojang/svg/icons/line-hide.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-pc.svg b/assets/mojang/svg/icons/line-pc.svg
deleted file mode 100644
index 58b5f81..0000000
--- a/assets/mojang/svg/icons/line-pc.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-pdf-file.svg b/assets/mojang/svg/icons/line-pdf-file.svg
deleted file mode 100644
index 7bf47b1..0000000
--- a/assets/mojang/svg/icons/line-pdf-file.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-shirt.svg b/assets/mojang/svg/icons/line-shirt.svg
deleted file mode 100644
index d7849c6..0000000
--- a/assets/mojang/svg/icons/line-shirt.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-show.svg b/assets/mojang/svg/icons/line-show.svg
deleted file mode 100644
index 3e51208..0000000
--- a/assets/mojang/svg/icons/line-show.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-vector-export.svg b/assets/mojang/svg/icons/line-vector-export.svg
deleted file mode 100644
index 4424318..0000000
--- a/assets/mojang/svg/icons/line-vector-export.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-vector-help.svg b/assets/mojang/svg/icons/line-vector-help.svg
deleted file mode 100644
index 3345a84..0000000
--- a/assets/mojang/svg/icons/line-vector-help.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/assets/mojang/svg/icons/line-vr-enhanced.svg b/assets/mojang/svg/icons/line-vr-enhanced.svg
deleted file mode 100644
index 8007a29..0000000
--- a/assets/mojang/svg/icons/line-vr-enhanced.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-vr-turning.svg b/assets/mojang/svg/icons/line-vr-turning.svg
deleted file mode 100644
index 13499db..0000000
--- a/assets/mojang/svg/icons/line-vr-turning.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-vr-virtual-living-room.svg b/assets/mojang/svg/icons/line-vr-virtual-living-room.svg
deleted file mode 100644
index c652524..0000000
--- a/assets/mojang/svg/icons/line-vr-virtual-living-room.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/line-wallet.svg b/assets/mojang/svg/icons/line-wallet.svg
deleted file mode 100644
index 7ca344d..0000000
--- a/assets/mojang/svg/icons/line-wallet.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-arrow-down.svg b/assets/mojang/svg/icons/pixel-arrow-down.svg
deleted file mode 100644
index 3bc2919..0000000
--- a/assets/mojang/svg/icons/pixel-arrow-down.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-arrow-left.svg b/assets/mojang/svg/icons/pixel-arrow-left.svg
deleted file mode 100644
index c05bb36..0000000
--- a/assets/mojang/svg/icons/pixel-arrow-left.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-arrow-right.svg b/assets/mojang/svg/icons/pixel-arrow-right.svg
deleted file mode 100644
index 5e529f6..0000000
--- a/assets/mojang/svg/icons/pixel-arrow-right.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-arrow-up.svg b/assets/mojang/svg/icons/pixel-arrow-up.svg
deleted file mode 100644
index 5484365..0000000
--- a/assets/mojang/svg/icons/pixel-arrow-up.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-begin-quote.svg b/assets/mojang/svg/icons/pixel-begin-quote.svg
deleted file mode 100644
index aed637f..0000000
--- a/assets/mojang/svg/icons/pixel-begin-quote.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/assets/mojang/svg/icons/pixel-caret.svg b/assets/mojang/svg/icons/pixel-caret.svg
deleted file mode 100644
index bbe043a..0000000
--- a/assets/mojang/svg/icons/pixel-caret.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/pixel-check.svg b/assets/mojang/svg/icons/pixel-check.svg
deleted file mode 100644
index be9e4e8..0000000
--- a/assets/mojang/svg/icons/pixel-check.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Check
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-close.svg b/assets/mojang/svg/icons/pixel-close.svg
deleted file mode 100644
index c200858..0000000
--- a/assets/mojang/svg/icons/pixel-close.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/pixel-end-quote.svg b/assets/mojang/svg/icons/pixel-end-quote.svg
deleted file mode 100644
index d6e8a9d..0000000
--- a/assets/mojang/svg/icons/pixel-end-quote.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/assets/mojang/svg/icons/pixel-facebook.svg b/assets/mojang/svg/icons/pixel-facebook.svg
deleted file mode 100644
index c749be5..0000000
--- a/assets/mojang/svg/icons/pixel-facebook.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-instagram.svg b/assets/mojang/svg/icons/pixel-instagram.svg
deleted file mode 100644
index 843ae5a..0000000
--- a/assets/mojang/svg/icons/pixel-instagram.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-pause.svg b/assets/mojang/svg/icons/pixel-pause.svg
deleted file mode 100644
index 86cddd3..0000000
--- a/assets/mojang/svg/icons/pixel-pause.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
- pixel-pause
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/pixel-play.svg b/assets/mojang/svg/icons/pixel-play.svg
deleted file mode 100644
index bac7c5b..0000000
--- a/assets/mojang/svg/icons/pixel-play.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-reddit.svg b/assets/mojang/svg/icons/pixel-reddit.svg
deleted file mode 100644
index 94c09a4..0000000
--- a/assets/mojang/svg/icons/pixel-reddit.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-twitter.svg b/assets/mojang/svg/icons/pixel-twitter.svg
deleted file mode 100644
index 170bec6..0000000
--- a/assets/mojang/svg/icons/pixel-twitter.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/pixel-youtube.svg b/assets/mojang/svg/icons/pixel-youtube.svg
deleted file mode 100644
index 548fab4..0000000
--- a/assets/mojang/svg/icons/pixel-youtube.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/assets/mojang/svg/icons/what-block.svg b/assets/mojang/svg/icons/what-block.svg
deleted file mode 100644
index 9bc368a..0000000
--- a/assets/mojang/svg/icons/what-block.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/mojang/svg/icons/what-computer.svg b/assets/mojang/svg/icons/what-computer.svg
deleted file mode 100644
index 559a3fb..0000000
--- a/assets/mojang/svg/icons/what-computer.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-
- what-computer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/icons/what-devices.svg b/assets/mojang/svg/icons/what-devices.svg
deleted file mode 100644
index cfb932a..0000000
--- a/assets/mojang/svg/icons/what-devices.svg
+++ /dev/null
@@ -1,367 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/cero-a.svg b/assets/mojang/svg/logos/cero-a.svg
deleted file mode 100644
index 440cf70..0000000
--- a/assets/mojang/svg/logos/cero-a.svg
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/esrb.svg b/assets/mojang/svg/logos/esrb.svg
deleted file mode 100644
index 8521b99..0000000
--- a/assets/mojang/svg/logos/esrb.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
- esrb
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/microsoft-studios.svg b/assets/mojang/svg/logos/microsoft-studios.svg
deleted file mode 100644
index 18dcf16..0000000
--- a/assets/mojang/svg/logos/microsoft-studios.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/microsoft.svg b/assets/mojang/svg/logos/microsoft.svg
deleted file mode 100644
index 14de13c..0000000
--- a/assets/mojang/svg/logos/microsoft.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/minecon-earth-party-2018.svg b/assets/mojang/svg/logos/minecon-earth-party-2018.svg
deleted file mode 100644
index 48543d4..0000000
--- a/assets/mojang/svg/logos/minecon-earth-party-2018.svg
+++ /dev/null
@@ -1,343 +0,0 @@
-
-
- minecon_earth_party_2018
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/minecon.svg b/assets/mojang/svg/logos/minecon.svg
deleted file mode 100644
index 583b19a..0000000
--- a/assets/mojang/svg/logos/minecon.svg
+++ /dev/null
@@ -1,412 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/minecraft-core-brand.svg b/assets/mojang/svg/logos/minecraft-core-brand.svg
deleted file mode 100644
index fab92f9..0000000
--- a/assets/mojang/svg/logos/minecraft-core-brand.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/minecraft-dungeons.svg b/assets/mojang/svg/logos/minecraft-dungeons.svg
deleted file mode 100644
index 1b2999e..0000000
--- a/assets/mojang/svg/logos/minecraft-dungeons.svg
+++ /dev/null
@@ -1,558 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/minecraft-java-edition.svg b/assets/mojang/svg/logos/minecraft-java-edition.svg
deleted file mode 100644
index b910e3a..0000000
--- a/assets/mojang/svg/logos/minecraft-java-edition.svg
+++ /dev/null
@@ -1,786 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/minecraft.svg b/assets/mojang/svg/logos/minecraft.svg
deleted file mode 100644
index ff9fc9b..0000000
--- a/assets/mojang/svg/logos/minecraft.svg
+++ /dev/null
@@ -1,591 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/mojang-studios-horizontal.svg b/assets/mojang/svg/logos/mojang-studios-horizontal.svg
deleted file mode 100644
index fcb6376..0000000
--- a/assets/mojang/svg/logos/mojang-studios-horizontal.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/mono-microsoft-studios.svg b/assets/mojang/svg/logos/mono-microsoft-studios.svg
deleted file mode 100644
index da01254..0000000
--- a/assets/mojang/svg/logos/mono-microsoft-studios.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/assets/mojang/svg/logos/mono-microsoft.svg b/assets/mojang/svg/logos/mono-microsoft.svg
deleted file mode 100644
index 61f6d96..0000000
--- a/assets/mojang/svg/logos/mono-microsoft.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg b/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg
deleted file mode 100644
index 7542964..0000000
--- a/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/mono-windows.svg b/assets/mojang/svg/logos/mono-windows.svg
deleted file mode 100644
index 0737a5f..0000000
--- a/assets/mojang/svg/logos/mono-windows.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/mono-xbox-game-studios.svg b/assets/mojang/svg/logos/mono-xbox-game-studios.svg
deleted file mode 100644
index f677a8e..0000000
--- a/assets/mojang/svg/logos/mono-xbox-game-studios.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/mono-xbox.svg b/assets/mojang/svg/logos/mono-xbox.svg
deleted file mode 100644
index 4794193..0000000
--- a/assets/mojang/svg/logos/mono-xbox.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/pegi.svg b/assets/mojang/svg/logos/pegi.svg
deleted file mode 100644
index 3e69832..0000000
--- a/assets/mojang/svg/logos/pegi.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-
- pegi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/realms.svg b/assets/mojang/svg/logos/realms.svg
deleted file mode 100644
index 0b1785f..0000000
--- a/assets/mojang/svg/logos/realms.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/logos/storymode.svg b/assets/mojang/svg/logos/storymode.svg
deleted file mode 100644
index b622cdc..0000000
--- a/assets/mojang/svg/logos/storymode.svg
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- storymode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/logos/xbox-game-studios.svg b/assets/mojang/svg/logos/xbox-game-studios.svg
deleted file mode 100644
index 6ffdf38..0000000
--- a/assets/mojang/svg/logos/xbox-game-studios.svg
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/mojang/svg/shapes/ribbon.svg b/assets/mojang/svg/shapes/ribbon.svg
deleted file mode 100644
index 5bec102..0000000
--- a/assets/mojang/svg/shapes/ribbon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/mojang/svg/shapes/shape-model-classic.svg b/assets/mojang/svg/shapes/shape-model-classic.svg
deleted file mode 100644
index 420430c..0000000
--- a/assets/mojang/svg/shapes/shape-model-classic.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/shapes/shape-model-slim.svg b/assets/mojang/svg/shapes/shape-model-slim.svg
deleted file mode 100644
index e82af94..0000000
--- a/assets/mojang/svg/shapes/shape-model-slim.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/shapes/square-like-black.svg b/assets/mojang/svg/shapes/square-like-black.svg
deleted file mode 100644
index 52ffcb2..0000000
--- a/assets/mojang/svg/shapes/square-like-black.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/mojang/svg/shapes/square-like.svg b/assets/mojang/svg/shapes/square-like.svg
deleted file mode 100644
index b295719..0000000
--- a/assets/mojang/svg/shapes/square-like.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/staffpfp/PeterMaZep.png b/assets/staffpfp/PeterMaZep.png
deleted file mode 100644
index aa2b5f8..0000000
Binary files a/assets/staffpfp/PeterMaZep.png and /dev/null differ
diff --git a/assets/staffpfp/staff.png b/assets/staffpfp/staff.png
deleted file mode 100644
index 51689a1..0000000
Binary files a/assets/staffpfp/staff.png and /dev/null differ
diff --git a/index.html b/index.html
index 991fcf2..d437c1a 100644
--- a/index.html
+++ b/index.html
@@ -1,125 +1,41 @@
---
layout: default
title: Home
+description: Sign in with your Minecraft username to browse PCoins and support PWindows.
+permalink: /
---
-
+
-
-
-
-
Welcome to thePWindows Shop
-
Enter your Minecraft username to buy PCoins
-
-
-
- Enter Shop
-
-
+
+
Welcome to the PWindows Shop
+
Enter your Minecraft username to browse PCoins.
+
+
+
-
or
-
-
-
-
-
-
You're verified! What would you like to do?
+
+
+
Welcome!
+
Youβre ready to browse the PCoins shop.
-
-
-
+
diff --git a/products/index.html b/products/index.html
index 5bed631..ced8741 100644
--- a/products/index.html
+++ b/products/index.html
@@ -1,205 +1,84 @@
---
layout: default
-title: Shop
+title: PCoins Shop
+description: Browse PCoins bundles and support PWindows.
+permalink: /products/
---
-
+
-
-
+
+
-
Switch
+
Switch player
-
PCoins Shop
-
Buy PCoins and spend them in-game
+
PCoins Shop
+
Buy PCoins and spend them in-game.
-
-
-
All
-
Coins
-
Merch
+
Search bundles
+
+
+ All
+ Coins
+ Support
-
+
-