Compare commits

...

20 Commits

Author SHA1 Message Date
askang04
9eff009f94 Added price 2026-07-07 01:52:36 +00:00
Replit Agent
ecd64f2bca Remove contact form and related fields from the homepage
Delete the entire contact form section, including name, message, and send message elements, from index.html.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 109fb86c-9dd9-4da1-8960-afe5e77adea0
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/2fn34tC
Replit-Helium-Checkpoint-Created: true
2026-07-07 01:50:44 +00:00
askang04
7d49a9e310 Added link that goes directly to site + remove email 2026-07-07 01:49:23 +00:00
Replit Agent
21c2c6ccd0 Update copyright and remove email field from contact form
Removed the email input field from the contact form in index.html and updated the copyright text to "Anshveer Kang" across all 8 HTML files.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: e7c2a5e8-91a7-4017-8c10-c4538643d934
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/2fn34tC
Replit-Helium-Checkpoint-Created: true
2026-07-07 01:48:09 +00:00
Replit Agent
302cb05165 Add new t-shirt product page and update site navigation
Create `rubiks-cube-solver-t-shirt.html` with full SEO meta tags, structured data, and product details. Update `index.html` to include the new product in the shop grid and add the new URL to `sitemap.xml`.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: fdccbccc-ca0d-4833-9054-ed849b29fc12
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/2fn34tC
Replit-Helium-Checkpoint-Created: true
2026-07-07 01:47:12 +00:00
Replit Agent
529c6c5a11 Restore proper formatting and bullet points to product descriptions
Reverted markdown syntax to HTML tags for product descriptions and bulleted lists across multiple product pages, and fixed broken CTA links.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: b71bc078-bfd0-4d19-8f04-6fc3a65d83f1
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/JJdm0gW
Replit-Helium-Checkpoint-Created: true
2026-07-05 22:01:37 +00:00
askang04
4069d3fe48 Added real prices and descriptions 2026-07-05 21:53:15 +00:00
Replit Agent
e2f2364912 Restore proper formatting and bullet points to sock product descriptions
Update rubiks-cube-socks.html to convert markdown descriptions to HTML paragraphs, add a "Product Features" unordered list, and fix a broken href attribute in the CTA button.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 75e121a0-dca1-4158-8aef-7a2fcb0557e5
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/QJ5kQog
Replit-Helium-Checkpoint-Created: true
2026-07-05 21:36:46 +00:00
askang04
2f410aeb4e Added real prices and descriptions 2026-07-05 21:33:15 +00:00
Replit Agent
df76c6ad55 Update product pages with proper formatting for descriptions
Converts markdown formatting in product descriptions to HTML paragraphs, headers, and lists across multiple HTML files.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 5f6e99e5-1011-4504-8bec-2abb363340ea
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/I3P2Jvw
Replit-Helium-Checkpoint-Created: true
2026-07-05 21:04:48 +00:00
Replit Agent
752457032f Format product descriptions to properly display bullet points and styling
Update `rubiks-cube-socks.html` to use HTML tags for product descriptions, and `styles.css` to add CSS rules for `p`, `h3`, `ul`, and `li` elements within the `.product-description` class to ensure proper rendering of bullet points and text styling.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 8a4250cf-424f-4911-8fb9-041eb6a44f92
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/IEMXGsm
Replit-Helium-Checkpoint-Created: true
2026-07-05 21:00:28 +00:00
askang04
891678ace2 Added real prices and descriptions 2026-07-05 20:53:21 +00:00
Replit Agent
0f60be4174 Add six new product pages with SEO optimization and a shop section
Introduces six new HTML product pages (e.g., rubiks-cube-mug-auf-victim.html) with individual SEO meta tags, Open Graph, Twitter cards, and structured data. Updates index.html to include a new 'Shop' section, adds robots.txt and sitemap.xml, and enhances homepage SEO with a canonical URL, organization schema, and an ItemList schema for products.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: cb7f5886-1e99-485f-ba60-5e1aed72d023
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/z77BLws
Replit-Helium-Checkpoint-Created: true
2026-07-05 20:18:51 +00:00
Replit Agent
0bdc092a05 Add product images to enhance the online store and user experience
Add various product images to the images directory for new product listings.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: e5b43d1c-9fec-48a5-9f2c-85a62a53527c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/D15BHvH
Replit-Helium-Checkpoint-Created: true
2026-07-05 20:13:28 +00:00
askang04
988f80c4fb Untrack non-static files; keep .gitignore whitelist 2026-07-04 22:05:57 +00:00
Replit Agent
9558ae4b6e Saved progress at the end of the loop
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 768137b7-5473-49c3-b27e-38dfc1479e0e
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/D15BHvH
Replit-Helium-Checkpoint-Created: true
2026-07-04 22:01:02 +00:00
Replit Agent
82d7040aa3 Ensure website previews update instantly by disabling browser caching
Create a custom server script to serve files with explicit no-cache headers, resolving issues where the preview iframe displayed stale content due to browser caching.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 2ef8619a-6329-44ec-aa16-6d651c828315
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/D15BHvH
Replit-Helium-Checkpoint-Created: true
2026-07-04 21:54:47 +00:00
Replit Agent
0692f97e3a Update store links to open directly and remove popup modal
Replaced modal-based store links with direct links to the new store URL, removed all Printify references, and cleaned up associated modal HTML, CSS, and JavaScript.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: e8d67b34-b14e-4383-9ef2-7d299bff17e4
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/yrHiwv7
Replit-Helium-Checkpoint-Created: true
2026-07-04 21:52:15 +00:00
Replit Agent
262c8be656 Update store links to new website address
Update the URLs for the "Shop the Store" button and the "Open Store" button within the modal to the new `shop.justgoodcuber.com/products` domain.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 097a2a73-cb24-4738-b83a-fecc18e405d6
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/tnshPZC
Replit-Helium-Checkpoint-Created: true
2026-07-04 21:48:42 +00:00
Replit Agent
5451853728 Simplify website design by removing repetitive visual elements
Remove grid lines, floating bubbles, grain texture, and marquee banners from the website.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f5797e65-2210-4d2e-bf70-278d8a0098c1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: d5b554c5-54c3-413c-8039-39c6605b0dd3
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/2a2c58da-54a0-4c86-8ad0-3b93439f70de/f5797e65-2210-4d2e-bf70-278d8a0098c1/tnshPZC
Replit-Helium-Checkpoint-Created: true
2026-07-02 00:50:09 +00:00
21 changed files with 1565 additions and 449 deletions

17
.gitignore vendored Normal file
View File

