← Nerdworks

Nerdworks Homepage

MNW18 Homepage Nerdworks
Template type: Full-page Gutenberg — ready for /wire-template.

Mockup HTML

Open in New Tab
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Nerdworks — Curated TCG & Tabletop, Online and In-Store</title>
<link rel="stylesheet" href="https://use.typekit.net/vlm3jnu.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@500&display=swap">
<style>
:root {
  /* Palette */
  --anchor: #1f231f;
  --anchor-elevated: #262a26;
  --bright: #f0f2ee;
  --primary: #266038;
  --saffron: #f5c840;

  /* Hairline rules per ground */
  --rule-on-anchor: rgba(240, 242, 238, 0.12);
  --rule-on-bright: rgba(25, 28, 25, 0.12);
  --rule-on-primary: rgba(240, 242, 238, 0.18);

  /* Card shadows */
  --card-shadow: 0 8px 24px rgba(25, 28, 25, 0.1);
  --card-shadow-hover: 0 16px 32px rgba(25, 28, 25, 0.2);

  /* Fonts */
  --font-heading: "proxima-nova", sans-serif;
  --font-body: "proxima-nova", sans-serif;
  --font-label: "JetBrains Mono", monospace;

  /* Type scale */
  --fs-display: 52px;
  --fs-h2: 30px;
  --fs-h3: 21px;
  --fs-h4: 17px;
  --fs-body: 16px;
  --fs-lead: 19px;
  --fs-meta: 13px;
  --fs-eyebrow: 13px;
  --fs-label: 14px;
  --fs-label-card: 20px;

  /* Spacing scale (restricted set) */
  --space-15: 15px;
  --space-20: 20px;
  --space-30: 30px;
  --space-40: 40px;
  --space-60: 60px;

  /* Radii */
  --radius-interactive: 4px;
  --radius-card: 8px;

  /* Container */
  --container-max: 1400px;
  --gutter: 20px;
}

/* ---------- Reset / base ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--font-body);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: 1.65;
  background: var(--anchor);
  color: var(--bright);
  -webkit-font-smoothing: antialiased;
}

img { display: block; max-width: 100%; }

a { color: inherit; text-decoration: none; }

button { font-family: inherit; cursor: pointer; border: none; background: none; }

/* ---------- Section grounds ---------- */
.section { width: 100%; padding-block: var(--space-60); }
.section--anchor  { background: var(--anchor);  color: var(--bright); }
.section--bright  { background: var(--bright);  color: var(--anchor); }
.section--primary { background: var(--primary); color: var(--bright); }

.section__inner {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ====================================================================== */
/* BLOCK: site-header                                                     */
/* ====================================================================== */
.site-header {
  background: var(--anchor);
  color: var(--bright);
  border-bottom: 1px solid var(--rule-on-anchor);
}
.site-header__inner {
  max-width: var(--container-max);
  margin-inline: auto;
  padding: var(--space-20) var(--gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-30);
}
.site-header__brand {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 22px;
  letter-spacing: -0.01em;
  color: var(--bright);
}
.site-header__brand span { color: var(--saffron); }
.site-header__nav {
  display: flex;
  gap: var(--space-30);
  flex-wrap: wrap;
}
.site-header__link {
  font-size: var(--fs-h4);
  font-weight: 600;
  color: var(--bright);
}
.site-header__link:hover { color: var(--saffron); }
.site-header__actions { display: flex; gap: var(--space-15); align-items: center; }
.site-header__cart {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label);
  color: var(--saffron);
}

/* ====================================================================== */
/* BLOCK: hero  (always anchor ground; primary-accent exception)          */
/* ====================================================================== */
.hero { position: relative; overflow: hidden; }
.hero__inner {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  gap: var(--space-40);
}
.hero__col {
  padding-block: var(--space-60);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.hero__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--primary); /* hero exception: primary accent on anchor */
  margin-bottom: var(--space-15);
}
.hero__title {
  font-family: var(--font-heading);
  font-size: var(--fs-display);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--bright);
}
.hero__lead {
  font-size: var(--fs-lead);
  line-height: 1.5;
  color: var(--bright);
  margin-top: var(--space-20);
  max-width: 32em;
}
.hero__cta {
  align-self: flex-start;
  margin-top: var(--space-30);
  min-height: 44px;
  padding: 12px 20px;
  border-radius: var(--radius-interactive);
  font-family: var(--font-heading);
  font-size: var(--fs-body);
  font-weight: 600;
  background: var(--primary); /* hero exception: primary fill */
  color: var(--bright);
}
.hero__cta:hover { filter: brightness(1.08); }
.hero__media { position: relative; }
.hero__image {
  width: 100%;
  height: 100%;
  min-height: 480px;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, var(--anchor) 0%, var(--anchor) 25%, rgba(31,35,31,0) 60%);
  pointer-events: none;
}
/* USP panel docked at bottom of left column */
.hero__usp {
  margin-top: var(--space-40);
  background: rgba(31, 35, 31, 0.55);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border: 1px solid var(--rule-on-anchor);
  border-radius: var(--radius-card);
  padding: var(--space-20);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-20);
}
.hero__usp-cell { display: flex; gap: var(--space-15); align-items: flex-start; }
.hero__usp-icon {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  color: var(--primary); /* hero exception: primary-coloured icons */
}
.hero__usp-icon svg { width: 100%; height: 100%; display: block; }
.hero__usp-label {
  font-family: var(--font-heading);
  font-size: var(--fs-h4);
  font-weight: 600;
  color: var(--bright);
  line-height: 1.2;
}
.hero__usp-sub {
  font-size: var(--fs-meta);
  color: rgba(240, 242, 238, 0.62);
  line-height: 1.4;
}

/* ====================================================================== */
/* BLOCK: section-header  (self-scoped, ground-relative)                  */
/* ====================================================================== */
.section-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-30);
  margin-bottom: var(--space-40);
}
.section-header--center {
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.section-header__group { max-width: 760px; }
.section-header__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-15);
}
.section-header__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
}
.section-header__lead {
  font-size: var(--fs-lead);
  line-height: 1.5;
  margin-top: var(--space-15);
}
.section-header__link {
  flex: 0 0 auto;
  font-family: var(--font-heading);
  font-size: var(--fs-h4);
  font-weight: 600;
  white-space: nowrap;
}
.section-header__link::after { content: " \2192"; }
/* ground-relative colour */
.section--anchor .section-header__eyebrow,
.section--anchor .section-header__link { color: var(--saffron); }
.section--bright .section-header__eyebrow,
.section--bright .section-header__link { color: var(--primary); }
.section--primary .section-header__eyebrow,
.section--primary .section-header__link { color: var(--saffron); }
.section-header__link:hover { text-decoration: underline; }

