/* ==========================================================================
   KeyTidy — static rebuild
   Hand-written CSS replacing the Tailwind/React build. Design tokens are
   pulled straight from the captured site's :root HSL variables.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:wght@500;600;700&display=swap');

:root {
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: 'Playfair Display', Georgia, serif;

  --background: hsl(210, 20%, 98%);
  --foreground: hsl(215, 25%, 12%);
  --card: hsl(0, 0%, 100%);
  --card-foreground: hsl(215, 25%, 12%);
  --primary: hsl(225, 72%, 37%);
  --primary-foreground: hsl(0, 0%, 98%);
  --secondary: hsl(210, 15%, 94%);
  --secondary-foreground: hsl(215, 25%, 12%);
  --muted: hsl(210, 15%, 94%);
  --muted-foreground: hsl(215, 10%, 48%);
  --accent: hsl(0, 75%, 50%);
  --accent-foreground: hsl(0, 0%, 100%);
  --border: hsl(210, 15%, 90%);
  --radius: 0.625rem;

  --max-width: 72rem; /* 6xl */
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-sans);
  color: var(--foreground);
  background: var(--background);
  line-height: 1.5;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ol, ul { margin: 0; padding: 0; list-style: none; }
button { font-family: inherit; }

.container {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 1.5rem;
}

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* -------------------------------------------------- Buttons -------------------------------------------------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  height: 3rem;
  padding: 0 2rem;
  border-radius: 0.5rem;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.9375rem;
  border: 1px solid transparent;
  cursor: pointer;
  transition: filter 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
}
.btn-sm { height: 2.375rem; padding: 0 1.25rem; font-size: 0.875rem; }

.btn-primary { background: var(--primary); color: var(--primary-foreground); }
.btn-primary:hover { filter: brightness(1.08); }

.btn-accent { background: var(--accent); color: var(--accent-foreground); }
.btn-accent:hover { filter: brightness(1.05); }

.btn-outline { background: transparent; border-color: var(--border); color: var(--foreground); font-weight: 500; }
.btn-outline:hover { background: var(--secondary); }

.btn-full { width: 100%; }

/* -------------------------------------------------- Navbar -------------------------------------------------- */

.navbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}
.navbar-inner { height: 4rem; display: flex; align-items: center; justify-content: space-between; }
.navbar .logo img { height: 2.25rem; width: auto; mix-blend-mode: multiply; }

.nav-links { display: none; align-items: center; gap: 2rem; }
.nav-links a { font-size: 0.875rem; font-weight: 500; color: var(--muted-foreground); transition: color 0.15s ease; }
.nav-links a:hover { color: var(--foreground); }

.navbar-actions { display: flex; align-items: center; gap: 0.75rem; }

.cart-link { position: relative; display: inline-flex; padding: 0.5rem; border-radius: 0.5rem; color: var(--foreground); }
.cart-link:hover { background: var(--secondary); }
.cart-link svg { width: 1.25rem; height: 1.25rem; }
.cart-badge {
  position: absolute; top: -0.125rem; right: -0.125rem;
  min-width: 1.125rem; height: 1.125rem; padding: 0 0.25rem;
  border-radius: 9999px; background: var(--accent); color: var(--accent-foreground);
  font-size: 0.625rem; font-weight: 700; line-height: 1.125rem; text-align: center;
}

.hamburger-btn { display: inline-flex; padding: 0.5rem; border-radius: 0.5rem; cursor: pointer; color: var(--foreground); }
.hamburger-btn:hover { background: var(--secondary); }
.hamburger-btn svg { width: 1.25rem; height: 1.25rem; }

.mobile-nav { display: none; position: fixed; top: 4rem; left: 0; right: 0; z-index: 40; background: #fff; border-bottom: 1px solid var(--border); box-shadow: 0 10px 15px -3px rgba(0,0,0,0.08); }
.mobile-nav-inner { display: flex; flex-direction: column; padding: 0.75rem 1.5rem; gap: 0.25rem; }
.mobile-nav a { padding: 0.75rem 0.5rem; border-radius: 0.5rem; font-size: 1rem; font-weight: 500; color: var(--foreground); }
.mobile-nav a:hover { background: var(--secondary); }

.nav-toggle-input:checked ~ .mobile-nav { display: block; }

@media (min-width: 640px) {
  .hamburger-btn { display: none; }
  .mobile-nav { display: none !important; }
}
@media (min-width: 768px) {
  .nav-links { display: flex; }
}

main { padding-top: 4rem; }

/* -------------------------------------------------- Section heading -------------------------------------------------- */

.eyebrow { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); margin: 0 0 0.75rem; }
.eyebrow-light { color: rgba(255,255,255,0.4); }

.section-heading { text-align: center; margin-bottom: 3.5rem; max-width: 42rem; margin-left: auto; margin-right: auto; }
.section-heading h2 { margin: 0 0 1rem; font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; letter-spacing: -0.02em; color: var(--foreground); }
@media (min-width: 640px) { .section-heading h2 { font-size: 2.25rem; } }
.section-heading p { margin: 0; font-size: 1.0625rem; color: var(--muted-foreground); line-height: 1.6; }
.section-heading.on-dark h2 { color: #fff; }
.section-heading.on-dark p { color: rgba(255,255,255,0.6); }

/* -------------------------------------------------- Hero -------------------------------------------------- */

.hero { padding: 7rem 0 4rem; text-align: center; }
.hero-inner {  margin: 0 auto; }
.hero h1 {
  margin: 0 0 1.5rem;
  font-family: var(--font-display);
  font-size: 2.25rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--foreground);
}
.hero h1 .text-primary { color: var(--primary); }
.hero h1 .text-accent { color: var(--accent); }
@media (min-width: 640px) { .hero h1 { font-size: 3.75rem; line-height: 1.1; } }
@media (min-width: 1024px) { .hero h1 { font-size: 4.5rem; } }

.hero .lede { max-width: 34rem; margin: 0 auto 2.5rem; font-size: 1.125rem; color: var(--muted-foreground); line-height: 1.65; }

