{"id":148611,"date":"2026-11-03T07:59:00","date_gmt":"2026-11-03T07:59:00","guid":{"rendered":"https:\/\/aurumbikes.com\/?page_id=148611"},"modified":"2026-11-03T10:20:21","modified_gmt":"2026-11-03T10:20:21","slug":"nova","status":"publish","type":"page","link":"https:\/\/aurumbikes.com\/es\/nova\/","title":{"rendered":"NOVA"},"content":{"rendered":"\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@200;300;400;500;600&amp;display=swap\" rel=\"stylesheet\">\n<style id=\"nv-hybrid-style\">\n\/* NOVA hybrid, WordPress build. Every rule sits under .nv-hybrid, so the theme's own styles and this page's do not reach each other. The exceptions are the page wrapper rules near the top and the end of this style. *\/\n.nv-hybrid {\n  --nv-top: 70px;\n  --nv-admin: 0px;\n  --black: #000;\n  --charcoal: #171717;\n  --white: #fff;\n  --ink: #171717;\n  --grey: #595959;\n  --mid: #878787;\n  --rule: #d8d8d8;\n  --sand: #E7E5DF;\n  --yellow: #ffd700;\n  --gold: #C5A681;\n  --warm: #6B655E;\n  --gutter: clamp(22px, 6.2vw, 96px);\n  --content: 1440px;\n  --fs-display: clamp(48px, 6vw, 96px);\n  --fs-body: 16px;\n  --fs-small: 14px;\n  --fs-manifesto: clamp(30px, 4vw, 60px);\n  position: relative;\n  width: var(--nv-width, 100%);\n  margin-left: calc((100% - var(--nv-width, 100%)) \/ 2);\n  padding-top: 40px;\n  overflow-x: clip;\n  background: var(--black);\n  color: var(--white);\n  color-scheme: dark;\n  font: 400 var(--fs-body)\/1.7 Poppins, sans-serif;\n  font-synthesis: none;\n  text-rendering: optimizeLegibility;\n}\n\/* The admin bar pushes the theme's sticky header down, so pinned content has to start below both. *\/\nbody.admin-bar .nv-hybrid { --nv-admin: 32px; }\n@media (max-width: 782px) { body.admin-bar .nv-hybrid { --nv-admin: 46px; } }\n\/* On desktop the theme's 40 px top strip sits over the first 40 px of the block, so the block starts below it and the film is not covered. Phones have no strip. *\/\n@media (max-width: 900px) { .nv-hybrid { padding-top: 0; } }\n\/* The theme wraps the page in containers that set overflow: hidden. A scroll container between the viewport and a sticky stage stops the stage from sticking, so those containers are reset to visible. *\/\n:has(.nv-hybrid):not(html):not(body) { overflow: visible !important; }\n\/* The theme's page title band and the spacer under it sit above the block; both are removed on any page that holds the block. *\/\nbody:has(.nv-hybrid) .qodef-page-title { display: none; }\n#qodef-page-inner:has(.nv-hybrid) { padding-top: 0; }\n.nv-hybrid *, .nv-hybrid *::before, .nv-hybrid *::after { box-sizing: border-box; }\n.nv-hybrid :where(h1, h2, h3, p, figure, ul, ol) { margin: 0; padding: 0; }\n.nv-hybrid p, .nv-hybrid li { text-wrap: pretty; }\n.nv-hybrid ::selection { color: var(--black); background: var(--yellow); }\n.nv-hybrid a { color: inherit; text-underline-offset: 5px; }\n\/* The theme colours h2 elements dark, which hid headings and figures on the black sections. Headings take their section's colour. *\/\n.nv-hybrid :is(h1, h2, h3, h4, h5, h6) { color: inherit; }\n.nv-hybrid button { color: inherit; font: inherit; }\n.nv-hybrid img, .nv-hybrid video { display: block; width: 100%; }\n.nv-hybrid :focus-visible { outline: 2px solid var(--yellow); outline-offset: 5px; }\n\/* 62px is the product nav, which stays stuck under the header. *\/\n.nv-hybrid [id] { scroll-margin-top: calc(var(--nv-top) + var(--nv-admin) + 62px); }\n.nv-hybrid h2 { text-transform: uppercase; }\n.nv-hybrid .words :focus-visible,\n.nv-hybrid .geometry :focus-visible,\n.nv-hybrid .faq :focus-visible,\n.nv-hybrid .closing :focus-visible,\n.nv-hybrid .marquee :focus-visible { outline-color: var(--black); }\n.nv-hybrid .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; }\n.nv-hybrid .skip-link { position: fixed; z-index: 100; top: 12px; left: 12px; padding: 10px 16px; transform: translateY(-160%); background: var(--white); color: var(--black); }\n.nv-hybrid .skip-link:focus { transform: none; }\n.nv-hybrid [hidden] { display: none !important; }\n.nv-hybrid .hero { position: relative; background: var(--black); }\n.nv-hybrid .hero-body { display: grid; grid-template-columns: minmax(0, 1fr); }\n.nv-hybrid .hero-media,\n.nv-hybrid .hero-overlay { grid-area: 1 \/ 1; }\n.nv-hybrid .hero-media { position: relative; width: 100%; aspect-ratio: 16 \/ 9; overflow: hidden; background: var(--black); }\n.nv-hybrid .hero-film { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }\n.nv-hybrid .hero-shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, #0009 0%, #0000 17%); }\n.nv-hybrid .hero-overlay { position: relative; }\n.nv-hybrid .hero-copy { padding: clamp(44px, 5vw, 72px) var(--gutter) clamp(56px, 7vw, 96px); text-align: center; }\n.nv-hybrid .product-logo { display: block; width: clamp(128px, 13vw, 188px); height: auto; margin: 0 auto; filter: brightness(0) invert(1); }\n.nv-hybrid .hero-copy p { max-width: 340px; margin: 16px auto 26px; color: var(--white); font-size: var(--fs-body); font-weight: 300; line-height: 1.55; }\n.nv-hybrid .hero-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }\n.nv-hybrid .outline-button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 20px; border: 1px solid currentColor; border-radius: 5px; background: transparent; color: inherit; font-size: var(--fs-small); font-weight: 400; text-decoration: none; cursor: pointer; transition: color .2s ease, background-color .2s ease; }\n.nv-hybrid .outline-button:hover { color: var(--black); background: var(--white); }\n.nv-hybrid .words .outline-button:hover,\n.nv-hybrid .closing .outline-button:hover { color: var(--white); background: var(--black); }\n.nv-hybrid .outline-button.solid-button { background: var(--white); color: var(--black); }\n.nv-hybrid .outline-button.solid-button:hover { background: var(--yellow); }\n.nv-hybrid .film-control { position: absolute; z-index: 2; right: clamp(18px, 2.4vw, 36px); bottom: 24px; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 0 8px 12px; border: 0; background: transparent; color: var(--white); font-size: var(--fs-small); cursor: pointer; pointer-events: auto; }\n.nv-hybrid .film-control:hover { color: var(--yellow); }\n.nv-hybrid .control-icon { display: block; width: 16px; height: 18px; position: relative; }\n.nv-hybrid .control-icon::before,\n.nv-hybrid .control-icon::after { content: \"\"; position: absolute; }\n.nv-hybrid .film-control[data-state=\"playing\"] .control-icon::before,\n.nv-hybrid .film-control[data-state=\"playing\"] .control-icon::after { top: 2px; bottom: 2px; width: 4px; background: currentColor; }\n.nv-hybrid .film-control[data-state=\"playing\"] .control-icon::before { left: 2px; }\n.nv-hybrid .film-control[data-state=\"playing\"] .control-icon::after { right: 2px; }\n.nv-hybrid .film-control[data-state=\"paused\"] .control-icon::before { inset: 1px 0 1px 3px; width: 0; height: 0; border-top: 8px solid transparent; border-bottom: 8px solid transparent; border-left: 12px solid currentColor; }\n@keyframes nv-film-in { from { opacity: 0; } }\n@keyframes nv-copy-in { from { opacity: 0; transform: translate3d(0, 28px, 0); } }\n.nv-hybrid.motion .hero-film { animation: nv-film-in 1.4s ease-out backwards; }\n.nv-hybrid.motion .hero-copy { animation: nv-copy-in 1s cubic-bezier(.16, 1, .3, 1) .5s backwards; }\n@media (min-width: 901px) {\n  .nv-hybrid .hero-overlay { position: sticky; bottom: 0; align-self: end; z-index: 1; pointer-events: none; }\n  .nv-hybrid .hero-copy { background: linear-gradient(0deg, #000c 0%, #0009 45%, #0000 100%); }\n  .nv-hybrid .hero-copy a,\n  .nv-hybrid .film-control { pointer-events: auto; }\n  .nv-hybrid .hero-shade { background: linear-gradient(0deg, #000b 0%, #0000 40%), linear-gradient(180deg, #0009 0%, #0000 17%); }\n}\n.nv-hybrid .product-nav-shell { position: relative; z-index: 20; background: var(--black); }\n.nv-hybrid .product-nav { position: relative; z-index: 20; min-height: 62px; display: flex; align-items: center; justify-content: center; gap: clamp(18px, 3vw, 46px); padding: 12px var(--gutter); overflow-x: auto; background: var(--black); border-bottom: 1px solid #333; scrollbar-width: none; }\n.nv-hybrid .product-nav::-webkit-scrollbar { display: none; }\n.nv-hybrid .product-nav a { flex: 0 0 auto; color: var(--white); font-size: var(--fs-small); font-weight: 300; text-decoration: none; }\n.nv-hybrid .product-nav a:hover { text-decoration: underline; text-underline-offset: 6px; }\n.nv-hybrid .product-nav a[aria-current=\"location\"] { color: var(--yellow); }\n.nv-hybrid .product-nav-more { display: none; }\n.nv-hybrid.motion .product-nav-shell { position: sticky; top: var(--nv-stick, calc(var(--nv-top) + var(--nv-admin))); }\n.nv-hybrid .configurator { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .85fr); min-height: clamp(600px, 80vh, 780px); background: var(--black); color: var(--white); }\n.nv-hybrid .cfg-stage { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 24px; padding: clamp(24px, 3vw, 40px); background: var(--sand); color: var(--ink); }\n.nv-hybrid .cfg-stage :focus-visible { outline-color: var(--black); }\n.nv-hybrid .cfg-variants { display: flex; gap: 8px; }\n.nv-hybrid .cfg-variant { min-height: 44px; padding: 0 22px; border: 1px solid var(--black); border-radius: 2px; background: var(--white); color: var(--ink); font-size: var(--fs-small); font-weight: 500; letter-spacing: .08em; cursor: pointer; transition: background-color .2s ease, color .2s ease; }\n.nv-hybrid .cfg-variant[aria-pressed=\"true\"] { background: var(--black); color: var(--white); }\n.nv-hybrid .cfg-visual { display: grid; place-items: center; min-height: 0; }\n.nv-hybrid .cfg-bike { width: 100%; max-width: 720px; height: auto; aspect-ratio: 3 \/ 2; object-fit: contain; }\n.nv-hybrid .cfg-bar { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 24px; }\n.nv-hybrid .cfg-name { margin: 0; font-size: clamp(32px, 3.4vw, 48px); font-weight: 300; line-height: 1; letter-spacing: -.03em; }\n.nv-hybrid .cfg-sub { margin: 10px 0 0; color: var(--grey); font-size: var(--fs-small); letter-spacing: .12em; text-transform: uppercase; }\n.nv-hybrid .cfg-price { margin: 14px 0 0; font-size: var(--fs-body); }\n.nv-hybrid .cfg-price span { color: var(--grey); font-size: var(--fs-small); }\n.nv-hybrid .cfg-actions { display: flex; align-items: center; gap: 12px; }\n.nv-hybrid .cfg-step { width: 52px; height: 52px; display: grid; place-items: center; padding: 0; border: 1px solid var(--ink); border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; transition: background-color .2s ease, color .2s ease; }\n.nv-hybrid .cfg-step:hover { background: var(--black); color: var(--white); }\n.nv-hybrid .cfg-step svg { display: block; width: 18px; height: 18px; }\n.nv-hybrid .cfg-configure { min-height: 52px; display: inline-flex; align-items: center; padding: 0 32px; border-radius: 2px; background: var(--grey); color: var(--white); font-size: var(--fs-small); text-decoration: none; transition: background-color .2s ease; }\n.nv-hybrid .cfg-configure:hover { background: var(--black); }\n.nv-hybrid .cfg-panel { position: relative; min-height: 0; overflow: hidden; background: var(--sand); }\n.nv-hybrid .cfg-panel > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.nv-hybrid .cfg-panel-copy { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 28px; padding: clamp(20px, 2.4vw, 36px); text-align: left; }\n.nv-hybrid .cfg-panel .cfg-panel-logo { display: block; width: clamp(132px, 14vw, 200px); height: auto; align-self: flex-end; margin-top: auto; }\n.nv-hybrid .cfg-claim { margin: 0; color: var(--ink); font-size: clamp(22px, 2.2vw, 30px); font-weight: 300; line-height: 1.2; letter-spacing: -.02em; }\n.nv-hybrid .cfg-claim strong { font-weight: 600; }\n.nv-hybrid .cfg-about { max-width: 36ch; margin: 0; color: var(--ink); font-size: var(--fs-body); line-height: 1.55; }\n.nv-hybrid .words { background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .words-main { max-width: var(--content); margin: 0 auto; display: grid; gap: clamp(24px, 2.6vw, 40px); }\n.nv-hybrid .word-item { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: clamp(40px, 6vw, 96px); align-items: start; }\n.nv-hybrid .word-claim { margin: 0; color: var(--warm); font-size: clamp(20px, 3.2vw, 46px); font-weight: 400; line-height: 1.15; letter-spacing: -.035em; white-space: nowrap; transition: color .5s ease; }\n.nv-hybrid .word-claim::first-letter { font-weight: 600; }\n.nv-hybrid .word-item.is-active .word-claim { color: var(--ink); }\n.nv-hybrid .word-body { display: grid; justify-items: start; gap: 24px; max-width: 46ch; }\n.nv-hybrid .word-body p { margin: 0; color: var(--grey); font-size: var(--fs-body); line-height: 1.6; transition: color .5s ease; }\n.nv-hybrid .word-item.is-active .word-body p { color: var(--ink); }\n.nv-hybrid.motion .word-body p[data-reveal] { transition: opacity .9s ease, transform .9s cubic-bezier(.16, 1, .3, 1), color .5s ease; }\n.nv-hybrid .word-item .outline-button { font-size: var(--fs-small); letter-spacing: .12em; text-transform: uppercase; }\n.nv-hybrid .words-links { justify-self: end; display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 4px 14px; }\n.nv-hybrid .word-link { min-height: 44px; display: inline-flex; align-items: center; margin: 0; padding: 0; border: 0; background: none; color: var(--grey); font: inherit; font-size: var(--fs-small); letter-spacing: .12em; text-transform: uppercase; text-decoration: none; cursor: pointer; transition: color .5s ease; }\n.nv-hybrid .word-link.is-active { color: var(--ink); }\n.nv-hybrid .word-link:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .3em; }\n.nv-hybrid .words-sep { color: var(--mid); font-size: var(--fs-small); }\n.nv-hybrid .words-rule { height: 1px; background: var(--rule); }\n.nv-hybrid .word-body { transition: opacity .6s ease, visibility .6s ease; }\n.nv-hybrid .word-item:not(.is-active) .word-body { opacity: 0; visibility: hidden; }\n@media (min-width: 901px) {\n  .nv-hybrid .word-body { height: 0; }\n  .nv-hybrid .word-item:has(+ .words-rule) .word-body { height: auto; }\n  .nv-hybrid .words-rule { margin-top: 0; }\n}\n@media (min-width: 901px) { .nv-hybrid .words-links { position: sticky; bottom: 24px; padding: 8px 0 8px 16px; background: var(--sand); } }\n@media (max-width: 900px) {\n  .nv-hybrid .words-main { gap: 24px; }\n  .nv-hybrid .word-item { grid-template-columns: minmax(0, 1fr); gap: 20px; }\n  .nv-hybrid .word-claim { font-size: clamp(17px, 5.3vw, 34px); }\n}\n.nv-hybrid .manifesto-track { position: relative; height: 210vh; }\n.nv-hybrid:not(.sweep) .manifesto-track { height: auto; }\n.nv-hybrid .feel { position: relative; background: var(--black); color: var(--white); }\n.nv-hybrid .feel-stage { position: sticky; top: 0; height: 100vh; min-height: 560px; overflow: hidden; }\n.nv-hybrid .feel-photo { position: absolute; inset: 0; margin: 0; background: var(--charcoal); }\n.nv-hybrid .feel-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; }\n.nv-hybrid .feel-shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, #000e 0%, #0008 40%, #0000 72%), linear-gradient(0deg, #000e 0%, #000b 35%, #0000 70%); }\n.nv-hybrid .feel-inner { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); align-items: stretch; max-width: calc(var(--content) + var(--gutter) * 2); margin: 0 auto; padding: calc(var(--nv-top) + var(--nv-admin) + 62px + clamp(24px, 4vh, 48px)) var(--gutter) clamp(40px, 9vh, 96px); }\n.nv-hybrid .feel-copy { align-self: start; }\n.nv-hybrid .feel-kicker { margin: 0 0 24px; color: var(--white); font-size: var(--fs-small); font-weight: 500; letter-spacing: .18em; text-transform: uppercase; }\n.nv-hybrid .feel h2 { margin: 0; max-width: 8ch; font-size: var(--fs-display); font-weight: 300; line-height: 1.02; letter-spacing: -.03em; text-wrap: balance; }\n.nv-hybrid .manifesto-stage { align-self: end; justify-self: start; max-width: 780px; }\n.nv-hybrid .manifesto-text { margin: 0; font-size: clamp(20px, 1.6vw, 28px); font-weight: 300; line-height: 1.3; letter-spacing: -.02em; text-wrap: pretty; }\n.nv-hybrid .manifesto-bar { display: none; }\n.nv-hybrid.sweep .manifesto-bar { display: block; position: relative; height: 2px; margin-top: clamp(32px, 4vw, 48px); overflow: hidden; background: #ffd70033; }\n.nv-hybrid.sweep .manifesto-bar::after { content: \"\"; position: absolute; inset: 0; background: var(--yellow); transform: scaleX(var(--p, 0)); transform-origin: left center; }\n.nv-hybrid .machine { background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .machine-main { max-width: var(--content); margin: 0 auto; }\n.nv-hybrid .machine-head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .42fr); gap: clamp(40px, 6vw, 96px); align-items: end; }\n.nv-hybrid .machine-kicker, .nv-hybrid .words-kicker { display: flex; align-items: center; gap: 14px; margin: 0; color: var(--grey); font-size: var(--fs-small); font-weight: 500; letter-spacing: .18em; text-transform: uppercase; }\n.nv-hybrid .machine-kicker { margin-bottom: 28px; }\n.nv-hybrid .machine-kicker::before, .nv-hybrid .words-kicker::before { content: \"\"; width: 40px; height: 1px; background: var(--gold); }\n.nv-hybrid .machine h2 { margin: 0; font-size: var(--fs-display); font-weight: 300; line-height: 1.02; letter-spacing: -.03em; text-wrap: balance; }\n.nv-hybrid .machine-lead { max-width: 34ch; margin: 0; color: var(--grey); font-size: var(--fs-body); line-height: 1.55; }\n.nv-hybrid .machine-photo { margin: clamp(40px, 4.5vw, 64px) 0 0; height: clamp(300px, 46vw, 640px); }\n.nv-hybrid .machine-photo img { width: 100%; height: 100%; object-fit: contain; }\n.nv-hybrid .machine-stats { margin: clamp(40px, 5vw, 64px) 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }\n.nv-hybrid .machine-stats li { padding: 28px 24px; }\n.nv-hybrid .machine-stats li:first-child { padding-left: 0; }\n.nv-hybrid .machine-stats li + li { border-left: 1px solid var(--rule); }\n.nv-hybrid .machine-stats strong { display: block; font-size: clamp(48px, 5.2vw, 80px); font-weight: 300; line-height: 1; letter-spacing: -.03em; font-variant-numeric: tabular-nums; white-space: nowrap; }\n.nv-hybrid .machine-stats .unit { font-size: var(--fs-body); letter-spacing: .12em; text-transform: uppercase; color: var(--grey); }\n.nv-hybrid .machine-stats span { display: block; margin-top: 14px; color: var(--grey); font-size: var(--fs-small); letter-spacing: .12em; text-transform: uppercase; }\n.nv-hybrid .machine-note { margin: 24px 0 0; color: var(--grey); font-size: var(--fs-small); line-height: 1.6; }\n.nv-hybrid .road { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; background: var(--black); }\n.nv-hybrid .road-panel { position: relative; height: clamp(560px, 80vh, 820px); margin: 0; overflow: hidden; background: var(--charcoal); color: var(--white); }\n.nv-hybrid .road-panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n.nv-hybrid .road-panel::after { content: \"\"; position: absolute; inset: 0; background: linear-gradient(0deg, #000d 0%, #000c 30%, #0009 55%, #0000 85%); }\n.nv-hybrid .road-copy { position: absolute; z-index: 1; left: var(--gutter); right: var(--gutter); bottom: clamp(32px, 5vw, 64px); max-width: 540px; }\n.nv-hybrid .road-label { margin: 0 0 16px; font-size: var(--fs-small); font-weight: 500; letter-spacing: .18em; text-transform: uppercase; }\n.nv-hybrid .road-title { margin: 0 0 20px; font-size: var(--fs-display); font-weight: 300; line-height: 1; letter-spacing: -.03em; }\n.nv-hybrid .road-text { max-width: 36ch; margin: 0; font-size: var(--fs-body); font-weight: 300; line-height: 1.55; }\n.nv-hybrid .x20 { background: var(--charcoal); color: var(--white); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .x20-head { max-width: var(--content); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 48px; align-items: end; }\n.nv-hybrid .x20-head h2 { margin: 0; font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; text-wrap: balance; }\n.nv-hybrid .x20-head p { margin: 0; max-width: 52ch; color: #a3a3a3; }\n.nv-hybrid .x20-copy { grid-column: 1; grid-row: 1; align-self: end; display: grid; gap: 48px; }\n.nv-hybrid .x20-intro { grid-column: 2; grid-row: 1; align-self: end; display: grid; gap: 24px; }\n.nv-hybrid .x20-intro-photo { margin: 0; aspect-ratio: 3 \/ 2; overflow: hidden; background: #262626; }\n.nv-hybrid .x20-intro-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.nv-hybrid .x20-media { max-width: var(--content); margin: clamp(40px, 4.5vw, 64px) auto 0; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 18px; }\n.nv-hybrid .x20-band { position: relative; height: clamp(360px, 44vw, 660px); margin: 0; overflow: hidden; background: #262626; }\n.nv-hybrid .x20-band img { position: absolute; top: 0; left: 0; width: 100%; height: 120%; object-fit: cover; object-position: center 40%; }\n.nv-hybrid.motion .x20-band img { transform: translate3d(0, calc(var(--y, 0) * -16%), 0); }\n.nv-hybrid .x20-side { display: flex; flex-direction: column; }\n.nv-hybrid .x20-photo { margin: 0; height: clamp(200px, 26vw, 380px); overflow: hidden; background: #262626; }\n.nv-hybrid .x20-photo img { width: 100%; height: 100%; object-fit: cover; }\n.nv-hybrid .x20-photo--cutout img { object-fit: contain; padding: 8%; }\n.nv-hybrid .x20-callout { margin-top: 28px; padding-top: 24px; border-top: 1px solid #333; }\n.nv-hybrid .x20-specs { max-width: var(--content); margin: clamp(40px, 4.5vw, 64px) auto 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid #333; }\n.nv-hybrid .x20-spec { padding: 28px 24px 0 0; }\n.nv-hybrid .x20-value { margin: 0; font-size: var(--fs-display); font-weight: 200; line-height: 1; letter-spacing: -.03em; font-variant-numeric: tabular-nums; white-space: nowrap; }\n.nv-hybrid .x20-value small { margin-left: 8px; font-size: var(--fs-body); font-weight: 200; letter-spacing: 0; color: #a3a3a3; }\n.nv-hybrid .x20-label { margin: 16px 0 2px; font-size: var(--fs-small); font-weight: 500; }\n.nv-hybrid .x20-spec .x20-label { text-transform: uppercase; letter-spacing: .12em; }\n.nv-hybrid .x20-detail { margin: 0; color: #a3a3a3; font-size: var(--fs-small); line-height: 1.5; }\n.nv-hybrid .x20-points { max-width: var(--content); margin: clamp(40px, 4.5vw, 64px) auto 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 48px; border-top: 1px solid #333; }\n.nv-hybrid .x20-points li { padding: 22px 0; border-bottom: 1px solid #333; font-size: var(--fs-body); line-height: 1.55; }\n.nv-hybrid .x20-points strong { display: block; margin-bottom: 6px; font-size: var(--fs-body); font-weight: 600; }\n.nv-hybrid .x20-points span { color: #d4d4d4; }\n.nv-hybrid .x20-connect { max-width: var(--content); margin: clamp(40px, 4.5vw, 64px) auto 0; padding-top: 28px; border-top: 1px solid #333; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 48px; align-items: center; }\n.nv-hybrid .x20-connect-text { display: flex; flex-direction: column; gap: 18px; }\n.nv-hybrid .x20-connect-logo { display: block; width: 96px; height: 96px; border-radius: 22%; }\n.nv-hybrid .x20-connect-photo { margin: 0; aspect-ratio: 3 \/ 2; overflow: hidden; background: #262626; }\n.nv-hybrid .x20-connect-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.nv-hybrid .x20-connect-title { margin: 0; font-size: clamp(1.6rem, 2.6vw, 2.4rem); font-weight: 300; line-height: 1.1; letter-spacing: -.03em; text-wrap: balance; }\n.nv-hybrid .x20-connect-copy { max-width: 55ch; margin: 0; color: #a3a3a3; line-height: 1.7; }\n.nv-hybrid .x20-note { max-width: 75ch; margin: 48px 0 0 max(0px, calc((100% - var(--content)) \/ 2)); color: #a3a3a3; font-size: var(--fs-small); line-height: 1.75; }\n.nv-hybrid .range { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: end; min-height: clamp(600px, 84vh, 860px); background: var(--charcoal); color: var(--white); padding: clamp(64px, 6.5vw, 96px) var(--gutter) clamp(56px, 5.5vw, 80px); }\n.nv-hybrid .range-photo { position: absolute; inset: 0; margin: 0; }\n.nv-hybrid .range-photo img { height: 100%; object-fit: cover; object-position: center 60%; }\n.nv-hybrid .range-photo::after { content: \"\"; position: absolute; inset: 0; background: linear-gradient(90deg, #0000 0%, #0000 36%, #000c 60%, #000e 100%); }\n.nv-hybrid .range-copy { position: relative; grid-column: 2; justify-self: end; width: min(100%, 520px); }\n.nv-hybrid .range-number { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .22em; margin: 0; font-size: var(--fs-body); font-weight: 300; line-height: 1.1; }\n.nv-hybrid .range-number .count { font-size: var(--fs-display); font-weight: 200; line-height: .8; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }\n.nv-hybrid .range-unit { font-size: var(--fs-body); font-weight: 300; }\n.nv-hybrid .range-copy > p { max-width: 56ch; margin: 22px 0 0; color: #fff; font-size: var(--fs-body); }\n.nv-hybrid .range-copy .range-note { margin-top: 12px; color: #fff; font-size: var(--fs-small); }\n.nv-hybrid .gallery { background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) 0 clamp(56px, 5.5vw, 80px); }\n.nv-hybrid .gallery-inner { padding: 0 max(var(--gutter), calc((100% - var(--content)) \/ 2)); }\n.nv-hybrid .gallery-head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 340px); align-items: end; gap: 32px; }\n.nv-hybrid .gallery-kicker { margin: 0; color: var(--warm); font-size: var(--fs-small); letter-spacing: .08em; text-transform: uppercase; }\n.nv-hybrid .gallery h2 { margin: 22px 0 0; font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; text-transform: none; }\n.nv-hybrid .gallery-lead { margin: 0; color: var(--grey); font-size: var(--fs-body); line-height: 1.55; }\n\/* The strip moves only with the arrows or a swipe, never with the page's own scroll. Its frames have different shapes and snap to the content edge. *\/\n.nv-hybrid .gallery-stage { position: relative; margin-top: clamp(40px, 4.5vw, 64px); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-padding-inline-start: max(var(--gutter), calc((100% - var(--content)) \/ 2)); scrollbar-width: none; }\n.nv-hybrid .gallery-stage::-webkit-scrollbar { display: none; }\n.nv-hybrid .gallery-stage:focus-visible { outline: 1px solid var(--black); outline-offset: 8px; }\n.nv-hybrid .gallery-grid { --gal-h: clamp(300px, 30vw, 500px); width: max-content; display: flex; align-items: flex-start; gap: clamp(12px, 1.4vw, 20px); margin: 0; padding: 0 var(--gutter) 0 max(var(--gutter), calc((100% - var(--content)) \/ 2)); list-style: none; }\n.nv-hybrid .gallery-frame { position: relative; flex: 0 0 auto; width: calc(var(--gal-h) * var(--gal-r, 1)); height: var(--gal-h); overflow: hidden; background: var(--charcoal); scroll-snap-align: start; }\n.nv-hybrid .gallery-frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }\n\/* Plain rectangles in five proportions: tall, square, wide, wide and panorama. --gal-r is the width-to-height ratio. *\/\n.nv-hybrid .gal-tall { --gal-r: .667; }\n.nv-hybrid .gal-square { --gal-r: 1; }\n.nv-hybrid .gal-wide { --gal-r: 1.5; }\n.nv-hybrid .gal-pano { --gal-r: 2; }\n.nv-hybrid .gallery-foot { margin-top: clamp(28px, 3vw, 40px); }\n.nv-hybrid .gallery-controls { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 24px; margin-top: 28px; }\n.nv-hybrid .gallery-count { margin: 0; font-size: var(--fs-small); letter-spacing: .08em; font-variant-numeric: tabular-nums; white-space: nowrap; }\n.nv-hybrid .gallery-progress { position: relative; height: 1px; background: var(--rule); }\n.nv-hybrid .gallery-bar { position: absolute; top: -.5px; left: 0; height: 2px; background: var(--ink); transition: width .4s ease; }\n.nv-hybrid .gallery-arrows { display: flex; gap: 12px; }\n.nv-hybrid .gallery-arrows .cfg-step:disabled, .nv-hybrid .gallery-arrows .cfg-step:disabled:hover { opacity: .35; cursor: default; background: transparent; color: var(--ink); }\n.nv-hybrid .geometry { position: relative; overflow: hidden; background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .geometry-inner { max-width: var(--content); margin: 0 auto; }\n.nv-hybrid .geometry h2 { margin: 0; font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; }\n.nv-hybrid .geometry-lead { max-width: 42ch; margin: 22px 0 0; color: #171717; }\n.nv-hybrid .geometry-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(40px, 5vw, 74px); align-items: start; margin: clamp(40px, 4.5vw, 64px) 0 0; }\n.nv-hybrid .geometry-photo { margin: 0; overflow: hidden; padding: 12.5% 0; }\n.nv-hybrid .geometry-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 \/ 2; object-fit: cover; }\n.nv-hybrid.motion .geometry-photo img { transform: scale(calc(1.06 - var(--g, 0) * .06)); }\n.nv-hybrid .geometry-stats { margin: 0; padding: 22px 0 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 24px; border-top: 1px solid var(--grey); }\n.nv-hybrid .geometry-stats li { display: grid; gap: 14px; }\n.nv-hybrid .geometry-stats strong { font-size: clamp(44px, 4.8vw, 72px); font-weight: 300; line-height: 1; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }\n.nv-hybrid .geometry-stats span { color: var(--grey); font-size: var(--fs-small); line-height: 1.4; letter-spacing: .12em; text-transform: uppercase; }\n.nv-hybrid .size-label { margin: 56px 0 0; color: var(--ink); font-size: var(--fs-small); font-weight: 500; letter-spacing: .18em; text-transform: uppercase; }\n.nv-hybrid .size-picker { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 20px 0 0; }\n.nv-hybrid .size-button { min-height: 52px; padding: 0 16px; border: 1px solid var(--grey); border-radius: 2px; background: transparent; color: var(--ink); font-size: var(--fs-body); font-weight: 400; cursor: pointer; transition: color .2s ease, background-color .2s ease, border-color .2s ease; }\n.nv-hybrid .size-button:hover { border-color: var(--ink); }\n.nv-hybrid .size-button[aria-pressed=\"true\"] { border-color: var(--ink); background: var(--ink); color: var(--white); }\n.nv-hybrid .size-guide { display: inline-block; margin: 16px 0 0; color: var(--ink); font-size: var(--fs-small); text-decoration: underline; text-underline-offset: 4px; }\n.nv-hybrid .geometry-table { margin: 28px 0 0; padding: 28px 0 0; border-top: 1px solid var(--grey); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(24px, 6vw, 96px); }\n.nv-hybrid .geometry-item { margin: 0; padding: 0 0 24px; }\n.nv-hybrid .geometry-item dt { color: var(--grey); font-size: var(--fs-small); line-height: 1.4; }\n.nv-hybrid .geometry-item dd { margin: 6px 0 0; color: var(--ink); font-size: var(--fs-body); font-weight: 500; line-height: 1.4; font-variant-numeric: tabular-nums; }\n.nv-hybrid .geometry-foot { margin: 8px 0 0; color: var(--grey); font-size: var(--fs-small); }\n.nv-hybrid .viewer { background: var(--charcoal); color: var(--white); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .viewer-head { max-width: var(--content); margin: 0 auto 40px; display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 32px; }\n.nv-hybrid .viewer-head h2 { margin: 0; font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; }\n.nv-hybrid .viewer-head p { margin: 0; max-width: 36ch; color: #fff; }\n.nv-hybrid .viewer-stage { position: relative; max-width: var(--content); height: clamp(420px, 56vw, 760px); margin: 0 auto; overflow: hidden; background: var(--charcoal); }\n.nv-hybrid .viewer-poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 55%; }\n.nv-hybrid .viewer-stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: var(--charcoal); }\n.nv-hybrid .viewer-hint { max-width: var(--content); margin: 16px auto 0; color: #fff; font-size: var(--fs-small); }\n.nv-hybrid .marquee { overflow: hidden; background: var(--sand); color: var(--black); padding: clamp(40px, 4.5vw, 64px) 0; }\n.nv-hybrid .marquee-track { display: flex; width: max-content; margin: 0; padding-left: var(--gutter); font-size: clamp(36px, 4vw, 76px); font-weight: 200; line-height: 1; letter-spacing: -.01em; text-transform: uppercase; white-space: nowrap; }\n.nv-hybrid .marquee-track span { padding-right: .4em; }\n.nv-hybrid .marquee-track .sep { color: #595959; }\n.nv-hybrid.motion .marquee-track { transform: translate3d(calc(var(--m, 0) * -50%), 0, 0); will-change: transform; }\n.nv-hybrid .buy { position: relative; display: flex; flex-direction: column; min-height: clamp(600px, 84vh, 860px); overflow: hidden; padding: clamp(64px, 6.5vw, 96px) var(--gutter) clamp(56px, 5.5vw, 80px); background: var(--charcoal); color: var(--white); }\n.nv-hybrid .buy-photo { position: absolute; inset: 0; margin: 0; }\n.nv-hybrid .buy-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }\n.nv-hybrid .buy-shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, #000e 0%, #000a 40%, #0000 75%), linear-gradient(0deg, #000e 0%, #000b 35%, #0000 70%); }\n.nv-hybrid .buy-inner { position: relative; z-index: 1; flex: 1; display: flex; flex-direction: column; justify-content: space-between; gap: 48px; width: 100%; max-width: var(--content); margin: 0 auto; }\n.nv-hybrid .buy-price { margin: 0; font-size: var(--fs-display); font-weight: 200; line-height: .95; letter-spacing: -.03em; }\n.nv-hybrid .buy-price span { display: block; margin-top: 22px; color: #e0e0e0; font-size: var(--fs-body); font-weight: 300; letter-spacing: 0; }\n.nv-hybrid .buy-copy p { max-width: 52ch; margin: 0 0 14px; color: #ededed; font-size: var(--fs-body); }\n.nv-hybrid .buy-copy .buy-note { color: #bdbdbd; font-size: var(--fs-small); }\n.nv-hybrid .buy-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 18px; }\n.nv-hybrid .faq { background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) var(--gutter) clamp(40px, 4vw, 64px); }\n.nv-hybrid .faq-title { max-width: var(--content); margin: 0 auto; padding: 0 0 clamp(36px, 4vw, 56px); border-bottom: 1px dashed var(--mid); font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; }\n.nv-hybrid .faq-list { max-width: var(--content); margin: 0 auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(40px, 6vw, 96px); }\n.nv-hybrid .faq-item { border-bottom: 1px dashed var(--mid); }\n.nv-hybrid .faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: clamp(28px, 3vw, 40px) 0; cursor: pointer; list-style: none; font-size: var(--fs-body); font-weight: 500; line-height: 1.4; }\n.nv-hybrid .faq-item summary::-webkit-details-marker { display: none; }\n.nv-hybrid .faq-item summary::after { content: \"\"; flex: 0 0 auto; width: 18px; height: 18px; background: linear-gradient(currentColor, currentColor) center \/ 18px 1px no-repeat, linear-gradient(currentColor, currentColor) center \/ 1px 18px no-repeat; }\n.nv-hybrid .faq-item[open] summary::after { background: linear-gradient(currentColor, currentColor) center \/ 18px 1px no-repeat; }\n.nv-hybrid .faq-item p { max-width: 60ch; margin: 0 0 clamp(28px, 3vw, 40px); color: var(--grey); font-weight: 300; line-height: 1.7; }\n.nv-hybrid .closing { background: var(--sand); color: var(--ink); padding: clamp(64px, 6.5vw, 96px) var(--gutter); }\n.nv-hybrid .closing h2 { max-width: var(--content); margin: 0 auto; font-size: var(--fs-display); font-weight: 300; line-height: 1.04; letter-spacing: -.03em; text-wrap: balance; }\n.nv-hybrid .closing h2 span { font-weight: 200; }\n.nv-hybrid .closing-list { position: relative; max-width: var(--content); margin: clamp(40px, 4.5vw, 64px) auto 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); counter-reset: item; }\n.nv-hybrid .closing-list::before { content: \"\"; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--ink); transform-origin: left center; }\n.nv-hybrid.motion .closing-list::before { transform: scaleX(var(--draw, 0)); }\n.nv-hybrid .closing-list li { padding: 26px 28px 0 0; counter-increment: item; }\n.nv-hybrid.motion .closing-list li:nth-child(2) { transition-delay: .12s; }\n.nv-hybrid.motion .closing-list li:nth-child(3) { transition-delay: .24s; }\n.nv-hybrid .closing-list li::before { content: counter(item, decimal-leading-zero); display: block; margin-bottom: 42px; color: var(--grey); font-size: var(--fs-small); font-variant-numeric: tabular-nums; }\n.nv-hybrid .closing-list h3 { margin: 0 0 12px; font-size: var(--fs-body); font-weight: 500; line-height: 1.3; }\n.nv-hybrid .closing-list p { max-width: 40ch; margin: 0; color: #171717; font-size: var(--fs-body); }\n.nv-hybrid .closing-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 56px 0 0 max(0px, calc((100% - var(--content)) \/ 2)); }\n.nv-hybrid.motion [data-reveal] { opacity: 0; transform: translate3d(0, 28px, 0); transition: opacity .9s ease, transform .9s cubic-bezier(.16, 1, .3, 1); }\n.nv-hybrid.motion [data-reveal].is-in { opacity: 1; transform: none; }\n@media (max-width: 900px) {\n  .nv-hybrid .hero-body { position: relative; }\n  .nv-hybrid .hero-media { aspect-ratio: 3 \/ 4; }\n  .nv-hybrid .hero-shade { background: linear-gradient(0deg, #000b 0%, #0000 40%), linear-gradient(180deg, #0009 0%, #0000 17%); }\n  .nv-hybrid .hero-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; pointer-events: none; }\n  .nv-hybrid .hero-copy { background: linear-gradient(0deg, #000c 0%, #0009 45%, #0000 100%); padding: 36px var(--gutter) 52px; }\n  .nv-hybrid .hero-copy a,\n  .nv-hybrid .film-control { pointer-events: auto; }\n  .nv-hybrid .hero-copy p { max-width: 34ch; }\n  .nv-hybrid .manifesto-track { height: 190vh; }\n  .nv-hybrid .feel-inner { display: contents; }\n  .nv-hybrid .feel-copy { position: absolute; top: calc(var(--nv-top) + var(--nv-admin) + 62px + 24px); left: max(var(--gutter), calc((100% - var(--content)) \/ 2)); }\n  .nv-hybrid .feel h2 { font-size: clamp(44px, 12vw, 60px); }\n  .nv-hybrid .feel-photo img { object-position: 62% 50%; }\n  .nv-hybrid .feel-shade { background: linear-gradient(0deg, #000e 0%, #000a 50%, #0006 100%); }\n  .nv-hybrid .manifesto-stage { position: absolute; left: var(--gutter); right: var(--gutter); width: auto; bottom: 40px; }\n  .nv-hybrid .manifesto-text { font-size: clamp(18px, 4.8vw, 22px); }\n  .nv-hybrid .machine-head { grid-template-columns: minmax(0, 1fr); gap: 24px; }\n  .nv-hybrid .machine-stats { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .machine-stats li { padding: 20px 0; }\n  .nv-hybrid .machine-stats li + li { border-left: 0; border-top: 1px solid var(--rule); }\n  .nv-hybrid .range { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .range-copy { grid-column: auto; justify-self: stretch; width: auto; }\n  .nv-hybrid .range-photo img { object-position: 30% 60%; }\n  .nv-hybrid .range-photo::after { background: linear-gradient(180deg, #0006 0%, #000d 60%, #000e 100%); }\n  .nv-hybrid .film-control { top: calc(var(--nv-top) + var(--nv-admin) + 14px); bottom: auto; right: 14px; padding: 8px 12px; border-radius: 4px; background: #000a; }\n  .nv-hybrid .product-nav-shell { position: sticky; top: var(--nv-stick, var(--nv-admin)); }\n  .nv-hybrid .product-nav { width: calc(100% - 52px); justify-content: flex-start; min-height: 60px; gap: 25px; padding: 8px 20px; scroll-padding-inline: 20px; overscroll-behavior-x: contain; }\n  .nv-hybrid .product-nav a { min-height: 44px; display: inline-flex; align-items: center; }\n  .nv-hybrid .product-nav-more { position: absolute; top: 0; right: 0; width: 52px; height: 60px; display: grid; place-items: center; padding: 0 4px; border: 0; background: linear-gradient(90deg, #0000 0%, #000 42%); color: var(--white); cursor: pointer; }\n  .nv-hybrid .product-nav-more svg { display: block; width: 18px; height: 18px; }\n  .nv-hybrid .product-nav-more:focus-visible { outline: 2px solid var(--yellow); outline-offset: -4px; }\n  .nv-hybrid .product-nav-more[hidden] { display: none; }\n  .nv-hybrid [id] { scroll-margin-top: calc(var(--nv-stick, var(--nv-admin)) + 62px); }\n  .nv-hybrid .x20-head { grid-template-columns: 1fr; }\n  .nv-hybrid .buy-shade { background: linear-gradient(180deg, #000a 0%, #0000 25%), linear-gradient(0deg, #000e 0%, #000a 50%, #0006 100%); }\n  .nv-hybrid .buy-photo img { object-position: 60% 50%; }\n  .nv-hybrid .x20-media { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .x20-photo { height: 60vw; }\n  .nv-hybrid .x20-specs { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .x20-spec { padding-bottom: 28px; }\n  .nv-hybrid .x20-points { grid-template-columns: 1fr; }\n  .nv-hybrid .x20-points li { padding: 16px 0; }\n  .nv-hybrid .x20-connect { grid-template-columns: minmax(0, 1fr); gap: 18px; }\n  .nv-hybrid .x20-note { margin: 24px 0 0; }\n  .nv-hybrid .x20-copy { display: contents; }\n.nv-hybrid .x20-intro { grid-column: auto; grid-row: auto; order: 1; }\n.nv-hybrid .x20-copy > p { order: 2; }\n  .nv-hybrid .x20-band { height: 70vw; min-height: 260px; }\n  .nv-hybrid .hero-film { object-fit: cover; }\n  .nv-hybrid .road { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .road-panel { height: auto; min-height: 480px; display: flex; flex-direction: column; justify-content: flex-end; }\n  .nv-hybrid .road-copy { position: relative; z-index: 1; left: auto; right: auto; bottom: auto; max-width: none; margin: 0 var(--gutter); padding-bottom: 32px; }\n  .nv-hybrid .gallery-grid { --gal-h: clamp(260px, 70vw, 420px); }\n  .nv-hybrid .gallery-head { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .geometry-grid { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .geometry-stats { gap: 16px 12px; }\n  .nv-hybrid .configurator { grid-template-columns: minmax(0, 1fr); min-height: 0; }\n  .nv-hybrid .cfg-stage { padding: 24px 20px 28px; }\n  .nv-hybrid .cfg-bar { flex-direction: column; align-items: stretch; }\n  .nv-hybrid .cfg-actions { justify-content: space-between; }\n  .nv-hybrid .cfg-panel { aspect-ratio: auto; }\n  .nv-hybrid .cfg-panel-copy { position: relative; inset: auto; padding: clamp(20px, 2.4vw, 36px); }\n  .nv-hybrid .faq-list { grid-template-columns: minmax(0, 1fr); }\n  .nv-hybrid .viewer-head { flex-direction: column; align-items: flex-start; }\n  .nv-hybrid .viewer-stage { height: 72vw; min-height: 340px; max-height: 560px; }\n  .nv-hybrid .closing-list { grid-template-columns: 1fr; }\n  .nv-hybrid .closing-list li { padding-bottom: 36px; }\n  .nv-hybrid .closing-list li::before { margin-bottom: 18px; }\n}\n\/* The theme pads its page wrapper by 100px at the bottom. That padding would show as a white band above the footer, so the block removes it. *\/\n#qodef-page-inner:has(.nv-hybrid) { padding-bottom: 0; }\n@media (prefers-reduced-motion: reduce) {\n  .nv-hybrid *, .nv-hybrid *::before, .nv-hybrid *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }\n}\n\n\/* Ficha t\u00e9cnica de geometr\u00eda aprobada *\/\n.nv-hybrid .geometry{padding-bottom:clamp(24px,2.5vw,36px)}.nv-hybrid .geometry-grid{margin-top:clamp(24px,3vw,40px)}.nv-hybrid .geometry-photo{padding:4% 0}.nv-hybrid .size-label{margin-top:32px}.tech{background:#e7e5df;color:#171717;padding:clamp(24px,2.5vw,36px) var(--gutter) clamp(48px,5vw,72px)}.tech-inner{max-width:var(--content);margin:auto}.tech h2{font-size:clamp(30px,3vw,48px);font-weight:300;line-height:1.15;max-width:24ch;margin:0 0 32px}.tech-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}.tech h3{font-size:14px;letter-spacing:.12em;font-weight:500;border-top:1px solid #878787;padding-top:18px;margin-bottom:20px}.tech ul{list-style:none;padding:0}.tech li{padding:10px 0;border-bottom:1px solid #ccc;line-height:1.5}@media(max-width:900px){.tech-columns{grid-template-columns:1fr;gap:32px}}\n<\/style>\n<div class=\"nv-hybrid\" lang=\"es\">\n<a class=\"skip-link\" href=\"#main\">Saltar al contenido<\/a>\n\n  <section class=\"hero\" id=\"top\" aria-label=\"Pel\u00edcula de lanzamiento de NOVA\">\n    <h1 class=\"visually-hidden\">NOVA, la bicicleta el\u00e9ctrica todoterreno de AURUM<\/h1>\n\n    <div class=\"hero-body\">\n      <div class=\"hero-media\">\n        <video class=\"hero-film\" id=\"hero-film\" autoplay=\"\" muted=\"\" loop=\"\" playsinline=\"\" preload=\"metadata\" poster=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-hero-film-poster.webp\" aria-label=\"Pel\u00edcula de lanzamiento de NOVA\">\n          <source src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/11\/nova-hero-film-optimized.webm\" type=\"video\/webm\" media=\"(min-width: 901px)\">\n          <source src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/11\/nova-hero-film-optimized.mp4\" type=\"video\/mp4\" media=\"(min-width: 901px)\">\n          <source src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/11\/nova-hero-film-vertical-optimized.webm\" type=\"video\/webm\" media=\"(max-width: 900px)\">\n          <source src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/11\/nova-hero-film-vertical-optimized.mp4\" type=\"video\/mp4\">\n        <\/video>\n        <div class=\"hero-shade\" aria-hidden=\"true\"><\/div>\n      <\/div>\n\n      <div class=\"hero-overlay\">\n        <div class=\"hero-copy\">\n          <svg class=\"product-logo\" viewBox=\"0 0 487.64 94.16\" role=\"img\" aria-label=\"NOVA\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><g>\n    <path fill=\"#1d1d1b\" d=\"M186.67,0c13.58,0,24.94,4.53,34.09,13.59,9.15,9.06,13.72,20.21,13.72,33.46s-4.56,24.26-13.69,33.4c-9.13,9.14-20.26,13.71-33.39,13.71s-24.52-4.55-33.66-13.65c-9.15-9.1-13.72-20.11-13.72-33.03,0-8.61,2.08-16.6,6.25-23.95,4.17-7.35,9.85-13.11,17.04-17.28,7.2-4.16,14.98-6.25,23.36-6.25M187.06,8.71c-6.63,0-12.92,1.73-18.86,5.19-5.94,3.46-10.58,8.11-13.92,13.97-3.34,5.85-5,12.38-5,19.58,0,10.65,3.69,19.65,11.08,26.99,7.38,7.34,16.29,11.01,26.71,11.01,6.96,0,13.4-1.69,19.32-5.06s10.54-7.99,13.86-13.84c3.32-5.85,4.98-12.36,4.98-19.52s-1.66-13.55-4.98-19.3c-3.32-5.75-7.99-10.36-14.01-13.81-6.02-3.46-12.41-5.19-19.17-5.19\"><\/path>\n    <polygon fill=\"#1d1d1b\" points=\"280.19 2.25 289.94 2.25 319.65 71.51 349.84 2.25 359.59 2.25 320.59 91.9 318.64 91.9 280.19 2.25\"><\/polygon>\n    <polygon fill=\"#1d1d1b\" points=\"445.83 2.26 443.64 2.26 401.28 91.9 411.28 91.9 425.24 62.41 429.34 53.75 444.7 21.3 459.98 53.75 436.41 53.75 432.38 62.41 463.86 62.41 477.96 91.9 487.64 91.9 445.83 2.26\"><\/polygon>\n    <polygon fill=\"#1d1d1b\" points=\"0 91.9 17.28 2.26 19.41 2.26 71.4 70.98 84.65 2.26 94.31 2.26 77.03 91.9 74.83 91.9 23.21 24.02 10.13 91.9 0 91.9\"><\/polygon>\n  <\/g><\/svg>\n          <p>MORE RIDE. SAME YOU.<\/p>\n          <div class=\"hero-actions\">\n            <a class=\"outline-button solid-button\" href=\"#words\">Explorar NOVA<\/a>\n            <a class=\"outline-button\" href=\"https:\/\/aurumbikes.com\/es\/tiendas\/\">Encuentra un distribuidor<\/a>\n          <\/div>\n        <\/div>\n        <button class=\"film-control\" type=\"button\" aria-controls=\"hero-film\" data-state=\"playing\">\n          <span class=\"control-icon\" aria-hidden=\"true\"><\/span>\n          <span class=\"control-label\">Pausar v\u00eddeo<\/span>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <div class=\"product-nav-shell\">\n    <nav class=\"product-nav\" aria-label=\"Secciones de la p\u00e1gina NOVA\">\n      <a href=\"#words\">El concepto NOVA<\/a><a href=\"#x20\">Motor y asistencia<\/a><a href=\"#range\">Bater\u00eda y autonom\u00eda<\/a><a href=\"#geometry\">Geometr\u00eda y tallas<\/a><a href=\"#viewer\">Explora en 3D<\/a><a href=\"#buy\">Precio y configuraci\u00f3n<\/a>\n    <\/nav>\n    <button class=\"product-nav-more\" type=\"button\" aria-label=\"Mostrar m\u00e1s secciones\" hidden=\"\">\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m9 5 7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n    <\/button>\n  <\/div>\n\n  <div id=\"main\">\n    <section class=\"configurator\" id=\"configurator\" aria-label=\"Configurar NOVA\">\n      <div class=\"cfg-stage\" data-reveal=\"\">\n        <div class=\"cfg-variants\">\n          <button class=\"cfg-variant\" type=\"button\" aria-pressed=\"true\">ROAD<\/button>\n          <button class=\"cfg-variant\" type=\"button\" aria-pressed=\"false\">ALL-ROAD<\/button>\n        <\/div>\n        <div class=\"cfg-visual\">\n          <img loading=\"lazy\" class=\"cfg-bike\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\" alt=\"NOVA en configuraci\u00f3n de carretera\" width=\"1200\" height=\"800\" loading=\"lazy\" decoding=\"async\">\n          <img loading=\"lazy\" class=\"cfg-bike\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novaduracemontana.webp\" alt=\"NOVA en configuraci\u00f3n All-Road\" width=\"2400\" height=\"1601\" loading=\"lazy\" decoding=\"async\" hidden=\"\">\n        <\/div>\n        <div class=\"cfg-bar\">\n          <div class=\"cfg-info\">\n            <p class=\"cfg-name\">NOVA<\/p>\n            <p class=\"cfg-sub\">Configuraci\u00f3n Road<\/p>\n            <p class=\"cfg-sub\" hidden=\"\">Configuraci\u00f3n All-Road<\/p>\n            <p class=\"cfg-price\">Desde 5.999\u20ac <span>(impuestos excluidos)<\/span><\/p>\n          <\/div>\n          <div class=\"cfg-actions\">\n            <button class=\"cfg-step\" type=\"button\" data-step=\"-1\" aria-label=\"Variante anterior\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m15 5-7 7 7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n            <\/button>\n            <button class=\"cfg-step\" type=\"button\" data-step=\"1\" aria-label=\"Siguiente variante\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m9 5 7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n            <\/button>\n            <a class=\"cfg-configure\" href=\"https:\/\/aurumbikes.com\/es\/nova\/configurar\/?load-preset=148872\">Configurar<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n      <figure class=\"cfg-panel\" data-reveal=\"\">\n        <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/R5M20409-Editar.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\">\n        <div class=\"cfg-panel-copy\">\n          <p class=\"cfg-claim\"><strong>MORE RIDE.<\/strong> SAME YOU.<\/p>\n          <p class=\"cfg-about\">NOVA es la primera bicicleta el\u00e9ctrica de AURUM, dise\u00f1ada para llegar m\u00e1s lejos en cada salida sin cambiar tu forma de entender el ciclismo.<\/p>\n          <svg class=\"cfg-panel-logo\" viewBox=\"0 0 487.64 94.16\" role=\"img\" aria-label=\"NOVA\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><g>\n            <path fill=\"#1d1d1b\" d=\"M186.67,0c13.58,0,24.94,4.53,34.09,13.59,9.15,9.06,13.72,20.21,13.72,33.46s-4.56,24.26-13.69,33.4c-9.13,9.14-20.26,13.71-33.39,13.71s-24.52-4.55-33.66-13.65c-9.15-9.1-13.72-20.11-13.72-33.03,0-8.61,2.08-16.6,6.25-23.95,4.17-7.35,9.85-13.11,17.04-17.28,7.2-4.16,14.98-6.25,23.36-6.25M187.06,8.71c-6.63,0-12.92,1.73-18.86,5.19-5.94,3.46-10.58,8.11-13.92,13.97-3.34,5.85-5,12.38-5,19.58,0,10.65,3.69,19.65,11.08,26.99,7.38,7.34,16.29,11.01,26.71,11.01,6.96,0,13.4-1.69,19.32-5.06s10.54-7.99,13.86-13.84c3.32-5.85,4.98-12.36,4.98-19.52s-1.66-13.55-4.98-19.3c-3.32-5.75-7.99-10.36-14.01-13.81-6.02-3.46-12.41-5.19-19.17-5.19\"><\/path>\n    <polygon fill=\"#1d1d1b\" points=\"280.19 2.25 289.94 2.25 319.65 71.51 349.84 2.25 359.59 2.25 320.59 91.9 318.64 91.9 280.19 2.25\"><\/polygon>\n    <polygon fill=\"#1d1d1b\" points=\"445.83 2.26 443.64 2.26 401.28 91.9 411.28 91.9 425.24 62.41 429.34 53.75 444.7 21.3 459.98 53.75 436.41 53.75 432.38 62.41 463.86 62.41 477.96 91.9 487.64 91.9 445.83 2.26\"><\/polygon>\n    <polygon fill=\"#1d1d1b\" points=\"0 91.9 17.28 2.26 19.41 2.26 71.4 70.98 84.65 2.26 94.31 2.26 77.03 91.9 74.83 91.9 23.21 24.02 10.13 91.9 0 91.9\"><\/polygon>\n  <\/g><\/svg>\n        <\/div>\n      <\/figure>\n    <\/section>\n    <section class=\"words\" id=\"words\" aria-label=\"Natural. Open. Versatile. Amplified.\">\n      <div class=\"words-main\">\n        <p class=\"words-kicker\">01 \u2014 La idea<\/p>\n        <div class=\"word-item is-active\">\n          <h2 class=\"word-claim\">Natural ride.<\/h2>\n          <div class=\"word-body\">\n            <p data-reveal=\"\">Una asistencia que sigue tu esfuerzo y cadencia con una respuesta inmediata, fluida y progresiva. T\u00fa decides cu\u00e1nto esforzarte y cu\u00e1ndo llegar m\u00e1s lejos.<\/p>\n            <a class=\"outline-button\" href=\"#feel\" aria-label=\"Explore Natural ride\">Explorar<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"word-item\">\n          <h2 class=\"word-claim\">Open possibilities.<\/h2>\n          <div class=\"word-body\">\n            <p data-reveal=\"\">La bater\u00eda integrada prolonga cada salida y deja el control en manos del ciclista. Dise\u00f1ada para rutas m\u00e1s largas, m\u00e1s desnivel y nuevas carreteras.<\/p>\n            <a class=\"outline-button\" href=\"#range\" aria-label=\"Explore Open possibilities\">Explorar<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"word-item\">\n          <h2 class=\"word-claim\">Versatile by design.<\/h2>\n          <div class=\"word-body\">\n            <p data-reveal=\"\">Los anclajes integrados y discretos permiten que NOVA se adapte a distintas formas de pedalear, del asfalto a las pistas r\u00e1pidas, con una sola bicicleta.<\/p>\n            <a class=\"outline-button\" href=\"#road\" aria-label=\"Explore Versatile by design\">Explorar<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"word-item\">\n          <h2 class=\"word-claim\">Amplified by technology.<\/h2>\n          <div class=\"word-body\">\n            <p data-reveal=\"\">MAHLE X20 aporta una asistencia precisa y natural sin alterar el car\u00e1cter deportivo de NOVA. Potencia m\u00e1xima de 275 W y unos 3,2 kg para el sistema completo. Todo el cableado permanece oculto.<\/p>\n            <a class=\"outline-button\" href=\"#x20\" aria-label=\"Explore Amplified by technology\">Explorar<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"words-rule\" aria-hidden=\"true\"><\/div>\n        <nav class=\"words-links\" aria-label=\"Elija un reclamo\">\n          <button class=\"word-link is-active\" type=\"button\">Natural<\/button><span class=\"words-sep\" aria-hidden=\"true\">\/<\/span>\n          <button class=\"word-link\" type=\"button\">Open<\/button><span class=\"words-sep\" aria-hidden=\"true\">\/<\/span>\n          <button class=\"word-link\" type=\"button\">Versatile<\/button><span class=\"words-sep\" aria-hidden=\"true\">\/<\/span>\n          <button class=\"word-link\" type=\"button\">Amplified<\/button>\n        <\/nav>\n      <\/div>\n    <\/section>\n\n    <section class=\"feel\" id=\"feel\" aria-labelledby=\"feel-title\">\n      <div class=\"manifesto-track\">\n        <div class=\"feel-stage\">\n          <figure class=\"feel-photo\" aria-hidden=\"true\">\n            <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-07.jpg\" alt=\"\" width=\"2000\" height=\"1333\" loading=\"lazy\" decoding=\"async\">\n          <\/figure>\n          <div class=\"feel-shade\" aria-hidden=\"true\"><\/div>\n          <div class=\"feel-inner\">\n            <div class=\"feel-copy\">\n              <p class=\"feel-kicker\">Para ciclistas, no pasajeros.<\/p>\n              <h2 id=\"feel-title\" data-reveal=\"\">Siente cada momento.<\/h2>\n            <\/div>\n            <div class=\"manifesto-stage\">\n              <p class=\"manifesto-text\">La primera bicicleta el\u00e9ctrica de AURUM lleva nuestro ADN de rendimiento a una bicicleta ligera, limpia y vers\u00e1til. No pedalea por ti. Lleva tu esfuerzo, tus rutas y tus l\u00edmites m\u00e1s lejos.<\/p>\n              <span class=\"manifesto-bar\" aria-hidden=\"true\"><\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"machine\" aria-labelledby=\"machine-title\">\n      <div class=\"machine-main\">\n        <div class=\"machine-head\">\n          <div>\n            <p class=\"machine-kicker\">02 \u2014 La m\u00e1quina<\/p>\n            <h2 id=\"machine-title\" data-reveal=\"\">Todas las sensaciones. M\u00e1s libertad.<\/h2>\n          <\/div>\n          <p class=\"machine-lead\" data-reveal=\"\">Parece una AURUM. Se conduce como una AURUM. Con un poco m\u00e1s de ayuda en cada aventura.<\/p>\n        <\/div>\n        <figure class=\"machine-photo\" data-reveal=\"\">\n          <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\" alt=\"Bicicleta el\u00e9ctrica NOVA, vista lateral completa\" width=\"2400\" height=\"1601\" loading=\"lazy\" decoding=\"async\">\n        <\/figure>\n        <ul class=\"machine-stats\" data-reveal=\"\">\n          <li><strong>11.5 <small class=\"unit\">kg<\/small><\/strong><span>Peso aproximado de la bicicleta completa*<\/span><\/li>\n          <li><strong>350 <small class=\"unit\">Wh<\/small><\/strong><span>Bater\u00eda integrada<\/span><\/li>\n          <li><strong>38 <small class=\"unit\">mm<\/small><\/strong><span>Paso de rueda m\u00e1ximo<\/span><\/li>\n        <\/ul>\n        <p class=\"machine-note\">*Peso de referencia; el peso real var\u00eda seg\u00fan la talla y el montaje.<\/p>\n      <\/div>\n    <\/section>\n\n    <section class=\"road\" id=\"road\" aria-label=\"CARRETERA y TODO CARRETERA\">\n      <article class=\"road-panel\">\n        <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-road-panel.webp\" alt=\"Ciclista con kit blanco subiendo por una carretera de monta\u00f1a iluminada por el sol\" width=\"1600\" height=\"1067\" loading=\"lazy\" decoding=\"async\">\n        <div class=\"road-copy\">\n          <p class=\"road-label\">01 \/ ASFALTO<\/p>\n          <h2 class=\"road-title\">ROAD.<\/h2>\n          <p class=\"road-text\">El ritmo que conoces. Las carreteras que te gustan. Y la libertad de seguir adelante.<\/p>\n        <\/div>\n      <\/article>\n      <article class=\"road-panel\">\n        <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/R5M20442-scaled-1.jpg\" alt=\"Primer plano del cuadro NOVA blanco con letras AURUM y un neum\u00e1tico de grava\" loading=\"lazy\" decoding=\"async\">\n        <div class=\"road-copy\">\n          <p class=\"road-label\">02 \/ M\u00c1S ALL\u00c1 DEL ASFALTO<\/p>\n          <h2 class=\"road-title\">ALL-ROAD.<\/h2>\n          <p class=\"road-text\">Cuando el camino cambia, la aventura no se detiene. Explora m\u00e1s con espacio para neum\u00e1ticos de hasta 38 mm.<\/p>\n        <\/div>\n      <\/article>\n    <\/section>\n\n    <section class=\"x20\" id=\"x20\" aria-labelledby=\"x20-title\">\n      <div class=\"x20-head\">\n        <div class=\"x20-copy\">\n          <h2 id=\"x20-title\">Una asistencia que se siente como ciclismo.<\/h2>\n          <p>El MAHLE X20 es un sistema premium de buje trasero que incluye motor, bater\u00eda integrada y unidad de control. Su respuesta ayuda en rutas largas y subidas, y conserva la silueta limpia y la conducci\u00f3n natural de NOVA.<\/p>\n        <\/div>\n        <div class=\"x20-intro\">\n          <figure class=\"x20-intro-photo\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/aurum9934.webp\" alt=\"Piloto presionando el control en el cuadro NOVA blanco, con el indicador verde encendido\" loading=\"lazy\" decoding=\"async\">\n          <\/figure>\n          <p class=\"x20-lead\">Suave. Silencioso. Naturalmente sensible. El MAHLE X20 aporta ayuda cuando la necesitas, sin quitarte la sensaci\u00f3n de pedalear.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"x20-media\" data-reveal=\"\">\n        <figure class=\"x20-band\">\n          <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-bike-road.jpg\" alt=\"Bicicleta de carretera NOVA en un taller.\" loading=\"lazy\" decoding=\"async\">\n        <\/figure>\n        <div class=\"x20-side\">\n          <figure class=\"x20-photo x20-photo--cutout\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/mahle-x20-motor.webp\" alt=\"Unidad de accionamiento del buje trasero MAHLE X20\" loading=\"lazy\" decoding=\"async\">\n          <\/figure>\n          <div class=\"x20-callout\">\n            <p class=\"x20-value\"><span class=\"count\" data-count=\"3.2\" data-decimals=\"1\">3.2<\/span><small>kg<\/small><\/p>\n            <p class=\"x20-label\">Sistema completo<\/p>\n            <p class=\"x20-detail\">MAHLE X20<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      <ul class=\"x20-specs\" aria-label=\"MAHLE X20 especificaciones\" data-reveal=\"\">\n        <li class=\"x20-spec\">\n          <p class=\"x20-value\"><span class=\"count\" data-count=\"1.39\" data-decimals=\"2\">1.39<\/span><small>kg<\/small><\/p>\n          <p class=\"x20-label\">Peso del motor<\/p>\n          <p class=\"x20-detail\">Buje trasero<\/p>\n        <\/li>\n        <li class=\"x20-spec\">\n          <p class=\"x20-value\"><span class=\"count\" data-count=\"23\" data-decimals=\"0\">23<\/span><small>Nm<\/small><\/p>\n          <p class=\"x20-label\">En la rueda<\/p>\n          <p class=\"x20-detail\">Equivalente a 65 Nm en un motor central<\/p>\n        <\/li>\n        <li class=\"x20-spec\">\n          <p class=\"x20-value\"><span class=\"count\" data-count=\"350\" data-decimals=\"0\">350<\/span><small>Wh<\/small><\/p>\n          <p class=\"x20-label\">Bater\u00eda integrada<\/p>\n          <p class=\"x20-detail\">iX3<\/p>\n        <\/li>\n      <\/ul>\n      <ul class=\"x20-points\" data-reveal=\"\">\n        <li><strong>Integraci\u00f3n invisible.<\/strong> <span>La silueta limpia de un AURUM.<\/span><\/li>\n        <li><strong>Pedaleo natural.<\/strong> <span>Asistencia progresiva y silenciosa que nunca toma el relevo.<\/span><\/li>\n        <li><strong>Sin arrastre.<\/strong> <span>La rueda gira libremente cuando el motor no est\u00e1 funcionando.<\/span><\/li>\n        <li><strong>Transmisi\u00f3n protegida.<\/strong> <span>La potencia extra no pasa a trav\u00e9s de la cadena ni del casete.<\/span><\/li>\n      <\/ul>\n      <div class=\"x20-connect\" data-reveal=\"\">\n        <div class=\"x20-connect-text\">\n          <img loading=\"lazy\" class=\"x20-connect-logo\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/logo-app-mysmartbike.jpg\" alt=\"Logotipo de la aplicaci\u00f3n MAHLE My SmartBike\" width=\"512\" height=\"512\" loading=\"lazy\" decoding=\"async\">\n          <h3 class=\"x20-connect-title\">Conectada para pedalear a tu manera.<\/h3>\n          <p class=\"x20-connect-copy\">Con la aplicaci\u00f3n My SmartBike de MAHLE, personaliza la asistencia, consulta los datos de tus salidas con NOVA, registra rutas y mant\u00e9n el sistema actualizado. Bluetooth y ANT+ conectan sensores de potencia y cadencia, y es compatible con Apple Watch.<\/p>\n        <\/div>\n        <figure class=\"x20-connect-photo\">\n          <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/mahle-my-smartbike-app.webp\" alt=\"Un ciclista revisa la aplicaci\u00f3n MAHLE My SmartBike en un tel\u00e9fono junto a una bicicleta NOVA blanca\" loading=\"lazy\" decoding=\"async\">\n        <\/figure>\n      <\/div>\n      <p class=\"x20-note\">La bater\u00eda externa MAHLE eX1, disponible por separado, a\u00f1ade 171 Wh y eleva la capacidad total de 350 Wh a 521 Wh. Puede aportar hasta 60 km de autonom\u00eda adicional, seg\u00fan la ruta y el nivel de asistencia.<\/p>\n    <\/section>\n\n    <section class=\"range\" id=\"range\" aria-labelledby=\"range-title\">\n      <figure class=\"range-photo\" aria-hidden=\"true\">\n        <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-05.jpg\" alt=\"\" width=\"2000\" height=\"1333\" loading=\"lazy\" decoding=\"async\">\n      <\/figure>\n      <div class=\"range-copy\">\n        <h2 class=\"range-number\" id=\"range-title\">Hasta <span class=\"count\" data-count=\"140\" data-decimals=\"0\">140<\/span><span class=\"range-unit\">km.<\/span><\/h2>\n        <p>Autonom\u00eda estimada, alcanzada en pruebas internas con entre 2.000 y 2.300 m de desnivel positivo acumulado.<\/p>\n        <p class=\"range-note\">Cifras estimadas. La autonom\u00eda real depende del peso del ciclista, la ruta, el desnivel, el nivel de asistencia, la velocidad, los neum\u00e1ticos, la presi\u00f3n, la temperatura y las condiciones de uso.<\/p>\n      <\/div>\n    <\/section>\n\n    <section class=\"gallery\" id=\"gallery\" aria-labelledby=\"gallery-title\">\n      <div class=\"gallery-inner\">\n        <div class=\"gallery-head\">\n          <div>\n            <p class=\"gallery-kicker\">NOVA m\u00e1s de cerca \/ 05 im\u00e1genes<\/p>\n            <h2 id=\"gallery-title\">Cada detalle.<br>Todas las posibilidades.<\/h2>\n          <\/div>\n          <p class=\"gallery-lead\">Descubre NOVA a trav\u00e9s de sus recorridos, su dise\u00f1o y su tecnolog\u00eda.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-stage\" tabindex=\"0\" aria-label=\"Galer\u00eda de fotos NOVA. Utilice las flechas para moverse entre fotogramas.\">\n        <ul class=\"gallery-grid\">\n          <li class=\"gallery-frame gal-tall\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-03.jpg\" alt=\"Jinete parado junto a una bicicleta NOVA en una carretera abierta\" loading=\"lazy\" decoding=\"async\">\n          <\/li>\n          <li class=\"gallery-frame gal-square\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-04.jpg\" alt=\"Primer plano de un jinete con casco y gafas de sol.\" loading=\"lazy\" decoding=\"async\">\n          <\/li>\n          <li class=\"gallery-frame gal-wide\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-06.jpg\" alt=\"Jinete inclinado sobre el manillar de una bicicleta NOVA en una carretera de ladera\" loading=\"lazy\" decoding=\"async\">\n          <\/li>\n          <li class=\"gallery-frame gal-wide\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-07.jpg\" alt=\"Jinete en una bicicleta NOVA blanca en un camino forestal, en movimiento\" loading=\"lazy\" decoding=\"async\">\n          <\/li>\n          <li class=\"gallery-frame gal-pano\">\n            <img src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-life-08.jpg\" alt=\"Jinete en una bicicleta NOVA en una carretera a trav\u00e9s de pastizales secos\" loading=\"lazy\" decoding=\"async\">\n          <\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"gallery-inner gallery-foot\">\n        <div class=\"gallery-controls\">\n          <p class=\"gallery-count\"><span class=\"gallery-now\">01<\/span> \/ 05<\/p>\n          <div class=\"gallery-progress\" aria-hidden=\"true\"><span class=\"gallery-bar\"><\/span><\/div>\n          <div class=\"gallery-arrows\">\n            <button class=\"cfg-step\" type=\"button\" data-gallery-step=\"-1\" aria-label=\"Foto anterior\" disabled=\"\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19 12H5m0 0 6-6m-6 6 6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n            <\/button>\n            <button class=\"cfg-step\" type=\"button\" data-gallery-step=\"1\" aria-label=\"siguiente foto\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M5 12h14m0 0-6-6m6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n    <section class=\"geometry\" id=\"geometry\" aria-labelledby=\"geometry-title\">\n      <div class=\"geometry-inner\">\n        <h2 id=\"geometry-title\">Encuentra tu ajuste natural.<\/h2>\n        <p class=\"geometry-lead\">Stack progresivo, reach contenido.<\/p>\n        <div class=\"geometry-grid\">\n          <figure class=\"geometry-photo\">\n            <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-geometry-fit.webp\" alt=\"Primer plano del marco NOVA blanco con la montura AURUM FDH2 sobre un fondo de estudio gris claro\" width=\"1600\" height=\"1067\" loading=\"lazy\" decoding=\"async\">\n          <\/figure>\n          <div class=\"geometry-panel\">\n            <ul class=\"geometry-stats\">\n              <li><strong>420<\/strong><span>Vainas en mm<\/span><\/li>\n              <li><strong>4<\/strong><span>Tallas de cuadro<\/span><\/li>\n              <li><strong>38<\/strong><span>Neum\u00e1tico m\u00e1x. en mm<\/span><\/li>\n            <\/ul>\n        <p class=\"size-label\">Explora la geometr\u00eda por talla<\/p>\n        <div class=\"size-picker\" role=\"group\" aria-label=\"Tama\u00f1o del marco\">\n          <button class=\"size-button\" type=\"button\" aria-pressed=\"true\">S<\/button>\n          <button class=\"size-button\" type=\"button\" aria-pressed=\"false\">M<\/button>\n          <button class=\"size-button\" type=\"button\" aria-pressed=\"false\">L<\/button>\n          <button class=\"size-button\" type=\"button\" aria-pressed=\"false\">XL<\/button>\n        <\/div>\n        <a class=\"size-guide\" href=\"https:\/\/aurumbikes.com\/es\/guia-de-tallas\/\">Gu\u00eda de tallas<\/a>\n      <dl class=\"geometry-table\" aria-label=\"Geometr\u00eda del marco NOVA por tama\u00f1o\" data-reveal=\"\">\n        <div class=\"geometry-item\"><dt>Stack<\/dt><dd data-values=\"550 mm,570 mm,590 mm,610 mm\">550 mm<\/dd><\/div>\n        <div class=\"geometry-item\"><dt>Reach<\/dt><dd data-values=\"378 mm,384 mm,391 mm,398 mm\">378 mm<\/dd><\/div>\n        <div class=\"geometry-item\"><dt>Tubo superior<\/dt><dd data-values=\"536 mm,547 mm,560 mm,573 mm\">536 mm<\/dd><\/div>\n        <div class=\"geometry-item\"><dt>Distancia entre ejes<\/dt><dd data-values=\"1007 mm,1015 mm,1024 mm,1038 mm\">1007 mm<\/dd><\/div>\n        <div class=\"geometry-item\"><dt>\u00c1ngulo de direcci\u00f3n<\/dt><dd data-values=\"71\u00b0,71.6\u00b0,72\u00b0,72\u00b0\">71\u00b0<\/dd><\/div>\n        <div class=\"geometry-item\"><dt>Altura de entrepierna<\/dt><dd data-values=\"743 mm,792 mm,805 mm,831 mm\">743 mm<\/dd><\/div>\n      <\/dl>\n      <p class=\"geometry-foot\">Anclajes ocultos para guardabarros y bolsa en el tubo superior. Pedalier BB386EVO, UDH y tija de 27,2 mm.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"tech\" aria-labelledby=\"tech-title\"><div class=\"tech-inner\"><h2 id=\"tech-title\">UNA GEOMETR\u00cdA DEPORTIVA HECHA PARA M\u00c1S TIEMPO EN LA BICI.<\/h2><div class=\"tech-columns\"><div><h3>VERSATILIDAD ALL-ROAD<\/h3><ul><li>Paso de rueda para neum\u00e1ticos de hasta 38 mm<\/li><li>Compatible con transmisiones de carretera 1x y 2x<\/li><li>Anclajes para hasta tres portabidones<\/li><li>Anclajes para bolsa en el tubo superior<\/li><li>Anclajes ocultos para guardabarros<\/li><\/ul><\/div><div><h3>CUADRO Y AJUSTE<\/h3><ul><li>Cableado totalmente interno<\/li><li>Direcci\u00f3n de 1,5 pulgadas<\/li><li>Interfaz est\u00e1ndar de potencia de 28,6 mm<\/li><li>Pedalier BB386EVO<\/li><li>Patilla de cambio UDH<\/li><li>Tija redonda de 27,2 mm<\/li><li>Cuatro tallas de cuadro: S, M, L y XL<\/li><\/ul><\/div><div><h3>SISTEMA MAHLE X20<\/h3><ul><li>Bater\u00eda integrada de 350 Wh<\/li><li>Motor en el buje trasero<\/li><li>Asistencia con sensor de par<\/li><li>Unidad de control integrada en el tubo superior<\/li><li>Puerto de carga bajo el pedalier<\/li><li>Peso aproximado del sistema completo: 3,2 kg<\/li><\/ul><\/div><\/div><\/div><\/section>\n\n    <section class=\"viewer\" id=\"viewer\" aria-labelledby=\"viewer-title\">\n      <div class=\"viewer-head\">\n        <h2 id=\"viewer-title\">Explora NOVA en 3D.<\/h2>\n        <p>Gira la bicicleta, comprueba los detalles, mira el cuadro desde todos los lados.<\/p>\n      <\/div>\n      <div class=\"viewer-stage\" id=\"viewer-stage\">\n        <img loading=\"lazy\" class=\"viewer-poster\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/nova-poster-glb.jpg\" alt=\"Bicicleta el\u00e9ctrica NOVA, lista para explorar en 3D\" width=\"1920\" height=\"951\" loading=\"lazy\" decoding=\"async\">\n      <\/div>\n      <p class=\"viewer-hint\" id=\"viewer-hint\" hidden=\"\">Arrastra para explorar<\/p>\n    <\/section>\n\n    <div class=\"marquee\">\n      <p class=\"visually-hidden\">More ride. Same you.<\/p>\n      <p class=\"marquee-track\" aria-hidden=\"true\"><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><span>More ride.<\/span><span class=\"sep\">\/<\/span><span>Same you.<\/span><\/p>\n    <\/div>\n\n    <section class=\"buy\" id=\"buy\" aria-label=\"Precio y distribuidores\">\n      <figure class=\"buy-photo\" aria-hidden=\"true\">\n        <img loading=\"lazy\" src=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/R5M20402-Editar.webp\" alt=\"\" width=\"2400\" height=\"1601\" loading=\"lazy\" decoding=\"async\">\n      <\/figure>\n      <div class=\"buy-shade\" aria-hidden=\"true\"><\/div>\n      <div class=\"buy-inner\">\n        <p class=\"buy-price\">NOVA desde 5.999\u20ac <span>excluido IVA (NOVA 105, PVP)<\/span><\/p>\n        <div class=\"buy-copy\">\n          <p>Gama completa de 5.999 \u20ac a 8.799 \u20ac, IVA no incluido, seg\u00fan el grupo de transmisi\u00f3n.<\/p>\n          <p class=\"buy-note\">Los componentes y la configuraci\u00f3n afectan el precio final.<\/p>\n          <p class=\"buy-note\">Los precios no incluyen el manillar ni la potencia, que se venden por separado.<\/p>\n          <div class=\"buy-actions\">\n            <a class=\"outline-button\" href=\"https:\/\/aurumbikes.com\/es\/nova\/configurar\/?load-preset=148872\">Configurar NOVA<\/a>\n          <\/div>\n          \n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"faq\" id=\"faq\" aria-labelledby=\"faq-title\">\n      <h2 class=\"faq-title\" id=\"faq-title\">Preguntas frecuentes<\/h2>\n      <div class=\"faq-list\" data-reveal=\"\">\n        <details class=\"faq-item\">\n          <summary>\u00bfQu\u00e9 tipo de bicicleta es NOVA?<\/summary>\n          <p>Una bicicleta el\u00e9ctrica all-road de altas prestaciones que combina velocidad, ligereza, estabilidad y versatilidad.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfC\u00f3mo se siente la asistencia?<\/summary>\n          <p>Natural y progresiva. El sensor de par adapta la respuesta del motor al esfuerzo que haces en cada pedalada.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfPuedo pedalear sin asistencia?<\/summary>\n          <p>S\u00ed. Puedes apagar el sistema y pedalear con normalidad. Por encima de 25 km\/h, el motor se desacopla autom\u00e1ticamente.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfQu\u00e9 autonom\u00eda tiene NOVA?<\/summary>\n          <p>Depende del terreno, el desnivel, el peso del ciclista, las condiciones y el nivel de asistencia. En las pruebas de AURUM, NOVA ha completado rutas de hasta 140 km y 2.300 m de desnivel, principalmente con el nivel de asistencia m\u00e1s bajo.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfCu\u00e1l es el paso de rueda m\u00e1ximo?<\/summary>\n          <p>NOVA admite neum\u00e1ticos de hasta 38 mm tanto en la configuraci\u00f3n Road como en la All-Road.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfEs compatible con transmisiones 1x y 2x?<\/summary>\n          <p>S\u00ed. La plataforma admite ambas configuraciones, seg\u00fan el montaje elegido.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfEs f\u00e1cil desmontar la rueda trasera?<\/summary>\n          <p>S\u00ed. El sistema MAHLE realiza la conexi\u00f3n el\u00e9ctrica autom\u00e1ticamente al volver a montar la rueda, sin conectar cables a mano.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfSe puede ampliar la autonom\u00eda de NOVA?<\/summary>\n          <p>S\u00ed. NOVA es compatible con la bater\u00eda externa MAHLE eX1, que se vende por separado. Sus 171 Wh elevan la capacidad total de la bater\u00eda de 350 Wh a 521 Wh y pueden a\u00f1adir hasta 60 km de autonom\u00eda, seg\u00fan la ruta y el nivel de asistencia. Gracias a los tres anclajes para portabidones de NOVA, puedes instalar la bater\u00eda y mantener dos posiciones libres para hidratarte.<\/p>\n        <\/details>\n        <details class=\"faq-item\">\n          <summary>\u00bfQu\u00e9 modos de asistencia ofrece NOVA?<\/summary>\n          <p>NOVA tiene tres niveles de asistencia que puedes personalizar en la aplicaci\u00f3n My SmartBike, ajustando la potencia, la aceleraci\u00f3n y la respuesta. El modo Smart Assist tambi\u00e9n adapta autom\u00e1ticamente la asistencia a la pendiente, el peso del ciclista y el esfuerzo necesario.<\/p>\n        <\/details>\n      <\/div>\n    <\/section>\n\n    <section class=\"closing\" id=\"warranty\" aria-labelledby=\"closing-title\">\n      <h2 id=\"closing-title\" data-reveal=\"\">Respaldado por AURUM,<br><span>antes y despu\u00e9s de la venta.<\/span><\/h2>\n      <ol class=\"closing-list\">\n        <li data-reveal=\"\">\n          <h3>Garant\u00eda legal de 3 a\u00f1os.<\/h3>\n          <p>NOVA dispone de tres a\u00f1os de garant\u00eda legal contra defectos de fabricaci\u00f3n, materiales o falta de conformidad.<\/p>\n        <\/li>\n        <li data-reveal=\"\">\n          <h3>Garant\u00eda limitada de por vida en cuadro y horquilla.<\/h3>\n          <p>El propietario original puede obtenerla gratuitamente registrando la bicicleta en aurumbikes.com en los 30 d\u00edas posteriores a su recepci\u00f3n. No es transferible.<\/p>\n        <\/li>\n        <li data-reveal=\"\">\n          <h3>Montada a tu medida.<\/h3>\n          <p>El manillar y la potencia se venden por separado. Compatible con el conjunto monobloque AURUM para un montaje m\u00e1s limpio e integrado.<\/p>\n        <\/li>\n      <\/ol>\n      <div class=\"closing-actions\">\n        <a class=\"outline-button\" href=\"https:\/\/aurumbikes.com\/es\/garantia\/\">M\u00e1s detalles<\/a>\n        <a class=\"outline-button\" href=\"https:\/\/aurumbikes.com\/es\/tiendas\/\">Encuentra un distribuidor<\/a>\n      <\/div>\n    <\/section>\n  <\/div>\n<\/div>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/lenis@1.3.26\/dist\/lenis.min.js\"><\/script>\n<template id=\"nv-viewer-doc\">\n<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>NOVA 3D<\/title>\n<style>\nhtml, body { margin: 0; height: 100%; overflow: hidden; background: #171717; }\n#stage { position: fixed; inset: 0; background: #171717; }\n#stage canvas { display: block; width: 100%; height: 100%; cursor: grab; }\n#stage canvas:active { cursor: grabbing; }\n#status {\n  position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%);\n  margin: 0; color: #878787; font: 600 14px\/1 'Poppins', sans-serif;\n  letter-spacing: .12em; text-transform: uppercase; white-space: nowrap;\n}\n#status.is-hidden { display: none; }\n<\/style>\n<\/head>\n<body>\n<div id=\"stage\"><\/div>\n<p id=\"status\">Loading<\/p>\n\n<script type=\"importmap\">\n{\n  \"imports\": {\n    \"three\": \"https:\/\/unpkg.com\/three@0.160.0\/build\/three.module.js\",\n    \"three\/addons\/\": \"https:\/\/unpkg.com\/three@0.160.0\/examples\/jsm\/\"\n  }\n}\n<\/script>\n<script type=\"module\">\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three\/addons\/loaders\/GLTFLoader.js';\nimport { DRACOLoader } from 'three\/addons\/loaders\/DRACOLoader.js';\nimport { OrbitControls } from 'three\/addons\/controls\/OrbitControls.js';\nimport { RoomEnvironment } from 'three\/addons\/environments\/RoomEnvironment.js';\n\nconst MODEL_URL = 'https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/NOVA.glb';\nconst BG = '#171717';\n\nconst stage = document.getElementById('stage');\nconst status = document.getElementById('status');\n\nconst renderer = new THREE.WebGLRenderer({ antialias: true });\nrenderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\nrenderer.setSize(stage.clientWidth, stage.clientHeight);\nrenderer.setClearColor(BG, 1);\nstage.appendChild(renderer.domElement);\n\nconst scene = new THREE.Scene();\nscene.background = new THREE.Color(BG);\nconst pmrem = new THREE.PMREMGenerator(renderer);\nscene.environment = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;\nconst key = new THREE.DirectionalLight(0xffffff, 0.6);\nkey.position.set(2, 3, 2);\nscene.add(key);\n\nconst camera = new THREE.PerspectiveCamera(30, stage.clientWidth \/ stage.clientHeight, 0.01, 100);\n\n\/\/ Solo girar: arrastre con el bot\u00f3n izquierdo o un dedo. Sin zoom, sin desplazamiento.\nconst controls = new OrbitControls(camera, renderer.domElement);\ncontrols.enablePan = false;\ncontrols.enableZoom = false;\ncontrols.enableDamping = true;\ncontrols.dampingFactor = 0.08;\ncontrols.rotateSpeed = 0.8;\n\/\/ Giro lento al entrar; se para en cuanto el visitante interact\u00faa, y no gira si el sistema pide menos movimiento.\nconst reduceMotion = matchMedia('(prefers-reduced-motion: reduce)');\ncontrols.autoRotate = !reduceMotion.matches;\ncontrols.autoRotateSpeed = 1.2;\ncontrols.addEventListener('start', () => { controls.autoRotate = false; });\ncontrols.minPolarAngle = Math.PI * 0.12;\ncontrols.maxPolarAngle = Math.PI * 0.88;\ncontrols.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: null, RIGHT: null };\ncontrols.touches = { ONE: THREE.TOUCH.ROTATE, TWO: null };\n\/\/ Con un dedo gira la bici; el desplazamiento vertical de la p\u00e1gina sigue funcionando.\nrenderer.domElement.style.touchAction = 'pan-y';\n\nrenderer.domElement.addEventListener('contextmenu', (e) => e.preventDefault());\n\n\/\/ La rueda no hace zoom: se reenv\u00eda al desplazamiento de la p\u00e1gina que aloja el visor.\nrenderer.domElement.addEventListener('wheel', (e) => {\n  e.preventDefault();\n  const k = e.deltaMode === 1 ? 16 : (e.deltaMode === 2 ? window.innerHeight : 1);\n  try {\n    if (window.parent && window.parent !== window) window.parent.scrollBy(0, e.deltaY * k);\n  } catch (err) { \/* p\u00e1gina de otro origen: no hay nada que desplazar *\/ }\n}, { passive: false });\n\nlet modelRadius = 0;\nlet modelLength = 0;\n\nfunction requiredDistance() {\n  const vf = THREE.MathUtils.degToRad(camera.fov) \/ 2;\n  const hf = Math.atan(Math.tan(vf) * camera.aspect);\n  return Math.max(modelRadius \/ Math.sin(vf), (modelLength \/ 2) \/ Math.tan(hf)) * 0.8;\n}\n\nfunction frameModel(object) {\n  const box = new THREE.Box3().setFromObject(object);\n  const center = box.getCenter(new THREE.Vector3());\n  const size = box.getSize(new THREE.Vector3());\n  object.position.sub(center);\n  modelRadius = size.length() \/ 2;\n  modelLength = size.x;\n\n  const d = requiredDistance();\n  camera.position.set(d * 0.62, d * 0.22, d * 0.78);\n  camera.near = d \/ 100;\n  camera.far = d * 10;\n  camera.updateProjectionMatrix();\n  controls.target.set(0, 0, 0);\n  controls.update();\n}\n\nfunction resize() {\n  const w = stage.clientWidth;\n  const h = stage.clientHeight;\n  renderer.setSize(w, h);\n  camera.aspect = w \/ h;\n  camera.updateProjectionMatrix();\n  if (modelRadius > 0) {\n    const need = requiredDistance();\n    const offset = camera.position.clone().sub(controls.target);\n    if (offset.length() < need) camera.position.copy(controls.target).add(offset.setLength(need));\n  }\n}\nwindow.addEventListener('resize', resize);\n\n\/\/ El modelo va comprimido con Draco: sin su decodificador, GLTFLoader no puede leerlo.\nconst dracoLoader = new DRACOLoader();\ndracoLoader.setDecoderPath('https:\/\/unpkg.com\/three@0.160.0\/examples\/jsm\/libs\/draco\/gltf\/');\nconst loader = new GLTFLoader();\nloader.setDRACOLoader(dracoLoader);\nloader.load(\n  MODEL_URL,\n  (gltf) => {\n    scene.add(gltf.scene);\n    frameModel(gltf.scene);\n    status.classList.add('is-hidden');\n    if (window.parent && window.parent !== window) window.parent.postMessage('nova3d-ready', '*');\n  },\n  (xhr) => {\n    if (xhr.total) status.textContent = 'Loading ' + Math.round((xhr.loaded \/ xhr.total) * 100) + '%';\n  },\n  () => {\n    status.textContent = 'No se pudo cargar el modelo';\n  }\n);\n\nlet viewerActive = false;\nconst renderViewer = () => {\n  controls.update();\n  renderer.render(scene, camera);\n};\nconst syncRenderLoop = () => {\n  renderer.setAnimationLoop(viewerActive && document.visibilityState !== 'hidden' ? renderViewer : null);\n};\nwindow.addEventListener('message', (event) => {\n  if (event.source !== window.parent) return;\n  if (event.data === 'nova3d-resume') viewerActive = true;\n  else if (event.data === 'nova3d-pause') viewerActive = false;\n  else return;\n  syncRenderLoop();\n});\ndocument.addEventListener('visibilitychange', syncRenderLoop);\nsyncRenderLoop();\n<\/script>\n<\/body>\n<\/html>\n\n<\/template>\n<script id=\"nv-hybrid-script\">\n(() => {\n  const root = document.querySelector('.nv-hybrid');\n  const cssPx = (name) => parseFloat(getComputedStyle(root).getPropertyValue(name)) || 0;\n  \/\/ The pinned nav and stages take their top from syncStick, which follows the theme header.\n  let TOP = cssPx('--nv-admin');\n  \/\/ Full-bleed width: the viewport without its scrollbar. CSS 100vw would include the scrollbar and overhang the page.\n  const fitFrame = () => {\n    root.style.setProperty('--nv-width', document.documentElement.clientWidth + 'px');\n  };\n  fitFrame();\n  window.addEventListener('load', fitFrame);\n  window.addEventListener('resize', fitFrame, { passive: true });\n  \/\/ The theme header slides away on scroll down and back in on scroll up. The product nav and the pinned stages sit under its lower edge, or at the top of the viewport below the admin bar while it is away.\n  const themeHeader = document.querySelector('.qodef-header-sticky');\n  \/\/ The theme changes the header a moment after a scroll event, so its edge is read again for a short time after each one.\n  let settleUntil = 0;\n  const syncStick = () => {\n    const edge = themeHeader ? themeHeader.getBoundingClientRect().bottom : 0;\n    TOP = Math.max(cssPx('--nv-admin'), Math.min(edge, cssPx('--nv-top') + cssPx('--nv-admin')));\n    root.style.setProperty('--nv-stick', TOP + 'px');\n    if (performance.now() < settleUntil) requestUpdate();\n  };\n  const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)');\n  const desktop = matchMedia('(min-width: 901px)');\n  const clamp = (value, min = 0, max = 1) => Math.min(max, Math.max(min, value));\n  const motionOn = () => desktop.matches && !reduceMotion.matches;\n  const sweepOn = () => !reduceMotion.matches;\n  const productNav = root.querySelector('.product-nav');\n  const productNavMore = root.querySelector('.product-nav-more');\n  const productNavLinks = [...productNav.querySelectorAll('a[href^=\"#\"]')];\n  const productNavTargets = productNavLinks.map((link) => root.querySelector(link.hash)).filter(Boolean);\n  const syncProductNavOverflow = () => {\n    const canScroll = productNav.scrollWidth > productNav.clientWidth + 2;\n    const atEnd = productNav.scrollLeft + productNav.clientWidth >= productNav.scrollWidth - 2;\n    productNavMore.hidden = desktop.matches || !canScroll || atEnd;\n  };\n  const syncCurrentSection = () => {\n    const threshold = TOP + productNav.offsetHeight + 8;\n    let current = null;\n    productNavTargets.forEach((section) => {\n      if (section.getBoundingClientRect().top <= threshold) current = section;\n    });\n    productNavLinks.forEach((link) => {\n      if (current && link.hash === `#${current.id}`) link.setAttribute('aria-current', 'location');\n      else link.removeAttribute('aria-current');\n    });\n  };\n  productNavMore.addEventListener('click', () => {\n    productNav.scrollBy({ left: Math.max(148, productNav.clientWidth * 0.72), behavior: reduceMotion.matches ? 'auto' : 'smooth' });\n  });\n  productNav.addEventListener('scroll', syncProductNavOverflow, { passive: true });\n  syncProductNavOverflow();\n\n  \/\/ Film: plays while on screen and while the visitor wants it. Pauses when it leaves the screen or the tab is hidden.\n  const video = root.querySelector('#hero-film');\n  const control = root.querySelector('.film-control');\n  if (video && control) {\n    const label = control.querySelector('.control-label');\n    let inView = true;\n    let wantsPlay = !reduceMotion.matches;\n    const syncControl = () => {\n      const playing = !video.paused && !video.ended;\n      control.dataset.state = playing ? 'playing' : 'paused';\n      label.textContent = playing ? 'Pausar v\u00eddeo' : 'Reproducir v\u00eddeo';\n    };\n    const syncFilm = () => {\n      const shouldPlay = wantsPlay && inView && document.visibilityState !== 'hidden';\n      if (shouldPlay && video.paused) video.play().catch(syncControl);\n      else if (!shouldPlay && !video.paused) video.pause();\n      syncControl();\n    };\n    video.addEventListener('play', syncControl);\n    video.addEventListener('pause', syncControl);\n    video.addEventListener('ended', syncControl);\n    document.addEventListener('visibilitychange', syncFilm);\n    reduceMotion.addEventListener('change', (event) => { wantsPlay = !event.matches; syncFilm(); });\n    control.addEventListener('click', () => { wantsPlay = video.paused; syncFilm(); });\n    if ('IntersectionObserver' in window) {\n      new IntersectionObserver(([entry]) => { inView = entry.isIntersecting; syncFilm(); }, { threshold: 0.1 }).observe(video);\n    }\n    syncFilm();\n  }\n\n  const wordItems = [...root.querySelectorAll('.word-item')];\n  const wordLinks = [...root.querySelectorAll('.word-link')];\n\n  \/\/ The last claim whose row has passed the middle of the viewport is active. Its nav button follows it.\n  const updateWords = () => {\n    const line = innerHeight * 0.5;\n    let active = 0;\n    wordItems.forEach((el, i) => { if (el.getBoundingClientRect().top < line) active = i; });\n    wordItems.forEach((el, i) => el.classList.toggle('is-active', i === active));\n    wordLinks.forEach((el, i) => {\n      el.classList.toggle('is-active', i === active);\n      el.setAttribute('aria-current', i === active ? 'true' : 'false');\n    });\n  };\n\n  \/\/ A nav button scrolls its claim to the reading line. The scroll then sets the active claim, as any scroll does.\n  wordLinks.forEach((link, i) => link.addEventListener('click', () => {\n    const y = Math.max(0, wordItems[i].getBoundingClientRect().top + scrollY - innerHeight * 0.5 + 40);\n    if (lenis) lenis.scrollTo(y, { duration: 1.2 });\n    else window.scrollTo({ top: y, behavior: reduceMotion.matches ? 'auto' : 'smooth' });\n  }));\n\n  \/\/ Share of an element's travel through the viewport, from 0 at its entry to 1 at its exit.\n  const along = (el, vh) => {\n    const rect = el.getBoundingClientRect();\n    return clamp((vh - rect.top) \/ (vh + rect.height));\n  };\n\n  \/\/ Performance DNA: a band of light moves through the words as the copy crosses the screen. The yellow bar tracks the same travel.\n  const BAND = 0.12;\n  const manifestoTrack = root.querySelector('.manifesto-track');\n  const manifestoStage = root.querySelector('.manifesto-stage');\n  const manifestoText = root.querySelector('.manifesto-text');\n  const splitWords = (el) => {\n    const parts = el.textContent.split(' ');\n    el.replaceChildren(...parts.flatMap((word, i) => {\n      const span = Object.assign(document.createElement('span'), { className: 'w', textContent: word });\n      return i < parts.length - 1 ? [span, ' '] : [span];\n    }));\n  };\n  splitWords(manifestoText);\n  const manifestoWords = [...manifestoText.querySelectorAll('.w')];\n  const updateManifesto = (vh) => {\n    \/\/ Colour runs through the first 85% of the pin, so the last word is lit before the stage leaves.\n    const pin = Math.max(1, manifestoTrack.offsetHeight - vh);\n    const progress = clamp(-manifestoTrack.getBoundingClientRect().top \/ (pin * 0.85));\n    manifestoStage.style.setProperty('--p', progress.toFixed(4));\n    const last = manifestoWords.length - 1;\n    manifestoWords.forEach((word, i) => {\n      const start = (i \/ last) * (1 - BAND);\n      const lit = clamp((progress - start) \/ BAND);\n      const v = Math.round(135 + 120 * lit);\n      word.style.color = `rgb(${v}, ${v}, ${v})`;\n    });\n  };\n  const resetManifesto = () => {\n    manifestoStage.style.removeProperty('--p');\n    manifestoWords.forEach((word) => { word.style.color = ''; });\n  };\n\n  const marquee = root.querySelector('.marquee');\n  const geometryPhoto = root.querySelector('.geometry-photo');\n  const x20Band = root.querySelector('.x20-band');\n  const closingList = root.querySelector('.closing-list');\n  \/\/ The strip moves only with its arrows or a swipe, never with the page's scroll. The counter and progress follow the frame in view.\n  const galleryStage = root.querySelector('.gallery-stage');\n  const galleryFrames = [...galleryStage.querySelectorAll('.gallery-frame')];\n  const galleryNow = root.querySelector('.gallery-now');\n  const galleryBar = root.querySelector('.gallery-bar');\n  const galleryPrev = root.querySelector('[data-gallery-step=\"-1\"]');\n  const galleryNext = root.querySelector('[data-gallery-step=\"1\"]');\n  const galleryEdge = () => galleryFrames[0].offsetLeft;\n  \/\/ The frame in view is the last one whose left edge has reached the content edge. At the end of the strip it is the last frame.\n  const galleryIndex = () => {\n    if (galleryStage.scrollLeft + galleryStage.clientWidth >= galleryStage.scrollWidth - 4) return galleryFrames.length - 1;\n    const reach = galleryStage.scrollLeft + galleryEdge() + 4;\n    return Math.max(0, galleryFrames.findLastIndex((frame) => frame.offsetLeft <= reach));\n  };\n  const syncGallery = () => {\n    const index = galleryIndex();\n    galleryNow.textContent = String(index + 1).padStart(2, '0');\n    galleryBar.style.width = `${((index + 1) \/ galleryFrames.length) * 100}%`;\n    galleryPrev.disabled = index === 0;\n    galleryNext.disabled = index === galleryFrames.length - 1;\n  };\n  const galleryStep = (direction) => {\n    const index = Math.min(galleryFrames.length - 1, Math.max(0, galleryIndex() + direction));\n    const reduce = matchMedia('(prefers-reduced-motion: reduce)').matches;\n    galleryStage.scrollTo({ left: galleryFrames[index].offsetLeft - galleryEdge(), behavior: reduce ? 'auto' : 'smooth' });\n  };\n  galleryPrev.addEventListener('click', () => galleryStep(-1));\n  galleryNext.addEventListener('click', () => galleryStep(1));\n  galleryStage.addEventListener('scroll', syncGallery, { passive: true });\n  syncGallery();\n  \/\/ The marquee eases toward its scroll position, so small changes in scroll speed do not show as jumps.\n  let marqueeTarget = 0;\n  let marqueeNow = null;\n  let marqueeGliding = false;\n  const glideMarquee = () => {\n    marqueeGliding = false;\n    if (!motionOn() || document.visibilityState === 'hidden') return;\n    marqueeNow = marqueeNow === null ? marqueeTarget : marqueeNow + (marqueeTarget - marqueeNow) * 0.12;\n    if (Math.abs(marqueeTarget - marqueeNow) < 0.0002) marqueeNow = marqueeTarget;\n    marquee.style.setProperty('--m', marqueeNow.toFixed(5));\n    if (marqueeNow !== marqueeTarget) {\n      marqueeGliding = true;\n      requestAnimationFrame(glideMarquee);\n    }\n  };\n\n  let pending = false;\n  let pendingFrame = 0;\n  const update = () => {\n    pending = false;\n    pendingFrame = 0;\n    if (document.visibilityState === 'hidden') return;\n    syncStick();\n    syncCurrentSection();\n    updateWords();\n    const vh = window.innerHeight;\n    if (sweepOn()) updateManifesto(vh);\n    if (!motionOn()) return;\n    marqueeTarget = along(marquee, vh);\n    if (!marqueeGliding) glideMarquee();\n    geometryPhoto.style.setProperty('--g', along(geometryPhoto, vh).toFixed(4));\n    x20Band.style.setProperty('--y', along(x20Band, vh).toFixed(4));\n    const closingRect = closingList.getBoundingClientRect();\n    closingList.style.setProperty('--draw', clamp((vh - closingRect.top) \/ (vh * 0.4)).toFixed(4));\n  };\n  const requestUpdate = () => {\n    if (pending || document.visibilityState === 'hidden') return;\n    pending = true;\n    pendingFrame = requestAnimationFrame(update);\n  };\n\n  \/\/ Counters: each figure counts up once, when it is mostly visible, and only with motion on.\n  const counters = [...root.querySelectorAll('.count')];\n  const countUp = (el) => {\n    const target = Number(el.dataset.count);\n    const decimals = Number(el.dataset.decimals);\n    const start = performance.now();\n    const duration = 1400;\n    el.textContent = (0).toFixed(decimals);\n    const step = (now) => {\n      const t = clamp((now - start) \/ duration);\n      const eased = 1 - Math.pow(1 - t, 4);\n      el.textContent = (target * eased).toFixed(decimals);\n      if (t < 1) requestAnimationFrame(step);\n      else el.textContent = target.toFixed(decimals);\n    };\n    requestAnimationFrame(step);\n  };\n  if ('IntersectionObserver' in window) {\n    const counterObserver = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (!entry.isIntersecting) return;\n        counterObserver.unobserve(entry.target);\n        if (motionOn()) countUp(entry.target);\n      });\n    }, { threshold: 0.6 });\n    counters.forEach((el) => {\n      counterObserver.observe(el);\n    });\n  }\n\n  const reveals = [...root.querySelectorAll('[data-reveal]')];\n  if ('IntersectionObserver' in window) {\n    const revealObserver = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (!entry.isIntersecting) return;\n        entry.target.classList.add('is-in');\n        revealObserver.unobserve(entry.target);\n      });\n    }, { threshold: 0.15 });\n    reveals.forEach((el) => revealObserver.observe(el));\n  } else {\n    reveals.forEach((el) => el.classList.add('is-in'));\n  }\n\n  \/\/ 3D viewer: the iframe is created once, when the stage comes within 300px of the screen, and the observer is then disconnected. Without IntersectionObserver it is created at once. The hint appears when the viewer reports ready.\n  const viewerStage = root.querySelector('#viewer-stage');\n  if (viewerStage) {\n    const viewerHint = root.querySelector('#viewer-hint');\n    let viewerFrame = null;\n    let viewerIsVisible = false;\n    const syncViewerActivity = () => {\n      if (!viewerFrame?.contentWindow) return;\n      const active = viewerIsVisible && document.visibilityState !== 'hidden';\n      viewerFrame.contentWindow.postMessage(active ? 'nova3d-resume' : 'nova3d-pause', location.origin);\n    };\n    if ('IntersectionObserver' in window) {\n      const activityObserver = new IntersectionObserver(([entry]) => {\n        viewerIsVisible = entry.isIntersecting;\n        syncViewerActivity();\n      }, { threshold: 0.01 });\n      activityObserver.observe(viewerStage);\n    }\n    document.addEventListener('visibilitychange', syncViewerActivity);\n    const loadViewer = () => {\n      viewerFrame = document.createElement('iframe');\n      viewerFrame.title = 'Interactive NOVA 3D viewer';\n      viewerFrame.allow = 'autoplay; xr';\n      viewerFrame.loading = 'eager';\n      viewerFrame.addEventListener('load', syncViewerActivity, { once: true });\n      viewerFrame.srcdoc = document.getElementById('nv-viewer-doc').innerHTML;\n      viewerStage.replaceChildren(viewerFrame);\n    };\n    if ('IntersectionObserver' in window) {\n      const viewerObserver = new IntersectionObserver(([entry]) => {\n        if (!entry.isIntersecting) return;\n        viewerObserver.disconnect();\n        loadViewer();\n      }, { rootMargin: '300px 0px' });\n      viewerObserver.observe(viewerStage);\n    } else {\n      loadViewer();\n    }\n    window.addEventListener('message', (event) => {\n      if (viewerFrame && event.source === viewerFrame.contentWindow && event.data === 'nova3d-ready') viewerHint.hidden = false;\n    });\n  }\n\n  \/\/ Configurator: the drivetrain buttons and the arrows show one bike at a time, with its sub-line.\n  const cfg = root.querySelector('#configurator');\n  if (cfg) {\n    const variantButtons = [...cfg.querySelectorAll('.cfg-variant')];\n    const bikes = [...cfg.querySelectorAll('.cfg-bike')];\n    const subs = [...cfg.querySelectorAll('.cfg-sub')];\n    let current = 0;\n    const showVariant = (index) => {\n      current = (index + bikes.length) % bikes.length;\n      variantButtons.forEach((button, i) => button.setAttribute('aria-pressed', String(i === current)));\n      bikes.forEach((bike, i) => { bike.hidden = i !== current; });\n      subs.forEach((sub, i) => { sub.hidden = i !== current; });\n    };\n    variantButtons.forEach((button, i) => button.addEventListener('click', () => showVariant(i)));\n    cfg.querySelectorAll('.cfg-step').forEach((button) => {\n      button.addEventListener('click', () => showVariant(current + Number(button.dataset.step)));\n    });\n  }\n\n  \/\/ Geometry: the size buttons set the values of the geometry list. S is the default, set in the HTML.\n  const sizeButtons = [...root.querySelectorAll('.size-button')];\n  const sizeValues = [...root.querySelectorAll('[data-values]')];\n  sizeButtons.forEach((button, index) => {\n    button.addEventListener('click', () => {\n      sizeButtons.forEach((other, i) => other.setAttribute('aria-pressed', String(i === index)));\n      sizeValues.forEach((cell) => { cell.textContent = cell.dataset.values.split(',')[index]; });\n    });\n  });\n\n  \/\/ Smooth scroll on desktop with motion: Lenis moves the native scroll position, so scroll events and the sticky stages keep working.\n  let lenis = null;\n  \/\/ Smooth same-page anchors while preserving history and the user's motion preference.\n  root.addEventListener('click', (event) => {\n    const link = event.target.closest('a[href^=\"#\"]');\n    if (!link || !root.contains(link) || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || link.hasAttribute('download') || (link.target && link.target !== '_self')) return;\n    const hash = link.getAttribute('href');\n    if (!hash || hash === '#') return;\n    const target = document.getElementById(hash.slice(1));\n    if (!target || !root.contains(target)) return;\n    event.preventDefault();\n    if (location.hash !== hash) history.pushState(null, '', hash);\n    const offset = parseFloat(getComputedStyle(target).scrollMarginTop) || 0;\n    const destination = Math.max(0, target.getBoundingClientRect().top + window.scrollY - offset);\n    if (lenis && !reduceMotion.matches) lenis.scrollTo(destination, { duration: 1.05 });\n    else window.scrollTo({ top: destination, behavior: reduceMotion.matches ? 'instant' : 'smooth' });\n    if (!target.hasAttribute('tabindex')) target.setAttribute('tabindex', '-1');\n    target.focus({ preventScroll: true });\n  });\n\n  const startLenis = () => {\n    if (lenis || !window.Lenis || !motionOn() || document.visibilityState === 'hidden') return;\n    lenis = new window.Lenis({ autoRaf: true });\n  };\n  const stopLenis = () => {\n    if (!lenis) return;\n    lenis.destroy();\n    lenis = null;\n  };\n  const syncMotion = () => {\n    const on = motionOn();\n    root.classList.toggle('motion', on);\n    root.classList.toggle('sweep', sweepOn());\n    if (on) startLenis();\n    else stopLenis();\n    if (!sweepOn()) resetManifesto();\n    requestUpdate();\n  };\n  desktop.addEventListener('change', syncMotion);\n  reduceMotion.addEventListener('change', syncMotion);\n  document.addEventListener('visibilitychange', () => {\n    if (document.visibilityState === 'hidden') {\n      if (pendingFrame) cancelAnimationFrame(pendingFrame);\n      pending = false;\n      pendingFrame = 0;\n      stopLenis();\n      return;\n    }\n    if (motionOn()) startLenis();\n    requestUpdate();\n  });\n  window.addEventListener('scroll', () => { settleUntil = performance.now() + 800; requestUpdate(); }, { passive: true });\n  window.addEventListener('resize', () => {\n    syncProductNavOverflow();\n    syncGallery();\n    requestUpdate();\n  }, { passive: true });\n  syncMotion();\n})();\n<\/script>\n\n<script data-nova-preset-sync>(function(){var r=document.querySelector('.nv-hybrid');if(!r)return;var road='https:\/\/aurumbikes.com\/es\/nova\/configurar\/?load-preset=148872',all='https:\/\/aurumbikes.com\/es\/nova\/configurar\/?load-preset=148878';function sync(){var a=r.querySelector('.cfg-variant[aria-pressed=\"true\"]');var t=(a&&\/ALL-ROAD\/i.test(a.textContent))?all:road;r.querySelectorAll('.cfg-configure,.buy-actions a').forEach(function(x){x.href=t;});}r.querySelectorAll('.cfg-variant,.cfg-step').forEach(function(b){b.addEventListener('click',function(){setTimeout(sync,0);});});sync();})();<\/script>","protected":false},"excerpt":{"rendered":"<p>Saltar al contenido NOVA, la bicicleta el\u00e9ctrica todoterreno de AURUM MORE RIDE. SAME YOU. Explorar NOVA Encuentra un distribuidor Pausar v\u00eddeo El concepto NOVAMotor y asistenciaBater\u00eda y autonom\u00edaGeometr\u00eda y tallasExplora en 3DPrecio y configuraci\u00f3n ROAD ALL-ROAD NOVA Configuraci\u00f3n Road Configuraci\u00f3n All-Road Desde 5.999\u20ac (impuestos excluidos) Configurar MORE RIDE. SAME YOU. NOVA es la primera bicicleta [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>NOVA: bicicleta el\u00e9ctrica all-road | AURUM<\/title>\n<meta name=\"description\" content=\"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/aurumbikes.com\/es\/nova\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NOVA: bicicleta el\u00e9ctrica all-road | AURUM\" \/>\n<meta property=\"og:description\" content=\"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aurumbikes.com\/es\/nova\/\" \/>\n<meta property=\"og:site_name\" content=\"Aurum Bikes\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AURUMbikes\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-03T10:20:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/\",\"url\":\"https:\/\/aurumbikes.com\/es\/nova\/\",\"name\":\"NOVA: bicicleta el\u00e9ctrica all-road | AURUM\",\"isPartOf\":{\"@id\":\"https:\/\/aurumbikes.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\",\"datePublished\":\"2026-11-03T07:59:00+00:00\",\"dateModified\":\"2026-11-03T10:20:21+00:00\",\"description\":\"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.\",\"breadcrumb\":{\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/aurumbikes.com\/es\/nova\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage\",\"url\":\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\",\"contentUrl\":\"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/aurumbikes.com\/es\/nova\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/aurumbikes.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NOVA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/aurumbikes.com\/es\/#website\",\"url\":\"https:\/\/aurumbikes.com\/es\/\",\"name\":\"Aurum Bikes\",\"description\":\"Born From Experience\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/aurumbikes.com\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NOVA: bicicleta el\u00e9ctrica all-road | AURUM","description":"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/aurumbikes.com\/es\/nova\/","og_locale":"es_ES","og_type":"article","og_title":"NOVA: bicicleta el\u00e9ctrica all-road | AURUM","og_description":"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.","og_url":"https:\/\/aurumbikes.com\/es\/nova\/","og_site_name":"Aurum Bikes","article_publisher":"https:\/\/www.facebook.com\/AURUMbikes","article_modified_time":"2026-11-03T10:20:21+00:00","og_image":[{"url":"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/aurumbikes.com\/es\/nova\/","url":"https:\/\/aurumbikes.com\/es\/nova\/","name":"NOVA: bicicleta el\u00e9ctrica all-road | AURUM","isPartOf":{"@id":"https:\/\/aurumbikes.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage"},"image":{"@id":"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage"},"thumbnailUrl":"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp","datePublished":"2026-11-03T07:59:00+00:00","dateModified":"2026-11-03T10:20:21+00:00","description":"Descubre NOVA, bicicleta el\u00e9ctrica all-road de AURUM con motor MAHLE X20, bater\u00eda de 350 Wh y paso para cubiertas de hasta 38 mm. Explora sus montajes.","breadcrumb":{"@id":"https:\/\/aurumbikes.com\/es\/nova\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/aurumbikes.com\/es\/nova\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/aurumbikes.com\/es\/nova\/#primaryimage","url":"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp","contentUrl":"https:\/\/aurumbikes.com\/wp-content\/uploads\/2026\/10\/novadurace2.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/aurumbikes.com\/es\/nova\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/aurumbikes.com\/"},{"@type":"ListItem","position":2,"name":"NOVA"}]},{"@type":"WebSite","@id":"https:\/\/aurumbikes.com\/es\/#website","url":"https:\/\/aurumbikes.com\/es\/","name":"Aurum Bikes","description":"Born From Experience","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aurumbikes.com\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/pages\/148611"}],"collection":[{"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/comments?post=148611"}],"version-history":[{"count":16,"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/pages\/148611\/revisions"}],"predecessor-version":[{"id":149038,"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/pages\/148611\/revisions\/149038"}],"wp:attachment":[{"href":"https:\/\/aurumbikes.com\/es\/wp-json\/wp\/v2\/media?parent=148611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}