/* ====================================================================== */
/* BLOCK: btn  (ground-relative button system)                            */
/* ====================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 12px 20px;
  border-radius: var(--radius-interactive);
  font-family: var(--font-heading);
  font-size: var(--fs-body);
  font-weight: 600;
  line-height: 1;
  border: 1px solid transparent;
  transition: filter .15s ease, background .15s ease, color .15s ease;
}
/* Primary button per ground */
.section--anchor  .btn--primary { background: var(--saffron);  color: var(--anchor); }
.section--bright  .btn--primary { background: var(--primary);  color: var(--bright); }
.section--primary .btn--primary { background: var(--anchor);   color: var(--bright); }
.btn--primary:hover { filter: brightness(1.08); }
/* Secondary (ghost) button per ground */
.section--anchor  .btn--secondary { background: transparent; border-color: var(--saffron); color: var(--saffron); }
.section--bright  .btn--secondary { background: transparent; border-color: var(--primary); color: var(--primary); }
.section--primary .btn--secondary { background: transparent; border-color: var(--saffron); color: var(--saffron); }
.section--anchor  .btn--secondary:hover { background: rgba(245,200,64,0.12); }
.section--bright  .btn--secondary:hover { background: rgba(38,96,56,0.08); }
.section--primary .btn--secondary:hover { background: rgba(245,200,64,0.12); }
.btn-row { display: flex; gap: var(--space-15); flex-wrap: wrap; }
.btn-row--center { justify-content: center; }

/* ====================================================================== */
/* BLOCK: game-tile  (image-fill nav tile)                                */
/* ====================================================================== */
.game-tile {
  position: relative;
  display: block;
  border-radius: var(--radius-card);
  overflow: hidden;
  aspect-ratio: 1 / 1;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.game-tile:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.game-tile__image { width: 100%; height: 100%; object-fit: cover; }
.game-tile__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(31,35,31,0.85) 0%, rgba(31,35,31,0.15) 55%, rgba(31,35,31,0) 100%);
}
.game-tile__name {
  position: absolute;
  left: var(--space-20);
  right: var(--space-20);
  bottom: var(--space-20);
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: 1.2;
  color: var(--bright);
}
.game-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-20);
}

/* ====================================================================== */
/* BLOCK: feature-product  (split: image + editorial body)                */
/* ====================================================================== */
.feature-product {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-40);
  align-items: center;
}
.feature-product__media { border-radius: var(--radius-card); overflow: hidden; }
.feature-product__image {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
.feature-product__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--saffron);
  margin-bottom: var(--space-15);
}
.feature-product__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--bright);
}
.feature-product__body {
  font-size: var(--fs-lead);
  line-height: 1.5;
  margin-top: var(--space-20);
  color: var(--bright);
}
.feature-product__price {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label-card);
  color: var(--saffron);
  margin-top: var(--space-20);
}
.feature-product__cta { margin-top: var(--space-30); }

/* ====================================================================== */
/* BLOCK: product-card  (4:5 image, name, price, CTA — ground-relative)   */
/* ====================================================================== */
.product-card {
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.product-card:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.product-card__media { width: 100%; }
.product-card__image { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.product-card__body {
  padding: var(--space-15);
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  flex: 1;
}
.product-card__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.product-card__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: 1.3;
}
.product-card__price {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label-card);
}
.product-card__cta { margin-top: auto; }
/* Card surface + nested-ground colour, per styleguide card-surface-per-ground */
.section--anchor .product-card  { background: var(--anchor-elevated); color: var(--bright); }
.section--anchor .product-card .product-card__title { color: var(--bright); }
.section--anchor .product-card .product-card__eyebrow,
.section--anchor .product-card .product-card__price { color: var(--saffron); }
.section--bright .product-card  { background: var(--anchor); color: var(--bright); }
.section--bright .product-card .product-card__title { color: var(--bright); }
.section--bright .product-card .product-card__eyebrow,
.section--bright .product-card .product-card__price { color: var(--saffron); }
.section--primary .product-card { background: var(--bright); color: var(--anchor); }
.section--primary .product-card .product-card__title { color: var(--anchor); }
.section--primary .product-card .product-card__eyebrow,
.section--primary .product-card .product-card__price { color: var(--primary); }
/* In-card secondary button takes the CARD ground, not the section */
.section--anchor .product-card .btn--secondary,
.section--bright .product-card .btn--secondary { background: transparent; border-color: var(--saffron); color: var(--saffron); }
.section--anchor .product-card .btn--secondary:hover,
.section--bright .product-card .btn--secondary:hover { background: rgba(245,200,64,0.12); }
.section--primary .product-card .btn--secondary { background: transparent; border-color: var(--primary); color: var(--primary); }
.section--primary .product-card .btn--secondary:hover { background: rgba(38,96,56,0.08); }

.product-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-20);
}

/* ====================================================================== */
/* BLOCK: preorder-feature  (centred single-column release intro)         */
/* ====================================================================== */
.preorder-feature {
  max-width: 760px;
  margin-inline: auto;
  text-align: center;
}
.preorder-feature__media {
  border-radius: var(--radius-card);
  overflow: hidden;
  margin-bottom: var(--space-30);
}
.preorder-feature__image {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
.preorder-feature__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-15);
}
.preorder-feature__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
}
.preorder-feature__body {
  font-size: var(--fs-lead);
  line-height: 1.5;
  margin-top: var(--space-20);
}
.preorder-feature__specs {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-30);
  margin-top: var(--space-30);
  padding-top: var(--space-20);
  border-top: 1px solid transparent;
}
.preorder-feature__spec { text-align: left; }
.preorder-feature__spec-label {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  display: block;
}
.preorder-feature__spec-value {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label);
}
.preorder-feature__cta { margin-top: var(--space-30); }
/* ground-relative */
.section--bright .preorder-feature__eyebrow,
.section--bright .preorder-feature__spec-label { color: var(--primary); }
.section--bright .preorder-feature__spec-value { color: var(--primary); }
.section--bright .preorder-feature__specs { border-top-color: var(--rule-on-bright); }
.section--anchor .preorder-feature__eyebrow,
.section--anchor .preorder-feature__spec-label,
.section--anchor .preorder-feature__spec-value { color: var(--saffron); }
.section--anchor .preorder-feature__specs { border-top-color: var(--rule-on-anchor); }
.section--primary .preorder-feature__eyebrow,
.section--primary .preorder-feature__spec-label,
.section--primary .preorder-feature__spec-value { color: var(--saffron); }
.section--primary .preorder-feature__specs { border-top-color: var(--rule-on-primary); }

/* ====================================================================== */
/* BLOCK: single-card  (editorial single-card panel, 3-up)                */
/* ====================================================================== */
.single-card {
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.single-card:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.single-card__image { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.single-card__body {
  padding: var(--space-20);
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  flex: 1;
}
.single-card__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: 1.3;
}
.single-card__meta {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-15);
  padding-bottom: var(--space-15);
  border-bottom: 1px solid transparent;
}
.single-card__price {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label-card);
}
.single-card__note { font-size: var(--fs-body); line-height: 1.65; }
/* ground-relative card surface + colour */
.section--primary .single-card { background: var(--bright); color: var(--anchor); }
.section--primary .single-card .single-card__title { color: var(--anchor); }
.section--primary .single-card .single-card__meta,
.section--primary .single-card .single-card__price { color: var(--primary); }
.section--primary .single-card .single-card__meta { border-bottom-color: var(--rule-on-bright); }
.section--anchor .single-card { background: var(--anchor-elevated); color: var(--bright); }
.section--anchor .single-card .single-card__title { color: var(--bright); }
.section--anchor .single-card .single-card__meta,
.section--anchor .single-card .single-card__price { color: var(--saffron); }
.section--anchor .single-card .single-card__meta { border-bottom-color: var(--rule-on-anchor); }
.section--bright .single-card { background: var(--anchor); color: var(--bright); }
.section--bright .single-card .single-card__title { color: var(--bright); }
.section--bright .single-card .single-card__meta,
.section--bright .single-card .single-card__price { color: var(--saffron); }
.section--bright .single-card .single-card__meta { border-bottom-color: var(--rule-on-anchor); }
.single-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-20); }

