@charset "utf-8";

/*
Theme Name: Revolta - Performance, Wrap & EV Specialist HTML5 Template
Author: Metropolitanthemes
Version: 1.0.0

%%%%%%% Table of CSS %%%%%%%

1. General
   1.1 Typography
   1.2 Spacing & Grounds
   1.3 Section Titles
   1.4 Buttons & Links
   1.5 Forms
   1.6 Shared Pieces
   1.7 Spray Pass & Wrap Swatch
2. Preloader
3. Header
   3.1 Top Bar
   3.2 Main Bar
   3.3 Main Menu
   3.4 Home Mega Menu
   3.5 Sticky Header
4. Offcanvas Menu
5. Custom Select
6. Language Picker
7. Components
   7.1 Hero Slider
   7.2 Features
   7.3 Video Band
   7.4 Post Rows
   7.5 Care Plan Columns
   7.6 Instant Quote Strip
   7.7 Overlap Panel
   7.8 Cards
   7.9 Tabs, Chips & Choice Cards
   7.10 Accordion
   7.11 Pagination & Sidebar
8. Home One
   8.1 Service Words
   8.2 Mosaic
   8.3 Wrap Moment
   8.4 Builds Rail
9. Home Two
   9.1 Hero Two
   9.2 Cut-Out Split
   9.3 Ghost Card
   9.4 Dyno Chart & Stage Cards
   9.5 Parts Row
   9.6 Three Promises
   9.7 Ghost Split
   9.8 Countdown
10. Home Three
   10.1 Light Hero
   10.2 Headlights
   10.3 Card Rail
   10.4 Label Band
   10.5 Battery Ring
   10.6 Check Start & Offers
11. Inner Pages
   11.1 Build Details
   11.2 About
   11.3 Crew
   11.4 FAQ & Contact
12. Studio Pages
   12.1 Services & Details
   12.2 Quote Form
   12.3 Film Library
   12.4 Tuning Page
   12.5 Battery Estimator
   12.6 Booking Wizard
   12.7 Detail Builder & Plans
13. Shop
   13.1 Product Cards
   13.2 Shop Grid
   13.3 Product Page
   13.4 Cart & Checkout
14. Journal, Account & Utility Pages
   14.1 Journal
   14.2 My Garage
   14.3 Sign In & Register
   14.4 Coming Soon & 404
15. Subheader
16. Footer
*/

/*======================
1. General
========================*/
:root {
  /* brand (the same in both themes) */
  --rv-white: #FFFFFF;
  --rv-orange: #FF4D24;
  --rv-orange-rgb: 255, 77, 36;
  --rv-orange-deep: #D93A16;
  --rv-orange-ink: #C2381A;
  --rv-night: #0A0A0A;
  --rv-night-rgb: 10, 10, 10;
  --rv-coal: #161616;
  --rv-band: #1E1E1E;
  --rv-panel: #2A2A2A;
  --rv-steel: #3B3B3B;
  --rv-paper: #FFFFFF;
  --rv-red: #D0342C;
  /* semantic: the white studio is the default; [data-theme="dark"] turns the white grounds to coal */
  --rv-bg: #FFFFFF;
  --rv-bg-rgb: 255, 255, 255;
  --rv-surface: #FFFFFF;
  --rv-grey: #F3F3F3;
  --rv-grey-2: #F7F7F7;
  --rv-heading: #0A0A0A;
  --rv-heading-rgb: 10, 10, 10;
  --rv-text: #636363;
  --rv-muted: #6E6E6E;
  --rv-line: #E3E3E3;
  --rv-line-2: #CFCFCF;
  --rv-field: #F3F3F3;
  --rv-btn-bg: #EDEDED;
  --rv-btn-ink: #0A0A0A;
  --rv-ghost: rgba(10, 10, 10, 0.13);
  --rv-accent-text: #C2381A;
  --rv-ok: #1F8A4C;
  --rv-ok-text: #1C7A44;
  --rv-shadow: 0 18px 44px rgba(10, 10, 10, 0.1);
  --rv-shadow-lg: 0 30px 70px rgba(10, 10, 10, 0.18);
  --rv-ease: cubic-bezier(0.23, 1, 0.32, 1);
  /* type */
  --rv-ff-display: 'Oxanium', 'Arial Narrow', Arial, sans-serif;
  --rv-ff-body: 'Sarabun', 'Helvetica Neue', Arial, sans-serif;
  --rv-fs-h1: clamp(46px, 6.4vw, 100px);
  --rv-fs-h2: clamp(30px, 3.15vw, 46px);
  --rv-fs-h3: clamp(22px, 2vw, 30px);
  --rv-fs-h4: 21px;
  --rv-fs-h5: 18px;
  --rv-fs-h6: 15px;
  /* the card accent: the orange, until a wrap swatch takes over on hover */
  --rv-acc: var(--rv-orange);
  /* WebGL colours (per section below) */
  --gl-1: #FFFFFF;
  --gl-2: #FF4D24;
  --gl-3: #9A9A9A;
  --gl-alpha: 0.5;
}
[data-theme="dark"] {
  --rv-bg: #121212;
  --rv-bg-rgb: 18, 18, 18;
  --rv-surface: #1A1A1A;
  --rv-grey: #1A1A1A;
  --rv-grey-2: #202020;
  --rv-heading: #FFFFFF;
  --rv-heading-rgb: 255, 255, 255;
  --rv-text: #A3A3A3;
  --rv-muted: #949494;
  --rv-line: rgba(255, 255, 255, 0.1);
  --rv-line-2: rgba(255, 255, 255, 0.2);
  --rv-field: #222222;
  --rv-btn-bg: #3B3B3B;
  --rv-btn-ink: #FFFFFF;
  --rv-ghost: rgba(255, 255, 255, 0.14);
  --rv-accent-text: #FF5A33;
  --rv-ok: #49C17A;
  --rv-ok-text: #5BCB88;
  --rv-shadow: 0 18px 44px rgba(0, 0, 0, 0.4);
  --rv-shadow-lg: 0 30px 70px rgba(0, 0, 0, 0.55);
  --gl-1: #121212;
  --gl-alpha: 0.42;
}
/* bands that stay night in both themes: the heroes, the base's black sections, the footer */
.is-night,
.is-coal {
  --rv-heading: #FFFFFF;
  --rv-heading-rgb: 255, 255, 255;
  --rv-text: #9A9A9A;
  --rv-muted: #8E8E8E;
  --rv-line: rgba(255, 255, 255, 0.1);
  --rv-line-2: rgba(255, 255, 255, 0.2);
  --rv-surface: #1E1E1E;
  --rv-grey: #1E1E1E;
  --rv-grey-2: #232323;
  --rv-field: rgba(255, 255, 255, 0.06);
  --rv-btn-bg: #3B3B3B;
  --rv-btn-ink: #FFFFFF;
  --rv-ghost: rgba(255, 255, 255, 0.16);
  --rv-accent-text: #FF5A33;
  --rv-ok-text: #5BCB88;
  --gl-1: #0A0A0A;
  --gl-alpha: 0.42;
  background-color: var(--rv-night);
  color: var(--rv-text);
}
.is-coal {
  --rv-surface: #252525;
  --rv-grey: #252525;
  --gl-1: #161616;
  background-color: var(--rv-coal);
}
/* the base's orange band: black type on the orange */
.is-orange {
  --rv-heading: #0A0A0A;
  --rv-heading-rgb: 10, 10, 10;
  --rv-text: rgba(10, 10, 10, 0.82);
  --rv-muted: rgba(10, 10, 10, 0.72);
  --rv-line: rgba(10, 10, 10, 0.18);
  --rv-line-2: rgba(10, 10, 10, 0.3);
  --rv-field: rgba(255, 255, 255, 0.24);
  --rv-btn-bg: #0A0A0A;
  --rv-btn-ink: #FFFFFF;
  --rv-ghost: rgba(10, 10, 10, 0.16);
  --rv-accent-text: #0A0A0A;
  --rv-acc: #0A0A0A;
  background-color: var(--rv-orange);
  color: var(--rv-text);
}
/* a white panel laid on a photograph keeps the light studio's ink in both themes */
.rv-on-paper {
  --rv-heading: #0A0A0A;
  --rv-heading-rgb: 10, 10, 10;
  --rv-text: #636363;
  --rv-muted: #6E6E6E;
  --rv-line: #E3E3E3;
  --rv-line-2: #CFCFCF;
  --rv-surface: #FFFFFF;
  --rv-field: #F3F3F3;
  --rv-btn-bg: #EDEDED;
  --rv-btn-ink: #0A0A0A;
  --rv-accent-text: #C2381A;
  background-color: var(--rv-paper);
  color: var(--rv-text);
}
html {
  overflow-x: clip;
  scroll-behavior: smooth;
}
body {
  margin: 0;
  background: var(--rv-bg);
  color: var(--rv-text);
  font-family: var(--rv-ff-body);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color 0.4s ease;
}
body.oc-open {
  overflow: hidden;
}
img {
  max-width: 100%;
  height: auto;
}
a {
  color: inherit;
  text-decoration: none;
  transition: color 0.3s var(--rv-ease), background-color 0.3s var(--rv-ease);
}
a:hover {
  color: var(--rv-accent-text);
}
::selection {
  background: var(--rv-orange);
  color: var(--rv-night);
}
:focus-visible {
  outline: 2px solid var(--rv-orange);
  outline-offset: 3px;
}

