/* ==========================================================================
   creaturecrafter.com
   Rebuild of playcreature.com (WordPress + Divi + WooCommerce) as static HTML.

   Original layout values were measured from the live site and recorded in the
   original brief or read from the curl mirror rendered in Chromium. Nothing is
   guessed in that initial rebuild. The visual foundation below supersedes it.
   Where an original number looks arbitrary (23.8px line-height, 0.024 alpha,
   337x239 gallery items) it is because that is what Divi actually produces.

   No inline styles anywhere in the HTML, so a CSP without 'unsafe-inline'
   works (PLAN §10.2).
   ========================================================================== */

/* --------------------------------------------------------------- fonts -- */
/* Poppins: self-hosted. PLAN §2.6 — fonts.googleapis.com resets in Chromium
   through this egress, and we do not want a third-party font dependency. */


@font-face {
  font-family: "Soup of Justice";
  font-display: swap;
  src: url("../fonts/SoupOfJustice.woff2") format("woff2"),
       url("../fonts/SoupOfJustice.ttf") format("truetype");
}

/* --------------------------------------------------------------- tokens -- */
:root {
  --accent: #2ea3f2;          /* buttons, links                     (§3.1) */
  --accent-strong: #0c71c3;   /* stat numbers                       (§3.1) */
  /* Accent applied to TEXT.
     #2ea3f2 is 2.75:1 on white — it fails WCAG AA for body text (4.5:1) and
     even the 3:1 floor for UI components. #0c71c3 is 5.04:1 and is already in
     the site's palette as the stat-number blue, so links and button labels use
     that and the brand stays the brand. Measured, not eyeballed. */
  --accent-text: var(--accent-strong);
  --text: #555555;            /* body text                          (§3.1) */
  --text-secondary: #333333;  /* secondary                          (§3.1) */
  --text-body: #666666;       /* <body> default, measured           (§3.1) */
  --black: #000000;
  --near-black: #111111;
  --white: #ffffff;
  --tint: rgba(0, 0, 0, 0.024);        /* alternating section background */
  --footer-link: #bababa;
  --on-dark: rgba(255, 255, 255, 0.75);

  --header-h: 86px;
  --workshop-h: 150px;
  --row-max: 1080px;          /* Divi content width, measured */
  --font-body: "Poppins", Helvetica, Arial, Lucida, sans-serif;
  --font-display: "Soup of Justice", Helvetica, Arial, Lucida, sans-serif;
  --line: 23.8px;             /* Divi's 1.7em of 14px */
  --shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.3);
}

/* ---------------------------------------------------------------- base -- */
*, *::before, *::after { box-sizing: border-box; }

/* [hidden] loses to any rule that sets display — and several below do, on the
   very elements progressive enhancement toggles (the captcha field is a flex
   row). !important here is the cheaper fix than guarding every one of them. */
[hidden] { display: none !important; }

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

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  line-height: var(--line);
  color: var(--text-body);
  background: var(--white);
  overflow-x: hidden;
}

img, video { max-width: 100%; height: auto; border: 0; }
a { color: var(--accent-text); text-decoration: none; }
a:hover { text-decoration: underline; }

:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

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

.skip-link {
  position: absolute; left: 8px; top: -60px; z-index: 100;
  background: var(--white); color: var(--accent);
  padding: 10px 16px; border-radius: 3px; transition: top 150ms ease;
}
.skip-link:focus { top: 8px; }

.row { width: 80%; max-width: var(--row-max); margin: 0 auto; }

/* ------------------------------------------------------------ headings -- */
/* §3.1: every section heading is Soup of Justice 80px / 500 / #555 / uppercase.
   In the original these are <p>; the rebuild uses real <h2>s (§3.1, §6). */
.section-title {
  margin: 0 0 30px;
  font-family: var(--font-display);
  font-size: 80px;
  font-weight: 500;
  line-height: 1.2;
  color: var(--text);
  text-transform: uppercase;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.section-copy {
  margin: 0;
  text-align: center;
  color: var(--text);
  line-height: var(--line);
}
.section-copy + .section-copy { margin-top: 14px; }   /* Divi p padding-bottom: 1em */
/* A link inside a paragraph cannot be signalled by colour alone. */
.section-copy a { text-decoration: underline; text-underline-offset: 2px; }

/* ------------------------------------------------------------- buttons -- */
/* §3.13 — every Divi button on the site. */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  padding: 6px 20px;
  border: 2px solid var(--accent-text);
  border-radius: 3px;
  background: transparent;
  color: var(--accent-text);
  font-family: var(--font-body);
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  transition: background-color 300ms ease, color 300ms ease;
}
.button:hover { background: var(--accent-text); color: var(--white); text-decoration: none; }

/* -------------------------------------------------------------- header -- */
/* §3.3 — 86px, #000, padding 5px 15px, logo 171x50, nav 14px/500. */
.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  height: var(--header-h);
  padding: 5px 15px;
  background: var(--black);
  box-shadow: 0 10px 10px -6px rgba(0, 0, 0, 0.3);
}
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
  padding: 0 15px;
}
.site-header__logo img { display: block; width: 171px; height: 50px; }