/* ====================================================================== */
/* BLOCK: single-tile  (compact card tile w/ condition badge)             */
/* ====================================================================== */
.single-tile {
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.single-tile:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.single-tile__media { position: relative; }
.single-tile__image { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.single-tile__badge {
  position: absolute;
  top: var(--space-15);
  left: var(--space-15);
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-meta);
  padding: 4px 8px;
  border-radius: var(--radius-interactive);
}
.single-tile__body {
  padding: var(--space-15);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.single-tile__name {
  font-family: var(--font-heading);
  font-size: var(--fs-h4);
  font-weight: 600;
  line-height: 1.25;
}
.single-tile__set {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-meta);
}
.single-tile__price {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label-card);
}
/* ground-relative */
.section--anchor .single-tile { background: var(--anchor-elevated); color: var(--bright); }
.section--anchor .single-tile .single-tile__name { color: var(--bright); }
.section--anchor .single-tile .single-tile__set { color: rgba(240,242,238,0.62); }
.section--anchor .single-tile .single-tile__price { color: var(--saffron); }
.section--anchor .single-tile .single-tile__badge { background: var(--saffron); color: var(--anchor); }
.section--bright .single-tile { background: var(--anchor); color: var(--bright); }
.section--bright .single-tile .single-tile__name { color: var(--bright); }
.section--bright .single-tile .single-tile__set { color: rgba(240,242,238,0.62); }
.section--bright .single-tile .single-tile__price { color: var(--saffron); }
.section--bright .single-tile .single-tile__badge { background: var(--saffron); color: var(--anchor); }
.section--primary .single-tile { background: var(--bright); color: var(--anchor); }
.section--primary .single-tile .single-tile__name { color: var(--anchor); }
.section--primary .single-tile .single-tile__set { color: rgba(31,35,31,0.6); }
.section--primary .single-tile .single-tile__price { color: var(--primary); }
.section--primary .single-tile .single-tile__badge { background: var(--saffron); color: var(--anchor); }
.single-tile-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-20); margin-bottom: var(--space-40); }

/* ====================================================================== */
/* BLOCK: metric-strip  (compact horizontal stats band)                   */
/* ====================================================================== */
.metric-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-30);
}
.metric-strip__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
}
.metric-strip__icon { width: 28px; height: 28px; }
.metric-strip__icon svg { width: 100%; height: 100%; display: block; }
.metric-strip__figure {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: 24px;
}
.metric-strip__label {
  font-size: var(--fs-meta);
  font-weight: 400;
}
/* ground-relative */
.section--bright .metric-strip__icon { color: var(--primary); }
.section--bright .metric-strip__figure { color: var(--primary); }
.section--bright .metric-strip__label { color: var(--anchor); }
.section--anchor .metric-strip__icon,
.section--anchor .metric-strip__figure { color: var(--saffron); }
.section--anchor .metric-strip__label { color: var(--bright); }
.section--primary .metric-strip__icon,
.section--primary .metric-strip__figure { color: var(--saffron); }
.section--primary .metric-strip__label { color: var(--bright); }

/* ====================================================================== */
/* BLOCK: spotlight  (split image + editorial copy w/ eyebrow)            */
/* ====================================================================== */
.spotlight {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-40);
  align-items: center;
}
.spotlight--reverse .spotlight__media { order: 2; }
.spotlight__media { border-radius: var(--radius-card); overflow: hidden; }
.spotlight__image { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.spotlight__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-15);
}
.spotlight__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
}
.spotlight__body {
  font-size: var(--fs-body);
  line-height: 1.65;
  margin-top: var(--space-20);
}
.spotlight__cta { margin-top: var(--space-30); }
/* ground-relative */
.section--primary .spotlight__eyebrow { color: var(--saffron); }
.section--anchor .spotlight__eyebrow { color: var(--saffron); }
.section--bright .spotlight__eyebrow { color: var(--primary); }

/* ====================================================================== */
/* BLOCK: process-steps  (numbered horizontal process row)                */
/* ====================================================================== */
.process-row {
  max-width: 980px;
  margin-inline: auto;
  text-align: center;
}
.process-row__intro { max-width: 720px; margin-inline: auto; }
.process-row__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
}
.process-row__lead {
  font-size: var(--fs-lead);
  line-height: 1.5;
  margin-top: var(--space-15);
}
.process-row__steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-30);
  margin-top: var(--space-40);
}
.process-step { text-align: left; }
.process-step__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-15);
  padding-bottom: var(--space-15);
  border-bottom: 1px solid transparent;
  display: block;
}
.process-step__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: 1.3;
}
.process-step__body { font-size: var(--fs-body); line-height: 1.65; margin-top: var(--space-15); }
.process-row__cta { margin-top: var(--space-40); }
/* ground-relative */
.section--anchor .process-step__eyebrow { color: var(--saffron); border-bottom-color: var(--rule-on-anchor); }
.section--bright .process-step__eyebrow { color: var(--primary); border-bottom-color: var(--rule-on-bright); }
.section--primary .process-step__eyebrow { color: var(--saffron); border-bottom-color: var(--rule-on-primary); }

/* ====================================================================== */
/* BLOCK: terrain-tile  (4:5 labelled thumbnail)                          */
/* ====================================================================== */
.terrain-tile { display: flex; flex-direction: column; gap: var(--space-15); }
.terrain-tile__media {
  border-radius: var(--radius-card);
  overflow: hidden;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.terrain-tile:hover .terrain-tile__media { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.terrain-tile__image { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.terrain-tile__name {
  font-family: var(--font-heading);
  font-size: var(--fs-h4);
  font-weight: 600;
  line-height: 1.25;
}
.terrain-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-20); margin-bottom: var(--space-40); }

/* ====================================================================== */
/* BLOCK: event-card  (small image + meta + CTA)                          */
/* ====================================================================== */
.event-card {
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.event-card:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.event-card__image { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.event-card__body {
  padding: var(--space-20);
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  flex: 1;
}
.event-card__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.event-card__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: 1.3;
}
.event-card__date {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label);
}
.event-card__desc { font-size: var(--fs-body); line-height: 1.65; }
.event-card__cta { margin-top: auto; }
/* ground-relative card surface (primary section → bright card) */
.section--primary .event-card { background: var(--bright); color: var(--anchor); }
.section--primary .event-card .event-card__title { color: var(--anchor); }
.section--primary .event-card .event-card__eyebrow,
.section--primary .event-card .event-card__date { color: var(--primary); }
.section--primary .event-card .btn--secondary { border-color: var(--primary); color: var(--primary); }
.section--primary .event-card .btn--secondary:hover { background: rgba(38,96,56,0.08); }
.section--anchor .event-card { background: var(--anchor-elevated); color: var(--bright); }
.section--anchor .event-card .event-card__title { color: var(--bright); }
.section--anchor .event-card .event-card__eyebrow,
.section--anchor .event-card .event-card__date { color: var(--saffron); }
.section--anchor .event-card .btn--secondary { border-color: var(--saffron); color: var(--saffron); }
.section--bright .event-card { background: var(--anchor); color: var(--bright); }
.section--bright .event-card .event-card__title { color: var(--bright); }
.section--bright .event-card .event-card__eyebrow,
.section--bright .event-card .event-card__date { color: var(--saffron); }
.section--bright .event-card .btn--secondary { border-color: var(--saffron); color: var(--saffron); }
.event-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-20); }