@@ -0,0 +1,17 @@
# Ignore everything by default
/*
# Keep this file
!/.gitignore
# Whitelist: pure static site source only
!/*.html
!/*.js
!/*.css
# Whitelist: SEO files
!/sitemap.xml
!/robots.txt
# Whitelist: images used by the site
!/images/

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
images/magnets.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View File

@@ -4,23 +4,56 @@
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>JustGoodCubing</title> <title>JustGoodCubing | Rubik's Cube Mugs, T-Shirts, Socks &amp; Cubing Gear</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="JustGoodCubing makes premium Rubik's Cube-inspired merch — mugs, t-shirts, socks, and magnets for speedcubers and puzzle lovers. Shop cubing gear designed by a cuber."/>
<link rel="canonical" href="https://justgoodcuber.com/"/>
<meta property="og:type" content="website"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="JustGoodCubing | Rubik's Cube Mugs, T-Shirts, Socks & Cubing Gear"/>
<meta property="og:description" content="Premium Rubik's Cube-inspired merch — mugs, t-shirts, socks, and magnets for speedcubers and puzzle lovers."/>
<meta property="og:url" content="https://justgoodcuber.com/"/>
<meta property="og:image" content="https://justgoodcuber.com/images/logo.png"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="JustGoodCubing | Rubik's Cube Mugs, T-Shirts, Socks & Cubing Gear"/>
<meta name="twitter:description" content="Premium Rubik's Cube-inspired merch — mugs, t-shirts, socks, and magnets for speedcubers and puzzle lovers."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/logo.png"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/> <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css"> <link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "JustGoodCubing",
"url": "https://justgoodcuber.com/",
"logo": "https://justgoodcuber.com/images/logo.png",
"sameAs": ["https://www.youtube.com/@JustGoodCuber"]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "JustGoodCubing Products",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "url": "https://justgoodcuber.com/rubiks-cube-mug-auf-victim.html", "name": "AUF VICTIM +2 Rubik's Cube Mug" },
{ "@type": "ListItem", "position": 2, "url": "https://justgoodcuber.com/rubiks-cube-mug-3-hours-later.html", "name": "3 Hours Later Rubik's Cube Mug" },
{ "@type": "ListItem", "position": 3, "url": "https://justgoodcuber.com/rubiks-cube-tshirt-dnf.html", "name": "DNF Rubik's Cube T-Shirt" },
{ "@type": "ListItem", "position": 4, "url": "https://justgoodcuber.com/rubiks-cube-tshirt-speedcuber.html", "name": "Speedcuber Rubik's Cube T-Shirt" },
{ "@type": "ListItem", "position": 5, "url": "https://justgoodcuber.com/rubiks-cube-socks.html", "name": "Rubik's Cube Socks" },
{ "@type": "ListItem", "position": 6, "url": "https://justgoodcuber.com/rubiks-cube-magnet.html", "name": "I Fell For U Rubik's Cube Magnet" }
]
}
</script>
</head> </head>
<body> <body>
<!-- GRID LINES (fixed vertical rails flanking content) -->
<div class="site-grid" aria-hidden="true">
<span class="vline" style="left:7%"></span>
<span class="vline" style="left:93%"></span>
</div>
<!-- NAV --> <!-- NAV -->
<nav> <nav>
<a href="#home" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a> <a href="#home" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links"> <ul class="nav-links">
<li><a href="#home" data-section="home">Home</a></li> <li><a href="#home" data-section="home">Home</a></li>
<li><a href="#shop" data-section="shop">Shop</a></li>
<li><a href="#about" data-section="about">About</a></li> <li><a href="#about" data-section="about">About</a></li>
<li><a href="#faq" data-section="faq">FAQ</a></li> <li><a href="#faq" data-section="faq">FAQ</a></li>
<li><a href="#contact" data-section="contact">Contact</a></li> <li><a href="#contact" data-section="contact">Contact</a></li>
@@ -29,7 +62,7 @@
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube"> <a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg> <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a> </a>
<a href="#" class="nav-store-btn" id="storeNavBtn">Store ↗</a> <a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu"> <button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span> <span></span><span></span><span></span>
</button> </button>
@@ -39,49 +72,24 @@
<!-- MOBILE MENU --> <!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu"> <div class="mobile-menu" id="mobileMenu">
<a href="#home" class="mobile-nav-link">Home</a> <a href="#home" class="mobile-nav-link">Home</a>
<a href="#shop" class="mobile-nav-link">Shop</a>
<a href="#about" class="mobile-nav-link">About</a> <a href="#about" class="mobile-nav-link">About</a>
<a href="#faq" class="mobile-nav-link">FAQ</a> <a href="#faq" class="mobile-nav-link">FAQ</a>
<a href="#contact" class="mobile-nav-link">Contact</a> <a href="#contact" class="mobile-nav-link">Contact</a>
<a href="#" class="store-link mobile-nav-link" id="storeMobileBtn">Store ↗</a> <a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- STORE OVERLAY -->
<div class="store-overlay" id="storeOverlay">
<div class="store-modal-card">
<div class="store-modal-top">
<div class="store-modal-url">justgoodcubing.printify.me/products</div>
<button class="modal-close" id="storeClose">&#x2715; Close</button>
</div>
<div class="store-modal-body">
<div>
<svg width="56" height="56" viewBox="0 0 24 24" fill="none" stroke="var(--orange)" stroke-width="1.5" stroke-linecap="square">
<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/>
<polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/>
</svg>
</div>
<h2 class="store-modal-title">JustGoodCubing Store</h2>
<p class="store-modal-desc">Our store opens in a new tab. Come back here when you are done browsing or checking out.</p>
<a href="https://justgoodcubing.printify.me/products" target="_blank" rel="noopener" class="store-launch-btn">Open Store &#x2197;</a>
</div>
</div>
</div> </div>
<!-- ═══ HOME ═══ --> <!-- ═══ HOME ═══ -->
<section id="home"> <section id="home">
<div class="bubbles" aria-hidden="true">
<div class="bubble" style="width:480px;height:480px;top:-8%;right:12%;--dur:18s;--delay:-4s;--x1:60px;--y1:-80px;--x2:-50px;--y2:40px;--x3:30px;--y3:70px"></div>
<div class="bubble" style="width:280px;height:280px;bottom:10%;left:5%;--dur:13s;--delay:-9s;--x1:-40px;--y1:60px;--x2:50px;--y2:-30px;--x3:-20px;--y3:-50px"></div>
<div class="bubble" style="width:200px;height:200px;top:40%;right:30%;--dur:16s;--delay:-2s;--x1:30px;--y1:-40px;--x2:-60px;--y2:20px;--x3:40px;--y3:30px"></div>
</div>
<div class="hero-eyebrow">Premium Speedcubing Gear</div> <div class="hero-eyebrow">Premium Speedcubing Gear</div>
<h1 class="hero-title"> <h1 class="hero-title">
JUST<br/> JUST<br/>
<span class="line-orange">GOOD</span><br/> <span class="line-orange">GOOD</span><br/>
<span class="line-green">CUBING.</span> CUBING.
</h1> </h1>
<p class="hero-sub">JustGoodCubing creates premium cubing-inspired accessories and merchandise designed for speedcubers and puzzle enthusiasts. From mugs and magnets to apparel and everyday essentials, our products let you show your passion for cubing beyond the solve. Every design is made with the cubing community in mind, combining quality, creativity, and a love for the hobby.</p> <p class="hero-sub">Premium cubing-inspired accessories and merchandise — designed for the community, by a cuber.</p>
<div class="hero-cta-row"> <div class="hero-cta-row">
<a href="#" class="btn-primary" id="heroCta">Shop the Store ↗</a> <a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="btn-primary" id="heroCta">Shop the Store ↗</a>
<a href="#about" class="btn-secondary">Learn More</a> <a href="#about" class="btn-secondary">Learn More</a>
</div> </div>
<div class="cube-deco"> <div class="cube-deco">
@@ -123,47 +131,83 @@
</section> </section>
<div class="h-rule"></div> <div class="h-rule"></div>
<!-- ═══ MARQUEE ═══ -->
<div class="marquee-strip" aria-hidden="true"> <!-- ═══ SHOP ═══ -->
<div class="marquee-inner"> <section id="shop">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="section-label reveal">The Collection</div>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <h2 class="section-title reveal">Rubik's Cube<br/>Merch.</h2>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="shop-grid reveal">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <a href="rubiks-cube-mug-auf-victim.html" class="product-card">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="product-card-img"><img src="images/ceramic-mug-11oz-15oz.jpg" alt="AUF VICTIM +2 Rubik's Cube mug" loading="lazy"/></div>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="product-card-body">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-cat">Rubik's Cube Mug</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-name">AUF VICTIM +2 Mug</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-link">View Product →</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> </div>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> </a>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <a href="rubiks-cube-mug-3-hours-later.html" class="product-card">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="product-card-img"><img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug" loading="lazy"/></div>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <div class="product-card-body">
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-cat">Rubik's Cube Mug</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-name">3 Hours Later Mug</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> <span class="product-card-link">View Product →</span>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> </div>
<span class="marquee-item">JUST GOOD CUBING</span><span class="marquee-sep">·</span> </a>
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-solver-t-shirt.html" class="product-card">
<div class="product-card-img"><img src="images/rubik-cube-solver-t-shirt-one-more-solve-3-hours-later-puzzle-lover-tee.jpg" alt="Rubik's Cube solver t-shirt One More Solve" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">One More Solve T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div> </div>
</div> </section>
<div class="h-rule"></div> <div class="h-rule"></div>
<!-- ═══ ABOUT ═══ --> <!-- ═══ ABOUT ═══ -->
<section id="about"> <section id="about">
<div class="bubbles" aria-hidden="true">
<div class="bubble" style="width:420px;height:420px;top:5%;right:2%;--dur:20s;--delay:-6s;--x1:-50px;--y1:70px;--x2:60px;--y2:-40px;--x3:-30px;--y3:-60px"></div>
<div class="bubble" style="width:260px;height:260px;bottom:15%;left:0%;--dur:14s;--delay:-11s;--x1:50px;--y1:-50px;--x2:-40px;--y2:60px;--x3:30px;--y3:20px"></div>
</div>
<div class="section-label reveal">The Story</div> <div class="section-label reveal">The Story</div>
<h2 class="section-title reveal">Hi, I'm Anshveer<br/>Kang.</h2> <h2 class="section-title reveal">Hi, I'm Anshveer<br/>Kang.</h2>
<div class="about-bio-grid"> <div class="about-bio-grid">
<div class="about-bio-text reveal"> <div class="about-bio-text reveal">
<p>I've been a speedcuber for over 6 years. What started as a simple hobby during the COVID-19 pandemic turned into a passion I've integrated into every aspect of my life. I'm an official <span class="text-orange">World Cube Association Organizer</span> and the founder of this store.</p> <p>I've been a speedcuber for over 6 years. What started as a simple hobby during the COVID-19 pandemic turned into a passion I've integrated into every aspect of my life. I'm an official <span class="text-orange">World Cube Association Organizer</span> and the founder of this store.</p>
<p>The cube has challenged me to grow, introduced me to an incredible community, and shown me how a simple hobby can have a lasting impact. That's why I started JustGoodCubing.</p> <p>The cube has challenged me to grow, introduced me to an incredible community, and shown me how a simple hobby can have a lasting impact. That's why I started JustGoodCubing — to create products that celebrate the creativity and community behind the sport.</p>
<p>My goal is to create unique cubing products that celebrate the creativity, excitement, and community behind the sport — helping share that experience with cubers and non-cubers alike. Whether you're chasing your next personal best or simply appreciate the art of the cube, I hope these products inspire the same excitement that speedcubing has given me.</p>
</div> </div>
<div class="about-cards-col"> <div class="about-cards-col">
<div class="clay-card orange-accent reveal"> <div class="clay-card orange-accent reveal">
@@ -175,17 +219,17 @@
<div class="card-title">WCA Organizer</div> <div class="card-title">WCA Organizer</div>
<div class="card-body">Officially recognized by the World Cube Association — running real competitions, building the community from the ground up.</div> <div class="card-body">Officially recognized by the World Cube Association — running real competitions, building the community from the ground up.</div>
</div> </div>
<div class="clay-card green-accent reveal"> <div class="clay-card reveal">
<div class="card-icon green"> <div class="card-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="#4a4640" stroke-width="2" stroke-linecap="square"> <svg viewBox="0 0 24 24" fill="none" stroke="#4a4640" stroke-width="2" stroke-linecap="square">
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/> <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
</svg> </svg>
</div> </div>
<div class="card-title">6+ Years Cubing</div> <div class="card-title">6+ Years Cubing</div>
<div class="card-body">From pandemic hobby to obsession. Every product in this store comes from genuine experience and love for the sport.</div> <div class="card-body">From pandemic hobby to obsession. Every product comes from genuine experience and love for the sport.</div>
</div> </div>
<div class="clay-card purple-accent reveal"> <div class="clay-card reveal">
<div class="card-icon purple"> <div class="card-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="#4a4640" stroke-width="2" stroke-linecap="square"> <svg viewBox="0 0 24 24" fill="none" stroke="#4a4640" stroke-width="2" stroke-linecap="square">
<circle cx="12" cy="12" r="10"/><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/> <circle cx="12" cy="12" r="10"/><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg> </svg>
@@ -206,41 +250,14 @@
<div class="about-photo-label">In the Zone</div> <div class="about-photo-label">In the Zone</div>
</div> </div>
</div> </div>
</section> </section>
<div class="h-rule"></div> <div class="h-rule"></div>
<!-- ═══ MARQUEE 2 ═══ -->
<div class="marquee-strip light" aria-hidden="true">
<div class="marquee-inner rtl slow">
<span class="marquee-item">PRECISION BUILT</span><span class="marquee-sep">·</span>
<span class="marquee-item">WCA LEGAL</span><span class="marquee-sep">·</span>
<span class="marquee-item">COMP READY</span><span class="marquee-sep">·</span>
<span class="marquee-item">BUILT DIFFERENT</span><span class="marquee-sep">·</span>
<span class="marquee-item">SPEED WITHOUT COMPROMISE</span><span class="marquee-sep">·</span>
<span class="marquee-item">TURN FASTER</span><span class="marquee-sep">·</span>
<span class="marquee-item">PREMIUM MATERIALS</span><span class="marquee-sep">·</span>
<span class="marquee-item">DESIGNED TO WIN</span><span class="marquee-sep">·</span>
<span class="marquee-item">PRECISION BUILT</span><span class="marquee-sep">·</span>
<span class="marquee-item">WCA LEGAL</span><span class="marquee-sep">·</span>
<span class="marquee-item">COMP READY</span><span class="marquee-sep">·</span>
<span class="marquee-item">BUILT DIFFERENT</span><span class="marquee-sep">·</span>
<span class="marquee-item">SPEED WITHOUT COMPROMISE</span><span class="marquee-sep">·</span>
<span class="marquee-item">TURN FASTER</span><span class="marquee-sep">·</span>
<span class="marquee-item">PREMIUM MATERIALS</span><span class="marquee-sep">·</span>
<span class="marquee-item">DESIGNED TO WIN</span><span class="marquee-sep">·</span>
</div>
</div>
<div class="h-rule"></div>
<!-- ═══ FAQ ═══ --> <!-- ═══ FAQ ═══ -->
<section id="faq"> <section id="faq">
<div class="bubbles" aria-hidden="true"> <div class="section-label reveal">FAQ</div>
<div class="bubble" style="width:380px;height:380px;top:10%;left:-4%;--dur:17s;--delay:-3s;--x1:70px;--y1:-50px;--x2:-40px;--y2:60px;--x3:50px;--y3:-30px"></div> <h2 class="section-title reveal">Common<br/>Questions.</h2>
<div class="bubble" style="width:220px;height:220px;bottom:20%;right:5%;--dur:12s;--delay:-8s;--x1:-50px;--y1:40px;--x2:60px;--y2:-50px;--x3:-30px;--y3:40px"></div>
</div>
<div class="section-label reveal">Got Questions?</div>
<h2 class="section-title reveal">We've got<br/>answers.</h2>
<div class="faq-grid"> <div class="faq-grid">
@@ -281,7 +298,7 @@
<span><span class="faq-card-num">05</span><span class="faq-card-title">Can I return my order?</span></span> <span><span class="faq-card-num">05</span><span class="faq-card-title">Can I return my order?</span></span>
<svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="square"><polyline points="6 9 12 15 18 9"/></svg> <svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="square"><polyline points="6 9 12 15 18 9"/></svg>
</button> </button>
<div class="faq-card-a">Because every item is made to order, we cannot accept returns or exchanges for incorrect sizes. However, if there's a manufacturing defect or printing error, we'll definitely assist you.</div> <div class="faq-card-a">Because every item is made to order, we cannot accept returns or exchanges for incorrect sizes. However, if there's a manufacturing defect or printing error, we'll assist you.</div>
</div> </div>
<div class="faq-card reveal"> <div class="faq-card reveal">
@@ -312,37 +329,11 @@
</section> </section>
<div class="h-rule"></div> <div class="h-rule"></div>
<!-- ═══ MARQUEE 3 ═══ -->
<div class="marquee-strip" aria-hidden="true">
<div class="marquee-inner fast">
<span class="marquee-item">SHOP NOW</span><span class="marquee-sep">·</span>
<span class="marquee-item">CUBE HARDER</span><span class="marquee-sep">·</span>
<span class="marquee-item">LEVEL UP</span><span class="marquee-sep">·</span>
<span class="marquee-item">GET FASTER</span><span class="marquee-sep">·</span>
<span class="marquee-item">STAY SHARP</span><span class="marquee-sep">·</span>
<span class="marquee-item">SOLVE MORE</span><span class="marquee-sep">·</span>
<span class="marquee-item">JOIN THE COMMUNITY</span><span class="marquee-sep">·</span>
<span class="marquee-item">SUB-10 MENTALITY</span><span class="marquee-sep">·</span>
<span class="marquee-item">SHOP NOW</span><span class="marquee-sep">·</span>
<span class="marquee-item">CUBE HARDER</span><span class="marquee-sep">·</span>
<span class="marquee-item">LEVEL UP</span><span class="marquee-sep">·</span>
<span class="marquee-item">GET FASTER</span><span class="marquee-sep">·</span>
<span class="marquee-item">STAY SHARP</span><span class="marquee-sep">·</span>
<span class="marquee-item">SOLVE MORE</span><span class="marquee-sep">·</span>
<span class="marquee-item">JOIN THE COMMUNITY</span><span class="marquee-sep">·</span>
<span class="marquee-item">SUB-10 MENTALITY</span><span class="marquee-sep">·</span>
</div>
</div>
<div class="h-rule"></div>
<!-- ═══ CONTACT ═══ --> <!-- ═══ CONTACT ═══ -->
<section id="contact"> <section id="contact">
<div class="bubbles" aria-hidden="true">
<div class="bubble" style="width:440px;height:440px;top:-5%;left:-2%;--dur:19s;--delay:-5s;--x1:55px;--y1:70px;--x2:-45px;--y2:-50px;--x3:60px;--y3:30px"></div>
<div class="bubble" style="width:240px;height:240px;bottom:8%;right:4%;--dur:13s;--delay:-10s;--x1:-60px;--y1:-40px;--x2:40px;--y2:55px;--x3:-30px;--y3:-30px"></div>
</div>
<div class="section-label reveal">Get in Touch</div> <div class="section-label reveal">Get in Touch</div>
<h2 class="section-title reveal">We actually<br/>reply fast.</h2> <h2 class="section-title reveal">Let's Talk.</h2>
<div class="contact-grid"> <div class="contact-grid">
<div class="contact-info reveal"> <div class="contact-info reveal">
@@ -376,7 +367,7 @@
</div> </div>
<div> <div>
<div class="contact-block-title">YouTube</div> <div class="contact-block-title">YouTube</div>
<div class="contact-block-value"><a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" style="color:var(--white);text-decoration:none;">@JustGoodCuber</a></div> <div class="contact-block-value"><a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="contact-link">@JustGoodCuber</a></div>
</div> </div>
</div> </div>
<div class="contact-block"> <div class="contact-block">
@@ -388,34 +379,20 @@
</div> </div>
<div> <div>
<div class="contact-block-title">Shipping</div> <div class="contact-block-title">Shipping</div>
<div class="contact-block-value">Ships worldwide — rates calculated at checkout.</div> <div class="contact-block-value">Ships worldwide — rates at checkout.</div>
</div> </div>
</div> </div>
</div> </div>
<form class="contact-form reveal" id="contactForm">
<div>
<label class="form-label" for="nameInput">Your Name</label>
<input class="form-input" id="nameInput" type="text" placeholder="Your name"/>
</div>
<div>
<label class="form-label" for="emailInput">Email</label>
<input class="form-input" id="emailInput" type="email" placeholder="your@email.com"/>
</div>
<div>
<label class="form-label" for="msgInput">Message</label>
<textarea class="form-textarea" id="msgInput" placeholder="Cube recommendations, order help, collab — let's talk."></textarea>
</div>
<button type="submit" class="form-submit">Send It ↗</button>
</form>
</div> </div>
</section> </section>
<div class="h-rule"></div> <div class="h-rule"></div>
<!-- FOOTER --> <!-- FOOTER -->
<footer> <footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div> <div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 JustGoodCubing. All rights reserved.</div> <div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer> </footer>
<script src="index.js" defer></script> <script src="index.js" defer></script>

View File

@@ -1,15 +1,4 @@
// Store
const overlay = document.getElementById('storeOverlay');
function openStore(e) { if (e) e.preventDefault(); overlay.classList.add('active'); document.body.style.overflow = 'hidden'; }
function closeStore() { overlay.classList.remove('active'); document.body.style.overflow = ''; }
document.getElementById('storeNavBtn').addEventListener('click', openStore);
document.getElementById('storeMobileBtn').addEventListener('click', openStore);
document.getElementById('heroCta').addEventListener('click', openStore);
document.getElementById('storeClose').addEventListener('click', closeStore);
overlay.addEventListener('click', function (e) { if (e.target === overlay) closeStore(); });
document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && overlay.classList.contains('active')) closeStore(); });
// Hamburger // Hamburger
const hamburger = document.getElementById('hamburger'), mobileMenu = document.getElementById('mobileMenu'); const hamburger = document.getElementById('hamburger'), mobileMenu = document.getElementById('mobileMenu');
hamburger.addEventListener('click', function () { hamburger.classList.toggle('open'); mobileMenu.classList.toggle('open'); }); hamburger.addEventListener('click', function () { hamburger.classList.toggle('open'); mobileMenu.classList.toggle('open'); });
@@ -25,7 +14,7 @@ document.querySelectorAll('.reveal').forEach(function (el) { observer.observe(el
const secObs = new IntersectionObserver(function (entries) { const secObs = new IntersectionObserver(function (entries) {
entries.forEach(function (e) { if (e.isIntersecting) { const id = e.target.id; document.querySelectorAll('.nav-links a[data-section]').forEach(function (a) { a.classList.toggle('active', a.dataset.section === id); }); } }); entries.forEach(function (e) { if (e.isIntersecting) { const id = e.target.id; document.querySelectorAll('.nav-links a[data-section]').forEach(function (a) { a.classList.toggle('active', a.dataset.section === id); }); } });
}, { rootMargin: '-40% 0px -55% 0px' }); }, { rootMargin: '-40% 0px -55% 0px' });
['home', 'about', 'faq', 'contact'].forEach(function (id) { const el = document.getElementById(id); if (el) secObs.observe(el); }); ['home', 'shop', 'about', 'faq', 'contact'].forEach(function (id) { const el = document.getElementById(id); if (el) secObs.observe(el); });
// FAQ card accordion // FAQ card accordion
document.querySelectorAll('.faq-card-q').forEach(function (btn) { document.querySelectorAll('.faq-card-q').forEach(function (btn) {
@@ -38,14 +27,20 @@ document.querySelectorAll('.faq-card-q').forEach(function (btn) {
}); });
// Contact form // Contact form
document.getElementById('contactForm').addEventListener('submit', function (e) { const contactForm = document.getElementById('contactForm');
e.preventDefault(); if (contactForm) {
const btn = this.querySelector('.form-submit'); contactForm.addEventListener('submit', function (e) {
btn.textContent = 'Message Sent ✓'; btn.style.background = 'var(--green)'; btn.style.borderColor = 'var(--green)'; btn.style.color = '#000'; e.preventDefault();
setTimeout(function () { btn.textContent = 'Send It ↗'; btn.style.background = btn.style.borderColor = btn.style.color = ''; }, 3000); const btn = this.querySelector('.form-submit');
}); btn.textContent = 'Message Sent ✓'; btn.style.background = 'var(--green)'; btn.style.borderColor = 'var(--green)'; btn.style.color = '#000';
setTimeout(function () { btn.textContent = 'Send It ↗'; btn.style.background = btn.style.borderColor = btn.style.color = ''; }, 3000);
});
}
// 3D cube float // 3D cube float
const cube = document.getElementById('cube3d'); let t = 0; const cube = document.getElementById('cube3d');
function floatCube() { t += 0.012; cube.style.marginTop = (Math.sin(t) * 12) + 'px'; requestAnimationFrame(floatCube); } if (cube) {
floatCube(); let t = 0;
function floatCube() { t += 0.012; cube.style.marginTop = (Math.sin(t) * 12) + 'px'; requestAnimationFrame(floatCube); }
floatCube();
}

4
robots.txt Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://justgoodcuber.com/sitemap.xml

166
rubiks-cube-magnet.html Normal file
View File

@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>I Fell For U Rubik's Cube Magnet | Cute Cubing Gift JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="The 'I Fell For U' Rubik's Cube magnet — a cute, colorful cubing-themed gift for puzzle lovers and speedcubers alike. Made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-magnet.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="I Fell For U Rubik's Cube Magnet | Cute Cubing Gift"/>
<meta property="og:description" content="A cute, colorful Rubik's Cube-themed magnet gift for puzzle lovers and speedcubers alike."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-magnet.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/magnets.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="I Fell For U Rubik's Cube Magnet"/>
<meta name="twitter:description" content="A cute, colorful Rubik's Cube-themed magnet gift for puzzle lovers and speedcubers alike."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/magnets.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "I Fell For U Rubik's Cube Magnet", "item": "https://justgoodcuber.com/rubiks-cube-magnet.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "I Fell For U Rubik's Cube Magnet",
"image": "https://justgoodcuber.com/images/magnets.jpg",
"description": "A cute, colorful Rubik's Cube-themed magnet gift for puzzle lovers and speedcubers alike.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube Magnet"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / I Fell For U Magnet</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet with colorful cube sticker design" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube Magnet</div>
<h1 class="product-title">I Fell For U Rubik's Cube Magnet</h1>
<div class="product-price" id="productPrice">$5.13</div>
<div class="product-description" id="productDescription">
<p>Add a little cubing humor to your collection with this <strong>Cubing U Perm Magnet</strong>, designed for speedcubers, cube solvers, and twisty puzzle fans. Featuring the clever phrase <strong>"I Fell for U"</strong> alongside a U Perm-inspired cube design, this speedcubing magnet turns one of the most recognizable PLL cases into a fun cubing joke.</p>
<p>Perfect for refrigerators, lockers, magnetic boards, or cubing setups, this <strong>Cubing U Perm Magnet</strong> is an easy way to show your love for speedcubing and Rubik's Cube-inspired puzzles. Whether you're practicing PLL algorithms, chasing faster solve times, or recovering from one too many U Perms, this magnet adds personality and cubing culture to any magnetic surface.</p>
<p>Looking for a unique <strong>gift for a speedcuber</strong>? This cubing magnet makes a fun gift for competitive cubers, PLL learners, cube collectors, and puzzle enthusiasts. The "I Fell for U" cubing pun makes it especially perfect for anyone who understands the struggle—and satisfaction—of recognizing and executing a U Perm.</p>
<h3>Product Features</h3>
<ul>
<li>Features an "I Fell for U" cubing pun and U Perm-inspired design</li>
<li>Designed for speedcubers, cube solvers, and puzzle enthusiasts</li>
<li>Great for refrigerators, lockers, magnetic boards, and cubing setups</li>
<li>Fun speedcubing accessory and cubing collectible</li>
<li>Eye-catching cube-inspired artwork</li>
<li>Perfect as a gift for speedcubers and Rubik's Cube fans</li>
</ul>
<p>Whether you're a beginner learning PLL or a competitive cuber working toward your next personal best, this <strong>Cubing U Perm Magnet</strong> is a fun way to bring speedcubing humor into your everyday space.</p>
</div>
<a href="https://shop.justgoodcuber.com/product/29583603" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-mug-3-hours-later.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">3 Hours Later Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

View File

@@ -0,0 +1,152 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>3 Hours Later Rubik's Cube Mug | Funny Cubing Meme Coffee Mug JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="The '3 Hours Later' Rubik's Cube mug — a hilarious cubing meme mug for anyone who's ever lost hours (and cubes) to a solve. Ceramic, 11oz/15oz, made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-mug-3-hours-later.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="3 Hours Later Rubik's Cube Mug | Funny Cubing Meme Coffee Mug"/>
<meta property="og:description" content="A hilarious cubing meme mug for anyone who's ever lost hours (and cubes) to a solve."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-mug-3-hours-later.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/ceramic-mug-2-11oz-15oz.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="3 Hours Later Rubik's Cube Mug"/>
<meta name="twitter:description" content="A hilarious cubing meme mug for anyone who's ever lost hours (and cubes) to a solve."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/ceramic-mug-2-11oz-15oz.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "3 Hours Later Rubik's Cube Mug", "item": "https://justgoodcuber.com/rubiks-cube-mug-3-hours-later.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "3 Hours Later Rubik's Cube Mug",
"image": "https://justgoodcuber.com/images/ceramic-mug-2-11oz-15oz.jpg",
"description": "A hilarious cubing meme ceramic mug for anyone who's ever lost hours (and cubes) to a solve.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube Mug"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / 3 Hours Later Mug</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug funny cubing meme coffee mug" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube Mug</div>
<h1 class="product-title">3 Hours Later Rubik's Cube Mug</h1>
<div class="product-price" id="productPrice">$11.47</div>
<div class="product-description" id="productDescription">Warm-up with a nice cuppa out of this customized ceramic coffee mug. Personalize it with cool designs, photos or logos to make that "aaahhh!" moment even better. Its BPA and Lead-free, microwave & dishwasher-safe, and made of white, durable ceramic in 11-ounce and 15-ounce sizes. Thanks to the advanced printing tech, your designs come to life with incredibly vivid colors the perfect gift for coffee, tea, and chocolate lovers.
.: These mugs are made with durable white ceramic so that your prints can stand out.
.: Available in two sizes: 11oz (0.33 l) and 15oz (0.44 l)
.: All mugs feature a comfortable C-handle and a shiny finish so that they're both easy to use and great to look at.
.: Drink confidently on a daily basis as all mugs are lead and BPA-free.</div>
<a href="https://shop.justgoodcuber.com/product/29583489" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-mug-auf-victim.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-11oz-15oz.jpg" alt="AUF VICTIM +2 Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">AUF VICTIM +2 Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

View File

@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>AUF VICTIM +2 Rubik's Cube Mug | Funny Speedcuber Coffee Mug JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="Shop the AUF VICTIM +2 Rubik's Cube mug — a funny speedcubing-inspired coffee mug for cubers who know the pain of a +2 penalty. Ceramic, 11oz/15oz, made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-mug-auf-victim.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="AUF VICTIM +2 Rubik's Cube Mug | Funny Speedcuber Coffee Mug"/>
<meta property="og:description" content="A funny speedcubing-inspired coffee mug for cubers who know the pain of a +2 penalty. Ceramic, 11oz/15oz, made to order."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-mug-auf-victim.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/ceramic-mug-11oz-15oz.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="AUF VICTIM +2 Rubik's Cube Mug"/>
<meta name="twitter:description" content="A funny speedcubing-inspired coffee mug for cubers who know the pain of a +2 penalty."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/ceramic-mug-11oz-15oz.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "AUF VICTIM +2 Rubik's Cube Mug", "item": "https://justgoodcuber.com/rubiks-cube-mug-auf-victim.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "AUF VICTIM +2 Rubik's Cube Mug",
"image": "https://justgoodcuber.com/images/ceramic-mug-11oz-15oz.jpg",
"description": "A funny speedcubing-inspired ceramic coffee mug for cubers who know the pain of a +2 penalty.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube Mug"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / AUF VICTIM +2 Mug</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/ceramic-mug-11oz-15oz.jpg" alt="AUF VICTIM +2 Rubik's Cube mug funny speedcubing coffee mug" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube Mug</div>
<h1 class="product-title">AUF VICTIM +2 Rubik's Cube Mug</h1>
<div class="product-price" id="productPrice">$11.99</div>
<div class="product-description" id="productDescription">
<p>Start your day with coffee, cubing, and one final adjustment with this <strong>AUF Mug</strong>, designed for speedcubers, cube solvers, and twisty puzzle enthusiasts. Inspired by the classic speedcubing term <strong>AUF (Adjust U Face)</strong>, this cubing mug is a fun way to represent one of the most recognizable parts of completing a solve.</p>
<p>Whether you're practicing algorithms, reviewing PLL cases, watching speedcubing videos, or preparing for your next cubing competition, this <strong>AUF Mug</strong> brings speedcubing culture to every sip. The durable white ceramic helps the cubing-inspired artwork stand out with vivid colors, while the comfortable C-handle and glossy finish make it perfect for everyday use.</p>
<p>Looking for a unique <strong>gift for a speedcuber</strong>? This AUF cubing mug makes a great gift for competitive cubers, CFOP users, puzzle enthusiasts, and Rubik's Cube fans. From beginners learning their first algorithms to experienced speedcubers chasing faster personal bests, the AUF design is a cubing reference every solver can appreciate.</p>
<h3>Product Features</h3>
<ul>
<li>Durable white ceramic for a clean, vibrant AUF design</li>
<li>Available in 11 oz (0.33 L) and 15 oz (0.44 L) sizes</li>
<li>Comfortable C-handle for easy everyday use</li>
<li>Glossy finish for a smooth, polished appearance</li>
<li>Advanced printing technology for bright and vivid colors</li>
<li>Microwave and dishwasher safe</li>
<li>Lead-free and BPA-free</li>
<li>Perfect for speedcubers, cube solvers, and puzzle enthusiasts</li>
</ul>
<p>Whether you're enjoying coffee before a competition, drinking tea during a long practice session, or searching for the perfect <strong>speedcubing gift</strong>, this <strong>AUF Mug</strong> is the perfect final adjustment to your cubing collection.</p>
</div>
<a href="https://shop.justgoodcuber.com/product/29583514" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-mug-3-hours-later.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">3 Hours Later Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

170
rubiks-cube-socks.html Normal file
View File

@@ -0,0 +1,170 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Rubik's Cube Socks | Cubing-Inspired Crew Socks JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="Step up your cubing style with our Rubik's Cube socks — vibrant, all-over sublimation print crew socks made for cubers and puzzle fans. Made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-socks.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="Rubik's Cube Socks | Cubing-Inspired Crew Socks"/>
<meta property="og:description" content="Vibrant, all-over sublimation print Rubik's Cube socks made for cubers and puzzle fans."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-socks.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/sublimation-socks.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="Rubik's Cube Socks"/>
<meta name="twitter:description" content="Vibrant, all-over sublimation print Rubik's Cube socks made for cubers and puzzle fans."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/sublimation-socks.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "Rubik's Cube Socks", "item": "https://justgoodcuber.com/rubiks-cube-socks.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Rubik's Cube Socks",
"image": "https://justgoodcuber.com/images/sublimation-socks.jpg",
"description": "Vibrant, all-over sublimation print Rubik's Cube-inspired crew socks made for cubers and puzzle fans.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube Socks"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / Rubik's Cube Socks</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks with colorful cube sublimation print" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube Socks</div>
<h1 class="product-title">Rubik's Cube Socks</h1>
<div class="product-price" id="productPrice">$13.67</div>
<div class="product-description" id="productDescription">
<p>Bring speedcubing style to every step with these comfortable <strong>Speedcuber Socks</strong>, designed for competitive cubers, cube solvers, and puzzle enthusiasts. Featuring a vibrant cubing-inspired sublimated print, these <strong>speedcubing socks</strong> are a fun way to represent your passion for solving cubes wherever you go.</p>
<p>Whether you're attending a speedcubing competition, practicing algorithms at home, hanging out with fellow cubers, or looking for a unique addition to your everyday outfit, these <strong>Speedcuber Socks</strong> combine comfort with bold cubing style. The cushioned bottoms provide added comfort, while the stretchy polyester and spandex blend creates a flexible unisex fit.</p>
<p>Looking for a unique <strong>gift for a speedcuber</strong>? These cubing socks make a great gift for competitive speedcubers, cube enthusiasts, puzzle lovers, and anyone constantly chasing their next personal best. Available in three sizes, they're perfect for cubers who want to show off their love for speedcubing from head to toe.</p>
<h3>Product Features</h3>
<ul>
<li>95% polyester and 5% spandex for a comfortable, flexible fit</li>
<li>Vibrant sublimated speedcubing-inspired print</li>
<li>Available in three different sizes</li>
<li>Unisex regular fit</li>
<li>Ribbed tube construction</li>
<li>Cushioned bottoms for added everyday comfort</li>
<li>Perfect for speedcubing competitions, cubing practice, and casual wear</li>
</ul>
<h3>Please Note</h3>
<p>These socks are printed using a flat sublimation method. Slight color discrepancies may be visible along the side seams, particularly with darker designs.</p>
<p>Whether you're solving at home, competing for a new personal best, or searching for the perfect <strong>speedcubing gift</strong>, these <strong>Speedcuber Socks</strong> add cubing culture and personality to every outfit.</p>
</div>
<a href="https://shop.justgoodcuber.com/product/29583595" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-mug-auf-victim.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-11oz-15oz.jpg" alt="AUF VICTIM +2 Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">AUF VICTIM +2 Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

View File

@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Rubik's Cube Solver T-Shirt | One More Solve Cubing Tee JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="The One More Solve Rubik's Cube t-shirt — front shows a focused solver tackling a huge cube, back shows the 3-hours-later meltdown. Made for cube lovers and puzzle enthusiasts."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-solver-t-shirt.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="Rubik's Cube Solver T-Shirt | One More Solve Cubing Tee"/>
<meta property="og:description" content="Front: One More Solve. Back: 3 Hours Later. A Rubik's Cube t-shirt for puzzle lovers who get the joke."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-solver-t-shirt.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/rubik-cube-solver-t-shirt-one-more-solve-3-hours-later-puzzle-lover-tee.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="Rubik's Cube Solver T-Shirt | One More Solve Cubing Tee"/>
<meta name="twitter:description" content="Front: One More Solve. Back: 3 Hours Later. A Rubik's Cube t-shirt for puzzle lovers who get the joke."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/rubik-cube-solver-t-shirt-one-more-solve-3-hours-later-puzzle-lover-tee.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "Rubik's Cube Solver T-Shirt", "item": "https://justgoodcuber.com/rubiks-cube-solver-t-shirt.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Rubik's Cube Solver T-Shirt One More Solve",
"image": "https://justgoodcuber.com/images/rubik-cube-solver-t-shirt-one-more-solve-3-hours-later-puzzle-lover-tee.jpg",
"description": "A Rubik's Cube t-shirt for puzzle solvers and cube lovers. Front shows 'One More Solve', back shows the 3-hours-later meltdown. Breathable midweight cotton with a tag-free neck.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube T-Shirt"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / Rubik's Cube Solver T-Shirt</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/rubik-cube-solver-t-shirt-one-more-solve-3-hours-later-puzzle-lover-tee.jpg" alt="Rubik's Cube solver t-shirt — front shows One More Solve, back shows 3 hours later meltdown" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube T-Shirt</div>
<h1 class="product-title">Rubik's Cube Solver T-Shirt One More Solve</h1>
<div class="product-price" id="productPrice">$39.82</div>
<div class="product-description" id="productDescription">
<p>This <strong>Rubik's Cube solver t-shirt</strong> carries a quiet, nerdy joy — the kind that comes from getting lost in a brain-bending challenge and laughing at yourself when it goes sideways. The front artwork shows a focused solver tackling a huge, colorful cube with the caption <strong>"One More Solve."</strong> The back flips the mood with a comic meltdown, scattered cube pieces, and the line <strong>"3 Hours Later…"</strong> — a playful nod to every obsessive solving session that stretched way past bedtime.</p>
<p>Whether you're a speedcuber working through algorithms, a casual <strong>Rubik's Cube enthusiast</strong> who just loves the puzzle, or someone who's lost entire evenings to a stubborn scramble, this <strong>puzzle lover tee</strong> tells your story without saying a word. Breathable midweight cotton and a tag-free neck keep you comfortable through hours of solving, and the clean white canvas makes the bright cube colors pop.</p>
<p>Looking for a funny <strong>Rubik's Cube gift</strong>, a great <strong>cubing shirt</strong>, or just a tee that cube people will instantly recognize? This <strong>One More Solve t-shirt</strong> is perfect for cube meetups, puzzle nights, casual hangouts, cubing competitions, and anywhere you want a shirt that gets the joke before you say a word. It's made for cubers who scramble through algorithms, laugh at their own mistakes, and celebrate every tiny victory along the way.</p>
<h3>Product Features</h3>
<ul>
<li>Front print: <strong>"One More Solve"</strong> with focused cube-solver artwork</li>
<li>Back print: <strong>"3 Hours Later…"</strong> comic meltdown with scattered cube pieces</li>
<li>100% cotton solid colors (medium 6.1 oz/yd²) — breathable, durable fabric</li>
<li>Twill tape at neck and shoulders for stability and reduced stretching</li>
<li>Tubular knit without side seams for a smooth, waste-reducing fit</li>
<li>Double-needle topstitching on seams for long-lasting durability</li>
<li>Tag-free neck label and small Champion "C" logo on left sleeve</li>
<li>Perfect for speedcubers, puzzle enthusiasts, cube solvers, and Rubik's Cube fans</li>
</ul>
<h3>Care Instructions</h3>
<ul>
<li>Machine wash cold (max 30°C or 90°F)</li>
<li>Do not bleach</li>
<li>Do not tumble dry</li>
<li>Iron, steam, or dry on low heat</li>
<li>Do not dry clean</li>
</ul>
</div>
<a href="https://shop.justgoodcuber.com/product/29794491 target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-mug-3-hours-later.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">3 Hours Later Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

181
rubiks-cube-tshirt-dnf.html Normal file
View File

@@ -0,0 +1,181 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>DNF Rubik's Cube T-Shirt | Funny Speedcubing Shirt JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="The DNF (Did Not Finish) Rubik's Cube t-shirt — a relaxed, funny design for speedcubers who know the vibes matter more than the time. Soft cotton tee, made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-tshirt-dnf.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="DNF Rubik's Cube T-Shirt | Funny Speedcubing Shirt"/>
<meta property="og:description" content="A relaxed, funny Rubik's Cube design for speedcubers who know the vibes matter more than the time."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-tshirt-dnf.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="DNF Rubik's Cube T-Shirt"/>
<meta name="twitter:description" content="A relaxed, funny Rubik's Cube design for speedcubers who know the vibes matter more than the time."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "DNF Rubik's Cube T-Shirt", "item": "https://justgoodcuber.com/rubiks-cube-tshirt-dnf.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "DNF Rubik's Cube T-Shirt",
"image": "https://justgoodcuber.com/images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg",
"description": "A relaxed, funny Rubik's Cube-inspired t-shirt for speedcubers who know the vibes matter more than the time.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube T-Shirt"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / DNF T-Shirt</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Did Not Finish Rubik's Cube t-shirt with relaxing cube design" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube T-Shirt</div>
<h1 class="product-title">DNF Rubik's Cube T-Shirt</h1>
<div class="product-price" id="productPrice">$41.32</div>
<div class="product-description" id="productDescription">
<p>Embrace the solve—even when it doesn't count—with this <strong>DNF Cubing Shirt</strong>, designed for speedcubers, cube solvers, and puzzle lovers who know that sometimes the vibes matter more than the timer. Featuring a relaxed cube-inspired character and the phrase <strong>"DNF: Did Not Finish, But the Vibes Were Good,"</strong> this funny speedcubing shirt brings cubing humor to competitions, practice sessions, and everyday wear.</p>
<p>The back of this <strong>DNF Cubing Shirt</strong> features a playful speedcuber checklist: Solve, Sub-5, World Record, and finally <strong>"Survive and DNF."</strong> It's a cubing joke every competitive solver can appreciate after a missed move, forgotten algorithm, or unfortunate DNF. Whether you're chasing personal bests or just enjoying the speedcubing community, this shirt is made for cubers who can laugh at the occasional failed solve.</p>
<p>Looking for a unique <strong>gift for a speedcuber</strong>? This funny cubing T-shirt makes a great gift for competitive cubers, Rubik's Cube fans, puzzle enthusiasts, and anyone familiar with the pain of seeing DNF on a scorecard. Wear it to a cubing competition, cube meetup, practice session, or anywhere you want to represent speedcubing culture.</p>
<p>Made with comfortable mid-weight cotton and a classic fit, this <strong>DNF Cubing Shirt</strong> is designed for durable everyday wear. The tag-free neckline and tubular knit construction create a clean, comfortable feel, while the cube-inspired artwork keeps the cubing humor front and center.</p>
<h3>Product Features</h3>
<ul>
<li>Funny "DNF: Did Not Finish, But the Vibes Were Good" cubing design</li>
<li>100% cotton solid colors; heather blends are 60% cotton and 40% polyester</li>
<li>Medium-weight fabric (6.1 oz/yd²) for comfortable, durable wear</li>
<li>Classic fit with a tag-free neck label</li>
<li>Twill tape helps maintain structure and stability</li>
<li>Tubular knit construction with no side seams</li>
<li>Double-needle topstitching for a clean, long-lasting finish</li>
<li>Subtle Champion "C" logo on the left sleeve</li>
<li>Perfect for speedcubing competitions, cube meetups, practice sessions, and casual wear</li>
<li>EU REACH compliant and made in Honduras</li>
</ul>
<h3>Care Instructions</h3>
<ul>
<li>Machine wash cold (max 30°C / 90°F)</li>
<li>Do not bleach</li>
<li>Do not tumble dry</li>
<li>Iron or steam on low heat</li>
<li>Do not dry clean</li>
</ul>
<p>Whether you missed the timer, forgot the algorithm, or simply had a solve that didn't go as planned, this <strong>DNF Cubing Shirt</strong> is a funny reminder that every speedcuber gets a DNF eventually. The solve may not count—but the vibes were good.</p>
</div>
<a href="https://shop.justgoodcuber.com/product/29583510" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-tshirt-speedcuber.html" class="product-card">
<div class="product-card-img"><img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">Speedcuber T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-mug-auf-victim.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-11oz-15oz.jpg" alt="AUF VICTIM +2 Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">AUF VICTIM +2 Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

View File

@@ -0,0 +1,173 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Speedcuber Rubik's Cube T-Shirt | Speedcubing Puzzle Shirt JustGoodCubing</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<meta name="description" content="Show off your speedcubing pride with the Speedcuber Rubik's Cube t-shirt — a bold puzzle cube graphic tee for cubers and puzzle enthusiasts. Made to order."/>
<link rel="canonical" href="https://justgoodcuber.com/rubiks-cube-tshirt-speedcuber.html"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="JustGoodCubing"/>
<meta property="og:title" content="Speedcuber Rubik's Cube T-Shirt | Speedcubing Puzzle Shirt"/>
<meta property="og:description" content="A bold Rubik's Cube graphic tee for cubers and puzzle enthusiasts."/>
<meta property="og:url" content="https://justgoodcuber.com/rubiks-cube-tshirt-speedcuber.html"/>
<meta property="og:image" content="https://justgoodcuber.com/images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="Speedcuber Rubik's Cube T-Shirt"/>
<meta name="twitter:description" content="A bold Rubik's Cube graphic tee for cubers and puzzle enthusiasts."/>
<meta name="twitter:image" content="https://justgoodcuber.com/images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700;900&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://justgoodcuber.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shop", "item": "https://justgoodcuber.com/#shop" },
{ "@type": "ListItem", "position": 3, "name": "Speedcuber Rubik's Cube T-Shirt", "item": "https://justgoodcuber.com/rubiks-cube-tshirt-speedcuber.html" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Speedcuber Rubik's Cube T-Shirt",
"image": "https://justgoodcuber.com/images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg",
"description": "A bold Rubik's Cube-inspired graphic tee for cubers and puzzle enthusiasts.",
"brand": { "@type": "Brand", "name": "JustGoodCubing" },
"category": "Rubik's Cube T-Shirt"
}
</script>
</head>
<body>
<!-- NAV -->
<nav>
<a href="index.html" class="logo"><img src="images/logo.png" alt="JustGoodCubing"/></a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#shop">Shop</a></li>
<li><a href="index.html#about">About</a></li>
<li><a href="index.html#faq">FAQ</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
<div class="nav-right">
<a href="https://www.youtube.com/@JustGoodCuber" target="_blank" rel="noopener" class="nav-yt-link" aria-label="YouTube">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="nav-store-btn">Store ↗</a>
<button class="hamburger" id="hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="index.html#home" class="mobile-nav-link">Home</a>
<a href="index.html#shop" class="mobile-nav-link">Shop</a>
<a href="index.html#about" class="mobile-nav-link">About</a>
<a href="index.html#faq" class="mobile-nav-link">FAQ</a>
<a href="index.html#contact" class="mobile-nav-link">Contact</a>
<a href="https://shop.justgoodcuber.com/products" target="_blank" rel="noopener" class="store-link mobile-nav-link">Store ↗</a>
</div>
<!-- ═══ PRODUCT ═══ -->
<section id="product">
<div class="breadcrumb reveal"><a href="index.html">Home</a> / <a href="index.html#shop">Shop</a> / Speedcuber T-Shirt</div>
<div class="product-grid reveal">
<div class="product-image-wrap">
<img src="images/speedcuber-rubik-cube-t-shirt-speedcubing-puzzle-shirt.jpg" alt="Speedcuber Rubik's Cube t-shirt with colorful puzzle cube graphic" loading="lazy"/>
</div>
<div class="product-info">
<div class="section-label">Rubik's Cube T-Shirt</div>
<h1 class="product-title">Speedcuber Rubik's Cube T-Shirt</h1>
<div class="product-price" id="productPrice">$29.55</div>
<div class="product-description" id="productDescription">
<p>Show your passion for speedcubing with this lightweight, breathable <strong>Speedcuber T-shirt</strong>, made for competitive cubers, puzzle enthusiasts, and anyone obsessed with faster solve times. Featuring a bold, colorful cube graphic with energetic brushstrokes, this speedcubing shirt captures the motion and excitement of a cube mid-solve. The crisp "SPEEDCUBER" design puts your passion front and center.</p>
<p>Whether you're practicing algorithms, chasing a new personal best, attending a cubing competition, streaming a solve, or hanging out with fellow cubers, this <strong>Speedcuber T-shirt</strong> combines comfort, style, and cubing culture. The soft ring-spun cotton feels breathable during long solving sessions, while the clean tubular knit construction keeps the design looking sharp.</p>
<p>A great <strong>speedcubing T-shirt, cubing shirt, or gift for speedcubers</strong>, this tee is perfect for cube solvers of all skill levels. From beginners learning their first algorithms to competitive cubers working toward faster averages, it's an easy way to represent the speedcubing community wherever you go.</p>
<h3>Product Features</h3>
<ul>
<li>100% ring-spun cotton (lightweight 153 g/m²) for a soft, breathable feel</li>
<li>Tubular knit construction with no side seams for a smooth, clean fit</li>
<li>Ribbed crew neckline and shoulder tape help retain shape and prevent stretching</li>
<li>Vibrant DTG and DTF printed speedcubing artwork</li>
<li>OEKO-TEX® STANDARD 100 certified</li>
<li>Designed for cubing practice, competitions, casual wear, and speedcubing fans</li>
</ul>
<h3>Care Instructions</h3>
<ul>
<li>Machine wash cold (max 30°C or 90°F) with similar colors</li>
<li>Tumble dry on low heat</li>
<li>Iron, steam, or dry on low heat</li>
<li>Do not bleach</li>
<li>Do not dry clean</li>
</ul>
</div>
<a href="https://shop.justgoodcuber.com/product/29583657" target="_blank" rel="noopener" class="btn-primary">Buy on the Store ↗</a>
</div>
</div>
</section>
<div class="h-rule"></div>
<!-- ═══ RELATED ═══ -->
<section id="related">
<div class="section-label reveal">You Might Also Like</div>
<h2 class="section-title reveal">More Cubing<br/>Gear.</h2>
<div class="related-grid reveal">
<a href="rubiks-cube-tshirt-dnf.html" class="product-card">
<div class="product-card-img"><img src="images/dnf-rubik-relaxing-cube-shirt-t-shirt.jpg" alt="DNF Rubik's Cube t-shirt" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube T-Shirt</span>
<span class="product-card-name">DNF T-Shirt</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-mug-3-hours-later.html" class="product-card">
<div class="product-card-img"><img src="images/ceramic-mug-2-11oz-15oz.jpg" alt="3 Hours Later Rubik's Cube mug" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Mug</span>
<span class="product-card-name">3 Hours Later Mug</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-socks.html" class="product-card">
<div class="product-card-img"><img src="images/sublimation-socks.jpg" alt="Rubik's Cube socks" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Socks</span>
<span class="product-card-name">Rubik's Cube Socks</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
<a href="rubiks-cube-magnet.html" class="product-card">
<div class="product-card-img"><img src="images/magnets.jpg" alt="I Fell For U Rubik's Cube magnet" loading="lazy"/></div>
<div class="product-card-body">
<span class="product-card-cat">Rubik's Cube Magnet</span>
<span class="product-card-name">I Fell For U Magnet</span>
<span class="product-card-link">View Product →</span>
</div>
</a>
</div>
</section>
<div class="h-rule"></div>
<!-- FOOTER -->
<footer>
<div class="footer-logo"><img src="images/logo.png" alt="JustGoodCubing"/></div>
<div class="footer-copy">© 2026 Anshveer Kang. All rights reserved.</div>
</footer>
<script src="index.js" defer></script>
</body>
</html>

43
sitemap.xml Normal file
View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://justgoodcuber.com/</loc>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-mug-auf-victim.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-mug-3-hours-later.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-tshirt-dnf.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-tshirt-speedcuber.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-socks.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-magnet.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://justgoodcuber.com/rubiks-cube-solver-t-shirt.html</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

View File

@@ -3,16 +3,10 @@
--bg: #ede9e1; --bg: #ede9e1;
--surface: #e4e0d8; --surface: #e4e0d8;
--surface2: #d8d4cb; --surface2: #d8d4cb;
--border: #b8b4aa; --border: #c8c4bb;
--border-heavy: #8a867c; --border-heavy: #8a867c;
--orange: #c94b0f; --orange: #c94b0f;
--orange-glow: #c94b0f22; --orange-glow: #c94b0f18;
--green: #3a6b30;
--green-dim: #3a6b3018;
--purple: #5c3d8f;
--purple-dim: #5c3d8f18;
--blue: #1a5fa8;
--blue-dim: #1a5fa818;
--white: #1a1815; --white: #1a1815;
--muted: #6b6760; --muted: #6b6760;
} }
@@ -25,50 +19,32 @@ body {
font-family: 'Space Grotesk', sans-serif; font-family: 'Space Grotesk', sans-serif;
overflow-x: hidden; overflow-x: hidden;
} }
body::before {
content: '';
position: fixed; inset: 0; z-index: 0; pointer-events: none;
background: url('/grain.png') repeat;
opacity: 0.42;
}
nav, section, footer, .marquee-strip { position: relative; z-index: 1; }
/* ── SITE GRID LINES ── */ /* ── HORIZONTAL RULES ── */
.site-grid {
position: fixed; inset: 0; z-index: 50; pointer-events: none;
}
.site-grid .vline {
position: absolute; top: 0; bottom: 0; width: 1px;
background: rgba(26,24,21,0.14);
}
/* ── HORIZONTAL RULES (in-flow, intersect the fixed vertical lines) ── */
.h-rule { .h-rule {
width: 100%; height: 1px; width: 100%; height: 1px;
background: rgba(26,24,21,0.16); background: rgba(26,24,21,0.14);
position: relative; z-index: 1; position: relative; z-index: 1;
flex-shrink: 0;
} }
.marquee-strip { border-top: none; border-bottom: none; }
/* ── NAV ── */ /* ── NAV ── */
nav { nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100; position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: grid; grid-template-columns: 1fr auto 1fr; display: grid; grid-template-columns: 1fr auto 1fr;
align-items: center; align-items: center;
padding: 0 max(10%, 1.5rem); height: 52px; padding: 0 clamp(1.5rem, 8vw, 5rem); height: 56px;
background: rgba(237,233,225,0.95); backdrop-filter: blur(20px); background: rgba(237,233,225,0.96); backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(26,24,21,0.12); border-bottom: 1px solid rgba(26,24,21,0.1);
} }
.logo { display:flex; align-items:center; text-decoration:none; } .logo { display:flex; align-items:center; text-decoration:none; }
.logo img { height:36px; width:auto; display:block; } .logo img { height:34px; width:auto; display:block; }
.nav-links { display:flex; gap:0; list-style:none; justify-content:center; } .nav-links { display:flex; gap:0; list-style:none; justify-content:center; }
.nav-links a { .nav-links a {
display:block; padding:6px 18px; font-size:0.72rem; font-weight:500; display:block; padding:6px 18px; font-size:0.72rem; font-weight:500;
letter-spacing:0.1em; text-transform:uppercase; color:var(--muted); letter-spacing:0.1em; text-transform:uppercase; color:var(--muted);
text-decoration:none; border:none; background:none; transition:color 0.18s; text-decoration:none; border:none; background:none; transition:color 0.18s;
} }
.nav-links a:hover, .nav-links a.active { color:var(--white); background:none; border:none; } .nav-links a:hover, .nav-links a.active { color:var(--white); }
.nav-right { .nav-right {
display:flex; align-items:center; gap:0.5rem; justify-content:flex-end; display:flex; align-items:center; gap:0.5rem; justify-content:flex-end;
@@ -79,7 +55,7 @@ nav {
} }
.nav-yt-link:hover { color:#c00; } .nav-yt-link:hover { color:#c00; }
.nav-store-btn { .nav-store-btn {
display:inline-block; padding:5px 14px; display:inline-block; padding:6px 16px;
font-family:'Space Mono',monospace; font-size:0.7rem; font-weight:700; font-family:'Space Mono',monospace; font-size:0.7rem; font-weight:700;
letter-spacing:0.06em; text-transform:uppercase; letter-spacing:0.06em; text-transform:uppercase;
color:var(--orange); border:1px solid var(--orange); color:var(--orange); border:1px solid var(--orange);
@@ -94,135 +70,61 @@ nav {
.hamburger.open span:nth-child(3) { transform:translateY(-5.5px) rotate(-45deg); } .hamburger.open span:nth-child(3) { transform:translateY(-5.5px) rotate(-45deg); }
.mobile-menu { .mobile-menu {
display:none; position:fixed; top:52px; left:0; right:0; display:none; position:fixed; top:56px; left:0; right:0;
background:rgba(237,233,225,0.98); backdrop-filter:blur(18px); background:rgba(237,233,225,0.98); backdrop-filter:blur(18px);
border-bottom:1px solid rgba(26,24,21,0.12); z-index:99; border-bottom:1px solid rgba(26,24,21,0.1); z-index:99;
padding:1.5rem clamp(1rem,5vw,2.5rem); flex-direction:column; gap:6px; padding:1.2rem clamp(1rem,5vw,2.5rem); flex-direction:column; gap:4px;
} }
.mobile-menu.open { display:flex; } .mobile-menu.open { display:flex; }
.mobile-menu a { .mobile-menu a {
display:block; padding:12px 16px; font-size:0.85rem; font-weight:600; display:block; padding:12px 16px; font-size:0.85rem; font-weight:600;
text-transform:uppercase; letter-spacing:0.08em; color:var(--muted); text-transform:uppercase; letter-spacing:0.08em; color:var(--muted);
text-decoration:none; border-bottom:1px solid rgba(26,24,21,0.08); transition:color 0.18s; text-decoration:none; border-bottom:1px solid rgba(26,24,21,0.07); transition:color 0.18s;
} }
.mobile-menu a:hover { color:var(--white); } .mobile-menu a:hover { color:var(--white); }
.mobile-menu a.store-link { color:var(--orange); border:none; } .mobile-menu a.store-link { color:var(--orange); border:none; }
/* ── MARQUEE ── */ /* ── SECTIONS ── */
.marquee-strip {
width:100%; overflow:hidden; background:#1a1815;
padding:13px 0;
}
.marquee-inner {
display:flex; width:max-content;
animation: marquee 28s linear infinite;
}
.marquee-inner:hover { animation-play-state: paused; }
.marquee-item {
font-family:'Space Mono',monospace; font-size:0.72rem;
letter-spacing:0.18em; text-transform:uppercase;
color:rgba(237,233,225,0.6); white-space:nowrap; padding:0 0.5rem;
}
.marquee-sep {
font-family:'Space Mono',monospace; font-size:0.72rem;
color:var(--orange); padding:0 1rem; line-height:1;
display:flex; align-items:center;
}
@keyframes marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
@keyframes marquee-rtl {
0% { transform: translateX(-50%); }
100% { transform: translateX(0); }
}
.marquee-inner.rtl { animation-name: marquee-rtl; }
.marquee-inner.fast { animation-duration: 18s; }
.marquee-inner.slow { animation-duration: 40s; }
.marquee-strip.light {
background: var(--surface2);
}
.marquee-strip.light .marquee-item {
color: rgba(26,24,21,0.55);
}
.marquee-strip.light .marquee-sep {
color: var(--orange);
}
/* ── FLOATING BUBBLES ── */
.bubbles {
position: absolute; inset: 0; pointer-events: none; z-index: 0; overflow: hidden;
}
.bubble {
position: absolute; border-radius: 50%;
background: radial-gradient(circle, rgba(201,75,15,0.22) 0%, rgba(201,75,15,0.07) 45%, transparent 70%);
filter: blur(60px);
will-change: transform;
animation: floatBubble var(--dur,15s) ease-in-out var(--delay,0s) infinite;
}
@keyframes floatBubble {
0%,100% { transform: translate(0,0) scale(1); }
25% { transform: translate(var(--x1,40px),var(--y1,-60px)) scale(1.1); }
55% { transform: translate(var(--x2,-35px),var(--y2,30px)) scale(0.92); }
80% { transform: translate(var(--x3,20px),var(--y3,50px)) scale(1.05); }
}
/* ── SECTION BACKGROUNDS ── */
section { section {
min-height: 100vh; padding: clamp(5rem,10vh,8rem) clamp(1.5rem,8vw,5rem) clamp(4rem,8vh,6rem);
padding: clamp(6rem,12vh,10rem) max(11%, 1.5rem) clamp(4rem,8vh,6rem); position: relative;
position: relative; overflow: hidden;
} }
#home { #home {
background: radial-gradient(ellipse 70% 55% at 65% 50%, rgba(201,75,15,0.08) 0%, transparent 70%), min-height: 100vh;
var(--bg); display:flex; flex-direction:column; justify-content:center; align-items:flex-start;
display:flex; flex-direction:column; justify-content:center; align-items:flex-start; overflow:hidden; overflow: hidden;
} }
#about { #about { background: var(--surface); }
background: var(--surface); #faq { background: var(--bg); }
display:flex; flex-direction:column; justify-content:center; #contact { background: var(--surface); }
}
#faq {
background: var(--bg);
display:flex; flex-direction:column; justify-content:center;
}
#contact {
background: var(--surface);
display:flex; flex-direction:column; justify-content:center;
}
/* ── SECTION LABELS & TITLES ── */ /* ── SECTION LABELS & TITLES ── */
.section-label { .section-label {
font-family:'Space Mono',monospace; font-size:0.75rem; letter-spacing:0.2em; font-family:'Space Mono',monospace; font-size:0.72rem; letter-spacing:0.2em;
text-transform:uppercase; margin-bottom:1.2rem; color:var(--orange); text-transform:uppercase; margin-bottom:1rem; color:var(--orange);
} }
.section-title { .section-title {
font-size:clamp(2rem,5vw,4rem); font-weight:900; letter-spacing:-0.03em; font-size:clamp(2rem,5vw,3.6rem); font-weight:900; letter-spacing:-0.03em;
line-height:1; margin-bottom:3rem; color:var(--white); line-height:1.05; margin-bottom:3rem; color:var(--white);
} }
/* ── HERO TEXT ── */ /* ── HERO TEXT ── */
.hero-eyebrow { .hero-eyebrow {
font-family:'Space Mono',monospace; font-size:0.8rem; letter-spacing:0.2em; font-family:'Space Mono',monospace; font-size:0.78rem; letter-spacing:0.2em;
text-transform:uppercase; color:var(--orange); margin-bottom:1.5rem; text-transform:uppercase; color:var(--orange); margin-bottom:1.5rem;
opacity:0; transform:translateY(20px); animation:fadeUp 0.7s 0.2s forwards; opacity:0; transform:translateY(20px); animation:fadeUp 0.7s 0.2s forwards;
} }
.hero-title { .hero-title {
font-size:clamp(3rem,9vw,8rem); font-weight:900; line-height:0.9; font-size:clamp(3.2rem,9vw,8rem); font-weight:900; line-height:0.92;
letter-spacing:-0.03em; margin-bottom:2rem; letter-spacing:-0.03em; margin-bottom:2rem;
opacity:0; transform:translateY(30px); animation:fadeUp 0.8s 0.35s forwards; opacity:0; transform:translateY(30px); animation:fadeUp 0.8s 0.35s forwards;
} }
.hero-title .line-orange { color:var(--orange); } .hero-title .line-orange { color:var(--orange); }
.hero-title .line-green { color:#1a1815; }
.hero-sub { .hero-sub {
font-size:clamp(1rem,2vw,1.25rem); color:rgba(26,24,21,0.6); font-size:clamp(1rem,1.8vw,1.15rem); color:rgba(26,24,21,0.55);
max-width:520px; line-height:1.6; margin-bottom:3rem; max-width:440px; line-height:1.65; margin-bottom:2.8rem;
opacity:0; transform:translateY(20px); animation:fadeUp 0.8s 0.5s forwards; opacity:0; transform:translateY(20px); animation:fadeUp 0.8s 0.5s forwards;
} }
.hero-cta-row { .hero-cta-row {
@@ -232,19 +134,19 @@ section {
/* ── BUTTONS ── */ /* ── BUTTONS ── */
.btn-primary { .btn-primary {
display:inline-block; padding:16px 36px; background:var(--orange); color:#fff; display:inline-block; padding:15px 34px; background:var(--orange); color:#fff;
font-family:'Space Mono',monospace; font-weight:700; font-size:0.9rem; font-family:'Space Mono',monospace; font-weight:700; font-size:0.85rem;
letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--orange); letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--orange);
cursor:pointer; text-decoration:none; transition:all 0.18s; cursor:pointer; text-decoration:none; transition:all 0.18s;
} }
.btn-primary:hover { background:transparent; color:var(--orange); transform:translateY(-2px); } .btn-primary:hover { background:transparent; color:var(--orange); }
.btn-secondary { .btn-secondary {
display:inline-block; padding:16px 36px; background:transparent; color:var(--white); display:inline-block; padding:15px 34px; background:transparent; color:var(--white);
font-family:'Space Mono',monospace; font-weight:700; font-size:0.9rem; font-family:'Space Mono',monospace; font-weight:700; font-size:0.85rem;
letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--border-heavy); letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--border-heavy);
cursor:pointer; text-decoration:none; transition:all 0.18s; cursor:pointer; text-decoration:none; transition:all 0.18s;
} }
.btn-secondary:hover { border-color:var(--white); transform:translateY(-2px); } .btn-secondary:hover { border-color:var(--white); }
/* ── 3D CUBE ── */ /* ── 3D CUBE ── */
.cube-deco { .cube-deco {
@@ -252,7 +154,7 @@ section {
display:flex; align-items:center; justify-content:center; display:flex; align-items:center; justify-content:center;
opacity:0; animation:fadeUp 1s 0.9s forwards; pointer-events:none; opacity:0; animation:fadeUp 1s 0.9s forwards; pointer-events:none;
} }
.cube-scene { width:clamp(160px,22vw,260px); height:clamp(160px,22vw,260px); perspective:700px; } .cube-scene { width:clamp(150px,20vw,240px); height:clamp(150px,20vw,240px); perspective:700px; }
.cube-3d { .cube-3d {
width:100%; height:100%; position:relative; transform-style:preserve-3d; width:100%; height:100%; position:relative; transform-style:preserve-3d;
animation:rotateCube3d 10s linear infinite; animation:rotateCube3d 10s linear infinite;
@@ -266,242 +168,237 @@ section {
display:grid; grid-template-columns:repeat(3,1fr); grid-template-rows:repeat(3,1fr); display:grid; grid-template-columns:repeat(3,1fr); grid-template-rows:repeat(3,1fr);
gap:4px; padding:4px; border:1px solid rgba(0,0,0,0.08); gap:4px; padding:4px; border:1px solid rgba(0,0,0,0.08);
} }
.cube-face.front { transform:translateZ(clamp(80px,11vw,130px)); } .cube-face.front { transform:translateZ(clamp(75px,10vw,120px)); }
.cube-face.back { transform:rotateY(180deg) translateZ(clamp(80px,11vw,130px)); } .cube-face.back { transform:rotateY(180deg) translateZ(clamp(75px,10vw,120px)); }
.cube-face.right { transform:rotateY(90deg) translateZ(clamp(80px,11vw,130px)); } .cube-face.right { transform:rotateY(90deg) translateZ(clamp(75px,10vw,120px)); }
.cube-face.left { transform:rotateY(-90deg) translateZ(clamp(80px,11vw,130px)); } .cube-face.left { transform:rotateY(-90deg) translateZ(clamp(75px,10vw,120px)); }
.cube-face.top { transform:rotateX(90deg) translateZ(clamp(80px,11vw,130px)); } .cube-face.top { transform:rotateX(90deg) translateZ(clamp(75px,10vw,120px)); }
.cube-face.bottom { transform:rotateX(-90deg) translateZ(clamp(80px,11vw,130px)); } .cube-face.bottom { transform:rotateX(-90deg) translateZ(clamp(75px,10vw,120px)); }
.cubie { border:1px solid rgba(0,0,0,0.35); } .cubie { border:1px solid rgba(0,0,0,0.3); }
/* ── CARDS ── */ /* ── SHOP GRID (home + related products) ── */
.clay-card { #shop { background: var(--bg); }
background: rgba(228,224,216,0.85); .shop-grid, .related-grid {
border:1px solid var(--border); padding:2rem; position:relative; overflow:hidden; display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:1.4rem;
transition:transform 0.22s, border-color 0.22s;
} }
.clay-card::before { .product-card {
content:''; position:absolute; inset:0; display:flex; flex-direction:column; background:var(--surface);
background:linear-gradient(135deg,rgba(255,255,255,0.25) 0%,transparent 60%); border:1px solid var(--border); text-decoration:none; color:inherit;
pointer-events:none; transition:transform 0.2s, border-color 0.2s;
} }
.clay-card:hover { transform:translateY(-4px); border-color:var(--border-heavy); } .product-card:hover { transform:translateY(-4px); border-color:var(--border-heavy); }
.clay-card.orange-accent { border-top:2px solid var(--orange); } .product-card-img { width:100%; aspect-ratio:1/1; overflow:hidden; background:#fff; border-bottom:1px solid var(--border); }
.clay-card.green-accent { border-top:2px solid var(--border-heavy); } .product-card-img img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.3s; }
.clay-card.purple-accent { border-top:2px solid var(--border-heavy); } .product-card:hover .product-card-img img { transform:scale(1.04); }
.clay-card.blue-accent { border-top:2px solid var(--border-heavy); } .product-card-body { padding:1rem 1.1rem 1.2rem; display:flex; flex-direction:column; gap:0.3rem; }
.product-card-cat { font-family:'Space Mono',monospace; font-size:0.65rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--orange); }
.product-card-name { font-size:1rem; font-weight:700; color:var(--white); line-height:1.3; }
.product-card-link { font-family:'Space Mono',monospace; font-size:0.72rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--muted); margin-top:0.4rem; }
.card-icon { /* ── PRODUCT PAGE ── */
width:52px; height:52px; display:flex; align-items:center; justify-content:center; .breadcrumb {
margin-bottom:1.2rem; border:1px solid; font-family:'Space Mono',monospace; font-size:0.72rem; letter-spacing:0.04em;
color:var(--muted); margin-bottom:2.4rem; text-transform:uppercase;
} }
.card-icon svg { width:26px; height:26px; } .breadcrumb a { color:var(--muted); text-decoration:none; }
.card-icon.orange { background:var(--orange-glow); border-color:var(--orange); } .breadcrumb a:hover { color:var(--orange); }
.card-icon.green { background:rgba(0,0,0,0.06); border-color:var(--border-heavy); } .product-grid {
.card-icon.purple { background:rgba(0,0,0,0.06); border-color:var(--border-heavy); } display:grid; grid-template-columns:1fr 1fr; gap:3.5rem; align-items:start;
.card-icon.blue { background:rgba(0,0,0,0.06); border-color:var(--border-heavy); }
.card-title { font-size:1.1rem; font-weight:700; margin-bottom:0.6rem; color:var(--white); }
.card-body { font-size:0.92rem; line-height:1.65; color:var(--muted); }
/* ── STAT ROW ── */
.stat-row {
display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
gap:1px; overflow:hidden; background:transparent;
} }
.stat-cell { background:rgba(17,17,19,0.85); padding:1.8rem; text-align:center; } @media(max-width:820px){ .product-grid { grid-template-columns:1fr; gap:2rem; } }
.stat-number { .product-image-wrap {
font-family:'Space Mono',monospace; font-size:clamp(2rem,4vw,3rem); background:#fff; border:1px solid var(--border); overflow:hidden;
font-weight:700; color:var(--orange); line-height:1; margin-bottom:0.4rem;
} }
.stat-label { font-size:0.78rem; letter-spacing:0.1em; text-transform:uppercase; color:rgba(232,224,255,0.5); } .product-image-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.product-info { display:flex; flex-direction:column; }
.product-title {
font-size:clamp(1.8rem,3.6vw,2.6rem); font-weight:900; letter-spacing:-0.02em;
line-height:1.1; margin:0.6rem 0 1rem; color:var(--white);
}
.product-price {
font-family:'Space Mono',monospace; font-size:1.1rem; font-weight:700;
color:var(--white); min-height:1.6rem; margin-bottom:1.2rem;
}
.product-description {
font-size:1rem; line-height:1.75; color:rgba(26,24,21,0.68);
min-height:2rem; margin-bottom:2rem;
}
.product-description p { margin:0 0 1.1rem; }
.product-description p:last-child { margin-bottom:0; }
.product-description h3 {
font-size:1rem; font-weight:700; color:var(--ink,#1a1815);
margin:1.6rem 0 0.7rem; text-transform:uppercase; letter-spacing:0.03em;
}
.product-description ul {
list-style:disc; margin:0 0 1.1rem; padding-left:1.4rem;
}
.product-description li { margin-bottom:0.4rem; }
.product-description li:last-child { margin-bottom:0; }
.product-description strong { color:var(--ink,#1a1815); font-weight:700; }
.product-info .btn-primary { align-self:flex-start; }
/* ── ABOUT BIO ── */ /* ── ABOUT ── */
.about-bio-grid { .about-bio-grid {
display:grid; grid-template-columns:1fr 1fr; gap:3rem; align-items:start; display:grid; grid-template-columns:1fr 1fr; gap:3rem; align-items:start;
} }
@media(max-width:820px){ .about-bio-grid { grid-template-columns:1fr; } } @media(max-width:820px){ .about-bio-grid { grid-template-columns:1fr; } }
.about-bio-text { display:flex; flex-direction:column; gap:1.4rem; } .about-bio-text { display:flex; flex-direction:column; gap:1.4rem; }
.about-bio-text p { font-size:clamp(0.97rem,1.5vw,1.1rem); color:rgba(26,24,21,0.7); line-height:1.75; } .about-bio-text p { font-size:clamp(0.97rem,1.5vw,1.1rem); color:rgba(26,24,21,0.68); line-height:1.8; }
.about-cards-col { display:flex; flex-direction:column; gap:1.2rem; } .about-cards-col { display:flex; flex-direction:column; gap:1rem; }
.text-orange { color:var(--orange); } .text-orange { color:var(--orange); }
/* ── CARDS ── */
.clay-card {
background: rgba(237,233,225,0.7);
border:1px solid var(--border); padding:1.6rem; position:relative;
transition:transform 0.2s, border-color 0.2s;
}
.clay-card:hover { transform:translateY(-3px); border-color:var(--border-heavy); }
.clay-card.orange-accent { border-top:2px solid var(--orange); }
.card-icon {
width:44px; height:44px; display:flex; align-items:center; justify-content:center;
margin-bottom:1rem; border:1px solid var(--border);
}
.card-icon svg { width:22px; height:22px; }
.card-icon.orange { background:var(--orange-glow); border-color:var(--orange); }
.card-title { font-size:1rem; font-weight:700; margin-bottom:0.5rem; color:var(--white); }
.card-body { font-size:0.9rem; line-height:1.65; color:var(--muted); }
/* ── PHOTO GALLERY ── */ /* ── PHOTO GALLERY ── */
.about-photos { .about-photos {
display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; margin-top:3rem; display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-top:3rem;
} }
@media(max-width:600px){ .about-photos { grid-template-columns:1fr; } } @media(max-width:600px){ .about-photos { grid-template-columns:1fr; } }
.about-photo-wrap { .about-photo-wrap {
position:relative; overflow:hidden; position:relative; overflow:hidden;
border:1px solid var(--border); transition:border-color 0.22s, transform 0.22s; border:1px solid var(--border); transition:border-color 0.22s;
} }
.about-photo-wrap:hover { border-color:var(--orange); transform:translateY(-4px); } .about-photo-wrap:hover { border-color:var(--border-heavy); }
.about-photo-wrap img { .about-photo-wrap img {
width:100%; height:340px; object-fit:cover; display:block; width:100%; height:320px; object-fit:cover; display:block;
filter:saturate(0.8) brightness(0.95); transition:filter 0.3s, transform 0.3s; filter:saturate(0.85) brightness(0.96); transition:filter 0.3s, transform 0.3s;
} }
.about-photo-wrap:hover img { filter:saturate(1) brightness(1); transform:scale(1.03); } .about-photo-wrap:hover img { filter:saturate(1) brightness(1); transform:scale(1.02); }
.about-photo-label { .about-photo-label {
position:absolute; bottom:0; left:0; right:0; position:absolute; bottom:0; left:0; right:0;
padding:0.8rem 1rem; padding:0.7rem 1rem;
background:linear-gradient(transparent, rgba(237,233,225,0.92)); background:linear-gradient(transparent, rgba(237,233,225,0.9));
font-family:'Space Mono',monospace; font-size:0.72rem; letter-spacing:0.12em; font-family:'Space Mono',monospace; font-size:0.7rem; letter-spacing:0.12em;
text-transform:uppercase; color:rgba(26,24,21,0.8); text-transform:uppercase; color:rgba(26,24,21,0.75);
} }
/* ── FAQ CARDS GRID ── */ /* ── FAQ ── */
.faq-grid { .faq-grid {
display:grid; display:grid;
grid-template-columns:repeat(auto-fill, minmax(340px, 1fr)); grid-template-columns:repeat(auto-fill, minmax(340px, 1fr));
gap:1.5rem; gap:1px;
background: var(--border);
border: 1px solid var(--border);
} }
.faq-card { .faq-card {
background:rgba(228,224,216,0.7); background: var(--bg);
border:1px solid var(--border); padding:0; position:relative; overflow:hidden;
padding:0; transition:background 0.18s;
position:relative;
overflow:hidden;
transition:border-color 0.2s, transform 0.2s;
cursor:pointer; cursor:pointer;
} }
.faq-card:hover { border-color:var(--border-heavy); transform:translateY(-3px); } .faq-card:hover { background: var(--surface); }
.faq-card.open { border-color:var(--orange); } .faq-card.open { background: var(--surface); }
.faq-card-q { .faq-card-q {
display:flex; align-items:center; justify-content:space-between; display:flex; align-items:center; justify-content:space-between;
gap:1rem; padding:1.5rem 1.6rem; gap:1rem; padding:1.4rem 1.6rem;
background:none; border:none; width:100%; background:none; border:none; width:100%;
font-family:'Space Grotesk',sans-serif; font-size:1rem; font-weight:700; font-family:'Space Grotesk',sans-serif; font-size:0.97rem; font-weight:700;
color:var(--white); text-align:left; cursor:pointer; color:var(--white); text-align:left; cursor:pointer;
} }
.faq-card.open .faq-card-q { color:var(--orange); } .faq-card.open .faq-card-q { color:var(--orange); }
.faq-card-num { .faq-card-num {
font-family:'Space Mono',monospace; font-size:0.72rem; letter-spacing:0.15em; font-family:'Space Mono',monospace; font-size:0.68rem; letter-spacing:0.15em;
color:var(--muted); flex-shrink:0; margin-bottom:0.3rem; color:var(--muted); flex-shrink:0; margin-bottom:0.25rem;
display:block; display:block;
} }
.faq-card-title { display:block; } .faq-card-title { display:block; }
.faq-chevron { .faq-chevron {
width:20px; height:20px; flex-shrink:0; width:18px; height:18px; flex-shrink:0;
color:var(--muted); transition:transform 0.25s, color 0.2s; color:var(--muted); transition:transform 0.25s, color 0.2s;
} }
.faq-card.open .faq-chevron { transform:rotate(180deg); color:var(--orange); } .faq-card.open .faq-chevron { transform:rotate(180deg); color:var(--orange); }
.faq-card-a { .faq-card-a {
max-height:0; overflow:hidden; max-height:0; overflow:hidden;
font-size:0.92rem; color:var(--muted); line-height:1.7; font-size:0.9rem; color:var(--muted); line-height:1.7;
padding:0 1.6rem; padding:0 1.6rem;
transition:max-height 0.35s ease, padding 0.35s ease; transition:max-height 0.35s ease, padding 0.35s ease;
border-top:0px solid var(--border);
} }
.faq-card.open .faq-card-a { .faq-card.open .faq-card-a {
max-height:300px; padding:0 1.6rem 1.5rem; max-height:300px; padding:0 1.6rem 1.4rem;
border-top:1px solid var(--border); border-top:1px solid var(--border);
} }
.faq-a-link { color:var(--orange); text-decoration:none; } .faq-a-link { color:var(--orange); text-decoration:none; }
.faq-a-link:hover { text-decoration:underline; } .faq-a-link:hover { text-decoration:underline; }
/* ── STORE OVERLAY ── */
.store-overlay {
display:none; position:fixed; inset:0; z-index:200;
background:rgba(0,0,0,0.82); backdrop-filter:blur(8px);
align-items:center; justify-content:center; padding:1rem;
}
.store-overlay.active { display:flex; }
.store-modal-card {
background:var(--surface); border:1px solid var(--orange);
width:100%; max-width:480px; overflow:hidden;
animation:popIn 0.3s cubic-bezier(0.34,1.56,0.64,1);
}
@keyframes popIn { 0%{opacity:0;transform:scale(0.88)} 100%{opacity:1;transform:scale(1)} }
.store-modal-top {
display:flex; align-items:center; gap:1rem; padding:1rem 1.4rem;
border-bottom:1px solid var(--border); background:var(--surface2);
}
.store-modal-url {
flex:1; background:var(--bg); border:1px solid var(--border); padding:7px 18px;
font-family:'Space Mono',monospace; font-size:0.78rem; color:var(--muted);
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.modal-close {
background:transparent; border:1px solid var(--border-heavy); color:var(--white);
font-family:'Space Mono',monospace; font-size:0.8rem; font-weight:700;
padding:6px 18px; cursor:pointer; transition:all 0.18s; white-space:nowrap;
}
.modal-close:hover { border-color:var(--orange); color:var(--orange); }
.store-modal-body {
padding:2.8rem 2.4rem 2.4rem;
display:flex; flex-direction:column; align-items:center; text-align:center; gap:1rem;
}
.store-modal-title { font-family:'Space Mono',monospace; font-weight:700; font-size:1.3rem; color:var(--white); }
.store-modal-desc { font-size:0.95rem; color:var(--muted); line-height:1.6; max-width:320px; }
.store-launch-btn {
display:inline-block; margin-top:0.6rem; padding:16px 40px;
background:var(--orange); color:#000; font-family:'Space Mono',monospace;
font-weight:700; font-size:0.9rem; letter-spacing:0.04em; text-transform:uppercase;
border:1px solid var(--orange); text-decoration:none; transition:all 0.18s;
}
.store-launch-btn:hover { background:transparent; color:var(--orange); }
/* ── CONTACT ── */ /* ── CONTACT ── */
.contact-grid { display:grid; grid-template-columns:1fr 1fr; gap:2rem; align-items:start; } .contact-grid { display:grid; grid-template-columns:1fr 1fr; gap:2rem; align-items:start; }
@media(max-width:720px){ .contact-grid { grid-template-columns:1fr; } } @media(max-width:720px){ .contact-grid { grid-template-columns:1fr; } }
.contact-info { display:flex; flex-direction:column; gap:1.2rem; } .contact-info { display:flex; flex-direction:column; gap:1px; background:var(--border); border:1px solid var(--border); }
.contact-block { .contact-block {
display:flex; align-items:flex-start; gap:1rem; padding:1.4rem; display:flex; align-items:flex-start; gap:1rem; padding:1.3rem 1.4rem;
background:rgba(228,224,216,0.6); border:1px solid var(--border); transition:border-color 0.2s; background:var(--surface); transition:background 0.18s;
} }
.contact-block:hover { border-color:var(--orange); } .contact-block:hover { background:var(--bg); }
.contact-block-icon { .contact-block-icon {
width:40px; height:40px; flex-shrink:0; width:38px; height:38px; flex-shrink:0;
display:flex; align-items:center; justify-content:center; border:1px solid var(--border-heavy); display:flex; align-items:center; justify-content:center; border:1px solid var(--border);
} }
.contact-block-icon svg { width:20px; height:20px; } .contact-block-icon svg { width:18px; height:18px; }
.contact-block-title { .contact-block-title {
font-size:0.78rem; font-family:'Space Mono',monospace; letter-spacing:0.1em; font-size:0.72rem; font-family:'Space Mono',monospace; letter-spacing:0.1em;
text-transform:uppercase; color:var(--muted); margin-bottom:4px; text-transform:uppercase; color:var(--muted); margin-bottom:3px;
} }
.contact-block-value { font-size:0.97rem; font-weight:600; color:var(--white); } .contact-block-value { font-size:0.95rem; font-weight:600; color:var(--white); }
.contact-link { color:var(--white); text-decoration:none; }
.contact-link:hover { color:var(--orange); }
.contact-form { .contact-form {
background:rgba(228,224,216,0.6); border:1px solid var(--border); background:var(--surface); border:1px solid var(--border);
padding:2.2rem; display:flex; flex-direction:column; gap:1.2rem; position:relative; padding:2rem; display:flex; flex-direction:column; gap:1.1rem;
} }
.form-label { .form-label {
font-size:0.78rem; font-family:'Space Mono',monospace; letter-spacing:0.1em; font-size:0.72rem; font-family:'Space Mono',monospace; letter-spacing:0.1em;
text-transform:uppercase; color:var(--muted); display:block; margin-bottom:6px; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:5px;
} }
.form-input, .form-textarea { .form-input, .form-textarea {
width:100%; background:rgba(237,233,225,0.9); border:1px solid var(--border); width:100%; background:var(--bg); border:1px solid var(--border);
padding:12px 16px; color:var(--white); padding:11px 14px; color:var(--white);
font-family:'Space Grotesk',sans-serif; font-size:0.97rem; transition:border-color 0.18s; outline:none; font-family:'Space Grotesk',sans-serif; font-size:0.95rem; transition:border-color 0.18s; outline:none;
} }
.form-input:focus, .form-textarea:focus { border-color:var(--orange); } .form-input:focus, .form-textarea:focus { border-color:var(--orange); }
.form-textarea { resize:vertical; min-height:120px; } .form-textarea { resize:vertical; min-height:110px; }
.form-submit { .form-submit {
display:inline-block; padding:16px 36px; background:var(--orange); color:#fff; display:inline-block; padding:14px 32px; background:var(--orange); color:#fff;
font-family:'Space Mono',monospace; font-weight:700; font-size:0.9rem; font-family:'Space Mono',monospace; font-weight:700; font-size:0.85rem;
letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--orange); letter-spacing:0.04em; text-transform:uppercase; border:1px solid var(--orange);
cursor:pointer; transition:all 0.18s; align-self:flex-start; cursor:pointer; transition:all 0.18s; align-self:flex-start;
} }
.form-submit:hover { background:transparent; color:var(--orange); transform:translateY(-2px); } .form-submit:hover { background:transparent; color:var(--orange); }
/* ── FOOTER ── */ /* ── FOOTER ── */
footer { footer {
border-top:1px solid var(--border); padding:2.5rem clamp(1.5rem,8vw,6rem); border-top:1px solid var(--border); padding:2rem clamp(1.5rem,8vw,5rem);
display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem;
background:var(--surface); background:var(--surface2);
} }
.footer-logo { display:flex; align-items:center; } .footer-logo img { height:30px; width:auto; display:block; }
.footer-logo img { height:32px; width:auto; display:block; } .footer-copy { font-size:0.8rem; color:var(--muted); }
.footer-copy { font-size:0.82rem; color:var(--muted); }
/* ── ANIMATIONS ── */ /* ── ANIMATIONS ── */
.reveal { opacity:0; transform:translateY(36px); transition:opacity 0.7s ease, transform 0.7s ease; } .reveal { opacity:0; transform:translateY(28px); transition:opacity 0.65s ease, transform 0.65s ease; }
.reveal.visible { opacity:1; transform:translateY(0); } .reveal.visible { opacity:1; transform:translateY(0); }
@keyframes fadeUp { to { opacity:1; transform:translateY(0); } } @keyframes fadeUp { to { opacity:1; transform:translateY(0); } }
@@ -512,7 +409,5 @@ footer {
.nav-right .nav-store-btn { display:none; } .nav-right .nav-store-btn { display:none; }
.hamburger { display:flex; } .hamburger { display:flex; }
.cube-deco { display:none; } .cube-deco { display:none; }
.stat-row { grid-template-columns:repeat(2,1fr); }
.faq-grid { grid-template-columns:1fr; } .faq-grid { grid-template-columns:1fr; }
.site-grid span[style*="50%"] { display:none; }
} }