.site-nav ul {
  display: flex;
  gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.site-nav a {
  font-size: 14px;
  font-weight: 500;
  color: var(--on-dark);
  line-height: var(--line);
}
.site-nav a:hover { color: var(--white); text-decoration: none; }

/* CSS-only disclosure: works with JavaScript disabled and is keyboard
   operable (the checkbox takes focus, Space toggles). */
.nav-toggle { display: none; position: absolute; opacity: 0; width: 44px; height: 44px; margin: 0; cursor: pointer; }
.nav-toggle-label { display: none; }

/* ---------------------------------------------------------------- hero -- */
/* §3.2 rows 1–2 / §3.4. Height is calc(100vh - header - workshop strip),
   min 625px — measured 664px at a 900px-tall viewport, at every width. */
.hero-wrap {
  position: relative;
  height: calc(100vh - var(--header-h) - var(--workshop-h));
  min-height: 625px;
}
/* Divi marks the hero video "desktop only" and falls back to the static frame
   below 981px. Matching that keeps mobile from downloading the video at all. */
.hero-video {
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.hero-video video {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 100%; height: 100%;
  max-width: none;
  object-fit: cover;
}
.hero {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 54px 0;
  box-shadow: var(--shadow);
}
/* 682x400 natural, max-width:100%, rotated -2deg — this is what produces the
   686px / 396px bounding boxes quoted in §3.4. */
/* The logo is the page's <h1>; the wrapper must not add heading margins. */
.hero__heading { margin: 0; padding: 0; line-height: 0; font-size: 0; }
.hero__logo {
  display: block;
  width: 682px;
  /* The -2deg rotation makes the bounding box ~2% wider than the element, so
     a flat 100% overflows the viewport on narrow screens. 97% keeps the
     rotated box inside it; at desktop the 682px width binds first, so this
     changes nothing there. */
  max-width: 97%;
  height: auto;
  transform: rotate(-2deg);
}
.hero__stores {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
  width: 200px;
  margin-top: 26px;
  padding: 0;
  list-style: none;
}
.hero__stores a { display: block; filter: opacity(50%); transition: transform 300ms ease, filter 300ms ease; }
.hero__stores a:hover, .hero__stores a:focus-visible { filter: opacity(100%); transform: scale(1.1); }
.hero__stores img { display: block; width: 63px; height: 63px; }

/* --------------------------------------------------- workshop carousel -- */
/* §3.5. Hidden below 981px on the live site — that is a real responsive rule
   from the page's own stylesheet, not an omission. */
.workshop {
  position: relative;
  z-index: 10;
  height: var(--workshop-h);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  background: var(--white);
  box-shadow: var(--shadow);
}
.workshop__viewport { display: flex; align-items: center; gap: 4px; min-height: 70px; }
.workshop__viewport a { display: block; line-height: 0; }
.workshop__viewport img { display: block; width: 67px; height: 67px; filter: grayscale(1); }
.workshop__btn {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 0; background: transparent;
  color: var(--text); font-size: 28px; line-height: 1; cursor: pointer;
}
.workshop__btn:hover { color: var(--accent-text); }

/* ------------------------------------------------------------ sections -- */
/* §3.2 — backgrounds and padding, measured. */
.section { position: relative; }
.section--plain { background: var(--white); }
.section--tint  { background: var(--tint); }

.section--create   { padding: 50px 0 0; background: var(--white); }
.section--engage   { padding: 100px 0; background: var(--tint); }
.section--share    { padding: 50px 0;  background: var(--white); }
.section--educate  { padding: 100px 0; background: var(--tint); }
.section--support  { padding: 50px 0;  background: var(--white); }
.section--download { padding: 50px 0;  background: var(--tint); }

/* Faint SVG background patterns, extracted from the Divi CSS (§3.2) rather
   than redrawn. rgba(0,0,0,0.025) in each. */
.section__pattern {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-position: 0 0;   /* Divi's own values for .et_pb_background_pattern */
  background-repeat: repeat;
}
.section--engage > .section__pattern,
.section--educate > .section__pattern {
  background-image: url("data:image/svg+xml;base64,PHN2ZyAgZmlsbD0icmdiYSgwLDAsMCwwLjAyNSkiIGhlaWdodD0iMzAwcHgiIHdpZHRoPSI0MDBweCIgdmlld0JveD0iMCAwIDQwMCAzMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1MC4yNSw1OGwtNy4yLTMuNWEyMC40MiwyMC40MiwwLDEsMSwzNi43MSwxNy44OGwtNy4xOS0zLjVBMTIuNDIsMTIuNDIsMCwwLDAsMTUwLjI1LDU4Wk0yMC45Myw0OC42OGwtNi4xNy01LjFBMTIuNDEsMTIuNDEsMCwwLDEsMCw0Ni45NHY4LjQ4YTIwLjYsMjAuNiwwLDAsMCw1LjE3LjY3QTIwLjM4LDIwLjM4LDAsMCwwLDIwLjkzLDQ4LjY4Wm0zNzYuMzUtMy40M2ExMi40MywxMi40MywwLDAsMS0xLjY3LTE3LjQ4bC02LjE3LTUuMDlhMjAuNDQsMjAuNDQsMCwwLDAsMi43NSwyOC43NCwyMC4xOSwyMC4xOSwwLDAsMCw3LjgxLDRWNDYuOTRBMTIuMTcsMTIuMTcsMCwwLDEsMzk3LjI4LDQ1LjI1Wm0tMTM3LjYyLDE1M2gtLjA5bDAsOGExMi40MywxMi40MywwLDAsMSwxMi40NywxMi4zN2w4LDBBMjAuNDQsMjAuNDQsMCwwLDAsMjU5LjY2LDE5OC4yWk05NywyMTAuMzlhMTIuNDEsMTIuNDEsMCwwLDEtMjAuNDUsMTAuMzgsMTIuMjgsMTIuMjgsMCwwLDEtNC4zLTguNDdsLTgsLjYyYTIwLjQ0LDIwLjQ0LDAsMCwwLDIwLjM0LDE4Ljg0cS44LDAsMS41OS0uMDZBMjAuNDMsMjAuNDMsMCwwLDAsMTA1LDIwOS43N1pNMjI3LjY5LDQyLjA4bDYuNjIsNC41LDIyLTMyLjMzLTYuNjItNC41Wk0zNi43NSwxNTQuNjcsOC4xNSwxMjgsMi43LDEzMy44NGwyOC41OSwyNi42OFpNMzU5LjI4LDI1OGw1LjQ4LDUuODMsMjguNTEtMjYuNzctNS40Ny01LjgzWk0zMTAuMzMsMTE1LjMzYTEzLDEzLDAsMSwxLTEzLTEzQTEzLDEzLDAsMCwxLDMxMC4zMywxMTUuMzNabS04LDBhNSw1LDAsMSwwLTUsNUE1LDUsMCwwLDAsMzAyLjMzLDExNS4zM1pNMzgsMjY4LjYyYTEzLDEzLDAsMSwxLTEzLTEzQTEzLDEzLDAsMCwxLDM4LDI2OC42MlptLTgsMGE1LDUsMCwxLDAtNSw1QTUsNSwwLDAsMCwzMCwyNjguNjJabTE2NS40NS00My40N2E5LDksMCwxLDAsOSw5QTksOSwwLDAsMCwxOTUuNDcsMjI1LjE1Wk0zNjUuMTQsNTcuNDhhOSw5LDAsMSwwLTksOUE5LDksMCwwLDAsMzY1LjE0LDU3LjQ4Wk0xNzIuODMsMTY0LjI2YTYuMzYsNi4zNiwwLDEsMC02LjM2LDYuMzZBNi4zNyw2LjM3LDAsMCwwLDE3Mi44MywxNjQuMjZabTE3Niw2LjczYTQuNjksNC42OSwwLDEsMCw0LjY4LDQuNjlBNC42OSw0LjY5LDAsMCwwLDM0OC44LDE3MVpNMjYzLjE1LDI4Ny4zMmE0LjY4LDQuNjgsMCwxLDAsNC42OCw0LjY4QTQuNjcsNC42NywwLDAsMCwyNjMuMTUsMjg3LjMyWk03Ny40Nyw5Ni43M2E5LDksMCwxLDAtOS05QTksOSwwLDAsMCw3Ny40Nyw5Ni43M1ptMjQuNjMsMzMuNjktNy4xNiwxNy4wOUwxMTIsMTU0LjY4QTE4LjU0LDE4LjU0LDAsMCwwLDEwMi4xLDEzMC40MlpNMjE3LDEyOS4xbDE4LTQuMzctNC4zNy0xOEExOC41MiwxOC41MiwwLDAsMCwyMTcsMTI5LjFaTTg4Ljc2LDBINzQuMDdsNi41MSw3LjNaTTY4LjI1LDI5My40Niw3NC4wNywzMDBIODguNzZsNS42NS01QTE4LjU0LDE4LjU0LDAsMCwwLDY4LjI1LDI5My40NloiLz48L3N2Zz4=");
}
.section--workshop > .section__pattern {
  background-image: url("data:image/svg+xml;base64,PHN2ZyAgZmlsbD0icmdiYSgwLDAsMCwwLjAyNSkiIGhlaWdodD0iNjRweCIgd2lkdGg9IjY0cHgiIHZpZXdCb3g9IjAgMCA2NCA2NCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMzIsMCwwLDMyVjBabTAsNjRMNjQsMzJWMEwwLDY0WiIvPjwvc3ZnPg==");
}
.section--download > .section__pattern {
  background-image: url("data:image/svg+xml;base64,PHN2ZyAgZmlsbD0icmdiYSgwLDAsMCwwLjAyNSkiIGhlaWdodD0iNzJweCIgd2lkdGg9IjcycHgiIHZpZXdCb3g9IjAgMCA3MiA3MiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cG9seWdvbiBwb2ludHM9IjQwIDI0IDMyIDI0IDMyIDMyIDI0IDMyIDI0IDQwIDMyIDQwIDMyIDQ4IDQwIDQ4IDQwIDQwIDQ4IDQwIDQ4IDMyIDQwIDMyIDQwIDI0Ii8+PC9zdmc+");
}

/* Section dividers — Divi triangles, 50px, #ffffff, extracted as-is (§3.2).
   #engage renders them scale(1,1); #educate mirrors them scale(-1,1). */
.divider { position: absolute; left: 0; width: 100%; height: 50px; z-index: 1; pointer-events: none; background-size: 100% 50px; }
.divider--top {
  top: 0;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MHB4IiB2aWV3Qm94PSIwIDAgMTI4MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZmZmZiI+PHBhdGggZD0iTTEyODAgMTQwVjBIMGwxMjgwIDE0MHoiLz48L2c+PC9zdmc+");
}
.divider--bottom {
  bottom: 0;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MHB4IiB2aWV3Qm94PSIwIDAgMTI4MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZmZmZiI+PHBhdGggZD0iTTAgMHYxNDBoMTI4MEwwIDB6Ii8+PC9nPjwvc3ZnPg==");
}
.section--educate .divider { transform: scale(-1, 1); }

.section > .row { position: relative; z-index: 2; }

/* ------------------------------------------------------------ galleries -- */
.gallery { display: grid; margin: 0; padding: 0; list-style: none; }
.gallery li { margin: 0; }

/* The box is 400:284 in every gallery (Divi sets it from the img's width and
   height attributes). The live site fills that box with object-fit: fill,
   which squashes 16:9 screenshots and square creature renders alike. Daniel
   asked for that distortion fixed, so images are cropped to the box instead
   of stretched and keep their true proportions. */
.gallery__link {
  display: block; position: relative; line-height: 0; overflow: hidden;
  aspect-ratio: 400 / 284;
}
.gallery__link img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Creature cards are the exception. A centre crop clips real artwork on 11 of
   the 20 credited creations (Gnax -11%, TV-man loses his feet), and because
   these renders are 77-89% transparent, containing them shows no letterbox
   bars against the white section. Nothing is cropped and nothing is squashed. */
.gallery--creatures .gallery__link img { object-fit: contain; }

/* Gallery A — BUILD / PLAY / PAINT. 3 items, 337x239 at 1440. */
.gallery--bpp { grid-template-columns: repeat(3, 1fr); gap: 3.2%; margin: 27px 0 34px; }
.gallery--bpp .gallery__link { border-radius: 15px; box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.3); }
/* Gallery B — 13 items, 4 across, 246x174 at 1440, paginated 4 per page. */
.gallery--create { grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 0; }
.gallery--create .gallery__link { box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.3); }

/* Share — 20 creatures, 8 visible, 4 across x 2 rows, 225x182. */
.creatures { position: relative; }
.gallery--creatures { grid-template-columns: repeat(4, 1fr); gap: 60px 60px; margin-top: 54px; }
.creatures__btn {
  position: absolute;
  top: calc(50% + 27px);
  transform: translateY(-50%);
  width: 44px; height: 64px;
  display: flex; align-items: center; justify-content: center;
  border: 0; border-radius: 3px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);
  color: var(--text); font-size: 28px; line-height: 1; cursor: pointer;
}
.creatures__btn:hover { color: var(--accent-text); }
.creatures__btn--prev { left: -22px; }
.creatures__btn--next { right: -22px; }
.gallery--creatures figure { margin: 0; }
.gallery--creatures figcaption {
  margin-top: 10px;
  font-size: 12px;
  font-weight: 500;
  line-height: 12px;
  color: var(--text);
  text-align: center;
}