/* ====================================================================== */
/* BLOCK: feature-event  (image-driven single-event spotlight)            */
/* ====================================================================== */
.feature-event {
  position: relative;
  border-radius: var(--radius-card);
  overflow: hidden;
  min-height: 460px;
  display: flex;
  align-items: flex-end;
}
.feature-event__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.feature-event__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(31,35,31,0.92) 0%, rgba(31,35,31,0.55) 45%, rgba(31,35,31,0.1) 100%);
}
.feature-event__content {
  position: relative;
  padding: var(--space-40);
  max-width: 640px;
}
.feature-event__eyebrow {
  font-family: var(--font-heading);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--saffron);
  margin-bottom: var(--space-15);
}
.feature-event__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--bright);
}
.feature-event__date {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-label-card);
  color: var(--saffron);
  margin-top: var(--space-15);
}
.feature-event__body {
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--bright);
  margin-top: var(--space-20);
}
.feature-event__cta { margin-top: var(--space-30); }

/* ====================================================================== */
/* BLOCK: gallery-mosaic  (asymmetric event photo mosaic)                 */
/* ====================================================================== */
.gallery-mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 180px;
  gap: var(--space-15);
}
.gallery-mosaic__item {
  border-radius: var(--radius-card);
  overflow: hidden;
}
.gallery-mosaic__item img { width: 100%; height: 100%; object-fit: cover; }
.gallery-mosaic__item--wide { grid-column: span 2; }
.gallery-mosaic__item--tall { grid-row: span 2; }
.gallery-mosaic__item--big  { grid-column: span 2; grid-row: span 2; }
.gallery-mosaic__caption {
  text-align: center;
  margin-top: var(--space-30);
  font-size: var(--fs-lead);
  line-height: 1.5;
}
.gallery-mosaic__caption a { font-weight: 600; }
.section--bright .gallery-mosaic__caption a { color: var(--primary); }
.section--bright .gallery-mosaic__caption a:hover { text-decoration: underline; }

/* ====================================================================== */
/* BLOCK: blog-card  (3:2 image, title, date, hook)                       */
/* ====================================================================== */
.blog-card {
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  transition: box-shadow .2s ease, transform .2s ease;
}
.blog-card:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.blog-card__image { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.blog-card__body {
  padding: var(--space-20);
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  flex: 1;
}
.blog-card__date {
  font-family: var(--font-label);
  font-weight: 500;
  font-size: var(--fs-meta);
}
.blog-card__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: 1.3;
}
.blog-card__hook { font-size: var(--fs-body); line-height: 1.65; }
/* ground-relative card surface (primary section → bright card) */
.section--primary .blog-card { background: var(--bright); color: var(--anchor); }
.section--primary .blog-card .blog-card__title { color: var(--anchor); }
.section--primary .blog-card .blog-card__date { color: var(--primary); }
.section--anchor .blog-card { background: var(--anchor-elevated); color: var(--bright); }
.section--anchor .blog-card .blog-card__title { color: var(--bright); }
.section--anchor .blog-card .blog-card__date { color: var(--saffron); }
.section--bright .blog-card { background: var(--anchor); color: var(--bright); }
.section--bright .blog-card .blog-card__title { color: var(--bright); }
.section--bright .blog-card .blog-card__date { color: var(--saffron); }
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-20); margin-bottom: var(--space-40); }

/* ====================================================================== */
/* BLOCK: newsletter  (centred inline email capture)                      */
/* ====================================================================== */
.newsletter { max-width: 640px; margin-inline: auto; text-align: center; }
.newsletter__title {
  font-family: var(--font-heading);
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--bright);
}
.newsletter__lead {
  font-size: var(--fs-lead);
  line-height: 1.5;
  color: var(--bright);
  margin-top: var(--space-15);
}
.newsletter__form {
  display: flex;
  gap: var(--space-15);
  margin-top: var(--space-30);
}
.newsletter__input {
  flex: 1;
  min-height: 44px;
  padding: 12px var(--space-15);
  border-radius: var(--radius-interactive);
  border: 1px solid var(--rule-on-anchor);
  background: var(--anchor-elevated);
  color: var(--bright);
  font-family: var(--font-body);
  font-size: var(--fs-body);
}
.newsletter__input::placeholder { color: rgba(240,242,238,0.5); }
.newsletter__input:focus { outline: 2px solid var(--saffron); outline-offset: 0; }
.newsletter__submit {
  min-height: 44px;
  padding: 12px 20px;
  border-radius: var(--radius-interactive);
  font-family: var(--font-heading);
  font-size: var(--fs-body);
  font-weight: 600;
  background: var(--saffron);
  color: var(--anchor);
}
.newsletter__submit:hover { filter: brightness(1.06); }

/* ====================================================================== */
/* BLOCK: site-footer                                                     */
/* ====================================================================== */
.site-footer {
  background: var(--anchor);
  color: var(--bright);
  padding-block: var(--space-40);
  border-top: 1px solid var(--rule-on-anchor);
}
.site-footer__inner {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-30);
  justify-content: space-between;
  align-items: center;
}
.site-footer__brand {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 18px;
  color: var(--bright);
}
.site-footer__brand span { color: var(--saffron); }
.site-footer__meta {
  font-size: var(--fs-meta);
  color: rgba(240,242,238,0.62);
}
.site-footer__links { display: flex; gap: var(--space-20); flex-wrap: wrap; }
.site-footer__link { font-size: var(--fs-meta); font-weight: 600; }
.site-footer__link:hover { color: var(--saffron); }