.hero-actions { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; margin-bottom: 4rem; }
@media (min-width: 640px) { .hero-actions { flex-direction: row; } }
.hero-actions .btn-outline-pill { border: 1px solid var(--border); border-radius: 9999px; height: 3.4375rem; padding: 0 2rem; color: var(--muted-foreground); font-weight: 500; display: inline-flex; align-items: center; gap: 0.5rem; }
.hero-actions .btn-outline-pill:hover { color: var(--foreground); border-color: rgba(23,30,41,0.2); }

.trust-flags { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.5rem; font-size: 0.875rem; color: var(--muted-foreground); }
.trust-flags span { display: inline-flex; align-items: center; gap: 0.5rem; }
.trust-flags .dot { width: 0.25rem; height: 0.25rem; border-radius: 9999px; background: var(--accent); display: inline-block; }

/* Simple page hero (non-home pages) */
.page-hero { padding: 7rem 0 3.5rem; text-align: center; }
.page-hero .container { max-width: 48rem; }
.page-hero h1 { font-family: var(--font-display); font-size: 2.25rem; font-weight: 700; letter-spacing: -0.02em; margin: 0 0 1.25rem; }
@media (min-width: 640px) { .page-hero h1 { font-size: 3rem; } }
.page-hero p { font-size: 1.0625rem; color: var(--muted-foreground); line-height: 1.65; margin: 0 auto 1rem; max-width: 40rem; }
.page-hero .hero-actions { margin-top: 2rem; margin-bottom: 0; }

/* -------------------------------------------------- Trust bar -------------------------------------------------- */

.trust-bar { border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--card); }
.trust-bar-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; padding: 1.5rem 0; }
@media (min-width: 640px) { .trust-bar-grid { grid-template-columns: repeat(4, 1fr); gap: 0; } }
.trust-stat { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 1rem; }
@media (min-width: 640px) { .trust-stat { border-left: 1px solid var(--border); } .trust-stat:first-child { border-left: none; } }
.trust-stat .value { font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; color: var(--primary); }
.trust-stat .label { margin-top: 0.25rem; font-size: 0.75rem; color: var(--muted-foreground); text-transform: uppercase; letter-spacing: 0.15em; font-weight: 500; }

/* -------------------------------------------------- Generic dark / light section wrappers -------------------------------------------------- */

.section { padding: 6rem 0; }
.section-tight { padding: 5rem 0; }
.section-alt { background: rgba(238,240,242,0.5); }
.section-dark { background: var(--foreground); color: #fff; }

/* -------------------------------------------------- Product showcase -------------------------------------------------- */

.product-showcase { padding: 6rem 0 0; background: rgba(238,240,242,0.4); }
.showcase-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; padding-bottom: 4rem; }
@media (min-width: 768px) { .showcase-grid { grid-template-columns: repeat(3, 1fr); } }

.accessories-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .accessories-grid { grid-template-columns: repeat(2, 1fr); } }
.showcase-card { background: #fff; border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; }
.showcase-card .img-wrap { height: 20rem; display: flex; align-items: center; justify-content: center; padding: 2rem; }
.showcase-card .img-wrap img { max-height: 100%; object-fit: contain; }
.showcase-card .caption { text-align: center; font-size: 0.875rem; color: var(--muted-foreground); padding: 0.75rem 1rem; border-top: 1px solid var(--border); margin: 0; }

/* -------------------------------------------------- Product demo -------------------------------------------------- */

.product-demo { padding: 5rem 0; background: rgba(238,240,242,0.4); }
.demo-grid { display: flex; flex-direction: column; align-items: center; gap: 3rem; }
@media (min-width: 1024px) { .demo-grid { flex-direction: row; gap: 5rem; } }
.demo-media { flex-shrink: 0; border-radius: 1rem; overflow: hidden; border: 1px solid var(--border); box-shadow: 0 20px 25px -5px rgba(0,0,0,0.08); background: #fff; }
.demo-media img { width: 24rem; max-width: 80vw; }
.demo-text h2 { font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; margin: 0 0 1.25rem; line-height: 1.2; }
@media (min-width: 640px) { .demo-text h2 { font-size: 2.25rem; } }
.demo-text p { color: var(--muted-foreground); line-height: 1.65; margin: 0 0 1.5rem; }
.demo-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 0.75rem; }
@media (min-width: 640px) { .demo-actions { flex-direction: row; align-items: center; } }

/* -------------------------------------------------- How it works (dark) -------------------------------------------------- */

.how-it-works { padding: 6rem 0; background: var(--foreground); color: #fff; }
.steps-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin-bottom: 3rem; }
@media (min-width: 640px) { .steps-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .steps-grid { grid-template-columns: repeat(4, 1fr); } }
.step-card { position: relative; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: 1rem; padding: 1.5rem; }
.step-card .step-icon { width: 2.5rem; height: 2.5rem; border-radius: 0.75rem; background: rgba(255,255,255,0.12); display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; }
.step-card .step-icon svg { width: 1.25rem; height: 1.25rem; }
.step-card .step-number { position: absolute; top: 1rem; right: 1.25rem; font-size: 2.25rem; font-weight: 700; color: rgba(255,255,255,0.15); }
.step-card h3 { font-size: 0.9375rem; font-weight: 600; margin: 0 0 0.5rem; line-height: 1.4; }
.step-card p { font-size: 0.8125rem; color: rgba(255,255,255,0.7); line-height: 1.6; margin: 0; }

.steps-visual { margin-top: 3rem; background: var(--card); border-radius: 1rem; border: 1px solid var(--border); overflow: hidden; }

.callout {
  margin-top: 2rem; background: var(--accent); color: var(--accent-foreground);
  border-radius: 1rem; padding: 1.5rem 2rem; display: flex; gap: 1rem; align-items: flex-start;
}
.callout svg { width: 2rem; height: 2rem; flex-shrink: 0; }
.callout p { margin: 0; font-size: 0.9375rem; line-height: 1.65; }
.callout a { text-decoration: underline; font-weight: 600; }

/* -------------------------------------------------- Lightbox (zoomable images, no JS) -------------------------------------------------- */

.zoomable { position: relative; display: block; }
.zoomable img { width: 100%; }
.zoomable .zoom-hint { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; background: rgba(0,0,0,0.2); transition: opacity 0.15s ease; }
.zoomable:hover .zoom-hint { opacity: 1; }
.zoomable .zoom-hint span { background: rgba(255,255,255,0.92); color: var(--foreground); font-size: 0.75rem; font-weight: 600; padding: 0.375rem 0.75rem; border-radius: 9999px; }

.lightbox { display: none; position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,0.82); align-items: center; justify-content: center; padding: 1.5rem; }
.lightbox:target { display: flex; }
.lightbox-inner { position: relative; max-width: 64rem; width: 100%; max-height: 90vh; background: var(--card); border-radius: 1rem; overflow: auto; }
.lightbox-inner img { width: 100%; height: auto; display: block; }
.lightbox-close { position: absolute; top: 0.75rem; right: 0.75rem; width: 2.25rem; height: 2.25rem; border-radius: 9999px; background: rgba(255,255,255,0.95); color: var(--foreground); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; line-height: 1; box-shadow: 0 2px 6px rgba(0,0,0,0.2); }
.lightbox-caption { padding: 1rem 1.25rem; border-bottom: 1px solid var(--border); text-align: center; font-family: var(--font-display); font-weight: 700; }