/* Pagination — matches the live control exactly: Prev 1 2 3 4 Next (§3.6). */
.pagination {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  width: 100%;
  margin: 33px 0 0;
  padding: 25px 0;
  border-top: 1px solid #e2e2e2;
  list-style: none;
}
.pagination button {
  border: 0; background: transparent; cursor: pointer;
  font-family: var(--font-body); font-size: 14px; font-weight: 500; color: var(--text);
  padding: 0 6px; line-height: 23px;
}
.pagination button[aria-current="true"] { color: var(--accent-text); }
.pagination button:disabled { opacity: 0.35; cursor: default; }

/* -------------------------------------------------------------- engage -- */
/* §3.7 — 72px/600/#0c71c3 numbers, 18px/500/#555 labels. */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  margin: 27px 0 0;
  padding: 0;
  list-style: none;
  text-align: center;
}
.stats__value {
  display: block;
  height: 72px;
  margin-bottom: 20px;
  font-size: 72px;
  font-weight: 600;
  line-height: 72px;
  color: var(--accent-strong);
}
.stats__label {
  display: block;
  height: 28px;
  margin: 0;
  font-size: 18px;
  font-weight: 500;
  line-height: 28px;
  color: var(--text);
}

/* --------------------------------------------------------------- share -- */
.share__more { display: flex; justify-content: center; margin: 54px 0 0; }

/* ------------------------------------------------------------- educate -- */
.educate__price s { color: var(--text-secondary); }

/* Education seat picker (§7). */
.seats { margin: 30px 0 0; text-align: center; }
.seats__field { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.seats__field label { font-size: 14px; font-weight: 500; color: var(--text-secondary); }
.seats__control { display: flex; align-items: center; gap: 8px; }
.seats__input {
  width: 96px; height: 44px; padding: 6px 10px;
  border: 2px solid var(--accent-text); border-radius: 3px;
  background: var(--white);
  font-family: var(--font-body); font-size: 20px; font-weight: 500;
  color: var(--text); text-align: center;
}
/* Created by JS, so they are never present-but-dead with scripting off. */
.seats__step {
  width: 44px; height: 44px;
  border: 2px solid var(--accent-text); border-radius: 3px;
  background: transparent; color: var(--accent-text);
  font-family: var(--font-body); font-size: 24px; line-height: 1; cursor: pointer;
}
.seats__step:hover:not(:disabled) { background: var(--accent-text); color: var(--white); }
.seats__step:disabled { opacity: 0.35; cursor: default; }
.seats__total { margin: 16px 0 0; font-size: 18px; font-weight: 500; color: var(--text); }
.seats__actions { display: flex; justify-content: center; margin: 20px 0 0; }
.seats__error { margin: 12px 0 0; color: #b3261e; font-weight: 500; }
.seats [data-education-submit][aria-disabled="true"] { opacity: 0.6; cursor: default; }

/* ------------------------------------------------------------- support -- */
.support__placeholder { margin-top: 30px; text-align: center; color: var(--text); }

/* ------------------------------------------------------------ download -- */
.downloads {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 60px;
  align-items: center;
  margin: 0;
  padding: 27px 0;          /* Divi row padding, measured */
  list-style: none;
}
/* These are Divi image modules 4-6: 15px radius and a 2px/10px shadow. */
.downloads a {
  display: block;
  border-radius: 15px;
  overflow: hidden;
  box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.3);
  transition: transform 300ms ease;
}
.downloads a:hover, .downloads a:focus-visible { transform: scale(1.05); }
.downloads img { display: block; width: 100%; height: auto; aspect-ratio: 950 / 296; }

/* -------------------------------------------------------------- footer -- */
/* Measured across all four widths: the social row is a fixed 275px wide and
   centred, three columns with the icon at each column's left edge. */
.footer-social {
  background: var(--near-black);
  padding: 27px 0;
  position: relative; z-index: 10;
  box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.3);
}
.footer-social .row { width: 275px; max-width: none; }
.footer-social ul {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14.5px;
  justify-items: start;
  margin: 0; padding: 0; list-style: none;
}
.footer-social a { display: block; transition: transform 300ms ease; }
.footer-social a:hover, .footer-social a:focus-visible { transform: scale(1.1); }
.footer-social img { display: block; width: 64px; height: 64px; }

.footer-links { background: var(--black); padding: 54px 0; }
/* This band uses a 60% row, not the 80%/1080px content row — measured 864px
   wide at 1440, four 180px columns with 48px gutters and 27px of row padding. */
.footer-links .row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 48px;
  width: 60%;
  max-width: none;
  padding: 27px 0;
}
/* Measured: 20px / 500 / #333 / line-height 20px / padding-bottom 10px. Yes,
   #333 on black is what the live site ships — see the note in the summary. */
.footer-links h2 {
  margin: 0;
  padding-bottom: 10px;
  font-size: 20px;
  font-weight: 500;
  line-height: 20px;
  /* The live site sets #333 here, which is 1.66:1 against the black band —
     the headings are effectively invisible. Reproducing that faithfully would
     be reproducing a defect, so these use the footer's own light grey. */
  color: var(--on-dark);
}
.footer-links ul { margin: 0; padding: 0; list-style: none; }
.footer-links li + li { margin-top: 0; }
.footer-links a { font-size: 14px; line-height: 23.8px; color: var(--footer-link); }
.footer-links a:hover { color: var(--white); }
.footer-links__rating { justify-self: end; }
.footer-links__rating img { display: block; width: 106px; height: 150px; }

/* The legal band uses the same 60% row, and its text is left-aligned inside
   it — not centred, which is easy to assume and wrong. */
.footer-legal { background: var(--near-black); padding: 27px 0; }
.footer-legal .row { width: 60%; max-width: none; }
.footer-legal p { margin: 0; font-size: 14px; line-height: 23.8px; color: var(--footer-link); text-align: left; }

/* ------------------------------------------------------------- lightbox -- */
/* A closed <dialog> is display:none by UA stylesheet — do not set display on
   the bare selector or the panel renders inline on every page. */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  max-width: 100%;
  max-height: 100%;
  width: 100%;
  height: 100%;
  padding: 40px;
  background: rgba(0, 0, 0, 0.85);
  border: 0;
}
.lightbox[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox::backdrop { background: rgba(0, 0, 0, 0.85); }
.lightbox img { max-width: 100%; max-height: 80vh; object-fit: contain; }
.lightbox__caption { margin-top: 16px; color: var(--white); text-align: center; }
.lightbox__close {
  position: absolute; top: 16px; right: 16px;
  width: 44px; height: 44px;
  border: 0; border-radius: 3px;
  background: rgba(255, 255, 255, 0.12); color: var(--white);
  font-size: 24px; line-height: 1; cursor: pointer;
}
.lightbox__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 48px; height: 64px;
  border: 0; background: rgba(255, 255, 255, 0.12); color: var(--white);
  font-size: 28px; cursor: pointer;
}
.lightbox__nav--prev { left: 16px; }
.lightbox__nav--next { right: 16px; }

/* ------------------------------------------------------- support page -- */
.faq { padding: 50px 0; background: var(--white); }

/* Measured from the support page's own stylesheet: padding 100/50, its own
   background pattern (fill rgba(0,0,0,0.2) at 128px, not the home page's),
   and a top divider the home page does not have. */