/*----- 1.1 Typography -----*/
/* the base's voice: Oxanium semi-bold capitals for every heading, label and button; Sarabun for the text */
h1, h2, h3, h4, h5, h6 {
  margin: 0;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
h1 {
  font-size: var(--rv-fs-h1);
  line-height: 0.98;
  letter-spacing: -0.035em;
}
h2 {
  font-size: var(--rv-fs-h2);
  line-height: 1.07;
  letter-spacing: -0.005em;
}
h3 {
  font-size: var(--rv-fs-h3);
  line-height: 1.18;
}
h4 {
  font-size: var(--rv-fs-h4);
  line-height: 1.22;
  letter-spacing: 0.01em;
}
h5 {
  font-size: var(--rv-fs-h5);
  line-height: 1.3;
  letter-spacing: 0.02em;
}
h6 {
  font-size: var(--rv-fs-h6);
  line-height: 1.35;
  letter-spacing: 0.04em;
}
/* a heading at its outline level that looks like another level */
.rv-h1 {
  font-size: var(--rv-fs-h1);
  line-height: 0.98;
  letter-spacing: -0.035em;
}
.rv-h2 {
  font-size: var(--rv-fs-h2);
  line-height: 1.07;
  letter-spacing: -0.005em;
}
.rv-h3 {
  font-size: var(--rv-fs-h3);
  line-height: 1.18;
  letter-spacing: 0;
}
.rv-h4 {
  font-size: var(--rv-fs-h4);
  line-height: 1.22;
  letter-spacing: 0.01em;
}
.rv-h5 {
  font-size: var(--rv-fs-h5);
  line-height: 1.3;
  letter-spacing: 0.02em;
}
.rv-h6 {
  font-size: var(--rv-fs-h6);
  line-height: 1.35;
  letter-spacing: 0.04em;
}
/* an accent word in a title: the base's outline capitals */
h1 em,
h2 em,
h3 em,
.rv-h2 em {
  font-style: normal;
  color: transparent;
  -webkit-text-stroke: 1px var(--rv-heading);
}
/* set lines: a title's lines never re-wrap */
.line {
  display: block;
  white-space: nowrap;
}
p {
  margin: 0 0 18px;
}
p:last-child {
  margin-bottom: 0;
}
.rv-lead {
  font-size: 19px;
  line-height: 1.6;
  color: var(--rv-text);
}
.rv-caps {
  font-family: var(--rv-ff-display);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.rv-num {
  font-family: var(--rv-ff-display);
  font-variant-numeric: lining-nums tabular-nums;
}
.rv-reset {
  margin: 0;
  padding: 0;
  list-style: none;
}
/* the base's giant outline word: stroked capitals, no fill */
.rv-ghost {
  display: block;
  color: transparent;
  font-family: var(--rv-ff-display);
  font-weight: 600;
  line-height: 0.9;
  letter-spacing: -0.03em;
  text-transform: uppercase;
  -webkit-text-stroke: 1px var(--rv-ghost);
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}
/* the orange tick before a small capitals label */
.rv-tick {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.rv-tick::before {
  content: "";
  flex-shrink: 0;
  width: 2px;
  height: 0.95em;
  background: var(--rv-acc);
  transition: background-color 0.4s ease;
}
/* word masks for the R3 title rise: padded on every side so no letter is cut */
.rv-words .w {
  display: inline-block;
  overflow: hidden;
  padding: 0.14em 0.08em 0.2em;
  margin: -0.14em -0.08em -0.2em;
  vertical-align: top;
}
.rv-words .w > span {
  display: inline-block;
}

/*----- 1.2 Spacing & Grounds -----*/
.sec-pt-130 {
  padding-top: 130px;
}
.sec-pb-130 {
  padding-bottom: 130px;
}
.sec-pt-90 {
  padding-top: 90px;
}
.sec-pb-90 {
  padding-bottom: 90px;
}
.rv-bg-grey {
  background-color: var(--rv-grey);
}
/* a working panel: forms, summaries, wizards */
.rv-panel {
  padding: 40px 42px;
  background: var(--rv-surface);
  box-shadow: 0 0 0 1px var(--rv-line), var(--rv-shadow);
}
.rv-panel.is-night {
  background: var(--rv-band);
  box-shadow: none;
}
.rv-panel h2,
.rv-panel h3 {
  margin-bottom: 20px;
}
/* photo band: one style everywhere (cover photo under a night wash from the copy side, light copy) */
.rv-photo-band {
  position: relative;
  isolation: isolate;
  overflow: clip;
  background: var(--rv-night);
  --rv-heading: #FFFFFF;
  --rv-text: rgba(255, 255, 255, 0.82);
  --rv-muted: rgba(255, 255, 255, 0.7);
  --rv-accent-text: #FF5A33;
  --rv-line: rgba(255, 255, 255, 0.16);
  --rv-line-2: rgba(255, 255, 255, 0.28);
  --rv-btn-bg: #3B3B3B;
  --rv-btn-ink: #FFFFFF;
  --rv-ghost: rgba(255, 255, 255, 0.2);
  color: var(--rv-text);
}
.rv-photo-band > .band-img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.rv-photo-band::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(10, 10, 10, 0.92) 0%, rgba(10, 10, 10, 0.7) 46%, rgba(10, 10, 10, 0.18) 100%);
}
.rv-photo-band.is-centre::after {
  background: rgba(10, 10, 10, 0.62);
}

/*----- 1.3 Section Titles -----*/
/* the base's section head: a small capitals eyebrow, the big capitals title, a quiet lead */
.rv-title {
  margin-bottom: 60px;
}
.rv-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.rv-eyebrow::before {
  content: "";
  width: 2px;
  height: 12px;
  background: var(--rv-orange);
}
.rv-title h2,
.rv-title .rv-h2 {
  max-width: 900px;
}
.rv-title .rv-lead {
  max-width: 640px;
  margin: 22px 0 0;
}
.rv-title.text-center h2,
.rv-title.text-center .rv-h2,
.rv-title.text-center .rv-lead {
  margin-left: auto;
  margin-right: auto;
}
.rv-title.is-split {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}
.rv-title.is-split .rv-lead {
  max-width: 480px;
  margin: 0;
}

/*----- 1.4 Buttons & Links -----*/
/* the base's button: a grey face with a solid orange edge on its left, capitals and a plus or an arrow;
   house physics: the face turns orange and lifts, the arrow slides out and its twin slides in */
.rv-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  height: 56px;
  padding: 0 30px 0 32px;
  border: 0;
  border-radius: 0;
  background: var(--rv-btn-bg);
  color: var(--rv-btn-ink);
  font-family: var(--rv-ff-display);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: color 0.35s var(--rv-ease), box-shadow 0.35s var(--rv-ease), transform 0.35s var(--rv-ease);
}
.rv-btn::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  z-index: -1;
  width: 4px;
  background: var(--rv-orange);
  transition: width 0.45s var(--rv-ease);
}
.rv-btn i {
  position: relative;
  font-size: 12px;
  transition: transform 0.4s var(--rv-ease), opacity 0.3s ease;
}
.rv-btn i.fa-plus {
  order: -1;
  font-size: 11px;
}
.rv-btn i.fa-arrow-right::after {
  content: "\f061";
  position: absolute;
  left: -24px;
  top: 0;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.rv-btn:hover {
  color: var(--rv-night);
  box-shadow: 0 14px 30px rgba(var(--rv-orange-rgb), 0.28);
  transform: translateY(-2px);
}
.rv-btn:hover::before {
  width: 100%;
}
.rv-btn:hover i.fa-plus {
  transform: rotate(90deg);
}
.rv-btn:hover i.fa-arrow-right {
  transform: translateX(24px);
}
.rv-btn:hover i.fa-arrow-right::after {
  opacity: 1;
}
.rv-btn:hover i.fa-arrow-right::before {
  opacity: 0;
}
/* the orange face (one call to action a section) */
.rv-btn.is-orange {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.rv-btn.is-orange::before {
  background: var(--rv-night);
}
.rv-btn.is-orange:hover {
  color: #FFFFFF;
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.28);
}
.rv-btn.is-sm {
  height: 46px;
  padding: 0 20px 0 22px;
  font-size: 12.5px;
}
.rv-btn.is-block {
  width: 100%;
}
.rv-btn[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
  transform: none;
}
/* the square arrow button (sliders, the stage's call): a grey square, the orange edge on its left */
.rv-square-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 76px;
  height: 56px;
  border: 0;
  background: var(--rv-btn-bg);
  color: var(--rv-btn-ink);
  font-size: 16px;
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: color 0.35s var(--rv-ease);
}
.rv-square-btn::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  z-index: -1;
  width: 4px;
  background: var(--rv-orange);
  transition: width 0.45s var(--rv-ease);
}
.rv-square-btn:hover {
  color: var(--rv-night);
}
.rv-square-btn:hover::before {
  width: 100%;
}
.rv-square-btn.is-orange {
  background: rgba(255, 255, 255, 0.12);
  color: #FFFFFF;
}
.rv-square-btn.swiper-button-disabled {
  opacity: 0.4;
  cursor: default;
}
/* "view more": the base's plus before the capitals, the plus turns on hover */
.rv-more {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.rv-more i {
  color: var(--rv-acc);
  font-size: 11px;
  transition: transform 0.4s var(--rv-ease), color 0.4s ease;
}
.rv-more:hover {
  color: var(--rv-accent-text);
}
.rv-more:hover i {
  transform: rotate(90deg);
}
.rv-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.rv-link i {
  color: var(--rv-accent-text);
  transition: transform 0.35s var(--rv-ease);
}
.rv-link:hover i {
  transform: translateX(5px);
}
.rv-btns {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 22px;
}

/*----- 1.5 Forms -----*/
.rv-field {
  position: relative;
  margin-bottom: 22px;
}
/* the base's form: small capitals labels over a field with a single line under it */
.rv-field label,
.rv-flabel {
  display: block;
  margin-bottom: 8px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.rv-input {
  display: block;
  width: 100%;
  height: 56px;
  padding: 0 46px 0 18px;
  border: 0;
  border-bottom: 2px solid var(--rv-line-2);
  border-radius: 0;
  background: var(--rv-field);
  color: var(--rv-heading);
  font-family: var(--rv-ff-body);
  font-size: 16.5px;
  transition: border-color 0.3s ease, background-color 0.3s ease;
}
textarea.rv-input {
  height: 160px;
  padding-top: 16px;
  resize: vertical;
}
.rv-input::placeholder {
  color: var(--rv-muted);
}
.rv-input:focus {
  border-bottom-color: var(--rv-orange);
  outline: 0;
}
.rv-input.is-invalid {
  border-bottom-color: var(--rv-red);
}
.rv-input[type="date"] {
  color-scheme: light;
}
[data-theme="dark"] .rv-input[type="date"],
.is-night .rv-input[type="date"],
.is-coal .rv-input[type="date"] {
  color-scheme: dark;
}
.rv-field > i {
  position: absolute;
  right: 18px;
  top: 47px;
  color: var(--rv-accent-text);
  font-size: 13px;
  pointer-events: none;
}
.rv-field.is-area > i {
  top: 50px;
}
.form-status {
  min-height: 0;
  margin: 14px 0 0;
  font-size: 16px;
  color: var(--rv-muted);
}
.form-status.is-ok {
  color: var(--rv-ok-text);
}
.form-status.is-error {
  color: var(--rv-accent-text);
}
.rv-check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 16px;
  cursor: pointer;
}
.rv-check input {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 4px;
  accent-color: var(--rv-orange);
}
/* a native range in the base's colours */
.rv-range {
  width: 100%;
  height: 26px;
  margin: 6px 0 4px;
  background: transparent;
  accent-color: var(--rv-orange);
  cursor: pointer;
}
.range-ends {
  display: flex;
  justify-content: space-between;
  color: var(--rv-muted);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
}

/*----- 1.6 Shared Pieces -----*/
/* buttons start bare; each control draws its own face */
button {
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.rv-social {
  display: flex;
  align-items: center;
  gap: 8px;
}
.rv-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-size: 13px;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s var(--rv-ease);
}
.rv-social a:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
  transform: translateY(-3px);
}
.is-night .rv-social a {
  background: rgba(255, 255, 255, 0.08);
  color: #FFFFFF;
}
/* a round portrait beside a name */
.rv-face {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
}
/* overlapping faces + a count */
.rv-faces {
  display: inline-flex;
  align-items: center;
}
.rv-faces img {
  width: 46px;
  height: 46px;
  margin-left: -12px;
  border: 3px solid var(--rv-bg);
  border-radius: 50%;
  object-fit: cover;
}
.rv-faces img:first-child {
  margin-left: 0;
}
.rv-faces .more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  margin-left: -12px;
  border: 3px solid var(--rv-bg);
  border-radius: 50%;
  background: var(--rv-orange);
  color: var(--rv-night);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 700;
}
.rv-bg-grey .rv-faces img,
.rv-bg-grey .rv-faces .more {
  border-color: var(--rv-grey);
}
.is-night .rv-faces img,
.is-night .rv-faces .more,
.rv-photo-band .rv-faces img,
.rv-photo-band .rv-faces .more {
  border-color: var(--rv-night);
}
.is-coal .rv-faces img,
.is-coal .rv-faces .more {
  border-color: var(--rv-coal);
}
/* the base's play button: a grey square with the orange edge */
.rv-play {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 84px;
  height: 84px;
  background: rgba(59, 59, 59, 0.85);
  color: #FFFFFF;
  font-size: 22px;
  overflow: hidden;
  isolation: isolate;
  transition: color 0.4s ease, transform 0.4s var(--rv-ease);
}
.rv-play::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  z-index: -1;
  width: 4px;
  background: var(--rv-orange);
  transition: width 0.45s var(--rv-ease);
}
.rv-play i {
  margin-left: 4px;
}
.rv-play:hover {
  color: var(--rv-night);
  transform: scale(1.05);
}
.rv-play:hover::before {
  width: 100%;
}
/* progress line (bay load, battery health, the plan meter): filled by the engines */
.rv-meter {
  position: relative;
  height: 3px;
  background: var(--rv-line-2);
}
.rv-meter span {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  background: var(--rv-orange);
  transition: width 1.2s var(--rv-ease);
}
.rv-stars {
  display: inline-flex;
  gap: 3px;
  color: var(--rv-orange);
  font-size: 12px;
}
/* a small capitals tag (New, Sale, In Warranty) */
.rv-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--rv-accent-text);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.rv-tag.is-ok {
  color: var(--rv-ok-text);
}
/* a status dot before "Open now" lines */
.rv-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 10px;
  border-radius: 50%;
  background: var(--rv-muted);
  vertical-align: middle;
}
.is-open .rv-dot,
.rv-dot.is-open {
  background: var(--rv-ok);
  box-shadow: 0 0 0 4px rgba(31, 138, 76, 0.18);
}
.rv-toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  z-index: 3000;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 24px;
  border-left: 4px solid var(--rv-orange);
  background: var(--rv-night);
  color: #FFFFFF;
  font-size: 16px;
  box-shadow: var(--rv-shadow-lg);
  transform: translate(-50%, 160%);
  transition: transform 0.5s var(--rv-ease);
}
.rv-toast i {
  color: var(--rv-orange);
}
.rv-toast.is-shown {
  transform: translate(-50%, 0);
}
.rv-back-top {
  position: fixed;
  right: 28px;
  bottom: 28px;
  z-index: 900;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-left: 4px solid var(--rv-orange);
  background: var(--rv-steel);
  color: #FFFFFF;
  opacity: 0;
  visibility: hidden;
  transform: translateY(16px);
  transition: opacity 0.4s ease, visibility 0.4s ease, transform 0.4s var(--rv-ease), background-color 0.3s ease;
}
.rv-back-top.is-on {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.rv-back-top:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
}
/* WebGL layers sit under a section's content */
.rv-gl {
  position: absolute;
  inset: 0;
  z-index: -1;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity 1.6s ease;
}
.rv-gl.is-on {
  opacity: 1;
}
/* label / value rows (hours, specs, plan contents, totals) */
.rv-rows {
  margin: 0;
  padding: 0;
  list-style: none;
}
.rv-rows li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rv-line);
}
.rv-rows li > span {
  color: var(--rv-text);
}
.rv-rows li > b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-align: right;
}
.rv-rows li.is-today > span,
.rv-rows li.is-today > b {
  color: var(--rv-accent-text);
}
/* the base's corner squares: four small orange squares at the corners of an overlap panel */
.rv-corners {
  position: relative;
}
.rv-corners::after {
  content: "";
  position: absolute;
  inset: -4px;
  z-index: 3;
  pointer-events: none;
  background:
    linear-gradient(var(--rv-acc), var(--rv-acc)) 0 0 / 7px 7px no-repeat,
    linear-gradient(var(--rv-acc), var(--rv-acc)) 100% 0 / 7px 7px no-repeat,
    linear-gradient(var(--rv-acc), var(--rv-acc)) 0 100% / 7px 7px no-repeat,
    linear-gradient(var(--rv-acc), var(--rv-acc)) 100% 100% / 7px 7px no-repeat;
}
/* a small product beside its name and price (sidebars, the article) */
.product-mini {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rv-line);
  color: var(--rv-heading);
}
.product-mini img {
  flex-shrink: 0;
  width: 64px;
  height: 64px;
  object-fit: cover;
  background: #F2F2F2;
}
.product-mini > span {
  display: flex;
  flex-direction: column;
  line-height: 1.35;
}
.product-mini small {
  color: var(--rv-accent-text);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.product-mini b {
  font-family: var(--rv-ff-display);
  font-size: 15px;
  font-weight: 600;
  text-transform: uppercase;
}
.product-mini em {
  font-style: normal;
  font-size: 15px;
}

/*----- 1.7 Spray Pass & Wrap Swatch -----*/
/* Spray Pass: each photograph is uncovered by two feathered spray-gun passes (main.js sets the mask while it
   runs, then clears it); the fresh coat looks wet for a moment and settles */
.rv-spray {
  position: relative;
  overflow: hidden;
}
.rv-spray img {
  display: block;
}
/* the wrap swatch hover: a card's accent (tick, edge, corners, price) takes another film colour and the
   film's chip slides in at its corner */
.w-volt-orange { --rv-wrap: #FF4D24; }
.w-burnt-copper { --rv-wrap: #B4562A; }
.w-nardo-grey { --rv-wrap: #8A8D8F; }
.w-battleship { --rv-wrap: #5E6366; }
.w-liquid-silver { --rv-wrap: #C9CDD1; }
.w-graphite { --rv-wrap: #3C3F42; }
.w-gloss-black { --rv-wrap: #141516; }
.w-matte-black { --rv-wrap: #1E1F20; }
.w-chalk { --rv-wrap: #E6E3DC; }
.w-midnight { --rv-wrap: #1E2C4C; }
.w-riviera { --rv-wrap: #0A9AD0; }
.w-racing-green { --rv-wrap: #1F4A33; }
.w-acid-green { --rv-wrap: #94C93A; }
.w-candy-red { --rv-wrap: #B0161D; }
.w-satin-violet { --rv-wrap: #4B2E6B; }
.w-aurora-shift { --rv-wrap: #5B2A86; }
.rv-wrap-hover {
  position: relative;
}
.rv-wrap-hover:hover,
.rv-wrap-hover:focus-within {
  --rv-acc: var(--rv-wrap, var(--rv-orange));
}
.wrap-chip {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 7px 12px 7px 7px;
  background: rgba(10, 10, 10, 0.86);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  pointer-events: none;
  clip-path: inset(0 0 0 100%);
  transform: translateX(10px);
  transition: clip-path 0.5s var(--rv-ease), transform 0.5s var(--rv-ease);
}
.wrap-chip::before {
  content: "";
  width: 18px;
  height: 18px;
  background: var(--rv-wrap, var(--rv-orange));
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);
}
.w-aurora-shift .wrap-chip::before {
  background: linear-gradient(135deg, #5B2A86, #13897F);
}
.rv-wrap-hover:hover .wrap-chip,
.rv-wrap-hover:focus-within .wrap-chip {
  clip-path: inset(0 0 0 0);
  transform: none;
}

/*======================
2. Preloader
========================*/
/* Wrap Peel: on the night panel a plate covered in satin graphite film; a corner lifts and the film peels off
   diagonally (canvas 2D, main.js), the orange V beneath; the wordmark rises under it and the panel lifts away */
.rv-preloader {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(60% 50% at 50% 46%, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0) 70%),
    var(--rv-night);
}
/* without JS (or once a session has seen it) the panel never shows */
.no-js .rv-preloader {
  display: none;
}
.pre-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 30px;
}
.pre-peel {
  display: block;
  width: 240px;
  height: 240px;
}
.pre-word {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  overflow: hidden;
}
.pre-word img {
  display: block;
  width: 214px;
  height: auto;
}
.pre-line {
  color: rgba(255, 255, 255, 0.62);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

/*======================
3. Header
========================*/
/* The base's header: the logo, the menu with the current item on a lighter box under an orange bar, the actions
   and the menu lines. "over" lies on the first night band with white ink; "solid" is the bar in the page's ground.
   Both turn into the solid bar once the page scrolls. */
.rv-header {
  position: relative;
  z-index: 1000;
  --hd-bar: var(--rv-surface);
  --hd-ink: var(--rv-heading);
  --hd-box: var(--rv-grey);
  --hd-icon: var(--rv-grey);
  --hd-line: var(--rv-line);
}
.rv-header .wide {
  display: flex;
  align-items: center;
  padding: 0 40px;
}
.rv-logo {
  display: inline-flex;
  flex-shrink: 0;
}
.rv-logo img {
  height: 30px;
  width: auto;
}
.rv-logo .logo-light,
[data-theme="dark"] .rv-logo .logo-main {
  display: none;
}
[data-theme="dark"] .rv-logo .logo-light {
  display: block;
}
/* over the night band the logo is always the light one */
.header-style-over:not(.is-sticky) .rv-logo .logo-main {
  display: none;
}
.header-style-over:not(.is-sticky) .rv-logo .logo-light {
  display: block;
}
.header-style-over {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}
.header-style-over:not(.is-sticky) {
  --hd-bar: transparent;
  --hd-ink: #FFFFFF;
  --hd-box: rgba(255, 255, 255, 0.14);
  --hd-icon: rgba(255, 255, 255, 0.12);
  --hd-line: rgba(255, 255, 255, 0.12);
}

/*----- 3.1 Top Bar -----*/
.header-top {
  height: 40px;
  background: var(--rv-night);
  color: rgba(255, 255, 255, 0.8);
  font-size: 14px;
  overflow: visible;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  transition: height 0.4s var(--rv-ease), opacity 0.3s ease;
}
.header-style-over:not(.is-sticky) .header-top {
  background: rgba(10, 10, 10, 0.34);
  border-bottom-color: rgba(255, 255, 255, 0.12);
}
.header-top .wide {
  justify-content: space-between;
  height: 100%;
  gap: 30px;
}
.header-top .top-left,
.header-top .top-right {
  display: flex;
  align-items: center;
  gap: 26px;
}
.header-top a:hover {
  color: var(--rv-orange);
}
.header-top i {
  margin-right: 8px;
  color: var(--rv-orange);
  font-size: 12px;
}
.rv-open {
  display: inline-flex;
  align-items: center;
}
.header-top .rv-dot {
  background: rgba(255, 255, 255, 0.5);
}
.header-top .is-open .rv-dot {
  background: #49C17A;
  box-shadow: 0 0 0 4px rgba(73, 193, 122, 0.2);
}
.header-top .top-right > a {
  position: relative;
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.header-top .top-right > a + a::before {
  content: "";
  position: absolute;
  left: -14px;
  top: 50%;
  width: 2px;
  height: 11px;
  background: var(--rv-orange);
  transform: translateY(-50%);
}

/*----- 3.2 Main Bar -----*/
.header-main {
  position: relative;
  background: var(--hd-bar);
  border-bottom: 1px solid var(--hd-line);
  transition: background-color 0.4s ease, box-shadow 0.4s ease;
}
.header-main .wide {
  height: 92px;
  gap: 40px;
}
.header-right {
  display: flex;
  align-items: center;
  gap: 22px;
  margin-left: auto;
}
.header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.header-icon {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: var(--hd-icon);
  color: var(--hd-ink);
  font-size: 15px;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.header-icon:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
}
/* the base's count: a small orange square beside the bag */
.header-icon .count {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  background: var(--rv-orange);
  color: var(--rv-night);
  font-family: var(--rv-ff-display);
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
}
.header-icon .count:empty {
  display: none;
}
.rv-theme-toggle .ti-sun,
[data-theme="dark"] .rv-theme-toggle .ti-moon {
  display: none;
}
[data-theme="dark"] .rv-theme-toggle .ti-sun {
  display: inline-block;
}
.header-actions .header-btn {
  margin-left: 10px;
}
.header-style-over:not(.is-sticky) .header-btn {
  --rv-btn-bg: rgba(255, 255, 255, 0.14);
  --rv-btn-ink: #FFFFFF;
}
/* the base's menu lines: three lines of three lengths, always shown (they open the side panel of every page) */
.rv-menu-toggle {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-end;
  gap: 6px;
  width: 44px;
  height: 44px;
  margin-left: 6px;
  padding: 0 6px;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.rv-menu-toggle span {
  display: block;
  width: 30px;
  height: 2px;
  background: var(--hd-ink);
  transition: width 0.35s var(--rv-ease), background-color 0.3s ease;
}
.rv-menu-toggle span:nth-child(2) {
  width: 20px;
}
.rv-menu-toggle span:nth-child(3) {
  width: 25px;
}
.rv-menu-toggle:hover span {
  width: 30px;
  background: var(--rv-orange);
}

/*----- 3.3 Main Menu -----*/
.rv-nav {
  align-self: stretch;
}
.rv-nav > ul {
  display: flex;
  align-items: stretch;
  height: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rv-nav li {
  position: relative;
}
/* each top item is a box; the current and hovered ones take the lighter box and the orange bar on top */
.rv-nav > ul > li > a {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 100%;
  padding: 0 20px;
  color: var(--hd-ink);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.rv-nav > ul > li > a::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: var(--rv-orange);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.4s var(--rv-ease);
}
.rv-nav > ul > li > a i {
  font-size: 8px;
  opacity: 0.6;
  transition: transform 0.3s var(--rv-ease);
}
.rv-nav > ul > li:hover > a,
.rv-nav > ul > li.active > a {
  background: var(--hd-box);
  color: var(--hd-ink);
}
.rv-nav > ul > li:hover > a::before,
.rv-nav > ul > li.active > a::before {
  transform: scaleX(1);
}
.rv-nav > ul > li:hover > a i {
  transform: rotate(180deg);
}
.rv-nav .sub-menu {
  position: absolute;
  top: calc(100% + 14px);
  left: 0;
  z-index: 50;
  min-width: 250px;
  margin: 0;
  padding: 16px 0;
  list-style: none;
  border-top: 3px solid var(--rv-orange);
  background: var(--rv-surface);
  box-shadow: var(--rv-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.3s var(--rv-ease), transform 0.35s var(--rv-ease), visibility 0.3s;
}
/* a bridge over the gap, so the menu stays open while the pointer crosses it */
.rv-nav .sub-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 20px;
}
.rv-nav li:hover > .sub-menu,
.rv-nav li:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.rv-nav .sub-menu a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 9px 26px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: color 0.3s var(--rv-ease), padding 0.35s var(--rv-ease);
}
.rv-nav .sub-menu a i {
  font-size: 8px;
  color: var(--rv-muted);
}
.rv-nav .sub-menu li:hover > a,
.rv-nav .sub-menu li.active > a {
  padding-left: 34px;
  color: var(--rv-accent-text);
}
.rv-nav .sub-menu .sub-menu {
  top: -19px;
  left: 100%;
}
.rv-nav .sub-menu .sub-menu::before {
  left: -12px;
  right: auto;
  top: 0;
  bottom: 0;
  width: 12px;
  height: auto;
}

/*----- 3.4 Home Mega Menu -----*/
.rv-nav .has-mega {
  position: static;
}
.rv-nav .mega-menu {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  z-index: 50;
  width: min(1000px, calc(100vw - 60px));
  padding: 30px;
  border-top: 3px solid var(--rv-orange);
  background: var(--rv-surface);
  box-shadow: var(--rv-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, 12px);
  transition: opacity 0.3s var(--rv-ease), transform 0.35s var(--rv-ease), visibility 0.3s;
}
.rv-nav .mega-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 20px;
}
.rv-nav .has-mega:hover > .mega-menu,
.rv-nav .has-mega:focus-within > .mega-menu {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}
.mega-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.mega-card {
  display: block;
  color: var(--rv-heading);
}
.mega-card .shot {
  display: block;
  overflow: hidden;
  background: var(--rv-grey);
}
.mega-card img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  object-position: top;
  transition: transform 0.6s var(--rv-ease);
}
.mega-card:hover img {
  transform: scale(1.04);
}
.mega-meta {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-top: 14px;
}
.mega-meta small {
  color: var(--rv-accent-text);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.mega-meta b {
  font-family: var(--rv-ff-display);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.mega-card.is-current b,
.mega-card:hover b {
  color: var(--rv-accent-text);
}

/*----- 3.5 Sticky Header -----*/
.rv-header.is-sticky {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  animation: rv-header-in 0.6s var(--rv-ease) both;
}
.rv-header.is-sticky .header-top {
  height: 0;
  opacity: 0;
  overflow: hidden;
  border: 0;
}
.rv-header.is-sticky .header-main {
  box-shadow: 0 12px 34px rgba(0, 0, 0, 0.14);
}
.rv-header.is-sticky .header-main .wide {
  height: 76px;
}
.rv-header-spacer {
  display: none;
}
.rv-header-spacer.is-on {
  display: block;
}
@keyframes rv-header-in {
  from {
    transform: translateY(-100%);
  }
  to {
    transform: translateY(0);
  }
}

/*======================
4. Offcanvas Menu
========================*/
.rv-offcanvas {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 2100;
  display: flex;
  flex-direction: column;
  width: min(440px, 100vw);
  background: var(--rv-surface);
  transform: translateX(105%);
  transition: transform 0.6s var(--rv-ease), box-shadow 0.6s var(--rv-ease);
  overflow-y: auto;
}
/* the shadow only while open: parked off the right edge it would still bleed into the page */
.rv-offcanvas.open {
  box-shadow: var(--rv-shadow-lg);
  transform: none;
}
.rv-offcanvas-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: rgba(10, 10, 10, 0.6);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s ease, visibility 0.4s ease;
}
.rv-offcanvas-overlay.open {
  opacity: 1;
  visibility: visible;
}
.offcanvas-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 28px 32px;
  border-bottom: 1px solid var(--rv-line);
}
.offcanvas-head .rv-logo img {
  height: 28px;
}
.offcanvas-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 0;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-size: 18px;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.4s var(--rv-ease);
}
.offcanvas-close:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
  transform: rotate(90deg);
}
.offcanvas-nav {
  flex: 1;
  padding: 14px 32px 30px;
}
.oc-group {
  border-bottom: 1px solid var(--rv-line);
}
.oc-group > button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 18px 0;
  border: 0;
  background: none;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
}
.oc-group > button i {
  color: var(--rv-accent-text);
  font-size: 12px;
  transition: transform 0.35s var(--rv-ease);
}
.oc-group.is-open > button i {
  transform: rotate(45deg);
}
.oc-group ul {
  display: none;
  padding: 0 0 16px;
}
.oc-group.is-open ul {
  display: block;
}
.oc-group ul a {
  display: block;
  padding: 7px 0 7px 16px;
  border-left: 2px solid var(--rv-line);
  color: var(--rv-text);
  font-size: 16px;
}
.oc-group ul a:hover,
.oc-group ul a.is-current {
  border-color: var(--rv-orange);
  color: var(--rv-accent-text);
}
.offcanvas-foot {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 30px 32px 34px;
}
.offcanvas-foot .label {
  margin-bottom: 8px;
  font-size: 15px;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.82);
}
.oc-phone {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 26px;
  font-weight: 600;
}
.oc-mail {
  color: var(--rv-text);
}
.oc-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 18px;
}
.offcanvas-foot .header-icon {
  --hd-icon: rgba(255, 255, 255, 0.1);
  --hd-ink: #FFFFFF;
}

/*======================
5. Custom Select
========================*/
/* Native selects stay in the form (value, name, submit); a styled button and
   listbox are drawn over them and keep them in sync. */
.rv-select {
  position: relative;
}
.rv-select > select {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0 !important;
}
.rv-select .select-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  height: 58px;
  padding: 0 20px;
  border: 1px solid var(--rv-line-2);
  background: var(--rv-surface);
  font-size: 15px;
  text-align: left;
  color: var(--rv-heading);
  transition: border-color 0.3s var(--rv-ease);
}
.rv-select.is-open .select-button,
.rv-select .select-button:hover {
  border-color: var(--rv-orange);
}
.rv-select .select-button .select-value {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.rv-select .select-button i {
  flex-shrink: 0;
  font-size: 10px;
  color: var(--rv-accent-text);
  transition: transform 0.35s var(--rv-ease);
}
.rv-select.is-open .select-button i {
  transform: rotate(180deg);
}
.rv-select .select-list {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 30;
  min-width: 100%;
  max-height: 340px;
  margin: 0;
  padding: 10px 0;
  overflow-x: hidden;
  overflow-y: auto;
  list-style: none;
  background-color: var(--rv-surface);
  border-top: 3px solid var(--rv-orange);
  box-shadow: var(--rv-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.3s var(--rv-ease), transform 0.3s var(--rv-ease), visibility 0.3s;
}
.rv-select.opens-up .select-list {
  top: auto;
  bottom: calc(100% + 8px);
  border-top: 0;
  border-bottom: 2px solid var(--rv-orange);
  transform: translateY(-10px);
}
.rv-select.is-open .select-list {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.rv-select .select-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 10px 20px;
  font-size: 15px;
  color: var(--rv-heading);
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.2s var(--rv-ease), color 0.2s var(--rv-ease);
}
.rv-select .select-option .option-meta {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rv-accent-text);
}
.rv-select .select-option .option-meta.is-none {
  color: var(--rv-muted);
}
.rv-select .select-option.is-focused,
.rv-select .select-option:hover {
  background-color: var(--rv-grey);
}
.rv-select .select-option.is-disabled {
  cursor: not-allowed;
  opacity: 0.45;
}
.rv-select .select-option.is-selected {
  color: var(--rv-accent-text);
}
.rv-select .select-option.is-selected::after {
  content: "\f00c";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 11px;
  color: var(--rv-accent-text);
}
.rv-select.is-compact .select-button {
  height: 46px;
  border: 0;
  background: var(--rv-grey);
  font-size: 14px;
  font-weight: 600;
}

/*======================
6. Language Picker
========================*/
/* Language picker: a flag and a code; the menu lists the languages that read left to right and right to left.
   The demo copy stays in English, and a right-to-left language turns the layout around. */
.rv-lang {
  position: relative;
  flex-shrink: 0;
}
.rv-lang .lang-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 32px;
  padding: 0 12px;
  border: 0;
  border-radius: 0;
  background: rgba(255, 255, 255, 0.12);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.08em;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.rv-lang .lang-btn:hover,
.rv-lang .lang-btn[aria-expanded="true"] {
  background: #FFFFFF;
  color: var(--rv-night);
}
.rv-lang .lang-btn > i {
  font-size: 9px;
  transition: transform 0.3s ease;
}
.rv-lang .lang-btn[aria-expanded="true"] > i {
  transform: rotate(180deg);
}
.rv-lang .flag {
  flex-shrink: 0;
  width: 22px;
  height: 16px;
  border-radius: 0;
  object-fit: cover;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.rv-lang.is-icon .lang-btn {
  height: 46px;
  padding: 0 15px;
  background: var(--rv-grey);
  color: var(--rv-heading);
}
.rv-lang.is-icon .lang-btn:hover,
.rv-lang.is-icon .lang-btn[aria-expanded="true"] {
  background: var(--rv-night);
  color: #FFFFFF;
}
.rv-lang .lang-menu {
  position: absolute;
  top: calc(100% + 12px);
  inset-inline-end: 0;
  z-index: 1300;
  width: 248px;
  padding: 10px;
  border-radius: 0;
  background: var(--rv-surface);
  box-shadow: var(--rv-shadow-lg);
  font-family: var(--rv-ff-body);
  text-align: start;
  white-space: normal;
}
.rv-lang.is-up .lang-menu {
  top: auto;
  bottom: calc(100% + 12px);
}
.rv-lang.is-start .lang-menu {
  inset-inline-start: 0;
  inset-inline-end: auto;
}
.rv-lang .lang-menu[hidden] {
  display: none;
}
.rv-lang .lang-group {
  margin: 6px 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rv-muted);
}
.rv-lang .lang-menu ul {
  display: block;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rv-lang .lang-menu ul + .lang-group {
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px solid var(--rv-line);
}
.rv-lang .lang-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 9px 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--rv-heading);
  font-family: var(--rv-ff-body);
  font-size: 14.5px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0;
  text-align: start;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.25s ease;
}
.rv-lang .lang-item small {
  margin-inline-start: auto;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rv-muted);
}
.rv-lang .lang-item i {
  width: 12px;
  font-size: 11px;
  color: var(--rv-accent-text);
  opacity: 0;
}
.rv-lang .lang-item:hover,
.rv-lang .lang-item[aria-pressed="true"] {
  background: var(--rv-grey);
}
.rv-lang .lang-item[aria-pressed="true"] {
  font-weight: 600;
}
.rv-lang .lang-item[aria-pressed="true"] i {
  opacity: 1;
}
.rv-lang .lang-note {
  margin: 10px 10px 4px;
  padding-top: 10px;
  border-top: 1px solid var(--rv-line);
  font-size: 12px;
  line-height: 1.5;
  color: var(--rv-muted);
}

/*======================
7. Components
========================*/
/*----- 7.1 Hero Slider -----*/
/* the base's hero: a full photograph, the title centred with its giant first line, the arrows at the bottom left
   and the slide numbers at the bottom right (the current one bigger) */
.rv-hero {
  position: relative;
  isolation: isolate;
  overflow: clip;
  background: var(--rv-night);
}
.rv-hero .swiper-slide {
  position: relative;
  display: flex;
  align-items: center;
  min-height: max(760px, 100vh);
  padding: 170px 0 150px;
  overflow: hidden;
}
.rv-hero .hero-img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.rv-hero .swiper-slide::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(10, 10, 10, 0.72) 0%, rgba(10, 10, 10, 0.12) 30%, rgba(10, 10, 10, 0.18) 62%, rgba(10, 10, 10, 0.86) 100%);
}
.rv-hero .container {
  position: relative;
}
.hero-copy {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.hero-copy .rv-eyebrow {
  color: #FFFFFF;
}
.hero-title {
  color: #FFFFFF;
}
.hero-title .line {
  font-size: clamp(56px, 10.2vw, 156px);
  line-height: 0.92;
  letter-spacing: -0.045em;
}
.hero-title .line.is-sub {
  margin-top: 0.42em;
  font-size: clamp(24px, 2.9vw, 44px);
  line-height: 1.1;
  letter-spacing: -0.005em;
}
.hero-copy .rv-btn {
  margin-top: 40px;
  --rv-btn-bg: rgba(59, 59, 59, 0.86);
  --rv-btn-ink: #FFFFFF;
}
.hero-controls {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 44px;
  z-index: 5;
  pointer-events: none;
}
.hero-controls .wide {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 46px;
}
.hero-arrows {
  display: flex;
  gap: 18px;
  pointer-events: auto;
}
.hero-arrows button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: #FFFFFF;
  font-size: 19px;
  transition: color 0.3s ease, transform 0.35s var(--rv-ease);
}
.hero-arrows button:hover {
  color: var(--rv-orange);
}
.hero-arrows .hero-prev:hover {
  transform: translateX(-4px);
}
.hero-arrows .hero-next:hover {
  transform: translateX(4px);
}
.hero-numbers {
  display: flex;
  align-items: baseline;
  gap: 22px;
  pointer-events: auto;
}
.hero-numbers button {
  color: rgba(255, 255, 255, 0.7);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  transition: color 0.3s ease, font-size 0.4s var(--rv-ease);
}
.hero-numbers button.is-on {
  color: #FFFFFF;
  font-size: 22px;
}
.hero-numbers button:hover {
  color: var(--rv-orange);
}
/* the progress line between the first and the last number (Home 02) */
.hero-progress {
  display: flex;
  align-items: center;
  gap: 18px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  pointer-events: auto;
}
.hero-progress .bar {
  position: relative;
  width: 200px;
  height: 2px;
  background: rgba(255, 255, 255, 0.24);
}
.hero-progress .bar span {
  position: absolute;
  inset: 0 auto 0 0;
  width: 33%;
  background: var(--rv-orange);
  transition: width 0.8s var(--rv-ease);
}

/*----- 7.2 Features -----*/
/* the base's feature grid: a title on the left, the features in columns, each with its orange tick */
.features-title {
  max-width: 300px;
}
.feature-item h3 {
  margin-bottom: 14px;
}
.feature-item p {
  margin: 0;
  max-width: 240px;
  font-size: 15.5px;
}
.feature-item .wrap-chip {
  top: -6px;
  right: auto;
  left: 160px;
}

/*----- 7.3 Video Band -----*/
.rv-video-band {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 620px;
  background: var(--rv-night);
}
.rv-video-band .band-img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.rv-video-band::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: rgba(10, 10, 10, 0.32);
}

/*----- 7.4 Post Rows -----*/
/* the base's latest posts: the date, the two categories and the title in one row between hairlines */
.post-rows {
  border-top: 1px solid var(--rv-line-2);
}
.post-row {
  display: grid;
  grid-template-columns: 80px 150px 1fr 44px;
  align-items: center;
  gap: 20px;
  padding: 26px 0;
  border-bottom: 1px solid var(--rv-line-2);
}
.pr-date small {
  display: block;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.pr-date b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 22px;
  font-weight: 600;
}
.pr-cats {
  display: flex;
  align-items: center;
  gap: 12px;
}
.pr-cats a {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.pr-cats a + a::before {
  content: "";
  width: 2px;
  height: 10px;
  background: var(--rv-orange);
}
.post-row h3 a:hover {
  color: var(--rv-accent-text);
}
.pr-go {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--rv-heading);
  transition: color 0.3s ease, transform 0.35s var(--rv-ease);
}
.pr-go:hover {
  color: var(--rv-orange);
  transform: translateX(4px);
}

/*----- 7.5 Care Plan Columns -----*/
/* the base's leasing plans: four columns over a dark photograph, the featured one on a lighter panel */
.plan-toggle {
  display: inline-flex;
  background: rgba(255, 255, 255, 0.08);
}
.plan-toggle button {
  height: 48px;
  padding: 0 22px;
  color: var(--rv-text);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.plan-toggle button small {
  margin-left: 6px;
  color: var(--rv-orange);
  font-size: 11px;
}
.plan-toggle button.is-on {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.plan-toggle button.is-on small {
  color: var(--rv-night);
}
.plan-col {
  height: 100%;
  padding: 46px 36px 44px;
  transition: background-color 0.4s ease;
}
.plan-col.is-featured {
  background: rgba(255, 255, 255, 0.1);
}
.plan-col:hover {
  background: rgba(255, 255, 255, 0.06);
}
.plan-col.is-featured:hover {
  background: rgba(255, 255, 255, 0.13);
}
.plan-label {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 18px;
  font-size: 12px;
  letter-spacing: 0.1em;
}
.plan-label i {
  width: 2px;
  height: 11px;
  background: var(--rv-acc);
  transition: background-color 0.4s ease;
}
.plan-price {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 26px;
  color: var(--rv-heading);
  font-size: clamp(38px, 3.2vw, 48px);
  font-weight: 600;
  line-height: 1;
}
.plan-price small {
  color: var(--rv-text);
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.plan-col .rv-rows {
  margin-bottom: 30px;
}
.plan-col .rv-rows li {
  padding: 10px 0;
  font-size: 15px;
}
.plan-col .rv-rows li > b {
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.plan-col .wrap-chip {
  top: 14px;
  right: 14px;
}
/* the light version on the care plans page */
.rv-plans-light .plan-col {
  background: var(--rv-grey-2);
}
.rv-plans-light .plan-col.is-featured {
  --rv-heading: #FFFFFF;
  --rv-text: #9A9A9A;
  --rv-line: rgba(255, 255, 255, 0.12);
  --rv-accent-text: #FF5A33;
  background: var(--rv-night);
  color: var(--rv-text);
}

/*----- 7.6 Instant Quote Strip -----*/
/* the base's orange band, given a job: the instant wrap quote */
.rv-quote-strip {
  padding: 56px 0;
}
.qs-form {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr 1fr 0.9fr auto;
  align-items: end;
  gap: 22px;
}
.qs-head .rv-eyebrow {
  margin-bottom: 8px;
}
.qs-head .rv-eyebrow::before {
  background: var(--rv-night);
}
.rv-quote-strip .rv-select .select-button {
  background: rgba(255, 255, 255, 0.22);
  border-bottom-color: rgba(10, 10, 10, 0.4);
  color: var(--rv-night);
}
.rv-quote-strip .rv-select .select-button i {
  color: var(--rv-night);
}
.qs-out {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
}
.qs-out small {
  font-size: 13px;
  font-weight: 600;
  color: rgba(10, 10, 10, 0.8);
}
.qs-out b {
  color: var(--rv-night);
  font-size: 34px;
  font-weight: 700;
}

/*----- 7.7 Overlap Panel -----*/
/* the base's overlap: a grey panel laid half over a photograph, the four orange squares at its corners */
.rv-overlap-area {
  overflow: clip;
}
.rv-overlap {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  margin-right: max(16px, calc((100vw - 1320px) / 2));
}
.rv-overlap.is-flip {
  margin-right: 0;
  margin-left: max(16px, calc((100vw - 1320px) / 2));
}
.rv-overlap .ov-photo {
  position: relative;
  grid-column: 1 / 2;
  grid-row: 1;
  height: 100%;
  min-height: 460px;
}
.rv-overlap .ov-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.rv-overlap .ov-panel {
  position: relative;
  z-index: 2;
  grid-column: 2 / 3;
  grid-row: 1;
  margin-left: -6%;
  padding: 70px 64px;
  background: var(--rv-steel);
  --rv-heading: #FFFFFF;
  --rv-text: rgba(255, 255, 255, 0.72);
  --rv-btn-bg: rgba(255, 255, 255, 0.12);
  --rv-btn-ink: #FFFFFF;
  color: var(--rv-text);
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.24);
}
.rv-overlap .ov-panel h2,
.rv-overlap .ov-panel h3 {
  margin-bottom: 22px;
}
.rv-overlap .ov-panel p {
  margin-bottom: 30px;
}
.rv-overlap.is-flip .ov-photo {
  grid-column: 2 / 3;
}
.rv-overlap.is-flip .ov-panel {
  grid-column: 1 / 2;
  margin-left: 0;
  margin-right: -6%;
}

/*----- 7.8 Cards -----*/
/* the service card: a photograph, the ticked capitals title, a line of text and the plus link */
.svc-card {
  display: block;
  height: 100%;
  color: var(--rv-text);
}
.svc-card .sc-img {
  display: block;
  overflow: hidden;
  aspect-ratio: 16 / 11;
  background: var(--rv-grey);
}
.svc-card .sc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s var(--rv-ease);
}
.svc-card:hover .sc-img img {
  transform: scale(1.05);
}
.svc-card h3 {
  margin: 26px 0 12px;
}
.svc-card h3 a:hover {
  color: var(--rv-accent-text);
}
.svc-card p {
  margin-bottom: 18px;
  font-size: 15.5px;
}
.svc-card .sc-price {
  display: block;
  margin-bottom: 14px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.svc-card .sc-price b {
  color: var(--rv-acc);
  transition: color 0.4s ease;
}
/* the build card (portfolio grids) */
.build-card {
  position: relative;
  display: block;
  overflow: hidden;
  color: #FFFFFF;
  background: var(--rv-night);
}
.build-card .bc-img {
  display: block;
  aspect-ratio: 4 / 3;
}
.build-card .bc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.9s var(--rv-ease), opacity 0.5s ease;
}
.build-card::after {
  content: "";
  position: absolute;
  inset: 40% 0 0;
  background: linear-gradient(180deg, rgba(10, 10, 10, 0), rgba(10, 10, 10, 0.82));
  pointer-events: none;
}
.build-card .bc-cap {
  position: absolute;
  left: 28px;
  right: 28px;
  bottom: 24px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.build-card .bc-cap small {
  color: rgba(255, 255, 255, 0.86);
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.build-card .bc-cap b {
  font-family: var(--rv-ff-display);
  font-size: 20px;
  font-weight: 600;
  line-height: 1.2;
  text-transform: uppercase;
}
.build-card:hover {
  color: #FFFFFF;
}
.build-card:hover .bc-img img {
  transform: scale(1.06);
}
.build-card .bc-bar {
  position: absolute;
  left: 0;
  bottom: 0;
  z-index: 3;
  width: 100%;
  height: 4px;
  background: var(--rv-acc);
  transform: scaleX(0.2);
  transform-origin: left center;
  transition: transform 0.6s var(--rv-ease), background-color 0.4s ease;
}
.build-card:hover .bc-bar {
  transform: scaleX(1);
}
/* the slider arrows of a rail: two squares at the title's right */
.rail-arrows {
  display: flex;
  gap: 10px;
}
.grid-empty {
  margin: 30px 0 0;
  color: var(--rv-muted);
}
.is-hidden,
.is-unmatched,
.is-off-family {
  display: none !important;
}
/* the review badge: the Google average and its count */
.rv-review-badge {
  display: inline-flex;
  align-items: center;
  gap: 14px;
}
.rv-review-badge > b {
  color: var(--rv-heading);
  font-size: 40px;
  font-weight: 600;
  line-height: 1;
}
.rv-review-badge > span {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.rv-review-badge small {
  color: var(--rv-text);
  font-size: 14px;
}

/*----- 7.9 Tabs, Chips & Choice Cards -----*/
.rv-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.rv-tabs button {
  height: 46px;
  padding: 0 20px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.rv-tabs button:hover {
  color: var(--rv-accent-text);
}
.rv-tabs button.is-active {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.is-night .rv-tabs button,
.is-coal .rv-tabs button {
  background: rgba(255, 255, 255, 0.08);
}
/* a radio or checkbox drawn as a card: the input is visually hidden, the card shows its state */
.choice-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 4px;
  height: 100%;
  padding: 18px 20px 18px 22px;
  background: var(--rv-grey);
  color: var(--rv-text);
  cursor: pointer;
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.choice-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: transparent;
  transition: background-color 0.3s ease;
}
.choice-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.choice-card b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.choice-card small {
  font-size: 14px;
  line-height: 1.45;
}
.choice-card em {
  margin-top: auto;
  padding-top: 6px;
  color: var(--rv-accent-text);
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-style: normal;
  font-weight: 600;
}
.choice-card:hover {
  box-shadow: inset 0 0 0 1px var(--rv-line-2);
}
.choice-card.is-checked {
  background: var(--rv-surface);
  box-shadow: inset 0 0 0 1px var(--rv-orange);
}
.choice-card.is-checked::before {
  background: var(--rv-orange);
}
.choice-card:focus-within {
  outline: 2px solid var(--rv-orange);
  outline-offset: 2px;
}
.is-night .choice-card,
.is-coal .choice-card {
  background: rgba(255, 255, 255, 0.05);
}
.is-night .choice-card.is-checked,
.is-coal .choice-card.is-checked {
  background: rgba(255, 255, 255, 0.1);
}

/*----- 7.10 Accordion -----*/
.acc-item {
  border-bottom: 1px solid var(--rv-line);
}
.acc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  width: 100%;
  padding: 22px 0;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 17px;
  font-weight: 600;
  text-align: left;
  text-transform: uppercase;
}
.acc-head i {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  background: var(--rv-grey);
  color: var(--rv-accent-text);
  font-size: 12px;
  transition: transform 0.35s var(--rv-ease), background-color 0.3s ease, color 0.3s ease;
}
.acc-item.is-open .acc-head i {
  background: var(--rv-orange);
  color: var(--rv-night);
  transform: rotate(45deg);
}
.acc-body {
  padding: 0 60px 24px 0;
}

/*----- 7.11 Pagination & Sidebar -----*/
.rv-pager {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 60px;
}
.rv-pager a,
.rv-pager span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  height: 48px;
  padding: 0 12px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-weight: 600;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.rv-pager a:hover,
.rv-pager .is-current {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.rv-sidebar .widget {
  margin-bottom: 30px;
  padding: 34px 32px;
  background: var(--rv-grey);
}
.rv-sidebar .widget > h2 {
  margin-bottom: 22px;
}
.widget-search {
  position: relative;
}
.widget-search input {
  width: 100%;
  height: 54px;
  padding: 0 56px 0 18px;
  border: 0;
  border-bottom: 2px solid var(--rv-line-2);
  background: var(--rv-surface);
  color: var(--rv-heading);
  font-family: var(--rv-ff-body);
  font-size: 16px;
}
.widget-search input:focus {
  border-bottom-color: var(--rv-orange);
  outline: 0;
}
.widget-search button {
  position: absolute;
  right: 0;
  top: 0;
  width: 54px;
  height: 54px;
  color: var(--rv-accent-text);
}
.widget-cats li + li {
  border-top: 1px solid var(--rv-line);
}
.widget-cats a,
.widget-cats button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 12px 0;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-align: left;
  text-transform: uppercase;
}
.widget-cats a span,
.widget-cats button span {
  color: var(--rv-muted);
  font-size: 13px;
}
.widget-cats a:hover,
.widget-cats button:hover,
.widget-cats button.is-active {
  color: var(--rv-accent-text);
}
.side-posts li {
  display: flex;
  align-items: center;
  gap: 16px;
}
.side-posts li + li {
  margin-top: 18px;
}
.side-posts .thumb {
  flex-shrink: 0;
  width: 82px;
  height: 70px;
  overflow: hidden;
  background: var(--rv-surface);
}
.side-posts .thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.side-posts .date {
  display: block;
  margin-bottom: 4px;
  color: var(--rv-accent-text);
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.side-posts h3 a:hover {
  color: var(--rv-accent-text);
}
.tr-price {
  display: block;
  margin-top: 4px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.widget-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
}
.widget-tags a {
  display: inline-flex;
  padding: 8px 14px;
  background: var(--rv-surface);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.widget-tags a:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.widget-cta {
  position: relative;
  overflow: hidden;
}
.rv-sidebar .widget.widget-cta {
  background: var(--rv-night);
}
.widget-cta p {
  margin-bottom: 22px;
}

/*======================
8. Home One
========================*/
/*----- 8.1 Service Words -----*/
/* the base's technical specification: giant stacked words, the chosen one solid, the rest in outline; the chosen
   service's figures stand beside them */
.rv-services-words {
  position: relative;
  isolation: isolate;
  overflow: clip;
}
.sw-words {
  margin-top: 6px;
}
.sw-word {
  display: block;
  padding: 0;
  color: transparent;
  font-family: var(--rv-ff-display);
  font-size: clamp(54px, 6.4vw, 104px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.04em;
  text-align: left;
  text-transform: uppercase;
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.24);
  transition: color 0.5s var(--rv-ease), -webkit-text-stroke-color 0.4s ease, transform 0.5s var(--rv-ease);
}
.sw-word:hover {
  -webkit-text-stroke-color: rgba(255, 255, 255, 0.6);
  transform: translateX(8px);
}
.sw-word.is-on {
  color: #FFFFFF;
  -webkit-text-stroke-color: #FFFFFF;
  transform: none;
}
.sw-panel h3 {
  margin-bottom: 16px;
}
.sw-panel p {
  margin-bottom: 22px;
  font-size: 16px;
}
.sw-panel .rv-rows {
  margin-bottom: 34px;
}
.sw-panel .rv-rows li {
  padding: 11px 0;
  font-size: 15.5px;
}
.sw-panel .rv-rows li > b {
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/*----- 8.2 Mosaic -----*/
/* the base's two-by-two: a panel of bars, two photographs and a fact under a ghost figure */
.mosaic-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  background: var(--rv-night);
}
.mosaic-cell {
  position: relative;
  min-height: 440px;
  overflow: hidden;
}
.mosaic-cell.is-panel {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 70px clamp(30px, 8vw, 130px);
  background: var(--rv-band);
}
.mosaic-cell.is-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bay-title {
  margin-bottom: 30px;
}
.bay-bars li + li {
  margin-top: 26px;
}
.bay-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 12px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bay-head b {
  font-weight: 600;
}
.mosaic-cell .rv-meter {
  height: 3px;
  background: rgba(255, 255, 255, 0.16);
}
.mosaic-cell.is-fact {
  isolation: isolate;
}
.fact-ghost {
  position: absolute;
  left: clamp(30px, 8vw, 130px);
  top: 54px;
  z-index: -1;
  font-size: clamp(60px, 6.4vw, 104px);
}
.mosaic-cell.is-fact h3 {
  max-width: 520px;
  margin: 70px 0 18px;
}
.mosaic-cell.is-fact p {
  max-width: 480px;
  margin: 0;
}

/*----- 8.3 Wrap Moment -----*/
/* one coupe on a dark stage takes each film in turn as the section scrolls: the new colour is laid from the nose
   back behind a bright squeegee line, its swatch lights in the strip and its name stands behind the car */
.rv-wrap-moment {
  overflow: clip;
}
.wm-stage {
  position: relative;
  isolation: isolate;
  overflow: clip;
  margin: 10px 0 34px;
  aspect-ratio: 1240 / 568;
  background: radial-gradient(70% 60% at 50% 62%, #1F1F1F 0%, #0A0A0A 72%);
}
.wm-canvas,
.wm-fallback {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.wm-fallback {
  object-fit: contain;
}
.wm-stage.is-live .wm-fallback {
  visibility: hidden;
}
.wm-name-big {
  position: absolute;
  left: 0;
  right: 0;
  top: 2%;
  z-index: -1;
  color: transparent;
  font-family: var(--rv-ff-display);
  font-size: clamp(60px, 9.6vw, 150px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.04em;
  text-align: center;
  text-transform: uppercase;
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.14);
  white-space: nowrap;
}
.wm-swatches {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
}
.wm-swatch {
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 16px 16px 14px;
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
  transition: background-color 0.4s ease;
}
.wm-swatch::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: var(--rv-wrap);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.5s var(--rv-ease);
}
.wm-chip {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  background: var(--rv-wrap);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
}
.w-aurora-shift .wm-chip {
  background: linear-gradient(135deg, #5B2A86, #13897F);
}
.wm-name {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
}
.wm-name b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.wm-name small {
  color: var(--rv-text);
  font-size: 13px;
}
.wm-swatch.is-on {
  background: rgba(255, 255, 255, 0.1);
}
.wm-swatch.is-on::after {
  transform: scaleX(1);
}
.wm-foot {
  display: flex;
  justify-content: center;
  margin-top: 44px;
}

/*----- 8.4 Builds Rail -----*/
/* the base's car slider: wide photographs with the square arrows standing over its two edges */
.rv-builds {
  overflow: clip;
}
.builds-rail {
  position: relative;
  margin: 0 auto 70px;
  max-width: 1320px;
  padding: 0 60px;
}
.builds-rail .swiper {
  overflow: visible;
}
.build-slide {
  position: relative;
  display: block;
  color: #FFFFFF;
}
.build-slide .bs-img {
  display: block;
  aspect-ratio: 2 / 1;
  background: var(--rv-night);
}
.build-slide .bs-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.build-slide .bs-cap {
  position: absolute;
  left: 30px;
  bottom: 26px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px 22px;
  background: rgba(10, 10, 10, 0.78);
  transition: transform 0.5s var(--rv-ease);
}
.build-slide .bs-cap small {
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.build-slide .bs-cap b {
  font-family: var(--rv-ff-display);
  font-size: 18px;
  font-weight: 600;
  text-transform: uppercase;
}
.build-slide:hover {
  color: #FFFFFF;
}
.build-slide:hover .bs-cap {
  transform: translateY(-6px);
}
.builds-rail .rv-square-btn {
  position: absolute;
  top: 50%;
  z-index: 5;
  transform: translateY(-50%);
}
.builds-rail .builds-prev {
  left: 0;
}
.builds-rail .builds-next {
  right: 0;
}
.builds-copy {
  max-width: 1320px;
  margin-left: auto;
  margin-right: auto;
  align-items: flex-start;
}
.builds-copy p {
  margin-bottom: 28px;
}

/*======================
9. Home Two
========================*/
/*----- 9.1 Hero Two -----*/
/* the base's tuning hero: the title high on the left with a short lead, a grey band across the photograph's middle,
   the arrows, the progress line and the scroll-down square along the bottom */
.hero-two .swiper-slide {
  align-items: flex-start;
  padding-top: 230px;
}
.hero-two .swiper-slide::after {
  background:
    linear-gradient(180deg, rgba(10, 10, 10, 0.55) 0%, rgba(10, 10, 10, 0.05) 30%, rgba(10, 10, 10, 0.05) 62%, rgba(10, 10, 10, 0.8) 100%),
    linear-gradient(90deg, rgba(10, 10, 10, 0.55) 0%, rgba(10, 10, 10, 0) 60%);
}
.hero-two .hero-copy {
  align-items: flex-start;
  max-width: 720px;
  text-align: left;
}
.hero-two .hero-title .line {
  font-size: clamp(54px, 7.4vw, 116px);
}
.hero-lead {
  max-width: 460px;
  margin: 18px 0 0;
  color: rgba(255, 255, 255, 0.82);
  font-size: 18px;
}
.hero-lead b {
  color: #FFFFFF;
  font-weight: 600;
}
.hero-two .hero-controls {
  bottom: 0;
}
.hero-two .hero-controls .wide {
  align-items: flex-end;
  padding: 0 0 0 46px;
}
.hero-two .hero-arrows {
  padding-bottom: 40px;
}
.hero-two .hero-progress {
  margin: 0 auto 52px;
}
.hero-down {
  width: 92px;
  height: 92px;
  pointer-events: auto;
  font-size: 18px;
  --rv-btn-bg: rgba(59, 59, 59, 0.9);
  --rv-btn-ink: #FFFFFF;
}
.hero-down::before {
  inset: 0 0 auto 0;
  width: 100%;
  height: 4px;
  transition: height 0.45s var(--rv-ease);
}
.hero-down:hover::before {
  width: 100%;
  height: 100%;
}

/*----- 9.2 Cut-Out Split -----*/
/* the base's part on the left of its copy: a cut-out on the dark ground, no frame */
.cs-img {
  position: relative;
  display: flex;
  justify-content: center;
}
.cs-img::before {
  content: "";
  position: absolute;
  inset: 12% 14%;
  z-index: 0;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 77, 36, 0.14), rgba(255, 77, 36, 0));
}
.cs-img img {
  position: relative;
  max-height: 520px;
  object-fit: contain;
}
.rv-cutout-split h2 {
  margin-bottom: 24px;
}
.rv-cutout-split p {
  max-width: 520px;
  margin-bottom: 32px;
}

/*----- 9.3 Ghost Card -----*/
/* the base's overlap: a grey panel with a giant outline figure, the orange block slid under its foot */
.gc-wrap {
  position: relative;
  padding-bottom: 60px;
}
.gc-panel {
  position: relative;
  z-index: 2;
  max-width: 580px;
  padding: 150px 56px 60px;
  background: var(--rv-panel);
  isolation: isolate;
}
.gc-ghost {
  position: absolute;
  left: 50px;
  top: 30px;
  z-index: -1;
  font-size: clamp(58px, 6vw, 92px);
}
.gc-panel h2 {
  margin-bottom: 14px;
}
.gc-panel > p {
  margin-bottom: 36px;
}
.gc-feature i {
  margin-bottom: 14px;
  color: #FFFFFF;
  font-size: 20px;
}
.gc-feature h3 {
  margin-bottom: 8px;
}
.gc-feature p {
  max-width: 300px;
  margin: 0;
  font-size: 15.5px;
}
.gc-orange {
  position: absolute;
  left: 32%;
  right: 8%;
  bottom: 0;
  z-index: 1;
  height: 260px;
  overflow: hidden;
  isolation: isolate;
}
.gc-orange-ghost {
  position: absolute;
  left: 18%;
  bottom: -0.08em;
  z-index: -1;
  font-size: 200px;
  -webkit-text-stroke-color: rgba(10, 10, 10, 0.3);
}
.gc-orange-label {
  position: absolute;
  right: 32px;
  bottom: 28px;
  color: var(--rv-night);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/*----- 9.4 Dyno Chart & Stage Cards -----*/
/* Home 02's scroll moment: the dyno bars climb stock -> stage 1 -> 2 -> 3 as the section travels; each figure is
   set when its bar lands */
.rv-dyno {
  position: relative;
  isolation: isolate;
  overflow: clip;
}
.dy-pick {
  width: min(360px, 100%);
}
.dy-chart {
  position: relative;
  margin-bottom: 60px;
  padding: 40px 40px 0;
  background: rgba(255, 255, 255, 0.03);
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px);
  background-size: 100% 25%;
}
.dy-legend {
  display: flex;
  gap: 26px;
  margin-bottom: 26px;
}
.dy-legend span {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.dy-legend span::before {
  content: "";
  width: 14px;
  height: 14px;
  background: var(--rv-orange);
}
.dy-legend .is-tq::before {
  background: #6A6A6A;
}
.dy-groups {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  height: 380px;
}
.dy-group {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.dy-bars {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 10px;
  height: 100%;
}
.dy-bar {
  position: relative;
  width: min(64px, 38%);
  height: 0;
  background: var(--rv-orange);
  transition: background-color 0.4s ease;
}
.dy-bar.is-tq {
  background: #5A5A5A;
}
.dy-group.is-stock .dy-bar.is-hp {
  background: #8E8E8E;
}
.dy-group.is-stock .dy-bar.is-tq {
  background: #3E3E3E;
}
.dy-bar b {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  color: #FFFFFF;
  font-size: 18px;
  font-weight: 600;
  white-space: nowrap;
  transform: translateX(-50%);
  transition: opacity 0.4s ease, transform 0.4s var(--rv-ease);
}
.dy-bar.is-pending b {
  opacity: 0;
  transform: translate(-50%, 8px);
}
.dy-label {
  display: block;
  padding: 18px 0 20px;
  border-top: 2px solid rgba(255, 255, 255, 0.2);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
}
.stage-card {
  position: relative;
  height: 100%;
  padding: 42px 36px 34px;
  background: var(--rv-surface);
  isolation: isolate;
  overflow: hidden;
}
.stage-card::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: var(--rv-acc);
  transition: background-color 0.4s ease;
}
.sc-stage {
  position: absolute;
  right: 20px;
  top: 10px;
  z-index: -1;
  font-size: 110px;
}
.stage-card h3 {
  margin-bottom: 14px;
}
.sc-figs {
  margin-bottom: 18px;
  color: var(--rv-text);
  font-size: 15px;
  text-transform: uppercase;
}
.sc-figs b {
  color: var(--rv-heading);
  font-size: 32px;
  font-weight: 600;
}
.sc-figs span {
  margin: 0 6px;
  color: var(--rv-acc);
}
.stage-card .rv-rows li {
  padding: 9px 0;
  font-size: 15px;
}
.stage-card .rv-rows li > b {
  font-size: 14px;
}
.sc-fits {
  margin: 18px 0 22px;
  font-size: 15px;
}
.sc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.sc-price {
  color: var(--rv-heading);
  font-size: 26px;
  font-weight: 600;
}
.stage-card .wrap-chip {
  top: 18px;
  right: 18px;
}

/*----- 9.5 Parts Row -----*/
/* the base's auto components: cut-outs on the dark ground, the name ticked under each */
.part-tile {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  color: var(--rv-heading);
}
.pt-img {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;
  padding: 18px;
}
.pt-img img {
  max-height: 100%;
  object-fit: contain;
  transition: transform 0.6s var(--rv-ease);
}
.part-tile:hover .pt-img img {
  transform: translateY(-8px) rotate(-3deg);
}
.pt-name {
  margin-top: 10px;
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.pt-price {
  margin-top: 4px;
  color: var(--rv-text);
  font-size: 15px;
}
.part-tile .wrap-chip {
  top: 0;
  right: 0;
}

/*----- 9.6 Three Promises -----*/
.three-item p {
  margin: 14px 0 0;
  max-width: 340px;
  font-size: 15.5px;
}
.three-item .wrap-chip {
  top: -8px;
}

/*----- 9.7 Ghost Split -----*/
/* the base's split: a grey panel with a giant outline word over the title on the left, the car on the right */
.rv-ghost-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 560px;
}
.gs-copy {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 90px clamp(30px, 6vw, 110px);
  background: var(--rv-steel);
  isolation: isolate;
  overflow: hidden;
  --rv-text: rgba(255, 255, 255, 0.74);
}
.gs-ghost {
  position: absolute;
  left: clamp(30px, 6vw, 110px);
  top: 70px;
  z-index: -1;
  font-size: clamp(60px, 6.4vw, 104px);
  -webkit-text-stroke-color: rgba(255, 255, 255, 0.14);
}
.gs-copy h2 {
  max-width: 460px;
  margin: 60px 0 16px;
}
.gs-copy p {
  max-width: 420px;
  margin-bottom: 30px;
}
.gs-copy .rv-btn {
  align-self: flex-start;
  --rv-btn-bg: rgba(255, 255, 255, 0.12);
}
.gs-photo {
  position: relative;
}
.gs-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/*----- 9.8 Countdown -----*/
/* the base's countdown: five cells in a row, the seconds on the orange */
.cd-cells {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}
.cd-cell {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 24px 22px 22px;
  background: rgba(255, 255, 255, 0.05);
}
.cd-cell span {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.cd-cell b {
  color: #FFFFFF;
  font-size: clamp(40px, 4vw, 62px);
  font-weight: 600;
  line-height: 1;
}
.cd-cell.is-orange {
  background: var(--rv-orange);
}
.cd-cell.is-orange span,
.cd-cell.is-orange b {
  color: var(--rv-night);
}
.cd-cell.is-orange .rv-tick::before {
  background: var(--rv-night);
}
.rv-countdown p b {
  color: #FFFFFF;
  font-weight: 600;
}

/*======================
10. Home Three
========================*/
/*----- 10.1 Light Hero -----*/
/* the base's workshop hero: a light photograph, the copy on the right over a white wash, the numbers below it */
.rv-hero.is-light {
  background: var(--rv-grey);
}
.hero-three .swiper-slide {
  min-height: max(640px, calc(100vh - 132px));
  padding: 110px 0 120px;
}
.hero-three .swiper-slide::after {
  background: linear-gradient(270deg, rgba(243, 243, 243, 0.96) 0%, rgba(243, 243, 243, 0.86) 38%, rgba(243, 243, 243, 0) 66%);
}
[data-theme="dark"] .hero-three .swiper-slide::after {
  background: linear-gradient(270deg, rgba(18, 18, 18, 0.96) 0%, rgba(18, 18, 18, 0.86) 38%, rgba(18, 18, 18, 0) 66%);
}
.hero-three .hero-copy {
  align-items: flex-start;
  max-width: 560px;
  margin-left: auto;
  text-align: left;
}
.hero-three .hero-copy .rv-eyebrow,
.hero-three .hero-title {
  color: var(--rv-heading);
}
.hero-three .hero-title .line {
  font-size: clamp(40px, 4.4vw, 68px);
  line-height: 1.02;
  letter-spacing: -0.02em;
}
.hero-three .hero-lead {
  color: var(--rv-text);
}
.hero-three .hero-copy .rv-btn {
  --rv-btn-bg: var(--rv-surface);
  --rv-btn-ink: var(--rv-heading);
}
.hero-three .hero-arrows button,
.hero-three .hero-numbers button {
  color: var(--rv-heading);
}
.hero-three .hero-numbers button {
  opacity: 0.6;
}
.hero-three .hero-numbers button.is-on {
  opacity: 1;
}

/*----- 10.2 Headlights -----*/
/* Home 03's scroll moment: a night band; as it enters, the daytime running light comes on with a flicker, then the
   main beam blazes and settles (the light layers are screened over the night photograph) */
.rv-headlights {
  position: relative;
  isolation: isolate;
  overflow: clip;
  min-height: 680px;
  display: flex;
  align-items: center;
}
.hl-stage {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: -1;
  width: 74%;
}
.hl-stage img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 40% 40%;
}
.hl-drl,
.hl-beam {
  mix-blend-mode: screen;
}
.rv-headlights.is-off .hl-drl,
.rv-headlights.is-off .hl-beam {
  opacity: 0;
}
.hl-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #0A0A0A 0%, rgba(10, 10, 10, 0.6) 22%, rgba(10, 10, 10, 0) 46%);
}
.hl-copy {
  max-width: 470px;
  padding: 110px 0;
}
.hl-copy h2 {
  margin-bottom: 20px;
  font-size: clamp(48px, 5.6vw, 90px);
  line-height: 0.96;
}
.hl-rows {
  margin: 10px 0 34px;
}

/*----- 10.3 Card Rail -----*/
.rail-wrap {
  padding-left: max(12px, calc((100vw - 1320px) / 2 + 12px));
  overflow: clip;
}
.rv-rail .svc-card {
  padding-bottom: 6px;
}

/*----- 10.4 Label Band -----*/
/* the base's photo with four service labels along its foot, each with its plus square */
.rv-label-band {
  min-height: 560px;
  display: flex;
  align-items: flex-end;
}
.rv-label-band::after {
  background: linear-gradient(0deg, rgba(10, 10, 10, 0.86) 0%, rgba(10, 10, 10, 0.3) 45%, rgba(10, 10, 10, 0.05) 100%);
}
.lb-items {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  padding: 0 clamp(16px, 3vw, 46px) 54px;
}
.lb-items li {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 18px;
}
.lb-name {
  max-width: 220px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.rv-square-btn.is-sm {
  width: 46px;
  height: 46px;
  font-size: 13px;
}

/*----- 10.5 Battery Ring -----*/
/* the base's centre piece with four features round it: here the battery's state of health as a ring */
.ring-grid {
  display: grid;
  grid-template-columns: 1fr minmax(300px, 400px) 1fr;
  align-items: center;
  gap: 50px;
}
.ring-side {
  display: flex;
  flex-direction: column;
  gap: 60px;
}
.ring-side:first-child {
  text-align: right;
}
.ring-feature i {
  margin-bottom: 16px;
  color: var(--rv-heading);
  font-size: 24px;
}
.ring-feature h3 {
  margin-bottom: 10px;
}
.ring-feature p {
  margin: 0;
  font-size: 15.5px;
}
.ring-centre {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.soh-ring {
  --soh: 0;
  position: relative;
  width: min(340px, 78vw);
  aspect-ratio: 1 / 1;
  background:
    conic-gradient(var(--rv-orange) calc(var(--soh) * 1%), var(--rv-line) 0);
  border-radius: 50%;
}
.soh-ring::before {
  content: "";
  position: absolute;
  inset: 14px;
  border-radius: 50%;
  background: var(--rv-bg);
}
.soh-face {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.soh-face b {
  color: var(--rv-heading);
  font-size: clamp(54px, 5vw, 76px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.03em;
}
.soh-face b small {
  font-size: 0.45em;
  letter-spacing: 0;
}
.soh-face > span {
  margin-top: 8px;
  color: var(--rv-text);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.ring-note {
  max-width: 330px;
  margin: 26px 0 0;
  font-size: 15px;
  text-align: center;
}

/*----- 10.6 Check Start & Offers -----*/
.rv-check-start p b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.check-start .rv-btn {
  margin-top: 8px;
}
.check-start .rv-input,
.check-start .rv-select .select-button {
  background: var(--rv-surface);
}
/* the base's check-up offers: a photograph on top, the label, the price and the rows */
.offer-card {
  position: relative;
  height: 100%;
  background: var(--rv-surface);
}
.offer-card .oc-img {
  display: block;
  aspect-ratio: 640 / 278;
  overflow: hidden;
}
.offer-card .oc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s var(--rv-ease);
}
.offer-card:hover .oc-img img {
  transform: scale(1.05);
}
.oc-body {
  padding: 30px 28px 30px;
}
.oc-price {
  margin: 0 0 18px;
  color: var(--rv-heading);
  font-size: 34px;
  font-weight: 600;
  line-height: 1;
}
.offer-card .rv-rows {
  margin-bottom: 24px;
}
.offer-card .rv-rows li {
  padding: 9px 0;
  font-size: 14.5px;
}
.offer-card .rv-rows li > b {
  font-size: 13px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.offer-card .wrap-chip {
  top: 14px;
  right: 14px;
}
.size-tabs button {
  background: var(--rv-surface);
}

/*======================
11. Inner Pages
========================*/
/*----- 11.1 Build Details -----*/
.bd-hero img {
  width: 100%;
  aspect-ratio: 21 / 9;
  object-fit: cover;
}
.bd-main {
  margin-top: -90px;
}
.bd-specs {
  position: relative;
  z-index: 2;
}
.bd-specs h2 {
  margin-bottom: 12px;
}
.bd-specs .rv-rows {
  margin-bottom: 26px;
}
.bd-main .col-lg-8 {
  padding-top: 130px;
}
.bd-main h2 {
  margin-bottom: 22px;
}
.bd-steps {
  margin-top: 30px;
}
.process-step.is-light {
  background: var(--rv-grey);
}
.bd-gallery {
  margin-top: 70px;
}
.bd-gallery a {
  display: block;
}
.bd-gallery img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 0.8s var(--rv-ease);
}
.bd-gallery a:hover img {
  transform: scale(1.05);
}
.bd-nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 20px;
  margin-top: 70px;
  padding-top: 34px;
  border-top: 1px solid var(--rv-line);
}
.bd-nav a {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 16px;
  font-weight: 600;
  text-transform: uppercase;
}
.bd-nav a span {
  display: flex;
  flex-direction: column;
}
.bd-nav small {
  color: var(--rv-muted);
  font-size: 11.5px;
  letter-spacing: 0.08em;
}
.bd-nav .bd-next {
  justify-self: end;
  text-align: right;
}
.bd-nav .bd-all {
  justify-content: center;
  width: 54px;
  height: 54px;
  background: var(--rv-grey);
}
.bd-nav a:hover {
  color: var(--rv-accent-text);
}

/*----- 11.2 About -----*/
.story-photos {
  position: relative;
  padding-bottom: 90px;
}
.sp-main img {
  width: 85%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.sp-small {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 52%;
  border: 8px solid var(--rv-bg);
}
.sp-small img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.story-ghost {
  margin-bottom: -40px;
  font-size: clamp(80px, 9vw, 150px);
}
.rv-story h2 {
  margin-bottom: 22px;
}
.story-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 30px;
  margin-top: 34px;
}
.rv-facts {
  padding: 64px 0;
}
.facts-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.facts-strip li {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 0 30px;
  border-left: 2px solid var(--rv-orange);
}
.facts-strip b {
  color: #FFFFFF;
  font-size: clamp(36px, 3.4vw, 54px);
  font-weight: 600;
  line-height: 1;
}
.facts-strip span {
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bay-card {
  height: 100%;
  background: var(--rv-surface);
}
.bay-card .bay-img {
  display: block;
  aspect-ratio: 4 / 3;
}
.bay-card .bay-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bay-body {
  padding: 26px 24px 28px;
}
.bay-body h3 {
  margin-bottom: 10px;
}
.bay-body p {
  margin-bottom: 20px;
  font-size: 15px;
}
.bay-body .bay-head {
  color: var(--rv-heading);
}
.bay-card .wrap-chip {
  top: 14px;
  right: 14px;
}
.voice {
  height: 100%;
  margin: 0;
  padding: 40px 40px 36px;
  background: rgba(255, 255, 255, 0.05);
}
.voice blockquote {
  margin: 18px 0 26px;
}
.voice blockquote p {
  color: #FFFFFF;
  font-size: 19px;
  line-height: 1.6;
}
.voice figcaption {
  display: flex;
  align-items: center;
  gap: 16px;
}
.voice figcaption span {
  display: flex;
  flex-direction: column;
}
.voice figcaption b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.voice figcaption small {
  font-size: 14px;
}

/*----- 11.3 Crew -----*/
.team-card {
  position: relative;
  height: 100%;
  background: var(--rv-grey);
}
.team-card .tc-img {
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
}
.team-card .tc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  transition: transform 0.8s var(--rv-ease);
  transform-origin: center top;
}
.team-card:hover .tc-img img {
  transform: scale(1.05);
}
.tc-body {
  padding: 26px 26px 28px;
}
.tc-body h3 a:hover {
  color: var(--rv-accent-text);
}
.tc-role {
  display: flex;
  margin: 8px 0 14px;
  color: var(--rv-text);
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.tc-body .rv-rows {
  margin-bottom: 18px;
}
.tc-body .rv-rows li {
  padding: 8px 0;
  font-size: 14.5px;
}
.rv-social.is-sm a {
  width: 34px;
  height: 34px;
  background: var(--rv-surface);
}
.team-card .wrap-chip {
  top: 14px;
  right: 14px;
}
.rv-crew-teaser .team-card {
  background: var(--rv-surface);
  box-shadow: 0 0 0 1px var(--rv-line);
}
.rv-bg-grey .rv-crew-teaser .team-card {
  box-shadow: none;
}
.profile-photo img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center top;
}
.rv-profile h2 {
  margin-bottom: 20px;
}
.profile-rows {
  margin: 28px 0;
}
.profile-bars {
  margin-bottom: 34px;
}
.profile-bars h3 {
  margin-bottom: 16px;
}
.pb-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  margin-bottom: 14px;
  font-size: 15px;
}
.pb-row b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.pb-row .rv-meter {
  grid-column: 1 / -1;
}

/*----- 11.4 FAQ & Contact -----*/
.faq-side {
  position: sticky;
  top: 110px;
}
.faq-group + .faq-group {
  margin-top: 56px;
}
.faq-group-title {
  margin-bottom: 8px;
}
.info-card {
  position: relative;
  height: 100%;
  padding: 36px 30px 32px;
  background: var(--rv-grey);
}
.info-card > i {
  margin-bottom: 18px;
  color: var(--rv-heading);
  font-size: 24px;
}
.info-card h2 {
  margin-bottom: 10px;
}
.info-card p {
  margin: 0;
  color: var(--rv-heading);
}
.info-card .wrap-chip {
  top: 14px;
  right: 14px;
}
.rv-contact h2 {
  margin-bottom: 18px;
}
.rv-contact .hours-list {
  margin-top: 26px;
}
.contact-form .rv-btn {
  margin-top: 6px;
}
.rv-map-wrap {
  line-height: 0;
}
.rv-map {
  display: block;
  width: 100%;
  height: 480px;
  border: 0;
  filter: grayscale(1) contrast(1.05);
}
[data-theme="dark"] .rv-map {
  filter: grayscale(1) invert(0.9) contrast(0.9);
}

/*======================
12. Studio Pages
========================*/
/*----- 12.1 Services & Details -----*/
.svc-cta {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  min-height: 420px;
  padding: 50px 40px;
  overflow: hidden;
  isolation: isolate;
}
.svc-cta-ghost {
  position: absolute;
  left: 30px;
  top: 30px;
  z-index: -1;
  font-size: 120px;
}
.svc-cta h3 {
  margin-bottom: 14px;
}
.svc-cta p {
  margin-bottom: 26px;
}
.svc-cta .rv-btn {
  align-self: flex-start;
}
.rv-process {
  position: relative;
  isolation: isolate;
  overflow: clip;
}
.process-step {
  position: relative;
  height: 100%;
  padding: 90px 30px 34px;
  background: rgba(255, 255, 255, 0.04);
  isolation: isolate;
}
.ps-ghost {
  position: absolute;
  left: 26px;
  top: 18px;
  z-index: -1;
  font-size: 84px;
}
.process-step h3 {
  margin-bottom: 12px;
}
.process-step p {
  margin: 0;
  font-size: 15.5px;
}
.prices-photo img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
.prices-rows {
  margin: 24px 0 34px;
}
.detail-body .detail-hero {
  margin-bottom: 44px;
}
.detail-body .detail-hero img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.detail-body h2 {
  margin-bottom: 22px;
}
.detail-sub {
  margin: 56px 0 26px;
}
.film-spec {
  height: 100%;
  padding: 26px 24px;
  background: var(--rv-grey);
}
.film-spec h3 {
  margin-bottom: 10px;
}
.film-spec .rv-rows li {
  padding: 9px 0;
  font-size: 14.5px;
}
.detail-pair {
  margin-top: 40px;
}
.detail-pair img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.acc-title {
  margin: 0;
  font-size: inherit;
}
.widget-cats a i {
  color: var(--rv-accent-text);
  font-size: 11px;
}
.widget-cats a.is-current {
  color: var(--rv-accent-text);
}
/* tables: secondary columns step aside on narrow screens, never a sideways scroll */
.rv-table-wrap {
  background: var(--rv-surface);
  box-shadow: 0 0 0 1px var(--rv-line);
}
.rv-table {
  width: 100%;
  border-collapse: collapse;
}
.rv-table th,
.rv-table td {
  padding: 16px 18px;
  border-bottom: 1px solid var(--rv-line);
  text-align: left;
  vertical-align: middle;
}
.rv-table thead th {
  background: var(--rv-night);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.rv-table tbody th {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 14.5px;
  font-weight: 600;
  text-transform: uppercase;
}
.rv-table tbody th small,
.rv-table td small {
  display: block;
  color: var(--rv-text);
  font-family: var(--rv-ff-body);
  font-size: 13.5px;
  font-weight: 400;
  text-transform: none;
}
.rv-table td {
  color: var(--rv-heading);
  font-size: 15px;
}
.rv-table td b {
  font-size: 19px;
  font-weight: 600;
}
.table-note {
  margin: 14px 0 0;
  font-size: 14.5px;
  color: var(--rv-muted);
}
.row-pick {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-align: left;
  text-transform: uppercase;
}
.row-pick:hover {
  color: var(--rv-accent-text);
}
.stage-table tbody tr {
  cursor: pointer;
  transition: background-color 0.3s ease;
}
.stage-table tbody tr:hover,
.stage-table tbody tr.is-picked {
  background: var(--rv-grey);
}
.stage-table tbody tr.is-picked th {
  box-shadow: inset 4px 0 0 var(--rv-orange);
}

/*----- 12.2 Quote Form -----*/
/* the quote and the detail builder: numbered blocks (a ghost number before each legend), choice cards, swatches */
.q-block {
  margin: 0 0 48px;
  padding: 0;
  border: 0;
}
/* Bootstrap floats a legend; a block after a hidden note would then sit beside it */
.q-legend {
  position: relative;
  float: none;
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 22px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 22px;
  font-weight: 600;
  text-transform: uppercase;
}
.q-legend .rv-ghost {
  font-size: 46px;
  -webkit-text-stroke-color: var(--rv-orange);
}
.choice-group {
  margin: 20px 0 12px;
  color: var(--rv-muted);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.choice-card.is-size b {
  font-size: 13px;
}
.choice-card.is-disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.q-note {
  margin: -8px 0 18px;
  color: var(--rv-muted);
  font-size: 15px;
}
[data-colour-field].is-off .swatch-grid {
  opacity: 0.35;
  pointer-events: none;
}
.swatch-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  transition: opacity 0.4s ease;
}
.swatch-pick {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px 10px 10px;
  background: var(--rv-grey);
  cursor: pointer;
  transition: box-shadow 0.3s ease, background-color 0.3s ease;
}
.swatch-pick input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.sp-chip {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  background: var(--rv-wrap);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12);
}
.w-aurora-shift .sp-chip {
  background: linear-gradient(135deg, #5B2A86, #13897F);
}
.sp-name {
  display: flex;
  flex-direction: column;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.25;
  text-transform: uppercase;
}
.sp-name small {
  color: var(--rv-muted);
  font-family: var(--rv-ff-body);
  font-size: 12.5px;
  font-weight: 400;
  text-transform: none;
}
.swatch-pick:hover {
  box-shadow: inset 0 0 0 1px var(--rv-line-2);
}
.swatch-pick:focus-within {
  outline: 2px solid var(--rv-orange);
  outline-offset: 2px;
}
.swatch-pick.is-checked {
  background: var(--rv-surface);
  box-shadow: inset 0 0 0 2px var(--rv-orange);
}
.quote-side {
  position: sticky;
  top: 110px;
}
.wm-stage.is-preview {
  margin: 0 0 18px;
}
.quote-sum h2 {
  margin-bottom: 14px;
}
.quote-sum .rv-rows li {
  padding: 10px 0;
  font-size: 15px;
}
.quote-sum .rv-rows li > b {
  font-size: 14px;
}
.sum-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  margin: 18px 0 8px;
  padding: 14px 0;
  border-top: 2px solid var(--rv-orange);
}
.sum-total span {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.sum-total b {
  color: var(--rv-heading);
  font-size: 36px;
  font-weight: 600;
  line-height: 1;
}
.q-facts {
  margin-bottom: 22px;
}
.hold-form .rv-input {
  height: 50px;
}
.hold-form .rv-btns {
  margin-top: 16px;
}
.sum-hint {
  margin: 0 0 20px;
  font-size: 15px;
}
.sum-hint b {
  color: var(--rv-heading);
  font-weight: 600;
}

/*----- 12.3 Film Library -----*/
.films-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 44px;
}
.films-search {
  display: flex;
  gap: 10px;
}
.films-search .rv-select {
  width: 210px;
}
.films-search .widget-search {
  width: 260px;
}
.films-search .widget-search input {
  height: 46px;
  background: var(--rv-grey);
}
.films-search .widget-search button {
  height: 46px;
}
.film-card {
  height: 100%;
  background: var(--rv-grey);
}
/* the swatch: the film's colour with the light of its finish (a sheen for gloss, a softer one for satin) */
.fc-swatch {
  display: block;
  aspect-ratio: 4 / 3;
  background: var(--rv-wrap);
}
.fc-swatch.is-gloss {
  background:
    linear-gradient(118deg, rgba(255, 255, 255, 0) 30%, rgba(255, 255, 255, 0.36) 46%, rgba(255, 255, 255, 0) 60%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(0, 0, 0, 0.18)),
    var(--rv-wrap);
}
.fc-swatch.is-satin {
  background:
    linear-gradient(118deg, rgba(255, 255, 255, 0) 24%, rgba(255, 255, 255, 0.16) 48%, rgba(255, 255, 255, 0) 70%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(0, 0, 0, 0.14)),
    var(--rv-wrap);
}
.fc-swatch.is-matte {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(0, 0, 0, 0.1)), var(--rv-wrap);
}
.fc-swatch.is-shift {
  background:
    linear-gradient(118deg, rgba(255, 255, 255, 0) 30%, rgba(255, 255, 255, 0.3) 46%, rgba(255, 255, 255, 0) 60%),
    linear-gradient(135deg, #5B2A86, #13897F);
}
.fc-body {
  padding: 22px 22px 24px;
}
.fc-body h3 {
  margin-bottom: 8px;
}
.fc-body .rv-rows {
  margin-bottom: 16px;
}
.fc-body .rv-rows li {
  padding: 8px 0;
  font-size: 14px;
}
.fc-body .rv-rows li > b {
  font-size: 13px;
}
.rv-cta-band {
  padding: 90px 0;
}
.cta-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
}
.cta-title {
  margin: 0 0 8px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}

/*----- 12.4 Tuning Page -----*/
.model-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 30px;
}
.model-strip li {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 18px 20px;
  background: rgba(255, 255, 255, 0.05);
}
.model-strip span {
  color: var(--rv-text);
  font-size: 13.5px;
}
.model-strip b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 15px;
  font-weight: 600;
  text-transform: uppercase;
}

/*----- 12.5 Battery Estimator -----*/
.est-form .rv-field label b {
  color: var(--rv-accent-text);
}
.est-set {
  margin: 0;
  padding: 0;
  border: 0;
}
.est-set legend {
  float: none;
}
/* a segmented control: three tonal options, the chosen one orange */
.seg {
  display: flex;
  gap: 6px;
}
.seg label {
  position: relative;
  flex: 1;
  cursor: pointer;
}
.seg input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.seg span {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.seg input:checked + span {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.seg input:focus-visible + span {
  outline: 2px solid var(--rv-orange);
  outline-offset: 2px;
}
.est-result {
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.est-result .soh-ring {
  align-self: center;
  width: min(250px, 70vw);
}
.est-result .soh-ring::before {
  background: var(--rv-band);
}
.est-band {
  margin: 16px 0 10px;
  font-size: 15px;
  text-align: center;
}
.est-band b {
  color: #FFFFFF;
  font-weight: 600;
}
.est-result .rv-rows li {
  padding: 10px 0;
  font-size: 15px;
}
.est-result .rv-rows li.is-ok > b {
  color: var(--rv-ok-text);
}
.est-sub {
  margin: 24px 0 12px;
}
.est-parts {
  margin-bottom: 26px;
}
.est-parts li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 14px;
  padding: 8px 0;
  font-size: 14.5px;
}
.est-parts li b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.est-parts .rv-meter {
  grid-column: 1 / -1;
  background: rgba(255, 255, 255, 0.12);
}
.est-parts .rv-meter span {
  transition: width 0.6s var(--rv-ease);
}
.rv-ev-notes img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.rv-ev-notes h2 {
  margin-bottom: 26px;
}

/*----- 12.6 Booking Wizard -----*/
.wz-steps {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  margin-bottom: 40px;
}
.wz-steps button {
  display: flex;
  flex-direction: column;
  gap: 2px;
  width: 100%;
  padding: 12px 14px;
  border-top: 3px solid var(--rv-line-2);
  background: var(--rv-grey);
  color: var(--rv-muted);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-align: left;
  text-transform: uppercase;
  cursor: default;
}
.wz-steps button b {
  font-size: 18px;
}
.wz-steps li.is-done button {
  border-top-color: var(--rv-heading);
  color: var(--rv-heading);
  cursor: pointer;
}
.wz-steps li.is-active button {
  border-top-color: var(--rv-orange);
  background: var(--rv-surface);
  color: var(--rv-heading);
  box-shadow: 0 0 0 1px var(--rv-line);
}
.wz-step {
  display: none;
  margin: 0;
  padding: 0;
  border: 0;
}
.wz-step.is-active {
  display: block;
}
.wz-title {
  float: none;
  margin-bottom: 24px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.wz-note {
  font-size: 15.5px;
}
.wz-note b {
  color: var(--rv-heading);
  font-weight: 600;
}
.day-chips,
.slot-chips {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 8px;
  margin-bottom: 26px;
}
.slot-chips {
  grid-template-columns: repeat(6, 1fr);
}
.day-chip,
.slot-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 12px 6px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  line-height: 1.15;
  transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
}
.day-chip small,
.slot-chip small {
  color: var(--rv-muted);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.day-chip b {
  font-size: 22px;
  font-weight: 600;
}
.slot-chip b {
  font-size: 15px;
  font-weight: 600;
}
.day-chip em {
  margin-top: 4px;
  color: var(--rv-accent-text);
  font-size: 11.5px;
  font-style: normal;
  font-weight: 600;
}
.day-chip:hover,
.slot-chip:hover {
  box-shadow: inset 0 0 0 1px var(--rv-line-2);
}
.day-chip.is-on,
.slot-chip.is-on {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.day-chip.is-on small,
.day-chip.is-on em,
.slot-chip.is-on small {
  color: var(--rv-night);
}
.day-chip[disabled],
.slot-chip[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}
.wz-consent {
  margin-top: 22px;
}
.wz-nav {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 30px;
  padding-top: 26px;
  border-top: 1px solid var(--rv-line);
}
.wz-done {
  padding: 30px 0 10px;
  text-align: center;
}
.wz-done > i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 70px;
  height: 70px;
  margin-bottom: 20px;
  background: var(--rv-orange);
  color: var(--rv-night);
  font-size: 26px;
}
.wz-done h2 {
  margin-bottom: 12px;
}
.wz-done b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.big-line {
  margin: 0 0 10px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 30px;
  font-weight: 600;
  line-height: 1.1;
}

/*----- 12.7 Detail Builder & Plans -----*/
.detail-sum {
  position: sticky;
  top: 110px;
}
.pc-card .rv-rows li {
  padding: 10px 0;
  font-size: 15px;
}
.pc-totals {
  margin-top: 12px;
}
.rv-plan-calc .rv-tabs {
  margin-top: 6px;
}
.rv-plan-calc .rv-tabs button {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}
.rv-plan-calc .rv-tabs button.is-active {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.rv-plan-calc .rv-field label {
  color: #FFFFFF;
}
.rv-plan-calc .rv-select .select-button {
  background: rgba(255, 255, 255, 0.08);
  border-bottom-color: rgba(255, 255, 255, 0.3);
  color: #FFFFFF;
}

/*======================
13. Shop
========================*/
/*----- 13.1 Product Cards -----*/
/* the base's shop: packshots on a light grey plate, the name in capitals, the price; here the fitted price too */
.product-card {
  position: relative;
  height: 100%;
  background: var(--rv-surface);
}
.pc-media {
  position: relative;
  overflow: hidden;
  background: #F2F2F2;
}
.pc-img {
  display: block;
  aspect-ratio: 1 / 1;
}
.pc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s var(--rv-ease);
}
.product-card:hover .pc-img img {
  transform: scale(1.05);
}
.pc-badge {
  position: absolute;
  left: 14px;
  top: 14px;
  z-index: 3;
  padding: 6px 12px;
  background: var(--rv-night);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.pc-badge.is-sale {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.pc-wish {
  position: absolute;
  right: 14px;
  bottom: 70px;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  background: #FFFFFF;
  color: var(--rv-night);
  font-size: 15px;
  opacity: 0;
  transform: translateX(12px);
  transition: opacity 0.4s ease, transform 0.4s var(--rv-ease), background-color 0.3s ease;
}
.pc-wish.is-on {
  color: var(--rv-orange-ink);
}
.pc-add {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  height: 52px;
  background: var(--rv-night);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transform: translateY(100%);
  transition: transform 0.45s var(--rv-ease), background-color 0.3s ease, color 0.3s ease;
}
.pc-add:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.product-card:hover .pc-add,
.product-card:focus-within .pc-add {
  transform: none;
}
.product-card:hover .pc-wish,
.product-card:focus-within .pc-wish,
.pc-wish.is-on {
  opacity: 1;
  transform: none;
}
.pc-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 20px 4px 6px;
}
.pc-cat {
  color: var(--rv-muted);
  font-family: var(--rv-ff-display);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.pc-body h3 a:hover {
  color: var(--rv-accent-text);
}
.pc-price {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 18px;
  font-weight: 600;
}
.pc-price del {
  margin-left: 8px;
  color: var(--rv-muted);
  font-size: 14px;
  font-weight: 400;
}
.pc-fit {
  color: var(--rv-text);
  font-size: 14px;
}
.product-card .wrap-chip {
  top: 14px;
  right: 14px;
}
.rv-bg-grey .product-card {
  background: transparent;
}
/* touch screens have no hover: the bag button stays */

/*----- 13.2 Shop Grid -----*/
.shop-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 34px;
  padding: 14px 16px 14px 22px;
  background: var(--rv-grey);
}
.shop-toolbar p {
  margin: 0;
}
.shop-toolbar p b {
  color: var(--rv-heading);
}
.shop-fit {
  margin-left: auto;
}
.shop-sort {
  width: 220px;
}
.shop-sort .select-button {
  background: var(--rv-surface);
}
.shop-side {
  position: sticky;
  top: 110px;
}

/*----- 13.3 Product Page -----*/
.pd-main {
  background: #F2F2F2;
}
.pd-main img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.pd-thumbs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-top: 10px;
}
.pd-thumbs button {
  background: #F2F2F2;
  opacity: 0.6;
  transition: opacity 0.3s ease, box-shadow 0.3s ease;
}
.pd-thumbs button.is-active,
.pd-thumbs button:hover {
  opacity: 1;
  box-shadow: inset 0 -3px 0 var(--rv-orange);
}
.pd-thumbs img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.pd-info h2 {
  margin: 10px 0 14px;
}
.pd-rating {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  font-size: 15px;
}
.pd-price {
  margin-bottom: 18px;
  color: var(--rv-heading);
  font-size: 40px;
  font-weight: 600;
}
.pd-fit {
  margin: 24px 0;
  padding: 0;
  border: 0;
}
.pd-fit legend {
  float: none;
}
.pd-fit .seg span {
  padding: 0 10px;
  text-align: center;
}
.pd-fit-note {
  margin: 10px 0 0;
  color: var(--rv-muted);
  font-size: 15px;
}
.pd-buy {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 28px;
}
.pd-buy .rv-btn b {
  font-weight: 700;
}
.rv-qty {
  display: inline-flex;
  align-items: center;
  height: 56px;
  background: var(--rv-grey);
}
.rv-qty button {
  width: 44px;
  height: 100%;
  color: var(--rv-heading);
  font-size: 12px;
}
.rv-qty button:hover {
  color: var(--rv-accent-text);
}
.rv-qty input {
  width: 46px;
  height: 100%;
  border: 0;
  background: transparent;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 17px;
  font-weight: 600;
  text-align: center;
  -moz-appearance: textfield;
}
.rv-qty input::-webkit-outer-spin-button,
.rv-qty input::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}
.rv-qty.is-sm {
  height: 44px;
}
.rv-qty.is-sm button {
  width: 36px;
}
.rv-qty.is-sm input {
  width: 36px;
}
.pd-wish {
  width: 56px;
  height: 56px;
  --hd-icon: var(--rv-grey);
  --hd-ink: var(--rv-heading);
}
.pd-wish.is-on {
  color: var(--rv-orange-ink);
}
.pd-meta li {
  padding: 10px 0;
  font-size: 15px;
}
.pd-tabs {
  margin-top: 70px;
}
.pd-panel {
  padding: 34px 0 0;
}
.pd-review {
  display: flex;
  gap: 18px;
}
.pd-review b {
  display: block;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}

/*----- 13.4 Cart & Checkout -----*/
.cart-head {
  margin-bottom: 20px;
}
.bag-line {
  display: grid;
  grid-template-columns: 96px 1fr auto auto 40px;
  align-items: center;
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid var(--rv-line);
}
.bag-lines.is-wish .bag-line {
  grid-template-columns: 96px 1fr auto 40px;
}
.bl-img img {
  width: 96px;
  height: 96px;
  object-fit: cover;
  background: #F2F2F2;
}
.bl-body {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.bl-cat {
  color: var(--rv-muted);
  font-size: 13.5px;
}
.bl-body h3 a:hover {
  color: var(--rv-accent-text);
}
.bl-price {
  color: var(--rv-text);
  font-size: 15px;
}
.bl-fit {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  color: var(--rv-heading);
  font-size: 14.5px;
  cursor: pointer;
}
.bl-fit input {
  accent-color: var(--rv-orange);
}
.bl-total {
  min-width: 100px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-size: 18px;
  font-weight: 600;
  text-align: right;
}
.bl-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: var(--rv-grey);
  color: var(--rv-heading);
  transition: background-color 0.3s ease, color 0.3s ease;
}
.bl-remove:hover {
  background: var(--rv-orange);
  color: var(--rv-night);
}
.cart-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-top: 30px;
}
.coupon-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}
.coupon-form .rv-input {
  width: 220px;
  height: 46px;
}
.coupon-form .form-status {
  width: 100%;
  margin-top: 4px;
}
.order-summary h2,
.order-summary h3 {
  margin-bottom: 18px;
}
.ship-meter {
  margin-bottom: 10px;
  background: rgba(255, 255, 255, 0.14);
}
.ship-note {
  font-size: 15px;
}
.ship-note b {
  color: #FFFFFF;
}
.order-summary .rv-rows li {
  padding: 10px 0;
  font-size: 15px;
}
.cart-empty,
.order-done {
  max-width: 620px;
  margin: 0 auto;
  text-align: center;
}
.cart-empty > i,
.order-done > i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 70px;
  height: 70px;
  margin-bottom: 18px;
  background: var(--rv-orange);
  color: var(--rv-night);
  font-size: 24px;
}
.order-done b {
  color: var(--rv-heading);
}
.ck-sub {
  margin: 40px 0 18px;
}
.ck-terms {
  margin: 30px 0 24px;
}
.order-lines li {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rv-line);
}
.ol-img {
  position: relative;
}
.ol-img img {
  width: 64px;
  height: 64px;
  object-fit: cover;
  background: #F2F2F2;
}
.ol-img b {
  position: absolute;
  right: -6px;
  top: -6px;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  background: var(--rv-orange);
  color: var(--rv-night);
  font-family: var(--rv-ff-display);
  font-size: 11px;
  line-height: 20px;
  text-align: center;
}
.ol-name {
  display: flex;
  flex-direction: column;
  color: #FFFFFF;
  font-size: 15px;
}
.ol-name small {
  color: var(--rv-orange);
  font-size: 13px;
}
.order-lines li > b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
}

/*======================
14. Journal, Account & Utility Pages
========================*/
/*----- 14.1 Journal -----*/
.post-card + .post-card {
  margin-top: 70px;
}
.post-media {
  position: relative;
  display: block;
  overflow: hidden;
  margin-bottom: 28px;
}
.post-media img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 0.8s var(--rv-ease);
}
a.post-media:hover img {
  transform: scale(1.04);
}
.post-media.is-video,
.post-media.is-audio {
  display: flex;
  align-items: center;
  justify-content: center;
}
.post-media.is-video .rv-play {
  position: absolute;
}
.post-media.is-gallery .rv-square-btn {
  position: absolute;
  bottom: 20px;
  z-index: 3;
}
.post-media.is-gallery .mini-prev {
  right: 76px;
}
.post-media.is-gallery .mini-next {
  right: 20px;
}
.audio-bar {
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 20px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  background: rgba(10, 10, 10, 0.82);
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.audio-bar i {
  color: var(--rv-orange);
}
.post-quote {
  position: relative;
  margin: 0 0 28px;
  padding: 50px 50px 46px;
}
.post-quote i {
  margin-bottom: 18px;
  color: var(--rv-orange);
  font-size: 28px;
}
.post-quote p {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: clamp(20px, 2vw, 28px);
  font-weight: 600;
  line-height: 1.3;
  text-transform: uppercase;
}
.post-quote cite {
  font-style: normal;
}
.post-link {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-bottom: 28px;
  padding: 36px 40px;
  color: var(--rv-night);
  font-family: var(--rv-ff-display);
  font-size: 20px;
  font-weight: 600;
  text-transform: uppercase;
}
.post-link span {
  display: flex;
  flex-direction: column;
}
.post-link b {
  font-size: 13px;
  letter-spacing: 0.06em;
}
.post-link:hover {
  color: var(--rv-night);
  background-color: var(--rv-orange-deep);
}
.post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 24px;
  margin-bottom: 14px;
  color: var(--rv-muted);
  font-size: 14.5px;
}
.post-meta li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.post-meta i {
  color: var(--rv-accent-text);
}
.post-face {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
}
.post-body h2 {
  margin-bottom: 14px;
}
.post-body h2 a:hover {
  color: var(--rv-accent-text);
}
.post-body p {
  margin-bottom: 26px;
}
.article-body > h2 {
  margin-bottom: 20px;
}
.article-body h3 {
  margin: 40px 0 16px;
}
.article-quote {
  margin: 36px 0;
  padding: 44px 46px;
  border-left: 4px solid var(--rv-orange);
}
.article-quote p {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 22px;
  font-weight: 600;
  line-height: 1.35;
  text-transform: uppercase;
}
.article-quote cite {
  font-style: normal;
}
.article-rows {
  margin: 10px 0 30px;
}
.article-pair {
  margin-bottom: 30px;
}
.article-pair img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.article-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin: 40px 0;
  padding: 22px 0;
  border-top: 1px solid var(--rv-line);
  border-bottom: 1px solid var(--rv-line);
}
.article-tags {
  margin: 0;
}
.article-tags b {
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.article-tags a {
  margin-left: 6px;
  color: var(--rv-accent-text);
}
.article-share {
  display: flex;
  align-items: center;
  gap: 18px;
}
.author-box {
  display: flex;
  gap: 26px;
  padding: 34px;
  background: var(--rv-grey);
}
.author-face {
  flex-shrink: 0;
  width: 92px;
  height: 92px;
  border-radius: 50%;
  object-fit: cover;
}
.author-box h3 {
  margin: 0 0 8px;
}
.post-nav {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin: 40px 0;
}
.post-nav a {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.post-nav a span {
  display: flex;
  flex-direction: column;
}
.post-nav small {
  color: var(--rv-muted);
  font-size: 11.5px;
  letter-spacing: 0.08em;
}
.post-nav .is-next {
  text-align: right;
}
.post-nav a:hover {
  color: var(--rv-accent-text);
}
.comments h3 {
  margin: 0 0 20px;
}
.comment {
  display: flex;
  gap: 18px;
  padding: 22px 0;
  border-bottom: 1px solid var(--rv-line);
}
.comment.is-reply {
  margin-left: 60px;
}
.comment b {
  display: block;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.comment small {
  color: var(--rv-muted);
  font-size: 13.5px;
}
.comment p {
  margin: 8px 0 6px;
}
.comment-form {
  margin-top: 46px;
}

/*----- 14.2 My Garage -----*/
.account-wrap {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 40px;
  align-items: start;
}
.account-side {
  position: sticky;
  top: 110px;
}
.acc-user {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 26px;
}
.acc-user b {
  display: block;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.acc-user small {
  font-size: 14px;
}
.acc-tabs {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 26px;
}
.acc-tabs button {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  color: rgba(255, 255, 255, 0.78);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-align: left;
  text-transform: uppercase;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.acc-tabs button i {
  width: 16px;
  color: var(--rv-orange);
}
.acc-tabs button:hover {
  color: #FFFFFF;
}
.acc-tabs button.is-active {
  background: rgba(255, 255, 255, 0.08);
  box-shadow: inset 3px 0 0 var(--rv-orange);
  color: #FFFFFF;
}
.acc-panel h2 {
  margin-bottom: 14px;
}
.acc-cards {
  margin: 26px 0 30px;
}
.acc-stat {
  padding: 26px 24px;
  background: var(--rv-grey);
}
.acc-stat b {
  display: block;
  color: var(--rv-heading);
  font-size: 42px;
  font-weight: 600;
  line-height: 1;
}
.acc-stat span {
  font-family: var(--rv-ff-display);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.garage-item {
  display: grid;
  grid-template-columns: 40px 1fr auto auto;
  align-items: center;
  gap: 16px;
  padding: 18px 0;
  border-bottom: 1px solid var(--rv-line);
}
.garage-item > i {
  color: var(--rv-accent-text);
  font-size: 18px;
}
.garage-item b {
  display: block;
  color: var(--rv-heading);
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.garage-item small {
  font-size: 14px;
}
.gi-total {
  font-size: 18px;
}
.order-table td:nth-child(3) {
  font-size: 14.5px;
}

/*----- 14.3 Sign In & Register -----*/
.rv-auth {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 760px;
}
.auth-photo {
  display: flex;
  align-items: flex-end;
  padding: 70px;
}
.auth-photo::after {
  background: linear-gradient(0deg, rgba(10, 10, 10, 0.86) 0%, rgba(10, 10, 10, 0.2) 70%);
}
.auth-photo-copy {
  position: relative;
  max-width: 520px;
}
.auth-ghost {
  margin-bottom: -26px;
  font-size: clamp(70px, 8vw, 130px);
}
.auth-line {
  margin: 0;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
  text-transform: uppercase;
}
.auth-form-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px 40px;
}
.auth-form {
  width: min(460px, 100%);
}
.auth-form h1 {
  margin-bottom: 10px;
}
.auth-form > p {
  margin-bottom: 30px;
}
.is-pass .pass-eye {
  position: absolute;
  right: 6px;
  top: 33px;
  width: 44px;
  height: 46px;
  color: var(--rv-accent-text);
}
.pass-meter {
  margin-top: 10px;
}
.pass-meter span {
  transition: width 0.4s ease;
}
.pass-hint {
  display: block;
  margin-top: 6px;
  color: var(--rv-muted);
  font-size: 13.5px;
}
.auth-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 24px;
}
.auth-terms {
  margin: 4px 0 24px;
}
.auth-alt {
  margin-top: 22px;
  font-size: 15.5px;
}
.auth-alt a {
  color: var(--rv-accent-text);
  font-weight: 600;
}

/*----- 14.4 Coming Soon & 404 -----*/
.rv-soon {
  display: flex;
  align-items: center;
  min-height: 100vh;
  padding: 80px 0;
  text-align: center;
}
.rv-soon .container {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.soon-logo img {
  height: 32px;
  width: auto;
  margin-bottom: 56px;
}
.soon-title {
  margin-bottom: 18px;
  color: #FFFFFF;
  font-size: clamp(56px, 9vw, 140px);
  line-height: 0.95;
}
.soon-lead {
  max-width: 560px;
  margin-bottom: 40px;
}
.soon-lead b {
  color: #FFFFFF;
  font-weight: 600;
}
.soon-cells {
  grid-template-columns: repeat(4, 1fr);
  width: min(720px, 100%);
  margin-bottom: 40px;
}
.soon-cells .cd-cell {
  align-items: center;
  background: rgba(255, 255, 255, 0.08);
}
.soon-cells .cd-cell.is-orange {
  background: var(--rv-orange);
}
.soon-form {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  width: min(560px, 100%);
}
.soon-form .rv-input {
  flex: 1;
  min-width: 220px;
  background: rgba(255, 255, 255, 0.1);
  border-bottom-color: rgba(255, 255, 255, 0.3);
  color: #FFFFFF;
}
.soon-form .rv-input::placeholder {
  color: rgba(255, 255, 255, 0.7);
}
.soon-form .form-status {
  width: 100%;
}
.soon-social {
  justify-content: center;
  margin-top: 40px;
}
.soon-social a {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}
.rv-error {
  position: relative;
  isolation: isolate;
  overflow: clip;
  display: flex;
  align-items: center;
  min-height: 720px;
  padding: 140px 0;
}
.error-ghost {
  margin-bottom: -10px;
  font-size: clamp(140px, 22vw, 340px);
  -webkit-text-stroke-color: rgba(255, 77, 36, 0.5);
}
.error-title {
  max-width: 820px;
  margin-bottom: 20px;
  font-size: clamp(38px, 5vw, 76px);
}
.rv-error p {
  max-width: 560px;
  margin-bottom: 36px;
}

/*======================
15. Subheader
========================*/
/* the base's page title: a light grey band, the trail in small capitals at its top, the title big and left,
   a small orange square at its foot; a giant outline word on the right and the track lines at its edges */
.rv-subheader {
  position: relative;
  isolation: isolate;
  overflow: clip;
  padding: 70px 0 96px;
  background: var(--rv-grey);
  --gl-1: #F3F3F3;
  --gl-alpha: 0.5;
}
[data-theme="dark"] .rv-subheader {
  --gl-1: #1A1A1A;
}
.rv-crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin-bottom: 64px;
  color: var(--rv-muted);
  font-family: var(--rv-ff-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.rv-crumbs a,
.rv-crumbs span {
  display: inline-flex;
  align-items: center;
  gap: 14px;
}
.rv-crumbs a::after {
  content: "";
  width: 2px;
  height: 11px;
  background: var(--rv-orange);
}
.rv-crumbs span {
  color: var(--rv-accent-text);
}
.sub-copy {
  position: relative;
  max-width: 900px;
}
.sub-copy h1 {
  font-size: clamp(42px, 5.2vw, 82px);
  line-height: 1;
}
.sub-copy .rv-lead {
  max-width: 560px;
  margin-top: 22px;
}
.sub-ghost {
  position: absolute;
  right: -1vw;
  bottom: -0.16em;
  z-index: -1;
  color: transparent;
  font-family: var(--rv-ff-display);
  font-size: clamp(110px, 15vw, 260px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.04em;
  text-transform: uppercase;
  -webkit-text-stroke: 1px var(--rv-ghost);
  white-space: nowrap;
  pointer-events: none;
}
.sub-dot {
  position: absolute;
  left: 50%;
  bottom: 30px;
  width: 7px;
  height: 7px;
  background: var(--rv-orange);
  transform: translateX(-50%);
}

/*======================
16. Footer
========================*/
/* the base's footer: the support band first (here the studio line, with the V mark running through it in its
   motion-trail echo), then the logo column and the link columns on coal, and the black bottom bar */
.rv-footer {
  position: relative;
  background: var(--rv-coal);
}
.footer-stage {
  position: relative;
  isolation: isolate;
  overflow: clip;
  padding: 92px 0;
  background: var(--rv-band);
  border-bottom: 2px solid #0E0E0E;
  --gl-1: #1E1E1E;
  --gl-alpha: 1;
}
.stage-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
}
.stage-copy {
  max-width: 760px;
}
.stage-phone {
  display: inline-block;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: clamp(34px, 3.6vw, 54px);
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.01em;
}
.stage-phone:hover {
  color: var(--rv-orange);
}
.stage-copy p {
  margin: 12px 0 0;
  font-size: 16px;
}
.footer-main {
  padding: 92px 0 80px;
}
.footer-word img {
  height: 28px;
  width: auto;
}
.footer-about p {
  max-width: 330px;
  margin: 26px 0 30px;
  font-size: 16px;
}
.footer-label {
  display: block;
  color: var(--rv-text);
  font-size: 15px;
}
.footer-phone {
  display: inline-block;
  margin: 2px 0 22px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 26px;
  font-weight: 600;
}
.footer-address {
  margin: 4px 0 20px;
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-style: normal;
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.footer-open {
  color: var(--rv-text);
  font-size: 15px;
}
.rv-footer .widget h2 {
  margin-bottom: 26px;
  color: #FFFFFF;
}
.footer-links li + li {
  margin-top: 12px;
}
.footer-links a {
  color: var(--rv-text);
  font-family: var(--rv-ff-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.footer-links a:hover {
  color: var(--rv-orange);
}
.footer-hours .rv-rows li {
  padding: 9px 0;
  font-size: 15px;
}
.footer-hours .rv-rows li > b {
  font-size: 14px;
}
.footer-note {
  margin: 16px 0 0;
  font-size: 15px;
}
.footer-note b {
  color: #FFFFFF;
  font-family: var(--rv-ff-display);
  font-weight: 600;
}
.footer-bottom {
  padding: 26px 0;
  background: var(--rv-night);
}
.footer-bottom .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.footer-bottom p {
  margin: 0;
  font-size: 14px;
}
.footer-bottom .rv-social a {
  width: 34px;
  height: 34px;
}