/* -------------------------------------------------- Examples (JS carousel, matches original) -------------------------------------------------- */

.examples-section { padding: 6rem 0; }

.examples-carousel { position: relative; }
.examples-viewport { position: relative; overflow: hidden; touch-action: pan-y; }
.examples-track {
  position: absolute;
  top: 0;
  left: 50%;
  display: flex;
  gap: 24px;
  transition: transform 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.example-card { flex-shrink: 0; background: var(--card); border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; display: flex; flex-direction: column; transition: opacity 0.45s ease; }
.example-card .img-wrap { max-height: 16rem; overflow: hidden; }
.example-card .img-wrap img { width: 100%; height: 100%; object-fit: cover; }
.example-card .body { padding: 1.5rem; position: relative; flex: 1; }
.example-card .number { position: absolute; top: 1rem; right: 1.25rem; font-size: 2.5rem; font-weight: 700; color: var(--border); line-height: 1; }
.example-card .accent-line { width: 2rem; height: 2px; background: var(--accent); margin-bottom: 1rem; }
.example-card h3 { font-size: 1rem; font-weight: 600; margin: 0 0 0.75rem; padding-right: 2.5rem; }
.example-card p { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.65; margin: 0; }

.carousel-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 20;
  width: 2.5rem; height: 2.5rem; border-radius: 9999px;
  background: var(--card); border: 1px solid var(--border); box-shadow: 0 1px 2px rgba(0,0,0,0.08);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  color: var(--foreground); transition: background-color 0.15s ease;
}
.carousel-arrow:hover { background: var(--secondary); }
.carousel-arrow svg { width: 1.25rem; height: 1.25rem; }
.carousel-arrow.prev { left: 0; }
.carousel-arrow.next { right: 0; }

.examples-dots { display: flex; align-items: center; justify-content: center; gap: 0.5rem; margin-top: 2rem; }
.examples-dots .dot { width: 0.5rem; height: 0.5rem; border-radius: 9999px; background: var(--border); border: none; padding: 0; cursor: pointer; transition: all 0.3s ease; }
.examples-dots .dot.active { width: 1.5rem; background: var(--accent); }

/* -------------------------------------------------- Features strip (dark) -------------------------------------------------- */