.contact { padding: 100px 0 50px; background: var(--tint); }
.contact > .section__pattern {
  background-image: url("data:image/svg+xml;base64,PHN2ZyAgZmlsbD0icmdiYSgwLDAsMCwwLjIpIiBoZWlnaHQ9IjEyOHB4IiB3aWR0aD0iMTI4cHgiIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05Ljg1LDU0LjE1YTEsMSwwLDAsMS0uNzEsMS43MSwxLDEsMCwwLDEtLjctLjMsMSwxLDAsMCwxLDEuNDEtMS40MVpNMTcuNTgsNDVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwQTEsMSwwLDAsMCwxNy41OCw0NVptOS44NS03LjQ0YTEsMSwwLDAsMCwuNzEtLjI5LDEsMSwwLDAsMCwwLTEuNDIsMSwxLDAsMCwwLTEuNDIsMS40MkExLDEsMCwwLDAsMjcuNDMsMzcuNTdabTguNDMtMTAuODVhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMC0xLjQyLTEuNDJaTTQ1LDE3LjU4QTEsMSwwLDAsMCw0NSwxOWExLDEsMCwwLDAsMS40MSwwQTEsMSwwLDEsMCw0NSwxNy41OFptOS4xNC05LjE0YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwxLDAtMS40MS0xLjQxWm0wLDEwOS43MWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwxLjQxLDAsMSwxLDAsMSwwLTEuNDEtMS40MVpNNDUsMTA5YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLDEuNDEsMEExLDEsMCwxLDAsNDUsMTA5Wm0tOS4xNS05LjE1YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLDEuNDIsMCwxLDEsMCwxLDAtMS40Mi0xLjQyWm0tOS4xNC05LjE0YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOSwxLDEsMCwwLDAtMS40Mi0xLjQyWm0tOS4xNC05LjE0YTEsMSwwLDAsMCwwLDEuNDFBMSwxLDAsMCwwLDE5LDgzYTEsMSwwLDAsMC0xLjQxLTEuNDFaTTguNDQsNzIuNDRhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAsMCwwLC43MS0uMjksMSwxLDAsMCwwLTEuNDEtMS40MVptNjQsNDUuNzFhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMC0xLjQxLTEuNDFaTTgxLjU4LDEwOWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwxLjQxLDBBMSwxLDAsMCwwLDgxLjU4LDEwOVptOS4xNC05LjE1YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLDEuNDIsMCwxLDEsMCwxLDAtMS40Mi0xLjQyWm05LjE0LTkuMTRhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMC0xLjQyLTEuNDJaTTEwOSw4MS41OEExLDEsMCwwLDAsMTA5LDgzYTEsMSwwLDAsMCwxLjQxLDBBMSwxLDAsMCwwLDEwOSw4MS41OFptOS4xNC05LjE1YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAtMS40MS0xLjQyWm0wLTE4LjI4YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMSwwLDEuNDEtMS40MUExLDEsMCwwLDAsMTE4LjE1LDU0LjE1Wk0xMDksNDVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwQTEsMSwwLDAsMCwxMDksNDVabS05LjE1LTkuMTVhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMC0xLjQyLTEuNDJabS04LjQzLTcuNDNhMSwxLDAsMCwwLC43LS4zLDEsMSwwLDEsMC0uNy4zWk04MS41OCwxNy41OGExLDEsMCwwLDAsMCwxLjQxQTEsMSwwLDAsMCw4MywxOWExLDEsMCwxLDAtMS40MS0xLjQxWk03Mi40NCw4LjQ0YTEsMSwwLDAsMCwuNywxLjcsMSwxLDAsMCwwLC43MS0uMjksMSwxLDAsMCwwLDAtMS40MUExLDEsMCwwLDAsNzIuNDQsOC40NFpNNjQsM2EzLjE1LDMuMTUsMCwwLDAsMi4xMy0uODdBMy4xMywzLjEzLDAsMCwwLDY3LDBINjFhMy4xMywzLjEzLDAsMCwwLC44NywyLjEyQTMuMTUsMy4xNSwwLDAsMCw2NCwzWk0zLDY0YTMuMTUsMy4xNSwwLDAsMC0uODctMi4xM0EzLjA3LDMuMDcsMCwwLDAsMCw2MXY2YTMuMTUsMy4xNSwwLDAsMCwyLjEzLS44N0EzLjE1LDMuMTUsMCwwLDAsMyw2NFptNjMuMTMsNjEuODdBMywzLDAsMCwwLDYxLDEyOGg2QTMuMTUsMy4xNSwwLDAsMCw2Ni4xMywxMjUuODZabTU5LjExLTYzQTMsMywwLDAsMCwxMjUsNjRhMywzLDAsMCwwLDMsM1Y2MWEyLjg2LDIuODYsMCwwLDAtMi43NiwxLjg1WiIvPjwvc3ZnPg==");
}
.contact > .divider--top {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MHB4IiB2aWV3Qm94PSIwIDAgMTI4MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZmZmZiI+PHBhdGggZD0iTTAgMHYxMDBjMjAgMTcuMyA0MCAyOS41MSA4MCAyOS41MSA1MS43OSAwIDc0LjY5LTQ4LjU3IDE1MS43NS00OC41NyA3My43MiAwIDkxIDU0Ljg4IDE5MS41NiA1NC44OEM1NDMuOTUgMTM1LjggNTU0IDE0IDY2NS42OSAxNGMxMDkuNDYgMCA5OC44NSA4NyAxODguMiA4NyA3MC4zNyAwIDY5LjgxLTMzLjczIDExNS42LTMzLjczIDU1Ljg1IDAgNjIgMzkuNjIgMTE1LjYgMzkuNjIgNTguMDggMCA1Ny41Mi00Ni41OSAxMTUtNDYuNTkgMzkuOCAwIDYwIDIyLjQ4IDc5Ljg5IDM5LjY5VjB6Ii8+PC9nPjwvc3ZnPg==");
}

.faq__item {
  margin-top: 30px;
  border: 1px solid #d8d8d8;
  border-radius: 3px;
  background: var(--white);
}
.faq__item summary {
  padding: 20px;
  font-size: 16px;
  font-weight: 500;
  color: var(--text-secondary);
  cursor: pointer;
  list-style: none;
}
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary::after { content: "+"; float: right; color: var(--accent-text); font-size: 20px; line-height: 1; }
.faq__item[open] summary::after { content: "\2013"; }
.faq__item > div { padding: 0 20px 20px; color: var(--text); }
.faq__item p { margin: 0; }