/* ====================================================================== */
/* RESPONSIVE                                                             */
/* ====================================================================== */
@media (max-width: 960px) {
  :root { --fs-display: 40px; --fs-h2: 26px; }
  .hero__inner { grid-template-columns: 1fr; }
  .hero__media { order: -1; }
  .hero__image { min-height: 280px; }
  .hero__overlay { background: linear-gradient(to bottom, rgba(31,35,31,0) 40%, var(--anchor) 100%); }
  .hero__col { padding-block: var(--space-40); }
  .feature-product,
  .spotlight { grid-template-columns: 1fr; }
  .spotlight--reverse .spotlight__media { order: -1; }
  .product-grid { grid-template-columns: repeat(2, 1fr); }
  .single-tile-grid { grid-template-columns: repeat(2, 1fr); }
  .terrain-grid { grid-template-columns: repeat(2, 1fr); }
  .single-grid-3 { grid-template-columns: 1fr; }
  .event-grid { grid-template-columns: repeat(2, 1fr); }
  .blog-grid { grid-template-columns: 1fr; }
  .game-grid { grid-template-columns: repeat(2, 1fr); }
  .metric-strip { grid-template-columns: repeat(2, 1fr); }
  .process-row__steps { grid-template-columns: 1fr; }
  .gallery-mosaic { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 160px; }
  .gallery-mosaic__item--big { grid-column: span 2; }
  .section-header { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 560px) {
  :root { --fs-display: 32px; }
  .hero__usp { grid-template-columns: 1fr 1fr; }
  .product-grid,
  .single-tile-grid,
  .terrain-grid,
  .event-grid,
  .game-grid { grid-template-columns: 1fr; }
  .metric-strip { grid-template-columns: 1fr 1fr; }
  .newsletter__form { flex-direction: column; }
  .site-header__nav { display: none; }
  .gallery-mosaic { grid-template-columns: 1fr; }
  .gallery-mosaic__item--wide,
  .gallery-mosaic__item--big { grid-column: span 1; }
  .feature-event__content { padding: var(--space-20); }
}
</style>
</head>
<body>

<!-- ===================== SITE HEADER ===================== -->
<header class="site-header">
  <div class="site-header__inner">
    <a class="site-header__brand" href="#">Nerd<span>works</span></a>
    <nav class="site-header__nav">
      <a class="site-header__link" href="#">Trading cards</a>
      <a class="site-header__link" href="#">Singles</a>
      <a class="site-header__link" href="#">Warhammer</a>
      <a class="site-header__link" href="#">Star Wars</a>
      <a class="site-header__link" href="#">Events</a>
      <a class="site-header__link" href="#">Journal</a>
    </nav>
    <div class="site-header__actions">
      <span class="site-header__cart">Basket (0)</span>
    </div>
  </div>
</header>

<!-- ===================== 1. HERO (anchor) ===================== -->
<section class="section section--anchor hero">
  <div class="hero__inner">
    <div class="hero__col">
      <span class="hero__eyebrow">Curated in-house</span>
      <h1 class="hero__title">A collector's shop for trading cards, built by people who play them.</h1>
      <p class="hero__lead">Hand-picked singles, sealed product and Warhammer kits — verified, graded by condition and shipped from our shop, not a warehouse algorithm.</p>
      <a class="hero__cta" href="#">Shop the latest arrivals</a>
      <div class="hero__usp">
        <div class="hero__usp-cell">
          <span class="hero__usp-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2l8 4v6c0 5-3.5 8-8 10-4.5-2-8-5-8-10V6l8-4z"/><path d="M9 12l2 2 4-4"/></svg></span>
          <div>
            <span class="hero__usp-label">Verified authentic</span>
            <span class="hero__usp-sub">Every single checked at intake</span>
          </div>
        </div>
        <div class="hero__usp-cell">
          <span class="hero__usp-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 7h11v8H3z"/><path d="M14 10h4l3 3v2h-7z"/><circle cx="7" cy="17" r="2"/><circle cx="17" cy="17" r="2"/></svg></span>
          <div>
            <span class="hero__usp-label">Tracked UK shipping</span>
            <span class="hero__usp-sub">Sleeved and top-loaded</span>
          </div>
        </div>
        <div class="hero__usp-cell">
          <span class="hero__usp-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="10" width="16" height="10" rx="1"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></span>
          <div>
            <span class="hero__usp-label">Secure checkout</span>
            <span class="hero__usp-sub">Pay safely, every order</span>
          </div>
        </div>
        <div class="hero__usp-cell">
          <span class="hero__usp-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="8" r="3"/><circle cx="17" cy="9" r="2.5"/><path d="M3 20c0-3 2.5-5 6-5s6 2 6 5"/><path d="M15 20c0-2 1-3.5 3-3.5s3 1.5 3 3.5"/></svg></span>
          <div>
            <span class="hero__usp-label">Real game store</span>
            <span class="hero__usp-sub">Tables, events and staff</span>
          </div>
        </div>
      </div>
    </div>
    <div class="hero__media">
      <img class="hero__image" src="https://picsum.photos/seed/nw-hero/1200/800" alt="Trading card singles laid out on a shop counter">
      <div class="hero__overlay"></div>
    </div>
  </div>
</section>

<!-- ===================== 2. SHOP BY GAME (bright) ===================== -->
<section class="section section--bright">
  <div class="section__inner">
    <div class="section-header">
      <div class="section-header__group">
        <span class="section-header__eyebrow">Shop by game</span>
        <h2 class="section-header__title">Pick your system</h2>
        <p class="section-header__lead">Sealed, singles and accessories across the systems we stock and play in-store.</p>
      </div>
    </div>
    <div class="game-grid">
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-pokemon/600/600" alt="Pokémon cards">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">Pokémon</span>
      </a>
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-mtg/600/600" alt="Magic: The Gathering cards">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">Magic: The Gathering</span>
      </a>
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-lorcana/600/600" alt="Lorcana cards">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">Lorcana</span>
      </a>
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-onepiece/600/600" alt="One Piece card game">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">One Piece</span>
      </a>
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-swu/600/600" alt="Star Wars Unlimited cards">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">Star Wars Unlimited</span>
      </a>
      <a class="game-tile" href="#">
        <img class="game-tile__image" src="https://picsum.photos/seed/nw-riftbound/600/600" alt="Riftbound cards">
        <span class="game-tile__scrim"></span>
        <span class="game-tile__name">Riftbound</span>
      </a>
    </div>
  </div>
</section>

<!-- ===================== 3. FEATURED PRODUCT (primary) ===================== -->
<section class="section section--primary">
  <div class="section__inner">
    <div class="feature-product">
      <div class="feature-product__media">
        <img class="feature-product__image" src="https://picsum.photos/seed/nw-featured/800/1000" alt="Pokémon Prismatic Evolutions Elite Trainer Box">
      </div>
      <div class="feature-product__copy">
        <span class="feature-product__eyebrow">New arrival</span>
        <h2 class="feature-product__title">Prismatic Evolutions Elite Trainer Box</h2>
        <p class="feature-product__body">The set everyone's been chasing. Nine boosters, the Eevee-family promo and enough top-loaded value to make the secondary market nervous. We've capped it at two per customer so it lands in collectors' hands, not the resale pile.</p>
        <div class="feature-product__price">£49.95</div>
        <a class="btn btn--primary feature-product__cta" href="#">Add to basket</a>
      </div>
    </div>
  </div>
</section>

<!-- ===================== 4. NEW ARRIVALS (anchor) ===================== -->
<section class="section section--anchor">
  <div class="section__inner">
    <div class="section-header">
      <div class="section-header__group">
        <span class="section-header__eyebrow">Just in</span>
        <h2 class="section-header__title">New arrivals</h2>
      </div>
      <a class="section-header__link" href="#">View all new arrivals</a>
    </div>
    <div class="product-grid">
      <article class="product-card">
        <div class="product-card__media"><img class="product-card__image" src="https://picsum.photos/seed/nw-na1/600/750" alt="Magic Foundations Bundle"></div>
        <div class="product-card__body">
          <span class="product-card__eyebrow">Magic: The Gathering</span>
          <h3 class="product-card__title">Foundations Bundle</h3>
          <div class="product-card__price">£42.00</div>
          <a class="btn btn--secondary product-card__cta" href="#">Add to cart</a>
        </div>
      </article>
      <article class="product-card">
        <div class="product-card__media"><img class="product-card__image" src="https://picsum.photos/seed/nw-na2/600/750" alt="Lorcana Azurite Sea booster box"></div>
        <div class="product-card__body">
          <span class="product-card__eyebrow">Lorcana</span>
          <h3 class="product-card__title">Azurite Sea Booster Box</h3>
          <div class="product-card__price">£114.99</div>
          <a class="btn btn--secondary product-card__cta" href="#">Add to cart</a>
        </div>
      </article>
      <article class="product-card">
        <div class="product-card__media"><img class="product-card__image" src="https://picsum.photos/seed/nw-na3/600/750" alt="One Piece Two Legends booster"></div>
        <div class="product-card__body">
          <span class="product-card__eyebrow">One Piece</span>
          <h3 class="product-card__title">Two Legends Booster</h3>
          <div class="product-card__price">£4.50</div>
          <a class="btn btn--secondary product-card__cta" href="#">Add to cart</a>
        </div>
      </article>
      <article class="product-card">
        <div class="product-card__media"><img class="product-card__image" src="https://picsum.photos/seed/nw-na4/600/750" alt="Dragon Shield matte sleeves"></div>
        <div class="product-card__body">
          <span class="product-card__eyebrow">Accessories</span>
          <h3 class="product-card__title">Dragon Shield Matte Sleeves (100)</h3>
          <div class="product-card__price">£8.95</div>
          <a class="btn btn--secondary product-card__cta" href="#">Add to cart</a>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ===================== 5. PRODUCT PRE-ORDER (bright) ===================== -->
<section class="section section--bright">
  <div class="section__inner">
    <div class="preorder-feature">
      <div class="preorder-feature__media">
        <img class="preorder-feature__image" src="https://picsum.photos/seed/nw-preorder/900/600" alt="Star Wars Unlimited Legends of the Force key art">
      </div>
      <span class="preorder-feature__eyebrow">Pre-order</span>
      <h2 class="preorder-feature__title">Star Wars Unlimited: Legends of the Force</h2>
      <p class="preorder-feature__body">The fifth set leans hard into the Force users — Jedi and Sith leaders with build-around mechanics that should shake up the meta. We're taking pre-orders on boosters, the two starter decks and the prerelease box. Prerelease seats at the shop open the same weekend.</p>
      <div class="preorder-feature__specs">
        <div class="preorder-feature__spec">
          <span class="preorder-feature__spec-label">Release date</span>
          <span class="preorder-feature__spec-value">11 Jul 2026</span>
        </div>
        <div class="preorder-feature__spec">
          <span class="preorder-feature__spec-label">Format</span>
          <span class="preorder-feature__spec-value">Premier & Twin Suns</span>
        </div>
        <div class="preorder-feature__spec">
          <span class="preorder-feature__spec-label">Edition</span>
          <span class="preorder-feature__spec-value">First print run</span>
        </div>
      </div>
      <a class="btn btn--primary preorder-feature__cta" href="#">Pre-order now</a>
    </div>
  </div>
</section>

<!-- ===================== 6. HOTTEST SINGLES (primary) ===================== -->
<section class="section section--primary">
  <div class="section__inner">
    <div class="section-header section-header--center">
      <div class="section-header__group">
        <span class="section-header__eyebrow">From the singles cabinet</span>
        <h2 class="section-header__title">Hottest singles in stock</h2>
        <p class="section-header__lead">The rarest and most-wanted cards on our shelves right now — every one staff-verified and graded for condition.</p>
      </div>
    </div>
    <div class="single-grid-3">
      <article class="single-card">
        <img class="single-card__image" src="https://picsum.photos/seed/nw-single1/600/750" alt="Charizard ex Special Illustration Rare">
        <div class="single-card__body">
          <h3 class="single-card__title">Charizard ex — Special Illustration Rare</h3>
          <div class="single-card__meta"><span>Obsidian Flames</span><span>SIR 215/197</span><span>NM</span></div>
          <div class="single-card__price">£289.00</div>
          <p class="single-card__note">Why we love it: the alt-art everyone wants and the one that anchors a Pokémon binder. Centring is dead-on and the holo is clean under the loupe — a genuine display piece.</p>
        </div>
      </article>
      <article class="single-card">
        <img class="single-card__image" src="https://picsum.photos/seed/nw-single2/600/750" alt="Ragavan, Nimble Pilferer foil">
        <div class="single-card__body">
          <h3 class="single-card__title">Ragavan, Nimble Pilferer (Foil)</h3>
          <div class="single-card__meta"><span>Modern Horizons 2</span><span>Mythic</span><span>LP</span></div>
          <div class="single-card__price">£62.50</div>
          <p class="single-card__note">A four-of in nearly every Modern aggro deck and still climbing. This foil copy reads light-play with a faint edge wear — priced fairly below a clean NM for players who'd rather sleeve than shelf.</p>
        </div>
      </article>
      <article class="single-card">
        <img class="single-card__image" src="https://picsum.photos/seed/nw-single3/600/750" alt="Elsa Spirit of Winter enchanted">
        <div class="single-card__body">
          <h3 class="single-card__title">Elsa — Spirit of Winter (Enchanted)</h3>
          <div class="single-card__meta"><span>Rise of the Floodborn</span><span>Enchanted</span><span>NM</span></div>
          <div class="single-card__price">£175.00</div>
          <p class="single-card__note">The chase enchanted from Lorcana's second set and a scarce one to find in NM. Borderless full-art with the textured foil — far harder to pull than the print run suggests.</p>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ===================== 7. SINGLES (anchor) ===================== -->
<section class="section section--anchor">
  <div class="section__inner">
    <div class="section-header section-header--center">
      <div class="section-header__group">
        <span class="section-header__eyebrow">The singles desk</span>
        <h2 class="section-header__title">Every card, one at a time</h2>
        <p class="section-header__lead">Thousands of individual singles across Pokémon and Magic, priced against the live market and condition-graded by our buying desk. NM and LP only — no surprises in the post.</p>
      </div>
    </div>
    <div class="single-tile-grid">
      <article class="single-tile">
        <div class="single-tile__media">
          <img class="single-tile__image" src="https://picsum.photos/seed/nw-st1/600/750" alt="Pikachu V Full Art">
          <span class="single-tile__badge">NM</span>
        </div>
        <div class="single-tile__body">
          <h4 class="single-tile__name">Pikachu V — Full Art</h4>
          <span class="single-tile__set">Vivid Voltage</span>
          <div class="single-tile__price">£34.00</div>
        </div>
      </article>
      <article class="single-tile">
        <div class="single-tile__media">
          <img class="single-tile__image" src="https://picsum.photos/seed/nw-st2/600/750" alt="Liliana of the Veil">
          <span class="single-tile__badge">LP</span>
        </div>
        <div class="single-tile__body">
          <h4 class="single-tile__name">Liliana of the Veil</h4>
          <span class="single-tile__set">Dominaria United</span>
          <div class="single-tile__price">£11.75</div>
        </div>
      </article>
      <article class="single-tile">
        <div class="single-tile__media">
          <img class="single-tile__image" src="https://picsum.photos/seed/nw-st3/600/750" alt="Mewtwo ex">
          <span class="single-tile__badge">NM</span>
        </div>
        <div class="single-tile__body">
          <h4 class="single-tile__name">Mewtwo ex</h4>
          <span class="single-tile__set">151</span>
          <div class="single-tile__price">£18.50</div>
        </div>
      </article>
      <article class="single-tile">
        <div class="single-tile__media">
          <img class="single-tile__image" src="https://picsum.photos/seed/nw-st4/600/750" alt="Sheoldred the Apocalypse">
          <span class="single-tile__badge">NM</span>
        </div>
        <div class="single-tile__body">
          <h4 class="single-tile__name">Sheoldred, the Apocalypse</h4>
          <span class="single-tile__set">Dominaria United</span>
          <div class="single-tile__price">£58.00</div>
        </div>
      </article>
    </div>
    <div class="btn-row btn-row--center">
      <a class="btn btn--primary" href="#">Browse all singles</a>
      <a class="btn btn--secondary" href="#">Search by card name</a>
    </div>
  </div>
</section>

<!-- ===================== 8. TRUST STRIP (bright) ===================== -->
<section class="section section--bright">
  <div class="section__inner">
    <div class="metric-strip">
      <div class="metric-strip__item">
        <span class="metric-strip__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 7h11v8H3z"/><path d="M14 10h4l3 3v2h-7z"/><circle cx="7" cy="17" r="2"/><circle cx="17" cy="17" r="2"/></svg></span>
        <span class="metric-strip__figure">28,400+</span>
        <span class="metric-strip__label">Orders shipped</span>
      </div>
      <div class="metric-strip__item">
        <span class="metric-strip__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 20V8l8-4 8 4v12"/><path d="M9 20v-6h6v6"/></svg></span>
        <span class="metric-strip__figure">11 years</span>
        <span class="metric-strip__label">Trading on the high street</span>
      </div>
      <div class="metric-strip__item">
        <span class="metric-strip__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l2.6 5.6 6.4.6-4.8 4.2 1.4 6.2L12 16.8 6 19.6 7.4 13.4 2.6 9.2l6.4-.6z"/></svg></span>
        <span class="metric-strip__figure">4.9 / 5</span>
        <span class="metric-strip__label">Across 1,900+ Trustpilot reviews</span>
      </div>
      <div class="metric-strip__item">
        <span class="metric-strip__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="8" r="3"/><circle cx="17" cy="9" r="2.5"/><path d="M3 20c0-3 2.5-5 6-5s6 2 6 5"/><path d="M15 20c0-2 1-3.5 3-3.5s3 1.5 3 3.5"/></svg></span>
        <span class="metric-strip__figure">A team of specialists</span>
        <span class="metric-strip__label">Players, painters and graders</span>
      </div>
    </div>
  </div>
</section>

<!-- ===================== 9. SET SPOTLIGHT (primary) ===================== -->
<section class="section section--primary">
  <div class="section__inner">
    <div class="spotlight spotlight--reverse">
      <div class="spotlight__media">
        <img class="spotlight__image" src="https://picsum.photos/seed/nw-spotlight/900/600" alt="Magic: The Gathering Tarkir Dragonstorm key art">
      </div>
      <div class="spotlight__copy">
        <span class="spotlight__eyebrow">Magic: The Gathering</span>
        <h2 class="spotlight__title">Tarkir: Dragonstorm</h2>
        <p class="spotlight__body">A return to Tarkir, and the dragons are back at the centre of it. Five wedge clans, a run of mechanically-rich commanders and some of the strongest Standard playables we've seen in a year. The collector boosters are carrying serial-numbered dragon art that's already drawing attention on the secondary market. We've got display boxes, commander decks and the prerelease kits in stock now.</p>
        <a class="btn btn--primary spotlight__cta" href="#">Shop the set</a>
      </div>
    </div>
  </div>
</section>

<!-- ===================== 10. SALE OR RETURN (anchor) ===================== -->
<section class="section section--anchor">
  <div class="section__inner">
    <div class="process-row">
      <div class="process-row__intro">
        <h2 class="process-row__title">Sell your cards through us</h2>
        <p class="process-row__lead">Bring in cards or sealed product and we'll list them at a price you agree, sell them through the shop and online, and pay you on the sale minus a flat commission. No listing fees, no relisting, no marketplace hassle.</p>
      </div>
      <div class="process-row__steps">
        <div class="process-step">
          <span class="process-step__eyebrow">Step 1</span>
          <h3 class="process-step__title">Bring it in</h3>
          <p class="process-step__body">Drop your cards at the buying desk. We grade condition, log each one and confirm what's saleable.</p>
        </div>
        <div class="process-step">
          <span class="process-step__eyebrow">Step 2</span>
          <h3 class="process-step__title">We list it at an agreed price</h3>
          <p class="process-step__body">You set a minimum. We price against the live market and list it across the shop and the website.</p>
        </div>
        <div class="process-step">
          <span class="process-step__eyebrow">Step 3</span>
          <h3 class="process-step__title">You get paid on sale</h3>
          <p class="process-step__body">When it sells, you're paid automatically minus commission — by bank transfer or store credit, your call.</p>
        </div>
      </div>
      <div class="btn-row btn-row--center process-row__cta">
        <a class="btn btn--primary" href="#">Start a sale or return</a>
      </div>
    </div>
  </div>
</section>

<!-- ===================== 11. WARHAMMER TABLE BOOKING (bright) ===================== -->
<section class="section section--bright">
  <div class="section__inner">
    <div class="section-header section-header--center">
      <div class="section-header__group">
        <span class="section-header__eyebrow">In-store gaming</span>
        <h2 class="section-header__title">Book a fully-modelled Warhammer table</h2>
        <p class="section-header__lead">Reserve a private session on one of our terrain-built battle tables. Pick the map and layout you want and we'll have it set up and ready when you arrive — bring your army, we'll handle the board.</p>
      </div>
    </div>
    <div class="terrain-grid">
      <div class="terrain-tile">
        <div class="terrain-tile__media"><img class="terrain-tile__image" src="https://picsum.photos/seed/nw-terrain1/600/750" alt="Imperial city ruins table layout"></div>
        <span class="terrain-tile__name">Sanctus Reach Ruins</span>
      </div>
      <div class="terrain-tile">
        <div class="terrain-tile__media"><img class="terrain-tile__image" src="https://picsum.photos/seed/nw-terrain2/600/750" alt="Death world jungle table layout"></div>
        <span class="terrain-tile__name">Catachan Deathworld</span>
      </div>
      <div class="terrain-tile">
        <div class="terrain-tile__media"><img class="terrain-tile__image" src="https://picsum.photos/seed/nw-terrain3/600/750" alt="Frozen tundra table layout"></div>
        <span class="terrain-tile__name">Fenris Ice Fields</span>
      </div>
      <div class="terrain-tile">
        <div class="terrain-tile__media"><img class="terrain-tile__image" src="https://picsum.photos/seed/nw-terrain4/600/750" alt="Industrial manufactorum table layout"></div>
        <span class="terrain-tile__name">Manufactorum Sprawl</span>
      </div>
    </div>
    <div class="btn-row btn-row--center">
      <a class="btn btn--primary" href="#">Book a session</a>
      <a class="btn btn--secondary" href="#">Browse maps</a>
    </div>
  </div>
</section>

<!-- ===================== 12. EVENTS (primary) ===================== -->
<section class="section section--primary">
  <div class="section__inner">
    <div class="section-header">
      <div class="section-header__group">
        <span class="section-header__eyebrow">What's on</span>
        <h2 class="section-header__title">Upcoming events</h2>
      </div>
      <a class="section-header__link" href="#">View all events</a>
    </div>
    <div class="event-grid">
      <article class="event-card">
        <img class="event-card__image" src="https://picsum.photos/seed/nw-event1/600/400" alt="Friday Night Magic">
        <div class="event-card__body">
          <span class="event-card__eyebrow">Magic: The Gathering</span>
          <h3 class="event-card__title">Friday Night Magic — Standard</h3>
          <div class="event-card__date">Fri 5 Jun · 18:30</div>
          <p class="event-card__desc">Weekly Standard tournament, four rounds Swiss. Promo packs to all entrants.</p>
          <a class="btn btn--secondary event-card__cta" href="#">Book</a>
        </div>
      </article>
      <article class="event-card">
        <img class="event-card__image" src="https://picsum.photos/seed/nw-event2/600/400" alt="Pokémon League Cup">
        <div class="event-card__body">
          <span class="event-card__eyebrow">Pokémon</span>
          <h3 class="event-card__title">Pokémon League Cup</h3>
          <div class="event-card__date">Sat 13 Jun · 11:00</div>
          <p class="event-card__desc">Sanctioned League Cup with championship points on the line. Pre-registration required.</p>
          <a class="btn btn--secondary event-card__cta" href="#">Details</a>
        </div>
      </article>
      <article class="event-card">
        <img class="event-card__image" src="https://picsum.photos/seed/nw-event3/600/400" alt="Warhammer paint night">
        <div class="event-card__body">
          <span class="event-card__eyebrow">Warhammer</span>
          <h3 class="event-card__title">Paint Night — Edge Highlighting</h3>
          <div class="event-card__date">Wed 17 Jun · 19:00</div>
          <p class="event-card__desc">Bring a mini and a brush. We'll run through edge highlighting and contrast layering.</p>
          <a class="btn btn--secondary event-card__cta" href="#">Book</a>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ===================== 13. FEATURED EVENT (anchor) ===================== -->
<section class="section section--anchor">
  <div class="section__inner">
    <div class="feature-event">
      <img class="feature-event__image" src="https://picsum.photos/seed/nw-featevent/1200/675" alt="Regional TCG championship in the Nerdworks store">
      <span class="feature-event__scrim"></span>
      <div class="feature-event__content">
        <span class="feature-event__eyebrow">Regional showdown</span>
        <h2 class="feature-event__title">Nerdworks Summer Slam — Lorcana 1K</h2>
        <div class="feature-event__date">Sat 28 Jun · 10:00 · 64 seats</div>
        <p class="feature-event__body">Our biggest Lorcana event of the year, with a £1,000 prize pool and exclusive enchanted card raffle. Full day of competitive play, side events between rounds and the shop bar open all day. Seats always sell out — book early.</p>
        <a class="btn btn--primary feature-event__cta" href="#">Book your seat</a>
      </div>
    </div>
  </div>
</section>

<!-- ===================== 14. EVENTS GALLERY (bright) ===================== -->
<section class="section section--bright">
  <div class="section__inner">
    <div class="gallery-mosaic">
      <div class="gallery-mosaic__item gallery-mosaic__item--big"><img src="https://picsum.photos/seed/nw-g1/800/800" alt="Tournament hall full of players"></div>
      <div class="gallery-mosaic__item"><img src="https://picsum.photos/seed/nw-g2/400/400" alt="Players mid-game"></div>
      <div class="gallery-mosaic__item gallery-mosaic__item--tall"><img src="https://picsum.photos/seed/nw-g3/400/800" alt="Painted Warhammer army on a table"></div>
      <div class="gallery-mosaic__item"><img src="https://picsum.photos/seed/nw-g4/400/400" alt="Trophy presentation"></div>
      <div class="gallery-mosaic__item gallery-mosaic__item--wide"><img src="https://picsum.photos/seed/nw-g5/800/400" alt="Crowd at a release night"></div>
      <div class="gallery-mosaic__item"><img src="https://picsum.photos/seed/nw-g6/400/400" alt="Close-up of a winning deck"></div>
    </div>
    <p class="gallery-mosaic__caption">Snapshots from the shop floor. <a href="#">Follow Nerdworks</a> to see what's on next.</p>
  </div>
</section>

<!-- ===================== 15. BLOG (primary) ===================== -->
<section class="section section--primary">
  <div class="section__inner">
    <div class="section-header">
      <div class="section-header__group">
        <span class="section-header__eyebrow">The journal</span>
        <h2 class="section-header__title">Notes from the shop</h2>
        <p class="section-header__lead">Set breakdowns, buying-desk notes and deck tech from the people behind the counter.</p>
      </div>
    </div>
    <div class="blog-grid">
      <a class="blog-card" href="#">
        <img class="blog-card__image" src="https://picsum.photos/seed/nw-blog1/600/400" alt="Prismatic Evolutions pull rates breakdown">
        <div class="blog-card__body">
          <span class="blog-card__date">22 May 2026</span>
          <h3 class="blog-card__title">Is Prismatic Evolutions worth the hype? Our pull-rate notes</h3>
          <p class="blog-card__hook">We cracked a case at the counter and logged every hit. Here's what the maths actually says about chasing the Eevee chase cards.</p>
        </div>
      </a>
      <a class="blog-card" href="#">
        <img class="blog-card__image" src="https://picsum.photos/seed/nw-blog2/600/400" alt="Buying desk notes on grading">
        <div class="blog-card__body">
          <span class="blog-card__date">14 May 2026</span>
          <h3 class="blog-card__title">Buying desk: how we grade NM vs LP, and why it matters</h3>
          <p class="blog-card__hook">The line between near-mint and light-play decides the price. Here's exactly what we look for under the loupe before a card goes in the cabinet.</p>
        </div>
      </a>
      <a class="blog-card" href="#">
        <img class="blog-card__image" src="https://picsum.photos/seed/nw-blog3/600/400" alt="Tarkir Dragonstorm Commander deck tech">
        <div class="blog-card__body">
          <span class="blog-card__date">6 May 2026</span>
          <h3 class="blog-card__title">Deck tech: brewing the new Tarkir dragon commanders</h3>
          <p class="blog-card__hook">Three of the new wedge commanders, three first drafts, and a few cards we think are quietly underpriced right now.</p>
        </div>
      </a>
    </div>
    <div class="btn-row btn-row--center">
      <a class="btn btn--secondary" href="#">View all posts</a>
    </div>
  </div>
</section>

<!-- ===================== 16. NEWSLETTER (anchor) ===================== -->
<section class="section section--anchor">
  <div class="section__inner">
    <div class="newsletter">
      <h2 class="newsletter__title">Get the drops before they sell out</h2>
      <p class="newsletter__lead">New stock drops, event announcements and buying-desk market notes — straight to your inbox, no filler.</p>
      <form class="newsletter__form" action="#" method="post" onsubmit="return false;">
        <input class="newsletter__input" type="email" placeholder="you@example.com" aria-label="Email address" required>
        <button class="newsletter__submit" type="submit">Subscribe</button>
      </form>
    </div>
  </div>
</section>

<!-- ===================== SITE FOOTER ===================== -->
<footer class="site-footer">
  <div class="site-footer__inner">
    <div>
      <div class="site-footer__brand">Nerd<span>works</span></div>
      <p class="site-footer__meta">A real game store, online and on the high street. © 2026 Nerdworks Ltd.</p>
    </div>
    <nav class="site-footer__links">
      <a class="site-footer__link" href="#">Shop</a>
      <a class="site-footer__link" href="#">Singles</a>
      <a class="site-footer__link" href="#">Events</a>
      <a class="site-footer__link" href="#">Sell to us</a>
      <a class="site-footer__link" href="#">Find the shop</a>
      <a class="site-footer__link" href="#">Contact</a>
    </nav>
  </div>
</footer>

</body>
</html>