.features-strip { padding: 6rem 0; background: var(--foreground); color: #fff; }
.features-strip .strip-head { margin-bottom: 3.5rem; max-width: 32rem; }
.features-strip .strip-head h2 { font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; color: #fff; margin: 0; line-height: 1.25; }
@media (min-width: 640px) { .features-strip .strip-head h2 { font-size: 2.25rem; } }
.strip-grid { display: grid; grid-template-columns: 1fr; gap: 1px; background: rgba(255,255,255,0.1); }
@media (min-width: 640px) { .strip-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .strip-grid { grid-template-columns: repeat(4, 1fr); } }
.strip-card { background: var(--foreground); padding: 2rem; }
.strip-card .accent-line { width: 2rem; height: 2px; background: var(--accent); margin-bottom: 1.5rem; }
.strip-card h3 { font-size: 1rem; font-weight: 600; color: #fff; margin: 0 0 0.75rem; }
.strip-card p { font-size: 0.875rem; color: rgba(255,255,255,0.55); line-height: 1.65; margin: 0; }

.examples-hint { text-align: center; font-size: 0.8125rem; color: var(--muted-foreground); margin-top: -0.5rem; }

/* -------------------------------------------------- Shadowboard -------------------------------------------------- */

.shadowboard-intro { max-width: 40rem; margin: 0 auto 2.5rem; text-align: center; }
.shadowboard-intro p { color: var(--muted-foreground); line-height: 1.65; }
.shadowboard-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .shadowboard-grid { grid-template-columns: repeat(2, 1fr); gap: 2rem; } }
.shadowboard-card { background: #fff; border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; box-shadow: 0 1px 2px rgba(0,0,0,0.04); display: flex; flex-direction: column; }
.shadowboard-card .img-wrap { aspect-ratio: 4/3; background: rgba(238,240,242,0.5); }
.shadowboard-card .img-wrap img { width: 100%; height: 100%; object-fit: contain; padding: 1rem; }
.shadowboard-card .body { padding: 1.25rem; border-top: 1px solid var(--border); }
.shadowboard-card h3 { font-size: 1rem; font-weight: 600; margin: 0 0 0.25rem; }
.shadowboard-card p { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.6; margin: 0; }

.build-t1-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: start; margin-bottom: 3rem; }
@media (min-width: 1024px) { .build-t1-grid { grid-template-columns: repeat(2, 1fr); gap: 5rem; } }
.build-t1-grid h3 { font-family: var(--font-display); font-size: 1.375rem; font-weight: 700; color: #fff; margin: 0 0 1rem; }
@media (min-width: 640px) { .build-t1-grid h3 { font-size: 1.5rem; } }
.build-t1-grid > div > p { color: rgba(255,255,255,0.6); line-height: 1.65; margin: 0 0 1rem; }

.build-steps { display: flex; flex-direction: column; gap: 1.5rem; }
.build-step { display: flex; gap: 1rem; }
.build-step-icon-col { flex-shrink: 0; display: flex; flex-direction: column; align-items: center; }
.build-step-icon { width: 2.5rem; height: 2.5rem; border-radius: 0.75rem; background: rgba(224,50,50,0.18); display: flex; align-items: center; justify-content: center; color: var(--accent); }
.build-step-icon svg { width: 1.25rem; height: 1.25rem; }
.build-step-line { width: 1px; flex: 1; background: rgba(255,255,255,0.15); margin-top: 0.5rem; }
.build-step h4 { color: #fff; font-size: 0.9375rem; font-weight: 600; margin: 0.25rem 0 0.375rem; }
.build-step h4 .num { color: var(--accent); margin-right: 0.5rem; }
.build-step p { color: rgba(255,255,255,0.6); font-size: 0.8125rem; line-height: 1.6; margin: 0; }

.benefit-grid { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 640px) { .benefit-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .benefit-grid { grid-template-columns: repeat(4, 1fr); } }
.benefit-card { background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 1.5rem; }
.benefit-card .icon { width: 2.75rem; height: 2.75rem; border-radius: 0.75rem; background: rgba(224,50,50,0.12); color: var(--accent); display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; }
.benefit-card .icon svg { width: 1.25rem; height: 1.25rem; }
.benefit-card h3 { font-size: 1rem; font-weight: 600; margin: 0 0 0.5rem; }
.benefit-card p { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.65; margin: 0; }

/* -------------------------------------------------- Cards / icons (generic, industries etc) -------------------------------------------------- */

.icon-card { background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 1.75rem; }
.icon-card .icon { width: 2.75rem; height: 2.75rem; border-radius: 0.75rem; background: rgba(235,60,60,0.12); color: var(--accent); display: flex; align-items: center; justify-content: center; margin-bottom: 1.25rem; }
.icon-card .icon svg { width: 1.375rem; height: 1.375rem; }
.icon-card h3 { font-family: var(--font-display); font-size: 1.125rem; font-weight: 700; margin: 0 0 0.625rem; }
.icon-card p { font-size: 0.9375rem; color: var(--muted-foreground); line-height: 1.65; margin: 0; }

.icon-card.on-dark { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.14); }
.icon-card.on-dark h3 { color: #fff; }
.icon-card.on-dark p { color: rgba(255,255,255,0.65); }
.icon-card.on-dark .icon { background: rgba(255,255,255,0.12); color: #fff; }

/* -------------------------------------------------- Footer -------------------------------------------------- */

.site-footer { background: var(--foreground); color: #fff; }
.footer-accent-bar { height: 4px; background: var(--accent); }
.site-footer .container { padding-top: 4rem; padding-bottom: 2.5rem; }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; margin-bottom: 4rem; }
@media (min-width: 1024px) { .footer-grid { grid-template-columns: 5fr 3fr 3fr; gap: 2rem; } }
.footer-logo { height: 3.5rem; width: auto; margin-bottom: 1.25rem; }
.footer-brand .about-text { color: rgba(255,255,255,0.5); font-size: 0.875rem; line-height: 1.65; max-width: 20rem; margin: 0 0 1.5rem; }
.footer-col h4 { font-size: 0.625rem; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(255,255,255,0.4); margin: 0 0 1.25rem; }
.footer-contact { display: flex; flex-direction: column; gap: 0.875rem; }
.footer-contact a { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.875rem; color: rgba(255,255,255,0.6); }
.footer-contact a:hover { color: #fff; }
.footer-contact svg { width: 1rem; height: 1rem; margin-top: 0.125rem; flex-shrink: 0; color: rgba(255,255,255,0.3); }
.footer-links { display: flex; flex-direction: column; gap: 0.75rem; }
.footer-links a { font-size: 0.875rem; color: rgba(255,255,255,0.5); }
.footer-links a:hover { color: #fff; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 0.75rem; text-align: center; font-size: 0.75rem; color: rgba(255,255,255,0.3); }
@media (min-width: 640px) { .footer-bottom { flex-direction: row; text-align: left; } }
.footer-bottom a { text-decoration: underline; }
.footer-bottom a:hover { color: rgba(255,255,255,0.6); }

/* -------------------------------------------------- FAQ accordion (details/summary, no JS) -------------------------------------------------- */

.faq-list { border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; background: var(--card); }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-item:last-child { border-bottom: none; }
.faq-item summary { cursor: pointer; list-style: none; padding: 1.25rem 1.5rem; font-weight: 600; font-size: 0.9375rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; font-size: 1.25rem; color: var(--muted-foreground); flex-shrink: 0; }
.faq-item[open] summary::after { content: "\2212"; }
.faq-item .faq-answer { padding: 0 1.5rem 1.25rem; font-size: 0.9375rem; color: var(--muted-foreground); line-height: 1.7; }

/* -------------------------------------------------- Comparison table -------------------------------------------------- */

.compare-table-wrap { overflow-x: auto; border-radius: 1rem; border: 1px solid rgba(255,255,255,0.14); }
table.compare-table { width: 100%; border-collapse: collapse; min-width: 40rem; background: rgba(255,255,255,0.04); }
table.compare-table th, table.compare-table td { padding: 1rem 1.25rem; text-align: left; font-size: 0.875rem; border-bottom: 1px solid rgba(255,255,255,0.1); }
table.compare-table th { color: rgba(255,255,255,0.5); text-transform: uppercase; font-size: 0.6875rem; letter-spacing: 0.1em; font-weight: 700; }
table.compare-table td { color: rgba(255,255,255,0.85); }
table.compare-table tr:last-child td { border-bottom: none; }
table.compare-table td:first-child { font-weight: 600; color: #fff; }

@media (max-width: 640px) {
  .compare-cards { display: flex; flex-direction: column; gap: 1rem; }
  .compare-table-wrap { display: none; }
}
@media (min-width: 641px) { .compare-cards { display: none; } }
.compare-card { background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: 0.75rem; padding: 1.25rem; }
.compare-card h4 { color: #fff; font-size: 0.9375rem; margin: 0 0 0.75rem; }
.compare-card .row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.5rem 0; border-top: 1px solid rgba(255,255,255,0.08); font-size: 0.8125rem; }
.compare-card .row:first-of-type { border-top: none; }
.compare-card .row .k { color: rgba(255,255,255,0.5); }
.compare-card .row .v { color: rgba(255,255,255,0.9); text-align: right; }

/* -------------------------------------------------- Product gallery (radio-tab, no JS) -------------------------------------------------- */

.gallery-radio { position: absolute; opacity: 0; pointer-events: none; }
.gallery-main { position: relative; aspect-ratio: 1/1; border-radius: 1rem; overflow: hidden; background: #fff; border: 1px solid var(--border); margin-bottom: 0.75rem; }
.gallery-panel { display: none; position: absolute; inset: 0; align-items: center; justify-content: center; padding: 1.5rem; }
.gallery-panel img { max-width: 100%; max-height: 100%; width: auto; object-fit: contain; }
.gallery-panel .gallery-caption { position: absolute; bottom: 0.75rem; left: 50%; transform: translateX(-50%); background: rgba(255,255,255,0.85); border: 1px solid var(--border); border-radius: 9999px; padding: 0.25rem 0.75rem; font-size: 0.75rem; color: var(--muted-foreground); }
.gallery-thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
.gallery-thumb { display: block; aspect-ratio: 1/1; border: 2px solid transparent; border-radius: 0.75rem; overflow: hidden; background: #fff; cursor: pointer; }
.gallery-thumb img { width: 100%; height: 100%; object-fit: contain; padding: 0.25rem; }

#gallery-0:checked ~ .gallery-main #gallery-panel-0,
#gallery-1:checked ~ .gallery-main #gallery-panel-1,
#gallery-2:checked ~ .gallery-main #gallery-panel-2,
#gallery-3:checked ~ .gallery-main #gallery-panel-3,
#gallery-4:checked ~ .gallery-main #gallery-panel-4,
#gallery-5:checked ~ .gallery-main #gallery-panel-5,
#gallery-6:checked ~ .gallery-main #gallery-panel-6,
#gallery-7:checked ~ .gallery-main #gallery-panel-7,
#gallery-8:checked ~ .gallery-main #gallery-panel-8,
#gallery-9:checked ~ .gallery-main #gallery-panel-9,
#gallery-10:checked ~ .gallery-main #gallery-panel-10,
#gallery-11:checked ~ .gallery-main #gallery-panel-11,
#gallery-12:checked ~ .gallery-main #gallery-panel-12,
#gallery-13:checked ~ .gallery-main #gallery-panel-13,
#gallery-14:checked ~ .gallery-main #gallery-panel-14,
#gallery-15:checked ~ .gallery-main #gallery-panel-15 {
  display: flex;
}

#gallery-0:checked ~ .gallery-thumbs label[for="gallery-0"],
#gallery-1:checked ~ .gallery-thumbs label[for="gallery-1"],
#gallery-2:checked ~ .gallery-thumbs label[for="gallery-2"],
#gallery-3:checked ~ .gallery-thumbs label[for="gallery-3"],
#gallery-4:checked ~ .gallery-thumbs label[for="gallery-4"],
#gallery-5:checked ~ .gallery-thumbs label[for="gallery-5"],
#gallery-6:checked ~ .gallery-thumbs label[for="gallery-6"],
#gallery-7:checked ~ .gallery-thumbs label[for="gallery-7"],
#gallery-8:checked ~ .gallery-thumbs label[for="gallery-8"],
#gallery-9:checked ~ .gallery-thumbs label[for="gallery-9"],
#gallery-10:checked ~ .gallery-thumbs label[for="gallery-10"],
#gallery-11:checked ~ .gallery-thumbs label[for="gallery-11"],
#gallery-12:checked ~ .gallery-thumbs label[for="gallery-12"],
#gallery-13:checked ~ .gallery-thumbs label[for="gallery-13"],
#gallery-14:checked ~ .gallery-thumbs label[for="gallery-14"],
#gallery-15:checked ~ .gallery-thumbs label[for="gallery-15"] {
  border-color: var(--accent);
}

/* -------------------------------------------------- Shop configurator -------------------------------------------------- */

.shop-layout { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: start; }
@media (min-width: 1024px) { .shop-layout { grid-template-columns: 1.1fr 0.9fr; gap: 4rem; } }

.shop-card { background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 1.75rem; margin-bottom: 1.5rem; }
.shop-card-flush { margin-bottom: 0; }
.shop-card h3 { font-family: var(--font-display); font-size: 1.25rem; font-weight: 700; margin: 0 0 0.375rem; }
.shop-card .price-tag { color: var(--primary); font-weight: 700; }
.shop-card .sub { font-size: 0.875rem; color: var(--muted-foreground); margin: 0 0 1.5rem; }

.field-label { display: block; font-size: 0.8125rem; font-weight: 600; margin: 1.25rem 0 0.625rem; }
.field-label:first-child { margin-top: 0; }
.field-label-flush { margin-top: 0; }

.colour-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 0.5rem; }
.colour-grid-four { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 480px) { .colour-grid { grid-template-columns: repeat(4, 1fr); } }
.colour-swatch { position: relative; }
.colour-swatch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.colour-swatch .swatch { display: block; width: 100%; aspect-ratio: 1; border-radius: 0.5rem; border: 2px solid var(--border); }
.colour-swatch input:checked ~ .swatch { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(27,63,160,0.25); }
.colour-swatch .name { display: block; font-size: 0.625rem; text-align: center; margin-top: 0.25rem; color: var(--muted-foreground); }

.engrave-input { width: 100%; padding: 0.5rem 0.75rem; border-radius: 0.5rem; border: 1px solid var(--border); font-family: var(--font-sans); font-size: 0.875rem; margin-top: 0.5rem; }

.radio-row { display: flex; flex-direction: column; gap: 0.625rem; }
.radio-option { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; border: 1px solid var(--border); border-radius: 0.625rem; cursor: pointer; font-size: 0.875rem; }
.radio-option:has(input:checked) { border-color: var(--primary); background: rgba(27,63,160,0.05); }
.radio-option input { accent-color: var(--primary); width: 1rem; height: 1rem; }
.radio-option .opt-label { flex: 1; }
.radio-option .opt-price { font-weight: 600; color: var(--muted-foreground); }

.check-option { display: flex; align-items: flex-start; gap: 0.75rem; padding: 1rem; border: 1px solid var(--border); border-radius: 0.625rem; cursor: pointer; margin-bottom: 0.625rem; }
.check-option:has(input:checked) { border-color: var(--primary); background: rgba(27,63,160,0.05); }
.check-option input { accent-color: var(--primary); width: 1.125rem; height: 1.125rem; margin-top: 0.125rem; flex-shrink: 0; }
.check-option .opt-title { font-weight: 600; font-size: 0.875rem; }
.check-option .opt-desc { font-size: 0.8125rem; color: var(--muted-foreground); margin-top: 0.125rem; }
.check-option .opt-price { margin-left: auto; font-weight: 600; color: var(--muted-foreground); white-space: nowrap; }

.order-summary { position: sticky; top: 6rem; background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 1.75rem; }
.order-summary h3 { font-family: var(--font-display); font-size: 1.125rem; font-weight: 700; margin: 0 0 1.25rem; }
.summary-row { display: flex; justify-content: space-between; font-size: 0.875rem; color: var(--muted-foreground); padding: 0.5rem 0; border-bottom: 1px dashed var(--border); }
.summary-row.total { border-bottom: none; border-top: 1px solid var(--border); margin-top: 0.5rem; padding-top: 1rem; font-size: 1rem; font-weight: 700; color: var(--foreground); }
.summary-note { font-size: 0.75rem; color: var(--muted-foreground); margin-top: 0.75rem; }

.number-input { width: 5rem; padding: 0.5rem; border: 1px solid var(--border); border-radius: 0.5rem; font-family: var(--font-sans); }

.preset-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.625rem; margin-bottom: 1rem; }
.preset-btn { border: 1px solid var(--border); border-radius: 0.625rem; padding: 0.625rem 0.75rem; font-size: 0.8125rem; text-align: left; cursor: pointer; background: #fff; }
.preset-title { display: block; font-weight: 600; margin-bottom: 0.375rem; }
.preset-btn .dots { display: flex; gap: 0.25rem; margin-bottom: 0.375rem; }
.preset-btn .dots span { width: 0.75rem; height: 0.75rem; border-radius: 9999px; border: 1px solid rgba(0,0,0,0.15); display: inline-block; }
.preset-btn input { display: none; }
.preset-btn:has(input:checked) { border-color: var(--primary); background: rgba(27,63,160,0.05); }

.custom-pegs-block { display: none; }
#bag-mode-custom:checked ~ .custom-pegs-block { display: block; }
#bag-mode-custom:checked + label.preset-btn { border-color: var(--accent); background: rgba(224,50,50,0.05); }

/* -------------------------------------------------- Cart page -------------------------------------------------- */

.cart-page { padding: 7rem 0 5rem; }
.cart-page h1 { font-family: var(--font-display); font-size: 2rem; margin: 0 0 2rem; }
.cart-line { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--border); }
.cart-line .label { font-weight: 600; }
.cart-line .desc { font-size: 0.8125rem; color: var(--muted-foreground); margin-top: 0.25rem; }
.cart-line .amount { font-weight: 600; white-space: nowrap; }
.cart-line form { margin-top: 0.5rem; }
.cart-line .remove-btn { background: none; border: none; color: var(--muted-foreground); font-size: 0.75rem; text-decoration: underline; cursor: pointer; padding: 0; }
.cart-empty { text-align: center; padding: 4rem 0; color: var(--muted-foreground); }
.cart-empty a { color: var(--primary); font-weight: 600; text-decoration: underline; }
.cart-totals { margin-top: 1.5rem; padding-top: 1.5rem; }
.cart-totals .summary-row.total { font-size: 1.25rem; }
.cart-actions { margin-top: 2rem; display: flex; flex-direction: column; gap: 1rem; }
.cart-actions .btn { width: 100%; }

/* -------------------------------------------------- Forms (generic) -------------------------------------------------- */

.form-field { margin-bottom: 1.25rem; }
.form-field label { display: block; font-size: 0.8125rem; font-weight: 600; margin-bottom: 0.5rem; }
.form-field input, .form-field textarea, .form-field select {
  width: 100%; padding: 0.75rem 0.875rem; border-radius: 0.5rem; border: 1px solid var(--border);
  font-family: var(--font-sans); font-size: 0.9375rem;
}
.form-field input:focus, .form-field textarea:focus { outline: 2px solid var(--primary); outline-offset: 1px; }
.form-field .required { color: var(--accent); }
.form-note { font-size: 0.75rem; color: var(--muted-foreground); margin-top: 0.5rem; }
.form-note-spaced { margin: 1rem 0 0; }
.form-error { background: #fef2f2; color: #b91c1c; border-radius: 0.5rem; padding: 0.875rem 1rem; font-size: 0.875rem; margin-bottom: 1.25rem; }
.form-success { background: rgba(27,63,160,0.08); color: var(--primary); border-radius: 0.5rem; padding: 0.875rem 1rem; font-size: 0.875rem; margin-bottom: 1.25rem; }

/* -------------------------------------------------- Order confirmation -------------------------------------------------- */

.confirmation-page { padding: 8rem 0 6rem; text-align: center; }
.confirmation-page .icon-circle { width: 4.5rem; height: 4.5rem; border-radius: 9999px; background: rgba(27,63,160,0.1); color: var(--primary); display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; }
.confirmation-page .icon-circle svg { width: 2.25rem; height: 2.25rem; }
.confirmation-page h1 { font-family: var(--font-display); font-size: 2rem; margin: 0 0 1rem; }
.confirmation-page p { color: var(--muted-foreground); max-width: 30rem; margin: 0 auto 0.75rem; line-height: 1.65; }
.order-detail-box { max-width: 26rem; margin: 2rem auto; background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 1.5rem; text-align: left; }
.order-detail-box .row { display: flex; justify-content: space-between; padding: 0.5rem 0; font-size: 0.875rem; border-bottom: 1px solid var(--border); }
.order-detail-box .row:last-child { border-bottom: none; }

/* -------------------------------------------------- Utility helpers -------------------------------------------------- */

.text-left { text-align: left; }

/* -------------------------------------------------- Container width variants -------------------------------------------------- */

.container-sm { max-width: 40rem; margin-left: auto; margin-right: auto; }
.container-md { max-width: 42rem; margin-left: auto; margin-right: auto; }
.container-lg { max-width: 60rem; margin-left: auto; margin-right: auto; }

/* -------------------------------------------------- Section / page-hero modifiers -------------------------------------------------- */

.page-hero-tight { padding-bottom: 1rem; }
.page-hero-left { text-align: left; padding-bottom: 2rem; }
.section-flush-top { padding-top: 0; }
.section-product { padding-top: 1rem; }

/* -------------------------------------------------- Icon card compact modifier -------------------------------------------------- */

.icon-card-compact { padding: 1.5rem; }
.icon-card-compact h3 { font-size: 1rem; margin-bottom: 0.5rem; }

/* -------------------------------------------------- Benefit grid column variants -------------------------------------------------- */

.benefit-grid-auto-18 { grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }
.benefit-grid-3 { grid-template-columns: repeat(3, 1fr); }
.benefit-grid-auto-16 { grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }

/* -------------------------------------------------- Hero actions modifiers -------------------------------------------------- */

.hero-actions-flush { margin-bottom: 0; }
.hero-actions-start { justify-content: flex-start; margin-top: 2rem; margin-bottom: 0; }

/* -------------------------------------------------- Shop layout modifiers -------------------------------------------------- */

.shop-layout-centered { align-items: center; }
.shop-layout-spaced { margin-bottom: 5rem; }

/* -------------------------------------------------- Section heading modifiers -------------------------------------------------- */

.section-heading-narrow { max-width: 36rem; }

/* -------------------------------------------------- CTA text -------------------------------------------------- */

.cta-text { color: var(--muted-foreground); font-size: 0.9375rem; margin-bottom: 1.5rem; }

/* -------------------------------------------------- Form note center -------------------------------------------------- */

.form-note-center { text-align: center; }

/* -------------------------------------------------- Sectors header (industries page) -------------------------------------------------- */

.sectors-header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1.5rem; align-items: flex-end; margin-bottom: 3rem; }
.sectors-header h2 { font-family: var(--font-display); font-size: 2rem; font-weight: 700; color: #fff; margin: 0; }
.sectors-header p { color: rgba(255,255,255,0.5); max-width: 22rem; font-size: 0.875rem; margin: 0; }

/* -------------------------------------------------- Icon card with numbered badge -------------------------------------------------- */

.icon-card-numbered { position: relative; }
.card-number { position: absolute; top: 1rem; right: 1.25rem; font-size: 2.25rem; font-weight: 700; color: rgba(255,255,255,0.1); }

/* -------------------------------------------------- Industries hero intro text -------------------------------------------------- */

.industries-intro p { color: var(--muted-foreground); line-height: 1.65; margin: 0 0 1.5rem; }
.industries-intro p:last-child { margin: 0; }

/* -------------------------------------------------- Impact list (industries why section) -------------------------------------------------- */

.impact-list { display: flex; flex-direction: column; gap: 1.5rem; }
.impact-item { display: flex; align-items: flex-start; gap: 2rem; background: var(--card); border: 1px solid var(--border); border-radius: 1rem; padding: 2rem; flex-wrap: wrap; }
.impact-icon { flex-shrink: 0; width: 4rem; height: 4rem; border-radius: 1rem; background: rgba(224,50,50,0.1); color: var(--accent); display: flex; align-items: center; justify-content: center; }
.impact-body { flex: 1; min-width: 14rem; }
.impact-body h3 { font-size: 1.125rem; font-weight: 600; margin: 0 0 0.75rem; }
.impact-body p { color: var(--muted-foreground); line-height: 1.65; margin: 0; }

/* -------------------------------------------------- Section headings with display font -------------------------------------------------- */

.h2-display { font-family: var(--font-display); font-weight: 700; }
.h2-shadowboard { font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; margin: 0 0 1rem; }
.h2-industries-why { font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; max-width: 32rem; margin: 0 0 3rem; }
.h2-shop-section { font-family: var(--font-display); font-size: 1.75rem; font-weight: 700; margin: 0 0 3rem; }
.h2-shop-sm { font-family: var(--font-display); font-size: 1.75rem; font-weight: 700; margin: 0 0 2.5rem; }
.h2-shadowboard-benefits { font-size: 2.25rem; }

/* -------------------------------------------------- Compare table highlights -------------------------------------------------- */

.compare-table th.th-keytidy { background: rgba(224,50,50,0.15); }
.compare-table td.td-keytidy { background: rgba(224,50,50,0.06); }

/* -------------------------------------------------- Pack contents item -------------------------------------------------- */

.pack-item { display: flex; align-items: center; gap: 1rem; padding: 0.75rem; border-radius: 0.75rem; background: var(--secondary); border: 1px solid var(--border); margin-bottom: 0.75rem; }
.pack-contents-heading { margin-bottom: 1rem; }
.pack-item-thumb { width: 3rem; height: 3rem; border-radius: 0.5rem; overflow: hidden; background: #fff; flex-shrink: 0; border: 1px solid var(--border); }
.pack-item-thumb img { width: 100%; height: 100%; object-fit: contain; padding: 0.15rem; }
.pack-item-info { flex: 1; }
.pack-item-info p { margin: 0; }
.pack-item-label { font-weight: 600; font-size: 0.875rem; }
.pack-item-desc { font-size: 0.75rem; color: var(--muted-foreground); }

/* -------------------------------------------------- Price banner -------------------------------------------------- */

.price-banner { display: flex; align-items: center; justify-content: space-between; background: var(--primary); border-radius: 0.75rem; padding: 1rem 1.25rem; margin: 1.5rem 0; }
.price-banner-label p { margin: 0; }
.price-banner-sublabel { color: rgba(255,255,255,0.7); font-size: 0.75rem; }
.price-banner-title { color: #fff; font-weight: 600; }
.price-banner-amount { text-align: right; }
.price-banner-value { font-family: var(--font-display); font-size: 1.875rem; font-weight: 700; color: #fff; margin: 0; }
.price-banner-vat { color: rgba(255,255,255,0.6); font-size: 0.75rem; margin: 0; }

/* -------------------------------------------------- Accessory card -------------------------------------------------- */

.accessory-card { display: grid; grid-template-columns: 1fr; gap: 0; padding: 0; overflow: hidden; }
.accessory-media { background: #fff; border-bottom: 1px solid var(--border); padding: 2rem; display: flex; align-items: center; justify-content: center; min-height: 14rem; }
.accessory-media img { max-height: 14rem; object-fit: contain; }
.accessory-body { padding: 1.75rem; }
.accessory-header { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.accessory-price { font-size: 1.25rem; font-weight: 700; white-space: nowrap; }
.accessory-eyebrow { margin-bottom: 0.25rem; }
.accessory-title { font-size: 1.125rem; font-weight: 600; margin: 0; }
.accessory-desc { font-size: 0.875rem; color: var(--muted-foreground); line-height: 1.65; margin: 0 0 1rem; }
.feature-list { list-style: disc; padding-left: 1.25rem; }
.feature-list li { font-size: 0.875rem; margin-bottom: 0.375rem; }
.feature-list li:last-child { margin-bottom: 0; }

/* -------------------------------------------------- Upgrades note -------------------------------------------------- */

.upgrades-note { text-align: center; font-size: 0.875rem; color: var(--muted-foreground); margin-top: 2.5rem; }
.upgrades-note a { color: var(--primary); font-weight: 600; text-decoration: underline; }

/* -------------------------------------------------- Shop configurator -------------------------------------------------- */

.configurator-header { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: 1.5rem; }
.configurator-header h3 { margin-bottom: 0.25rem; }
.configurator-header .sub { margin: 0; }
.configurator-price { font-size: 1.25rem; font-weight: 700; white-space: nowrap; }
.configurator-preview { text-align: center; background: #fff; border: 1px solid var(--border); border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; }
.configurator-preview img { height: 10rem; margin: 0 auto; object-fit: contain; }

/* -------------------------------------------------- Peg configurator -------------------------------------------------- */

.peg-config { border: 1px solid var(--border); border-radius: 0.75rem; padding: 1rem; margin-bottom: 1rem; }
.peg-config-label { font-weight: 600; font-size: 0.8125rem; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 0.75rem; }

/* -------------------------------------------------- Pegs kit -------------------------------------------------- */

.pegs-kit-img { width: 9rem; height: 9rem; margin: 0 auto 1.25rem; border-radius: 1rem; overflow: hidden; background: #fff; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; }
.pegs-kit-img img { width: 80%; height: 80%; object-fit: contain; }
.preset-btn-full { width: 100%; display: block; margin-bottom: 1rem; }
.custom-kit-title { display: block; font-weight: 600; }
.custom-kit-subtitle { font-size: 0.75rem; color: var(--muted-foreground); }

/* -------------------------------------------------- Custom peg config -------------------------------------------------- */

.custom-peg-config { border: 1px solid var(--border); border-radius: 0.75rem; padding: 0.875rem; margin-bottom: 0.75rem; }
.custom-peg-label { font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 0.625rem; }

/* -------------------------------------------------- Disc number range -------------------------------------------------- */

.number-range { display: flex; gap: 1rem; }
.number-field { flex: 1; }
.number-field-label { font-size: 0.75rem; color: var(--muted-foreground); display: block; margin-bottom: 0.375rem; }
.number-field .number-input { width: 100%; }

/* -------------------------------------------------- Shop accessories column -------------------------------------------------- */

.shop-accessories-col { display: flex; flex-direction: column; gap: 2rem; }

/* -------------------------------------------------- Inline product card header -------------------------------------------------- */

.product-heading { font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; margin: 0 0 0.75rem; }
.product-intro { color: var(--muted-foreground); line-height: 1.65; margin: 0 0 2rem; }

/* -------------------------------------------------- Btn with top margin -------------------------------------------------- */

.btn-mt { margin-top: 1.25rem; }

/* -------------------------------------------------- Examples hint spacing -------------------------------------------------- */

.examples-hint-spaced { margin-top: 1rem; }

/* -------------------------------------------------- Terms page -------------------------------------------------- */

.terms-page { padding: 7rem 0 5rem; max-width: 44rem; margin: 0 auto; }
.terms-page h1 { font-family: var(--font-display); font-size: 2rem; margin-bottom: 0.5rem; }
.terms-page .updated { color: var(--muted-foreground); font-size: 0.875rem; margin-bottom: 2.5rem; }
.terms-page h2 { font-size: 1.125rem; margin: 2rem 0 0.75rem; }
.terms-page p, .terms-page li { color: var(--muted-foreground); line-height: 1.7; font-size: 0.9375rem; }
.terms-page ul { padding-left: 1.25rem; list-style: disc; }


.shadowboard-title {
  font-family: var(--font-display);
  font-size: 1.875rem;
  font-weight: 700;
  margin: 0 0 1rem;
}

.shadowboard-examples-hint {
  margin-top: 1rem;
}

/* -------------------------------------------------- Product colour swatches -------------------------------------------------- */

.colour-peach { background: #ffcba4; }
.colour-yellow { background: #ffe033; }
.colour-purple { background: #8b3fc8; }
.colour-white { background: #f5f5f5; }
.colour-red { background: #e03232; }
.colour-light-blue { background: #6bbde3; }
.colour-dark-blue, .colour-blue { background: #1b3fa0; }
.colour-lilac { background: #c9a8e0; }
.colour-orange { background: #f77f00; }
.colour-mint-green { background: #7ecfb3; }
.colour-silver { background: #b0b8c1; }
.colour-brown { background: #7b4b2a; }
.colour-lime-green { background: #a8d400; }
.colour-dark-green, .colour-green { background: #1b6b2f; }
.colour-pink { background: #f48cab; }
.colour-black { background: #1a1a1a; }
.colour-grey { background: #6b7280; }
.disc-swatch { border: 1px solid var(--border); }