.contact-form { margin: 30px 0 0; }
/* Name and Email share a row, as they do on the live form. */
.contact-form .row-fields { display: flex; gap: 16px; }
.contact-form .row-fields > .field { flex: 1 1 0; min-width: 0; }
.contact-form .field { margin-bottom: 16px; }
/* Divi ships these labels but hides them; §3.14 asks for real ones. */
.contact-form label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 500; color: var(--text-secondary); }
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea {
  width: 100%;
  padding: 16px;
  border-width: 0;
  border-radius: 0;
  background: #eee;                  /* measured */
  font-family: var(--font-body);
  font-size: 14px;
  /* Divi sets #999 here, which is 2.2:1 on #eee. The labels above are the
     accessible name either way, so the typed value uses the body colour. */
  color: var(--text);
}
.contact-form textarea { min-height: 150px; resize: vertical; }
/* The live form puts the sum and Submit on one right-aligned row. */
.contact-form .actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
}
.contact-form .field--captcha { display: flex; align-items: center; gap: 8px; margin: 0; }
.contact-form .field--captcha label { margin: 0; }
.contact-form .field--captcha input { width: 56px; padding: 8px; text-align: center; }
.contact-form .captcha-sum { font-size: 14px; font-weight: 500; color: var(--text-secondary); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Submission feedback, shown in place of a page change when JS is on. Colour
   is never the only signal — the text says what happened. */
.form-status {
  margin: 16px 0 0;
  padding: 12px 16px;
  border-left: 4px solid var(--text-secondary);
  background: var(--tint);
  font-size: 14px;
  line-height: var(--line);
}
.form-status--ok { border-left-color: #1e7a3c; color: #1a5c2e; }    /* 7.63:1 on the tint */
.form-status--error { border-left-color: #b3261e; color: #96201a; } /* 7.92:1 on the tint */

/* ------------------------------------------------------ merch designer -- */
/* /merch and /order-complete are rendered by the API (they are parameterised
   by a capability token in the query string, which a static page cannot read
   without JavaScript). They use the same shell and the same type as the rest
   of the site, so their styles live here rather than in a second stylesheet. */
.merch { padding: 100px 0; background: var(--white); }
.merch .section-title { margin-bottom: 20px; }

.merch__creature { margin: 0 0 24px; }
.merch__creature img {
  display: block;
  width: 100%;
  max-width: 360px;
  height: auto;
  /* A checkerboard, so transparent artwork reads as transparent rather than
     as white-on-white. */
  background: repeating-conic-gradient(#f0f0f0 0% 25%, #ffffff 0% 50%) 50% / 20px 20px;
}
.merch__caption { margin: 8px 0 0; font-size: 13px; color: var(--text); }

.merch__products { margin: 24px 0 0; padding: 0; list-style: none; display: grid; gap: 16px; }
.merch__product { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.merch__price { font-size: 14px; color: var(--text); }
.button--disabled { opacity: .5; cursor: not-allowed; }

.merch-form { margin: 24px 0 0; max-width: 420px; }
.merch-form .field { margin-bottom: 16px; }
.merch-form label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 500;
  color: var(--text-secondary); }
.merch-form select {
  width: 100%;
  padding: 14px 16px;
  border-width: 0;
  border-radius: 0;
  background: #eee;
  font-family: var(--font-body);
  font-size: 14px;
  color: var(--text);
}
.merch-form .actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.merch__note { margin: 8px 0 0; font-size: 13px; color: var(--text); }
.merch__back { font-size: 14px; }
.merch__total { margin: 0 0 16px; font-size: 15px; font-weight: 500; color: var(--text-secondary); }

@media (max-width: 767px) {
  .merch { padding: 60px 0; }
}

/* ------------------------------------------------- privacy policy / 404 -- */
/* Full-width, no padding, no content row — that is the whole live page. */
.policy { padding: 0; background: var(--white); }
.policy a { text-decoration: underline; }
.policy iframe { display: block; width: 100%; height: 1000px; border: 0; }

/* Purchase confirmation. The key must be easy to read off a screen and type. */
.purchase { padding: 100px 0; background: var(--white); text-align: center; }
.purchase__key {
  margin: 24px 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 32px; font-weight: 600; letter-spacing: 0.12em;
  color: var(--accent-strong);
  word-break: break-all;
  user-select: all;                 /* one click selects the whole key */
}
.purchase__note { margin-top: 24px; }

/* The Education Edition is not sold through a store, so the confirmation has
   to hand over the build as well as the ID. Plain links rather than buttons:
   the one action this page asks for is entering the ID, and three more
   buttons would compete with it. */
.purchase__downloads { margin-top: 44px; }
.purchase__downloads h2 {
  margin: 0 0 14px;
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 500;
  line-height: var(--line);
  text-transform: uppercase;
  color: var(--text);
}
.purchase__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 36px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
  font-size: 18px;
  font-weight: 500;
}
/* Underlined for the same reason as .section-copy a: colour alone is not a
   signal these are links. */
.purchase__links a { text-decoration: underline; text-underline-offset: 3px; }
/* The downloads are their own block, so the button below needs more than the
   20px that separates stacked paragraphs. */
.purchase__downloads + .seats__actions { margin-top: 34px; }

.error-page { padding: 100px 0; background: var(--white); text-align: center; }
.error-page .section-copy { margin-bottom: 30px; }
.error-page .button { margin: 0 auto; }

/* ==========================================================================
   Responsive. Breakpoints are Divi's, so the rebuild changes shape at the
   same widths the original does.
   ========================================================================== */

/* Compact navigation and carousel on smaller screens. */
@media (max-width: 980px) {
  :root { --workshop-h: 120px; }

  /* WebP where supported (58 KB), JPEG where not (113 KB). */
  .hero-video {
    background: image-set(url("../video/hero-poster.webp") type("image/webp"),
                          url("../video/hero-poster.jpg")  type("image/jpeg"))
                center / cover no-repeat;
  }
  .hero-video video { display: none; }

  .nav-toggle-label {
    display: flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; cursor: pointer;
  }
  .nav-toggle-label span,
  .nav-toggle-label span::before,
  .nav-toggle-label span::after {
    display: block; width: 24px; height: 2px; background: var(--on-dark); content: "";
  }
  .nav-toggle-label span { position: relative; }
  .nav-toggle-label span::before { position: absolute; top: -7px; }
  .nav-toggle-label span::after  { position: absolute; top: 7px; }
  .nav-toggle:focus-visible + .nav-toggle-label { outline: 3px solid var(--accent); outline-offset: 2px; }

  .site-nav {
    display: none;
    position: absolute;
    left: 0; right: 0; top: var(--header-h);
    background: var(--black);
    padding: 12px 30px 20px;
  }
  .nav-toggle:checked ~ .site-nav { display: block; }
  .site-nav ul { flex-direction: column; gap: 12px; }

  /* Headings stay 80px at every width — that is what the live site does. */
  .gallery--create { grid-template-columns: repeat(3, 1fr); gap: 5.5%; }
  .gallery--creatures { grid-template-columns: repeat(3, 1fr); gap: 5.5%; }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 40px 20px; }
  .downloads { grid-template-columns: 1fr; gap: 30px; }
  /* Below 981px the live footer drops to two columns, hides the ESRB badge
     outright, and grows its bands to 154 / 84px. */
  .footer-social { padding: 30px 0 60px; }
  .footer-links { padding: 50px 0; }
  .footer-links .row { grid-template-columns: repeat(2, 1fr); gap: 25px; padding: 30px 0; }
  .footer-links__rating { display: none; }
  .footer-legal { padding: 30px 0; }
}

@media (max-width: 767px) {
  .hero__stores { width: 100px; gap: 2px; margin-top: 20px; }
  .hero__stores img { width: 33px; height: 33px; }
  .gallery--create { grid-template-columns: 1fr; gap: 20px; }
  .gallery--creatures { grid-template-columns: 1fr; gap: 30px; }
  /* Overlay carousel controls would sit off-screen on a one-column layout. */
  .creatures__btn--prev { left: 0; }
  .creatures__btn--next { right: 0; }
  .stats { grid-template-columns: 1fr; gap: 30px; }
  .footer-links .row { grid-template-columns: 1fr; }
  /* Footer links are 20px tall, which Lighthouse flags as too small to tap.
     Enlarged only below 768px: at desktop the footer geometry is matched to
     the reference to the pixel and should not move. */
  .footer-links a { display: inline-block; padding: 6px 0; }
  .footer-links li + li { margin-top: 4px; }
  .contact-form .row-fields { flex-direction: column; gap: 0; }
  .pagination { justify-content: center; }
}

@media (min-width: 981px) and (max-width: 1405px) {
  .footer-social { padding: 20px 0; }
  .footer-links { padding: 41px 0; }
  .footer-links .row { padding: 21px 0; }
  .footer-legal { padding: 21px 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}

/* Visual foundation. These components replace the retired Divi geometry. */
:root {
  --text: #34434b; --text-secondary: #21333e; --text-body: #52616a;
  --tint: #f2f8fb; --row-max: 1120px; --header-h: 86px; --line: 1.65;
  --border: #d8e3e9; --radius: 20px;
  --shadow: 0 12px 36px rgba(28, 66, 89, .08);
}
html { scroll-padding-top: var(--header-h); scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { font-size: 16px; font-weight: 400; line-height: 1.65; overflow-x: visible; }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline-color: #0875c1; outline-offset: 4px; }
.row { width: min(calc(100% - 48px), var(--row-max)); }
.section-title {
  height: auto; display: block; margin: 0 0 22px; font-size: clamp(40px, 5.2vw, 64px);
  line-height: 1.2; color: var(--text-secondary); text-wrap: balance; overflow-wrap: break-word;
}
.section-copy { max-width: 760px; margin-inline: auto; }
.section-copy + .section-copy { margin-top: 16px; }
.eyebrow { margin: 0 0 14px; color: var(--accent-text); font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.text-center { text-align: center; }
.field-help, .merch__note { font-size: 13px; line-height: 1.65; color: #596b75; }
.field-help { margin: 12px 0 0; }
.button {
  min-height: 50px; height: auto; padding: 13px 22px; gap: 12px; border-radius: 10px;
  border: 2px solid var(--accent-text); background: var(--accent-text); color: white;
  font-size: 15px; font-weight: 600; line-height: 1.4; text-align: center;
  transition: background-color 180ms, border-color 180ms, transform 180ms;
}
.button:hover { background: #095a9b; border-color: #095a9b; color: white; }
.button--secondary { background: white; color: var(--accent-text); border-color: var(--border); }
.button--secondary:hover { background: #edf6fd; color: #095a9b; border-color: var(--accent-text); }
.button:disabled, .button[aria-disabled="true"] { opacity: .6; cursor: wait; }
.site-header { box-shadow: 0 2px 16px #0002; padding: 0; }
.site-header__inner { width: calc(100% - 32px); padding: 0; margin: auto; gap: 24px; }
.site-header__logo { flex-shrink: 0; }
.site-nav ul { align-items: center; gap: 24px; }
.site-nav a { display: inline-flex; align-items: center; min-height: 44px; color: #bababa; font-size: 14px; font-weight: 600; }
.nav-toggle { display: none; }
.hero-wrap { min-height: 260px; height: calc(100vh - var(--header-h) - var(--workshop-h)); height: calc(100svh - var(--header-h) - var(--workshop-h)); overflow: hidden; isolation: isolate; background: #233844; }
.hero-video { inset: -16px; filter: blur(6px); background: url('../video/hero-poster.webp') center / cover; }
.hero-video video { visibility: hidden; }
.hero-wrap[data-video-playing] .hero-video video { visibility: visible; }
.hero-wrap::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, #0c1a2522, #0c1a2566); pointer-events: none; z-index: 1; }
.hero { padding: 24px; box-shadow: none; z-index: 2; }
.hero__heading { width: min(682px, 90%, calc((100svh - var(--header-h) - var(--workshop-h) - 130px) * 1.705)); min-width: 180px; }
.hero__logo { width: 100%; max-width: 100%; filter: drop-shadow(0 12px 20px #0003); }
.hero-wrap[data-motion="playing"] .hero__logo { animation: logo-rock 4s ease-in-out infinite; }
@keyframes logo-rock { 0%,100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
.hero__tagline { color: #fff; font-size: clamp(16px, 2vw, 20px); margin: 12px 0 0; font-weight: 500; text-align: center; text-shadow: 0 1px 6px #000; }
.hero__stores { width: auto; gap: 5px; margin: 12px 0 0; flex-shrink: 0; }
.hero__stores a { filter: opacity(55%); border-radius: 0; background: transparent; padding: 0; }
.hero__stores img { width: 63px; height: 63px; }
.hero__explore { margin-top: 24px; font-size: 13px; color: #fff; display: flex; gap: 16px; align-items: center; }
/* The header, hero and creature strip fill the opening viewport together. */
.workshop {
  height: var(--workshop-h); display: grid; grid-template-columns: 44px minmax(0, 880px) 44px;
  justify-content: space-between; gap: clamp(12px, 3vw, 48px);
  padding: 0 clamp(16px, 15vw, 280px); box-shadow: none;
}
.section--workshop > .section__pattern { opacity: 1; }
.workshop__viewport {
  position: relative; gap: 4px; height: 82px; min-width: 0; padding: 6px 16px;
  background: white; border-radius: 26px; box-shadow: 0 2px 10px #0003;
  overflow-x: auto; scrollbar-width: none; scroll-snap-type: x mandatory; scroll-padding-inline: 16px;
}
.workshop__viewport::-webkit-scrollbar { display: none; }
.workshop__viewport a { flex: 0 0 calc((100% - 36px) / 10); min-width: 67px; scroll-snap-align: start; }
.workshop__viewport img { width: 100%; height: 67px; object-fit: contain; transition: filter 180ms; }
.workshop__viewport a:hover img, .workshop__viewport a:focus-visible img { filter: none; }
.workshop__viewport a:focus-visible { outline-offset: -3px; border-radius: 4px; }
.workshop__btn { position: relative; color: #000; font-size: 30px; padding: 0; }
.workshop__btn:disabled { opacity: .3; cursor: default; }

.section--create, .section--engage, .section--share, .section--educate,
.section--support, .section--download, .faq, .contact, .purchase, .merch, .error-page { padding: 80px 0; }
.divider { display: none; }
.section__pattern { opacity: .5; }
.gallery--bpp { gap: 20px; margin: 36px 0 24px; }
.gallery--bpp .gallery__link, .gallery--create .gallery__link { border-radius: 14px; box-shadow: var(--shadow); }
.gallery--create { gap: 20px; }
.gallery--creatures { gap: 22px; margin-top: 36px; }
.gallery--creatures li { min-width: 0; padding: 16px 10px; border-radius: 16px; background: #f5f9fb; border: 1px solid #e7eef2; }
.gallery--creatures figcaption { margin: 12px 0 0; font-size: 13px; line-height: 1.6; }
.creatures__btn { width: 44px; height: 44px; border-radius: 50%; top: 50%; }
.pagination { justify-content: center; gap: 8px; margin-top: 24px; padding: 16px 0 0; border: 0; flex-wrap: wrap; }
.pagination button { min-width: 44px; min-height: 44px; border-radius: 8px; padding: 8px 12px; background: #f2f6f8; font-size: 14px; }
.pagination button[aria-current="true"] { color: white; background: var(--accent-text); }
.stats { margin: 36px 0 0; gap: 24px; }
.stats__value { font-size: clamp(36px, 4.4vw, 60px); line-height: 1.1; height: auto; margin-bottom: 10px; }
.stats__label { font-size: 14px; height: auto; line-height: 1.5; }
.share__more { margin-top: 30px; }
.education-layout { display: grid; grid-template-columns: 1.25fr 1fr; gap: 72px; align-items: center; }
.education-copy .section-title { text-align: left; }
.education-copy p { max-width: 550px; }
.benefit-list { list-style: none; margin: 24px 0; padding: 0; }
.benefit-list li { position: relative; padding-left: 28px; margin: 12px 0; font-size: 14px; }
.benefit-list li::before { content: '✓'; position: absolute; left: 0; color: var(--accent-text); font-weight: 700; }
.purchase-card, .confirmation-card { padding: 32px; border: 1px solid var(--border); border-radius: var(--radius); background: white; box-shadow: var(--shadow); }
.purchase-card { margin: 0; text-align: left; }
.education-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; margin: 8px 0 28px; }
.education-price s { color: #52616b; font-size: 20px; }
.education-price strong { font-size: 42px; line-height: 1.2; letter-spacing: -.04em; color: var(--text-secondary); }
.education-price span { font-size: 13px; }
.seats__field { align-items: stretch; gap: 10px; }
.seats__field label { font-size: 15px; font-weight: 600; }
.seats__control { width: 100%; }
.seats__input { flex: 1; width: 0; height: 52px; border: 1px solid #9badb9; border-radius: 8px; }
.seats__step { border: 1px solid var(--border); width: 52px; height: 52px; border-radius: 8px; background: var(--tint); }
.seats__total { padding-top: 20px; border-top: 1px solid var(--border); margin-top: 24px; font-size: 15px; }
.seats__actions { flex-wrap: wrap; gap: 12px; }
.purchase-card .button { width: 100%; }
.purchase-card .field-help { font-size: 12px; }
.showcase-grid, .merch__products { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 36px 0 0; padding: 0; list-style: none; }
.product-card { position: relative; border: 1px solid var(--border); border-radius: 18px; overflow: hidden; background: white; box-shadow: 0 6px 24px #19384706; min-width: 0; }
.product-card__image { display: block; aspect-ratio: 1; width: 100%; object-fit: contain; background: #f3f5f1; }
.product-card__body { padding: 20px; }
.product-card h3 { margin: 0 0 8px; font-size: 18px; color: var(--text-secondary); line-height: 1.35; }
.product-card p { margin: 6px 0 0; }
.product-card .button { margin-top: 18px; width: 100%; }
.product-card__credit { font-size: 12px; color: #61717a; }
.product-card__label { display: inline-block; margin-bottom: 10px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .09em; color: var(--accent-text); }
.showcase-note { text-align: center; font-size: 12px; margin: 20px auto; max-width: 670px; color: #61717a; }
.merch-guide { background: var(--tint); border-radius: 20px; padding: 28px; margin-top: 30px; }
.merch-guide summary { cursor: pointer; font-weight: 600; color: var(--text-secondary); display: flex; justify-content: space-between; gap: 20px; list-style: none; min-height: 44px; align-items: center; }
.merch-guide summary::after { content: '+'; color: var(--accent-text); font-size: 24px; }
.merch-guide[open] summary::after { content: '−'; }
.merch-steps { padding: 0; margin: 22px 0 0; list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; counter-reset: step; }
.merch-steps li { counter-increment: step; }
.merch-steps li::before { content: '0' counter(step); display: block; font-family: var(--font-display); font-size: 36px; color: var(--accent-text); margin-bottom: 8px; }
.merch-steps strong { color: var(--text-secondary); }
.merch-steps strong a { text-decoration: underline; text-underline-offset: 3px; }
.merch-steps p { font-size: 14px; margin: 6px 0 0; }
.merch__product { display: block; }
.merch-intro { text-align: center; margin-bottom: 32px; }
.merch-intro .section-title { font-size: clamp(36px, 4.2vw, 56px); }
.merch-artwork { display: flex; align-items: center; justify-content: center; gap: 18px; padding: 16px 24px; background: var(--tint); border-radius: 14px; max-width: 420px; margin: 24px auto; }
.merch-artwork img { width: 76px; height: 76px; object-fit: contain; }
.merch-artwork p { margin: 0; font-size: 14px; }
.merch-layout { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 48px; align-items: start; }
.merch-preview { position: sticky; top: 100px; margin: 0; min-width: 0; }
.merch-preview__image { border-radius: var(--radius); border: 1px solid var(--border); width: 100%; aspect-ratio: 1; object-fit: contain; background: #f4f7f8; }
.merch-preview__fallback { width: 100%; aspect-ratio: 1; object-fit: contain; padding: 24px; border-radius: var(--radius); background: var(--tint); }
.merch-preview figcaption { margin-top: 14px; font-size: 13px; text-align: center; }
.merch-form { max-width: none; margin: 0; }
.merch-form .field { margin-bottom: 22px; }
.merch-form label { font-weight: 600; font-size: 14px; }
.merch-form select, .contact-form input[type="text"], .contact-form input[type="email"], .contact-form textarea {
  background: white; border: 1px solid #9badb9; border-radius: 8px; min-height: 48px; padding: 11px 14px; font-size: 16px; color: var(--text-secondary);
}
.merch-form .actions { align-items: stretch; flex-direction: column; gap: 16px; text-align: center; }
.merch-form .form-status { margin: 0 0 20px; }
.option-group { padding: 0; border: 0; margin: 0 0 22px; min-width: 0; }
.option-group legend { font-size: 14px; font-weight: 600; color: var(--text-secondary); margin-bottom: 10px; }
.option-list { display: flex; flex-wrap: wrap; gap: 8px; }
.option-button { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; min-width: 44px; justify-content: center; border: 1px solid #9badb9; background: white; border-radius: 8px; padding: 8px 12px; font-size: 13px; color: var(--text-secondary); cursor: pointer; }
.option-button[aria-pressed="true"] { border: 2px solid var(--accent-text); padding: 7px 11px; background: #edf6fd; color: #075c9e; }
.option-button:disabled { opacity: .5; cursor: not-allowed; text-decoration: line-through; }
.option-swatch { width: 18px; height: 18px; border: 1px solid #0004; border-radius: 50%; object-fit: cover; }
.order-summary { border-top: 1px solid var(--border); padding-top: 22px; margin: 24px 0; }
.order-summary h2 { margin: 0 0 12px; font-size: 16px; color: var(--text-secondary); }
.merch__total { margin: 0; font-size: 20px; font-weight: 600; }
.checkout-steps { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; padding: 0; list-style: none; font-size: 12px; margin: 0 0 26px; color: #61717a; }
.checkout-steps [aria-current="step"] { color: var(--accent-text); font-weight: 600; }
.checkout-steps li + li::before { content: '→'; margin-right: 12px; }
.status-badge { display: inline-flex; align-items: center; background: #e8f4fc; color: #075c9e; border-radius: 24px; padding: 8px 16px; font-size: 13px; font-weight: 600; margin: 0 0 20px; }
.confirmation-card { max-width: 740px; margin: 32px auto; text-align: center; }
.purchase__key { background: var(--tint); padding: 20px; font-size: clamp(22px, 4vw, 32px); border-radius: 10px; overflow-wrap: anywhere; }
.purchase__note { font-size: 14px; margin: 24px auto 0; max-width: 560px; }
.purchase__downloads { margin-top: 48px; }
.purchase__downloads h2 { font-size: 24px; line-height: 1.35; color: var(--text-secondary); }
.purchase__links { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; padding: 0; list-style: none; margin: 28px 0; }
.purchase__links li { min-width: 0; }
.purchase__links a { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 24px 12px; border: 1px solid var(--border); border-radius: 16px; background: #f5f9fb; }
.purchase__links a span:last-child { font-size: 12px; }
.platform-icon { font-size: 30px; line-height: 1; }
.downloads { gap: 32px; padding: 30px 0 0; }
.downloads a { max-width: 270px; margin: auto; box-shadow: none; border-radius: 14px; }
.footer-links .row, .footer-legal .row { width: min(calc(100% - 48px), var(--row-max)); max-width: var(--row-max); }
.footer-links .row { padding: 0; gap: 32px; }
.footer-links { padding: 48px 0; }
.footer-links h3 { color: white; font-size: 16px; margin-bottom: 16px; }
.footer-links a { display: inline-flex; align-items: center; min-height: 36px; }
.footer-social { padding: 24px 0; }
.footer-social .row { padding: 0; }
.footer-social img { width: 44px; height: 44px; }
.footer-legal { padding: 22px 0; border-top: 1px solid #ffffff14; }
.faq__item { border-color: var(--border); border-radius: 14px; }
.contact-form { max-width: 760px; margin: 32px auto 0; padding: 32px; border: 1px solid var(--border); border-radius: 18px; background: white; box-shadow: var(--shadow); }
.form-status { border-radius: 8px; }
@media (max-width: 980px) {
  .nav-toggle { display: block; right: 24px; }
  .site-nav { border-top: 1px solid #333; padding: 18px 24px; }
  .site-nav ul { align-items: stretch; gap: 8px; }
  .site-nav a { width: 100%; }
  .workshop { padding-inline: 24px; gap: 16px; }
  .education-layout { gap: 32px; }
  .merch-layout { gap: 28px; }
  .showcase-grid, .merch__products { gap: 16px; }
  .product-card__body { padding: 16px; }
  .footer-links .row { grid-template-columns: repeat(3, 1fr); }
  .downloads { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 20px; }
}
@media (max-width: 767px) {
  :root { --header-h: 70px; }
  .row, .site-header__inner, .footer-links .row, .footer-legal .row { width: calc(100% - 32px); }
  .site-header__logo img { width: 150px; height: auto; }
  :root { --workshop-h: 104px; }
  .hero { padding: 24px 16px; }
  .workshop { padding-inline: 12px; gap: 8px; }
  .workshop__viewport { height: 74px; padding-inline: 8px; scroll-padding-inline: 8px; border-radius: 22px; }
  .workshop__viewport a { min-width: 55px; }
  .workshop__viewport img { height: 60px; }
  .workshop__btn { font-size: 24px; }
  .hero__stores img { width: 46px; height: 46px; }
  .hero__explore { margin-top: 18px; }
  .section--create, .section--engage, .section--share, .section--educate,
  .section--support, .section--download, .faq, .contact, .purchase, .merch, .error-page { padding: 52px 0; }
  .section-title { font-size: clamp(36px, 8vw, 48px); }
  .gallery--bpp { gap: 10px; margin-top: 28px; }
  .gallery--bpp .gallery__link { aspect-ratio: 1; border-radius: 10px; }
  .gallery--create, .gallery--creatures { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
  .gallery--creatures li { padding: 12px 6px; }
  .gallery--creatures figcaption { font-size: 11px; }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 28px 16px; }
  .education-layout, .merch-layout { grid-template-columns: 1fr; gap: 28px; }
  .purchase-card, .confirmation-card { padding: 24px; }
  .education-copy .section-title { text-align: left; }
  .showcase-grid, .merch__products { grid-template-columns: 1fr; gap: 20px; max-width: 460px; margin-inline: auto; }
  .product-card__body { padding: 22px; }
  .merch-guide { padding: 20px; }
  .merch-steps { grid-template-columns: 1fr; gap: 22px; }
  .merch-steps li { position: relative; padding-left: 50px; }
  .merch-steps li::before { position: absolute; left: 0; top: -5px; }
  .merch-preview { position: static; }
  .purchase__links { grid-template-columns: 1fr; gap: 12px; }
  .purchase__links a { padding: 20px; }
  .downloads { grid-template-columns: 1fr; gap: 20px; }
  .downloads a { max-width: 240px; }
  .footer-links .row { grid-template-columns: repeat(2, 1fr); gap: 28px; }
  .footer-links a { min-height: 44px; padding: 4px 0; }
  .contact-form { padding: 20px; }
  .contact-form .actions { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-wrap[data-motion="playing"] .hero__logo { animation: none; }
  .hero-video video { display: none; }
}

/* Product designer: the same controls remain usable without JavaScript. */
.merch-intro { max-width: 740px; margin: 0 auto 36px; text-align: center; }
.merch .section-title { margin-bottom: 20px; }
.merch-form { max-width: none; }
.merch-layout { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 44px; align-items: start; }
.designer-preview { position: sticky; top: 104px; min-width: 0; }
.designer-stage { border-radius: 24px; overflow: hidden; background: #f2f4ed; border: 1px solid var(--border); }
.designer-stage img,.designer-stage canvas { width: 100%; height: auto; display: block; }
.designer-stage canvas { touch-action: none; cursor: default; }
.designer-stage canvas[data-layer="creature"], .designer-stage canvas[data-layer="name"] { cursor: grab; }
.designer-stage canvas[data-layer="logo"] { cursor: ns-resize; }
.designer-stage canvas[data-dragging] { cursor: grabbing; }
.designer-stage [hidden], [data-merch-form] [hidden] { display: none !important; }
.designer-tabs { display: flex; justify-content: center; gap: 6px; margin: 0 0 16px; }
.designer-tabs button { border: 1px solid #c2d1da; background: white; color: var(--text); border-radius: 100px; padding: 10px 24px; font: inherit; min-height: 44px; cursor: pointer; }
.designer-tabs button[aria-pressed=true] { background: #21333e; border-color: #21333e; color: white; }
.designer-hint { font-size: 14px; margin: 16px 0 8px; }
.designer-preview .field-help { font-size: 12px; line-height: 1.6; }
.designer-back-preview { max-width: 100%; height: auto; }
.designer-heading { font: 600 clamp(22px,2.2vw,30px)/1.25 Poppins,sans-serif; color: #21333e; margin: 0 0 12px; }
.merch-price { font-size: 24px; font-weight: 600; margin: 0 0 24px; color: #21333e; }
.merch-price span { font-size: 14px; color: #52616b; font-weight: 400; }
.designer-options { min-width: 0; }
.designer-options .field { margin: 16px 0; }
.designer-options select, .designer-options input[type=text], .designer-options input:not([type]) { width: 100%; padding: 12px; border-radius: 10px; border: 1px solid #a2b2bf; background: white; color: #21333e; font: inherit; min-height: 48px; }
.designer-options label { font-size: 14px; font-weight: 500; display: block; margin-bottom: 6px; }
.designer-controls,.variant-options { border: 0; border-bottom: 1px solid #dce4e9; margin: 0 0 22px; padding: 0 0 22px; min-width: 0; }
.designer-controls legend,.variant-options legend { padding: 0 0 14px; font-weight: 600; color: #21333e; font-size: 16px; }
.variant-button { font: inherit; font-size: 14px; padding: 8px 12px; border: 1px solid #a2b2bf; border-radius: 9px; color: #34434b; background: white; min-height: 44px; margin: 0 7px 8px 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; }
.variant-button[aria-pressed=true] { outline: 2px solid #0c71c3; outline-offset: 1px; border-color: #0c71c3; background: #f1f8ff; color: #075389; }
.variant-button:disabled { opacity: .55; text-decoration: line-through; cursor: not-allowed; background: #eee; }
.colour-dot { width: 18px; height: 18px; border: 1px solid #83939d; border-radius: 50%; display: inline-block; }
.designer-range { display: grid; grid-template-columns: 104px minmax(0,1fr) 45px; gap: 12px; align-items: center; margin: 12px 0; }
.designer-range label { margin: 0; font-size: 13px; }
.designer-range input { width: 100%; min-width: 0; min-height: 36px; accent-color: #0c71c3; cursor: pointer; }
.designer-range output { font-size: 12px; text-align: right; font-variant-numeric: tabular-nums; }
.designer-controls .check-label { display: flex; align-items: center; gap: 10px; min-height: 44px; }
.check-label input { width: 20px; height: 20px; accent-color: #0c71c3; }
.text-button { font: inherit; font-size: 13px; border: 0; background: none; color: #075389; text-decoration: underline; cursor: pointer; padding: 12px 0; }
.order-summary { padding: 24px; margin-top: 24px; border-radius: 16px; background: #f1f7fb; }
.order-summary h3 { font: 600 20px/1.4 Poppins,sans-serif; margin: 0 0 16px; }
.order-summary .button { width: 100%; }
.order-summary .notice { font-size: 14px; margin-bottom: 0; }
.demo-products { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 24px; }
.demo-products a { padding: 8px 0; }
.demo-products [aria-current] { font-weight: 600; border-bottom: 2px solid #0c71c3; }
.product-card h2 { font: 600 21px/1.4 Poppins,sans-serif; }
@media(max-width:980px) { .merch-layout { gap: 24px; } .designer-range { grid-template-columns: 92px minmax(0,1fr) 40px; gap: 6px; } }
@media(max-width:767px) { .merch-layout { grid-template-columns: 1fr; } .designer-preview { position: static; } .designer-preview .field-help { max-width: 500px; } .merch-intro { margin-bottom: 24px; } .order-summary { padding: 20px; } }
@media(prefers-reduced-motion:reduce) { .designer-stage { scroll-behavior: auto; } }
.merch > .row > .eyebrow { text-align: center; }
.form-status:empty { display: none; }
.placement-details { margin: 10px 0 0; }
.placement-details summary { font-size: 14px; cursor: pointer; color: #075389; padding: 12px 0; }
@media (max-width:767px) {
  .designer-preview { position: sticky; top: 70px; z-index: 8; background: white; padding: 10px 0 4px; border-bottom: 1px solid #dce4e9; }
  .designer-stage { max-width: min(54vw,220px); margin: auto; border-radius: 14px; }
  .designer-tabs { margin-bottom: 8px; }
  .designer-tabs button { padding: 6px 18px; min-height: 40px; font-size: 13px; }
  .designer-hint { font-size: 12px; line-height: 1.5; margin: 8px 0; }
  .designer-disclaimer { display: none; }
  [data-merch-form] .designer-mobile-note[hidden] { display: block !important; font-size: 12px; color: #52616b; }
}
@media (max-height:650px) and (max-width:767px) {
  .designer-preview { position: static; }
}
.confirmation-card p a:not(.button) { text-decoration: underline; text-underline-offset: 3px; }
.designer-preview .designer-tabs[hidden] { display: flex !important; visibility: hidden; }
.designer-stage { aspect-ratio: 1; }
.hero-wrap[data-motion="playing"] .hero__logo { will-change: transform; }

/* Simpler presentation: short headings, compact controls, one clear action. */
h1, h2, h3, h4 { line-height: 1.25; }
.hero__heading { line-height: 0; }
.section-title { font-size: clamp(34px, 4.5vw, 58px); margin-bottom: 24px; }
.button { min-height: 48px; padding: 11px 22px; border-radius: 8px; border: 1px solid #0964ad; background: #0c71c3; box-shadow: 0 3px 0 #08548f; font-size: 15px; line-height: 1.5; font-weight: 600; }
.button:hover { background: #095fa6; box-shadow: 0 3px 0 #064779; text-decoration: none; }
.button:active { transform: translateY(2px); box-shadow: 0 1px 0 #08548f; }
.button--secondary { background: white; color: #0964ad; border-color: #b1c5d3; box-shadow: 0 2px 0 #dce6ec; }
.button--secondary:hover { background: #f0f7fc; color: #075389; border-color: #7b9eb5; box-shadow: 0 2px 0 #c8dce8; }
.hero__stores { margin-top: 12px; }
.education-layout { grid-template-columns: 1.25fr 1fr; gap: 64px; max-width: 940px; }
.education-copy .section-title { margin-bottom: 22px; }
.education-copy p { margin: 0 0 16px; }
.education-copy .field-help { font-size: 14px; }
.purchase-card { padding: 26px; box-shadow: none; border-radius: 14px; }
.purchase-card .eyebrow { letter-spacing: .04em; }
.education-price { margin-bottom: 20px; }
.seats__total { margin-top: 18px; padding-top: 16px; }
.seats__actions { margin: 24px 0 4px; }
.showcase-grid { margin-top: 30px; }
.product-card { box-shadow: none; border-radius: 12px; }
.product-card__body { padding: 16px 20px; }
.product-card__label { font-size: 11px; letter-spacing: .06em; }
.showcase-note { margin: 18px auto 0; text-align: center; font-size: 13px; }
.merch-guide { max-width: 900px; padding: 24px 0 0; margin: 28px auto 0; border: 0; border-top: 1px solid #dce4e9; background: none; border-radius: 0; text-align: center; }
.merch-steps { margin: 0; gap: 24px; }
.merch-steps li::before { width: 30px; height: 30px; font-size: 14px; margin: 0 auto 10px; }
.merch-steps p { font-size: 13px; margin: 6px 0 0; }
.merch { padding: 40px 0 64px; }
.merch > .row { max-width: 1100px; }
.merch .section-title { font-size: clamp(32px, 3.5vw, 44px); margin: 0 0 12px; }
.merch-intro { margin: 0 auto 28px; font-size: 14px; }
.merch-layout { grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: 40px; }
.designer-preview { top: 104px; }
.designer-stage { border-radius: 14px; }
.designer-tabs { gap: 0; margin: 0 auto 12px; padding: 4px; width: fit-content; background: #edf2f5; border-radius: 10px; }
.designer-tabs button { border: 0; background: transparent; border-radius: 7px; padding: 6px 24px; font-size: 14px; }
.designer-tabs button[aria-pressed=true] { background: white; color: #075389; box-shadow: 0 1px 4px #18334220; }
.designer-hint { text-align: center; margin: 12px 0 4px; font-size: 13px; }
.designer-disclaimer { text-align: center; margin: 0; }
.designer-options { padding: 24px; border: 1px solid #dce4e9; border-radius: 14px; }
.designer-heading { font-size: 24px; margin-bottom: 4px; }
.merch-price { font-size: 22px; margin-bottom: 20px; }
.demo-products { margin: 0 0 16px; gap: 20px; font-size: 14px; }
.demo-products a { padding: 0 0 6px; }
.designer-controls, .variant-options { margin-bottom: 16px; padding-bottom: 12px; }
.designer-controls legend, .variant-options legend { padding-bottom: 8px; font-size: 14px; }
[data-variant-options] { display: flex; flex-wrap: wrap; gap: 0 20px; }
.variant-options { flex: 1 1 auto; }
.variant-button { border-radius: 7px; font-size: 13px; margin-right: 6px; padding: 7px 10px; }
.variant-button[aria-pressed=true] { outline: none; box-shadow: inset 0 0 0 1px #0c71c3; background: #edf7ff; }
.variant-button:focus-visible { outline: 3px solid #0c71c3; outline-offset: 3px; }
.designer-controls .field-help { margin: 0 0 8px; font-size: 12px; }
.designer-range { grid-template-columns: 76px minmax(0,1fr) 40px; gap: 8px; margin: 4px 0; }
.placement-details { margin-top: 0; }
.placement-details summary { padding: 8px 0; font-size: 13px; }
.text-button { padding: 6px 0; }
.order-summary { padding: 18px 0 0; margin: 0; background: none; border-radius: 0; border-top: 0; }
.order-summary h3 { font-size: 16px; margin-bottom: 8px; }
.order-fields { display: grid; grid-template-columns: 80px minmax(0,1fr); gap: 14px; }
.order-fields .field { margin: 4px 0 14px; }
.designer-options .merch__total { font-size: 18px; line-height: 1.5; }
.order-summary .field-help { font-size: 12px; margin-top: 4px; }
.order-summary .check-label { display: flex; align-items: flex-start; gap: 10px; margin-top: 20px; font-size: 13px; line-height: 1.5; font-weight: 400; }
.check-label input { flex: 0 0 20px; margin: 0; }
.order-summary .share-help { padding-left: 30px; margin-bottom: 18px; }
.designer-options > p:last-child { margin: 18px 0 0; font-size: 13px; }
@media(max-width:980px) {
  .education-layout { gap: 32px; }
  .merch-layout { gap: 24px; }
  .designer-options { padding: 18px; }
}
@media(max-width:767px) {
  .section-title { font-size: clamp(32px, 7.5vw, 44px); }
  .education-layout { grid-template-columns: 1fr; gap: 20px; }
  .education-copy, .education-copy .section-title { text-align: center; }
  .education-copy p { margin-inline: auto; }
  .purchase-card { width: 100%; max-width: 420px; margin: auto; }
  .showcase-grid[data-recent-purchases] { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; max-width: none; }
  [data-recent-purchases] .product-card__body { padding: 12px 8px; }
  [data-recent-purchases] .product-card h3, [data-recent-purchases] .product-card h2 { font: 600 13px/1.4 var(--font-body); margin: 4px 0; }
  [data-recent-purchases] .product-card__credit { font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; }
  [data-recent-purchases] .product-card__label { font-size: 9px; letter-spacing: 0; }
  .merch-steps { grid-template-columns: 1fr; text-align: left; gap: 16px; max-width: 320px; margin: auto; }
  .merch-steps li { padding-left: 44px; }
  .merch-steps li::before { top: 0; }
  .merch { padding-top: 28px; }
  .merch-layout { grid-template-columns: 1fr; gap: 16px; }
  .merch-intro { font-size: 13px; margin-bottom: 18px; }
  .designer-preview { padding: 8px 0; top: 70px; background: #fff; }
  .designer-stage { max-width: min(62vw,250px); }
  .designer-tabs { margin-bottom: 8px; }
  .designer-hint { margin: 6px 0 0; font-size: 12px; }
  .designer-options { padding: 18px; }
  .designer-heading { font-size: 22px; }
}
@media(max-width:359px) { .showcase-grid[data-recent-purchases] { gap: 6px; } [data-recent-purchases] .product-card__body { padding: 10px 6px; } }
@media(prefers-reduced-motion:reduce) { .button { transition: none; } }
