/* ========================================
   01. CSS VARIABLES
======================================== */
:root {
  --color-bg: #fff;
  --color-bg-soft: #f5f5f3;
  --color-text: #171717;
  --color-muted: #666;
  --color-border: #dededb;
  --font-primary: 'Inter', Arial, sans-serif;
  --font-secondary: var(--font-primary);
  --container-max: 1320px;
  --radius-sm: 3px;
  --radius-md: 6px;
  --radius-lg: 10px;
  --space-xs: .5rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 3rem;
  --space-xl: 6rem;
  --shadow-soft: 0 6px 24px #00000006;
  --shadow-hover: 0 12px 32px #0000000a;
  --transition-fast: 180ms ease;
  --transition-normal: 350ms ease;
  --transition-slow: 650ms ease
}

/* 02. RESET */
*,
*::before,
*::after {
  box-sizing: border-box
}

body,
h1,
h2,
h3,
h4,
p,
ul {
  margin: 0
}

button,
input,
select,
textarea {
  font: inherit
}

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

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

button {
  color: inherit
}

button,
a {
  -webkit-tap-highlight-color: transparent
}

/* 03. BASE HTML / BODY */
html {
  scroll-behavior: smooth;
  scroll-padding-top: 100px
}

body {
  font-family: var(--font-primary);
  color: var(--color-text);
  background: var(--color-bg);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased
}

main {
  min-height: 60vh
}

::selection {
  background: #171717;
  color: #fff
}

/* 04. TYPOGRAPHY */
@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/inter-latin-variable.woff2') format('woff2')
}

h1,
h2,
h3,
h4 {
  font-weight: 550;
  line-height: 1.08;
  letter-spacing: -.045em
}

h1 {
  font-size: clamp(2.75rem, 5.9vw, 5.25rem)
}

h2 {
  font-size: clamp(2.1rem, 3.3vw, 3.3rem)
}

h3 {
  font-size: 1.5rem
}

h4 {
  font-size: 1.125rem
}

p {
  color: var(--color-muted)
}

.eyebrow {
  font-size: .75rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-bottom: 1.4rem
}

.eyebrow::before {
  content: '';
  display: block;
  width: 24px;
  height: 1px;
  background: currentColor
}

.lead-copy {
  font-size: 1.075rem;
  line-height: 1.8;
  max-width: 500px
}

.text-link {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  font-size: .875rem;
  font-weight: 550;
  border-bottom: 1px solid currentColor;
  padding: 10px 0
}

.text-link:hover .icon {
  transform: translateX(4px)
}

.muted {
  color: var(--color-muted)
}

.small-text {
  font-size: .875rem
}

/* 05. GLOBAL UTILITIES */
.container {
  width: calc(100% - 96px);
  max-width: var(--container-max);
  padding: 0
}

.container-fluid {
  padding-left: 0;
  padding-right: 0
}

.section {
  padding: 100px 0
}

.section--soft,
main>.section:nth-of-type(odd):not(.hero):not(.area-section) {
  background: var(--color-bg-soft)
}

.section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 32px;
  margin-bottom: 48px
}

.section-head p {
  max-width: 390px
}

.icon {
  width: 21px;
  height: 21px;
  flex: 0 0 auto;
  stroke-width: 1.5;
  transition: transform var(--transition-fast)
}

.icon--large {
  width: 28px;
  height: 28px
}

.button-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px
}

.hairline {
  border-top: 1px solid var(--color-border)
}

.pill {
  display: inline-block;
  padding: 6px 12px;
  border: 1px solid var(--color-border);
  font-size: .75rem;
  border-radius: 30px
}

.photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1)
}

.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center
}

.breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-size: .875rem;
  color: var(--color-muted);
  margin-bottom: 32px
}

.breadcrumbs a {
  text-decoration: underline;
  text-underline-offset: 4px
}

.prose {
  max-width: 780px
}

.prose h2 {
  font-size: 1.8rem;
  margin: 40px 0 18px
}

.prose h3 {
  font-size: 1.3rem;
  margin: 28px 0 14px
}

.prose p,
.prose ul {
  margin-bottom: 20px
}

.prose a {
  text-decoration: underline
}

.prose li {
  margin: 10px 0;
  color: var(--color-muted)
}

.page-intro {
  padding: 158px 0 72px;
  background: var(--color-bg-soft)
}

.page-intro h1 {
  max-width: 900px;
  font-size: clamp(2.6rem, 5vw, 4.75rem);
  margin-bottom: 24px
}

.page-intro p {
  max-width: 680px
}

.notice {
  padding: 20px;
  border-left: 2px solid var(--color-text);
  background: var(--color-bg-soft);
  font-size: .875rem;
  color: var(--color-muted)
}

/* 06. BUTTONS */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  min-height: 50px;
  padding: 13px 23px;
  border: 1px solid var(--color-text);
  border-radius: var(--radius-sm);
  background: var(--color-text);
  color: #fff;
  font-size: .875rem;
  font-weight: 550;
  line-height: 1.5;
  transition: background var(--transition-fast), color var(--transition-fast);
  cursor: pointer
}

.button:hover {
  background: #373737;
  color: #fff
}

.button:hover .icon {
  transform: translateX(3px)
}

.button--outline {
  background: transparent;
  color: var(--color-text);
  border-color: #aaa
}

.button--outline:hover {
  background: var(--color-text);
  color: #fff
}

.button--light {
  background: #fff;
  color: #171717;
  border-color: #fff
}

.button--light:hover {
  background: #ddd;
  color: #171717
}

.icon-button {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 50%;
  cursor: pointer
}

.icon-button:hover {
  background: #ededeb
}

.button:disabled {
  cursor: wait;
  opacity: .5
}

/* 07. FORMS */
.booking-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px 20px
}

.form-field {
  display: flex;
  flex-direction: column;
  gap: 8px
}

.form-field--full {
  grid-column: 1/-1
}

.form-field label,
.form-field legend {
  font-size: .875rem;
  font-weight: 550
}

.form-field label span {
  font-weight: 400;
  color: #666
}

.form-field input,
.form-field select,
.form-field textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid #c9c9c6;
  border-radius: var(--radius-sm);
  padding: 12px;
  background: #fff;
  min-height: 48px;
  font-size: 1rem;
  color: #171717
}

.form-field textarea {
  min-height: 100px;
  resize: vertical
}

.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline: 2px solid #171717;
  outline-offset: 2px
}

.form-consent {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: .875rem;
  color: var(--color-muted)
}

.form-consent input {
  margin-top: 5px;
  width: 18px;
  height: 18px;
  accent-color: #171717
}

.form-consent a {
  text-decoration: underline
}

.form-status:not(:empty) {
  padding: 18px;
  background: #f2f2f0;
  border-left: 2px solid #171717
}

.form-status a {
  text-decoration: underline
}

.form-trap {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden
}

.booking-form details {
  grid-column: 1/-1;
  border-block: 1px solid var(--color-border);
  padding: 16px 0
}

.booking-form summary {
  cursor: pointer;
  font-size: .875rem;
  font-weight: 550
}

.form-extra {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 20px
}

/* 08. HEADER */
.site-header {
  height: 88px;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: transparent;
  color: var(--color-text);
  transition: box-shadow var(--transition-normal), background var(--transition-normal), color var(--transition-normal), backdrop-filter var(--transition-normal);
  border-bottom: 1px solid transparent
}

.site-header.is-on-hero:not(.is-scrolled):not(.is-menu-open) {
  color: #fff
}

.site-header.is-on-hero:not(.is-scrolled):not(.is-menu-open) .button {
  background: #fff;
  color: #171717;
  border-color: #fff
}

.site-header.is-on-hero:not(.is-scrolled):not(.is-menu-open) .button:hover {
  background: #e8e8e5
}

.site-header.is-on-hero:not(.is-scrolled):not(.is-menu-open) .icon-button {
  border-color: #ffffff80
}

.site-header.is-scrolled,
.site-header.is-menu-open {
  background: #fffffff2;
  color: var(--color-text);
  box-shadow: 0 1px 0 var(--color-border);
  border-bottom-color: #00000008;
  backdrop-filter: blur(16px)
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  height: 100%
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  white-space: nowrap
}

.brand__mark {
  width: 39px;
  height: 39px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 11px;
  color: #fff;
  background: #000;
  box-shadow: 0 4px 14px #00000026;
  flex: 0 0 auto
}

.brand__mark .icon {
  width: 19px;
  height: 19px;
  stroke-width: 2
}

.brand__name {
  font-size: 1.15rem;
  letter-spacing: -.045em;
  font-weight: 650
}

.brand__sub {
  display: block;
  font-size: .6rem;
  letter-spacing: .11em;
  font-weight: 400;
  text-transform: uppercase;
  margin-top: -3px
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 16px
}

.header-actions .button {
  min-height: 44px;
  padding: 10px 17px;
  gap: 16px
}

.header-call {
  border: 0
}

/* 09. NAVIGATION */
.desktop-nav {
  display: flex;
  align-items: center;
  gap: 22px
}

.desktop-nav>a,
.nav-menu-button {
  font-size: .8125rem;
  font-weight: 500;
  white-space: nowrap;
  padding: 30px 0;
  background: none;
  border: 0;
  cursor: pointer
}

.desktop-nav>a:hover,
.nav-menu-button:hover {
  text-decoration: underline;
  text-underline-offset: 8px
}

.nav-menu-button {
  display: flex;
  align-items: center;
  gap: 4px
}

.nav-menu-button .icon {
  width: 13px
}

.mega-menu {
  position: absolute;
  top: 87px;
  left: 0;
  right: 0;
  background: #fff;
  color: #171717;
  border-block: 1px solid var(--color-border);
  box-shadow: 0 24px 32px #00000008;
  padding: 36px 0
}

.mega-menu[hidden] {
  display: none
}

.mega-menu__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px
}

.mega-menu h3 {
  font-size: 1rem;
  margin-bottom: 14px
}

.mega-menu a {
  display: block;
  color: #666;
  font-size: .875rem;
  padding: 7px 0
}

.mega-menu a:hover {
  color: #111;
  text-decoration: underline
}

/* 10. MOBILE NAVIGATION */
.menu-toggle {
  display: none
}

.offcanvas {
  --bs-offcanvas-width: min(90vw, 380px);
  font-family: var(--font-primary)
}

.offcanvas-header {
  padding: 24px
}

.offcanvas-body {
  padding: 4px 24px 30px
}

.mobile-links {
  display: grid;
  margin-bottom: 25px
}

.mobile-links>a {
  padding: 14px 0;
  border-bottom: 1px solid var(--color-border)
}

.mobile-devices {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 24px
}

.mobile-devices a {
  font-size: .875rem;
  padding: 10px 0
}

.mobile-region {
  font-size: .875rem;
  margin-top: 20px
}

/* 11. HERO */
.hero {
  position: relative;
  background: #111;
  overflow: hidden
}

.hero__slide {
  min-height: 720px;
  position: relative;
  display: flex;
  align-items: center;
  color: #fff
}

.hero__slide[hidden] {
  display: none
}

.hero__image-wrap {
  overflow: hidden;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%
}

.hero__image {
  width: 100%;
  height: 100%;
  object-position: center;
  filter: grayscale(1);
  opacity: .86;
  transform: scale(1.02)
}

.hero__image-wrap::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #000d 0%, #0009 38%, #0003 72%, #0008 100%)
}

.hero__content {
  position: relative;
  z-index: 1;
  padding: 170px 0 140px;
  max-width: 680px
}

.hero h1,
.hero h2 {
  font-size: clamp(3rem, 5.8vw, 5.2rem);
  font-weight: 520;
  letter-spacing: -.062em;
  line-height: 1.035;
  margin-bottom: 25px
}

.hero__content p {
  font-size: 1.05rem;
  max-width: 430px;
  color: #f0f0ed
}

.hero__content .eyebrow {
  font-size: .6875rem
}

.hero .button--outline {
  border-color: #ffffffb0;
  color: #fff
}

.hero .button--outline:hover {
  background: #fff;
  color: #171717
}

.hero__caption {
  position: absolute;
  bottom: 32px;
  right: 48px;
  font-size: .625rem;
  letter-spacing: .14em;
  color: white;
  text-transform: uppercase;
  text-shadow: 0 1px 5px #000
}

.hero__controls {
  position: absolute;
  bottom: 28px;
  left: 0;
  right: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 14px;
  color: #fff
}

.hero__counter {
  font-size: .75rem;
  font-variant-numeric: tabular-nums;
  margin-right: 8px
}

.hero__counter span {
  color: #ffffffb8
}

.hero__dot {
  width: 25px;
  height: 44px;
  border: 0;
  padding: 0;
  background: transparent;
  position: relative
}

.hero__dot::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 21px;
  height: 2px;
  background: #ffffff66
}

.hero__dot[aria-current=true]::after {
  background: #fff
}

.hero__controls .icon-button {
  width: 34px;
  height: 34px;
  border-color: #ffffff80;
  background: #00000026
}

.hero__controls .icon-button:hover {
  background: #ffffff24
}

.hero__controls .icon {
  width: 16px
}

.hero__slide--right .hero__content {
  margin-left: auto;
  max-width: 590px;
  padding-left: 24px
}

.hero__slide--right .hero__image-wrap {
  right: 0;
  left: 0
}

.hero__slide--right .hero__image-wrap::after {
  background: linear-gradient(270deg, #000d 0%, #0009 38%, #0003 72%, #0008 100%)
}

.hero__slide--right .hero__caption {
  right: auto;
  left: 48px
}

.hero__slide--right .hero__content p {
  max-width: 440px
}

/* 12. DEVICE NAVIGATION */
.trust-strip {
  border-bottom: 1px solid var(--color-border);
  background: #fff
}

.trust-strip__inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  padding: 24px 0
}

.trust-item {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  border-right: 1px solid var(--color-border)
}

.trust-item:last-child {
  border: 0
}

.trust-item strong {
  font-size: .8125rem;
  font-weight: 550;
  display: block
}

.trust-item small {
  font-size: .6875rem;
  color: #777;
  display: block
}

.device-rail {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  border-block: 1px solid var(--color-border)
}

.device-item {
  padding: 30px 20px 24px;
  border-right: 1px solid var(--color-border);
  position: relative;
  transition: background var(--transition-fast)
}

.device-item:last-child {
  border: 0
}

.device-item:hover {
  background: var(--color-bg-soft)
}

.device-item__visual {
  height: 128px;
  display: grid;
  place-items: center;
  margin-bottom: 20px
}

.device-item__visual img {
  height: 120px;
  width: 100%;
  object-fit: contain;
  mix-blend-mode: multiply;
  filter: grayscale(1);
  transition: transform var(--transition-normal)
}

.device-item:hover img {
  transform: translateY(-5px)
}

.device-item__label {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: .875rem;
  font-weight: 550
}

.device-item__label .icon {
  width: 16px
}

.device-item small {
  display: block;
  font-size: .6875rem;
  color: #777;
  margin-top: 4px
}

.device-item__visual>.icon {
  width: 66px;
  height: 66px;
  stroke-width: .8
}

/* 13. SERVICES */
.popular-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 24px
}

.repair-feature {
  min-height: 340px;
  background: #ededeb;
  position: relative;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden
}

.repair-feature__image {
  position: absolute;
  inset: 0
}

.repair-feature__image img {
  filter: grayscale(1);
  height: 100%;
  width: 100%;
  object-fit: cover
}

.repair-feature__image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, #000b, transparent 85%)
}

.repair-feature__content {
  z-index: 1;
  position: relative;
  color: #fff
}

.repair-feature__content p {
  color: #ddd;
  font-size: .875rem;
  margin-top: 12px
}

.repair-feature__content .text-link {
  margin-top: 10px
}

.repair-tile {
  padding: 34px 30px;
  background: var(--color-bg-soft);
  min-height: 340px;
  display: flex;
  flex-direction: column;
  align-items: flex-start
}

.repair-tile>.icon {
  width: 40px;
  height: 40px;
  margin-bottom: 54px;
  stroke-width: 1
}

.repair-tile h3 {
  font-size: 1.5rem;
  margin-bottom: 12px
}

.repair-tile p {
  font-size: .875rem
}

.repair-tile .text-link {
  margin-top: auto
}

.service-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 40px
}

.service-row {
  padding: 24px 0;
  border-bottom: 1px solid var(--color-border);
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: center
}

.service-row h3 {
  font-size: 1.1rem;
  letter-spacing: -.025em;
  margin-bottom: 8px
}

.service-row p {
  font-size: .875rem
}

.service-row .icon {
  width: 18px
}

.service-row:hover h3 {
  text-decoration: underline;
  text-underline-offset: 5px
}

/* 14. PROBLEM SECTIONS */
.problems-layout {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 90px
}

.problems-layout .lead-copy {
  margin-top: 22px;
  font-size: 1rem
}

.problem-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 30px
}

.problem-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 0;
  border-bottom: 1px solid var(--color-border);
  font-size: .875rem;
  gap: 10px
}

.problem-link .icon:first-child {
  margin-right: 8px
}

.problem-link span {
  flex: 1
}

.problem-link>.icon:last-child {
  width: 15px
}

.problem-link:hover {
  color: #666
}

.device-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 28px
}

.device-tab {
  padding: 14px 20px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  font-size: .875rem;
  min-height: 48px
}

.device-tab[aria-selected=true] {
  border-color: #171717;
  font-weight: 600
}

.device-panel[hidden] {
  display: none
}

/* 15. WHY CHOOSE US */
.why-image {
  height: 590px;
  position: relative
}

.why-image__tag {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 24px;
  background: #fff;
  padding: 22px 24px;
  display: flex;
  gap: 18px;
  align-items: center
}

.why-image__tag p {
  font-size: .8125rem
}

.why-image__tag strong {
  font-size: .875rem
}

.why-content>p {
  margin-top: 24px
}

.why-list {
  margin-top: 30px
}

.why-list__item {
  display: flex;
  gap: 20px;
  padding: 22px 0;
  border-bottom: 1px solid var(--color-border)
}

.why-list__item h3 {
  font-size: 1rem;
  letter-spacing: -.02em;
  margin-bottom: 9px
}

.why-list__item p {
  font-size: .875rem
}

.why-list__item>.icon {
  margin-top: 3px
}

/* 16. PROCESS */
.process-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px
}

.process-step {
  position: relative;
  border-top: 1px solid var(--color-border);
  padding-top: 28px
}

.process-step__number {
  font-size: .75rem;
  color: #777;
  display: block;
  margin-bottom: 30px
}

.process-step h3 {
  font-size: 1.15rem;
  letter-spacing: -.025em;
  margin-bottom: 12px
}

.process-step p {
  font-size: .875rem
}

.process-step::before {
  position: absolute;
  top: -4px;
  left: 0;
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #171717
}

/* 17. SERVICE AREAS */
.area-section {
  background: #181918;
  color: #fff
}

.area-section p {
  color: #b5b5b5
}

.area-section .eyebrow {
  color: #b5b5b5
}

.area-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 90px;
  align-items: start
}

.area-layout h2 {
  margin-bottom: 24px
}

.area-list {
  border-top: 1px solid #484848
}

.area-list a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 19px 0;
  border-bottom: 1px solid #484848;
  font-size: 1.25rem;
  letter-spacing: -.035em
}

.area-list a:hover {
  color: #bbb
}

.area-list span {
  font-size: .6875rem;
  color: #999;
  letter-spacing: 0;
  margin-right: 16px
}

/* 18. REVIEWS */
.review-placeholder {
  padding: 42px 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 32px;
  border-block: 1px solid var(--color-border)
}

.review-placeholder h3 {
  font-size: 1.7rem;
  max-width: 500px
}

.review-placeholder p {
  margin-top: 16px;
  font-size: .875rem
}

/* 19. SELL / BUY / EXCHANGE */
.beyond-layout {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 72px;
  align-items: center
}

.beyond-layout p {
  margin-top: 24px
}

.beyond-note {
  border-left: 1px solid var(--color-border);
  padding: 30px 0 30px 50px
}

.beyond-note h3 {
  font-size: 1.7rem
}

/* 20. ABOUT */
.about-band {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 90px
}

.about-band p {
  font-size: 1.125rem;
  line-height: 1.8
}

.about-band .small-text {
  font-size: .875rem;
  margin-top: 24px
}

/* 21. FAQ */
.faq-layout {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 80px
}

.faq-layout h2 {
  margin-bottom: 20px
}

.faq-layout p {
  max-width: 320px
}

.faq-layout .text-link {
  margin-top: 20px
}

.accordion {
  --bs-accordion-border-color: var(--color-border);
  --bs-accordion-btn-focus-box-shadow: 0 0 0 2px #171717;
  --bs-accordion-active-bg: #fff;
  --bs-accordion-active-color: #171717;
  --bs-accordion-border-radius: 0;
  --bs-accordion-inner-border-radius: 0
}

.accordion-item {
  border-width: 0 0 1px
}

.accordion-item:first-child {
  border-top: 1px solid var(--color-border)
}

.accordion-button {
  font-family: var(--font-primary);
  font-size: .9375rem;
  font-weight: 500;
  padding: 24px 4px;
  line-height: 1.5;
  letter-spacing: -.015em
}

.accordion-button:not(.collapsed) {
  box-shadow: none
}

.accordion-button::after {
  width: 16px;
  height: 16px;
  background-size: 16px;
  filter: grayscale(1)
}

.accordion-body {
  padding: 0 28px 24px 4px;
  color: var(--color-muted);
  font-size: .9375rem;
  line-height: 1.8
}

/* 22. CTA */
.cta-band {
  padding: 58px 0;
  background: #eeeeeb
}

.cta-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px
}

.cta-inner h2 {
  font-size: clamp(2rem, 3.4vw, 3.1rem)
}

.cta-inner p {
  margin-top: 16px;
  font-size: .9375rem
}

.cta-inner .button {
  flex-shrink: 0
}

/* 23. CONTACT */
.contact-layout {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 90px
}

.contact-intro>p {
  margin: 24px 0 36px;
  max-width: 350px
}

.contact-detail {
  margin: 24px 0
}

.contact-detail>span {
  display: block;
  font-size: .75rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #666;
  margin-bottom: 7px
}

.contact-detail>a {
  font-size: 1.2rem;
  letter-spacing: -.02em
}

.contact-detail p {
  font-size: .9375rem;
  color: #171717
}

.contact-map {
  width: 100%;
  height: 300px;
  border: 1px solid var(--color-border);
  filter: grayscale(1);
  margin-top: 24px
}

.map-note {
  font-size: .75rem;
  margin-top: 8px
}

.map-button {
  margin-top: 12px
}

.booking-intro {
  margin-bottom: 26px
}

.booking-intro h3 {
  margin-bottom: 12px
}

.booking-intro p {
  font-size: .875rem
}

/* 24. FOOTER */
.site-footer {
  padding: 68px 0 24px;
  background: #000;
  color: #fff;
  border-top: 1px solid #000
}

.site-footer p,
.site-footer .footer-disclaimer {
  color: #d7d7d7
}

.site-footer .brand,
.site-footer .text-link,
.site-footer a {
  color: #fff
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.7fr 1fr 1fr 1.1fr;
  gap: 50px
}

.footer-brand>p {
  font-size: .875rem;
  max-width: 290px;
  margin-top: 22px
}

.footer-column h3 {
  font-size: .8125rem;
  letter-spacing: 0;
  font-weight: 600;
  margin: 3px 0 20px;
  color: #fff
}

.footer-column a {
  display: block;
  font-size: .8125rem;
  color: #d7d7d7;
  padding: 6px 0
}

.footer-column a:hover {
  color: #fff;
  text-decoration: underline
}

.footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid #2d2d2d;
  padding-top: 24px;
  margin-top: 44px;
  color: #c4c4c4;
  font-size: .75rem;
  gap: 20px
}

.footer-disclaimer {
  font-size: .75rem;
  margin-top: 24px;
  max-width: 1000px
}

/* 25. FLOATING ACTIONS */
.floating-actions {
  position: fixed;
  right: 22px;
  bottom: 24px;
  z-index: 50;
  display: flex;
  flex-direction: column;
  gap: 10px
}

.floating-actions a {
  background: white;
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center
}

.floating-actions .whatsapp {
  background: #171717;
  color: #fff;
  border-color: #171717
}

/* 26. MOBILE BOTTOM NAVIGATION */
.mobile-bottom {
  display: none
}

/* 27. MODAL / OFFCANVAS */
.offcanvas-backdrop {
  background: #171717
}

.offcanvas .button {
  width: 100%;
  margin-top: 12px
}

.btn-close {
  opacity: .7
}

.no-js-note {
  padding: 16px;
  background: #f1f1ee;
  font-size: .875rem
}

/* 28. ANIMATIONS */
@keyframes reveal {
  from {
    opacity: 0;
    transform: translateY(12px)
  }

  to {
    opacity: 1;
    transform: translateY(0)
  }
}

@keyframes photograph {
  from {
    transform: scale(1)
  }

  to {
    transform: scale(1.03)
  }
}

.hero__slide:not([hidden]) .hero__content {
  animation: reveal .65s ease both
}

.hero__slide:not([hidden]) .hero__image {
  animation: photograph 7s ease forwards
}

.reveal.is-visible {
  animation: reveal .6s ease both
}

/* 29. RESPONSIVE BREAKPOINTS */
@media(min-width:1600px) {
  .hero__slide {
    min-height: 690px
  }

  .hero__content {
    padding-top: 100px;
    padding-bottom: 140px
  }
}

@media(max-width:1399px) {
  .desktop-nav {
    gap: 16px
  }

  .desktop-nav>a,
  .nav-menu-button {
    font-size: .75rem
  }

  .container {
    width: calc(100% - 72px)
  }

  .header-actions {
    gap: 8px
  }

  .header-call {
    display: none
  }

  .brand__name {
    font-size: 1.05rem
  }

  .hero__content {
    max-width: 580px
  }

  .hero__slide {
    min-height: 590px
  }
}

@media(max-width:1279px) {
  .desktop-nav {
    display: none
  }

  .menu-toggle {
    display: inline-flex
  }
}

@media(max-width:1199px) {
  .desktop-nav {
    gap: 13px
  }

  .desktop-nav>a,
  .nav-menu-button {
    font-size: .6875rem
  }

  .header-actions .button {
    font-size: .75rem;
    padding: 10px 12px
  }

  .header-actions .button .icon {
    display: none
  }

  .brand__sub {
    font-size: .5rem
  }

  .brand__mark {
    width: 32px;
    height: 32px
  }

  .split,
  .problems-layout,
  .contact-layout,
  .area-layout,
  .about-band,
  .faq-layout {
    gap: 50px
  }

  .device-item {
    padding: 25px 14px
  }

  .hero__content {
    max-width: 520px
  }

  .hero__image-wrap {
    width: 62%
  }
}

@media(max-width:991px) {
  .container {
    width: calc(100% - 48px)
  }

  .site-header {
    height: 74px
  }

  .desktop-nav {
    display: none
  }

  .menu-toggle {
    display: inline-flex
  }

  .header-actions .button {
    font-size: .8125rem;
    padding: 10px 16px
  }

  .brand__name {
    font-size: 1.15rem
  }

  .brand__sub {
    font-size: .6rem
  }

  .brand__mark {
    width: 36px;
    height: 36px
  }

  .section {
    padding: 76px 0
  }

  .hero__slide {
    min-height: 580px
  }

  .hero__content {
    max-width: 480px
  }

  .hero__image-wrap {
    width: 65%
  }

  .hero__image-wrap::after {
    background: linear-gradient(90deg, #efefec 3%, #efefecbb 30%, #efefec00 80%)
  }

  .hero__content p {
    max-width: 310px
  }

  .hero__slide--right .hero__content {
    max-width: 440px
  }

  .hero__slide--right .hero__image-wrap::after {
    background: linear-gradient(270deg, #efefec 3%, #efefecbb 30%, #efefec00 80%)
  }

  .hero__caption {
    display: none
  }

  .trust-item {
    gap: 9px
  }

  .trust-item .icon {
    width: 22px
  }

  .trust-item strong {
    font-size: .6875rem
  }

  .trust-item small {
    font-size: .625rem
  }

  .device-rail {
    grid-template-columns: repeat(3, 1fr)
  }

  .device-item:nth-child(3) {
    border-right: 0
  }

  .device-item:nth-child(-n+3) {
    border-bottom: 1px solid var(--color-border)
  }

  .device-item__visual {
    height: 118px
  }

  .device-item {
    padding: 24px
  }

  .popular-grid {
    gap: 16px
  }

  .repair-tile {
    padding: 26px 20px
  }

  .repair-feature {
    padding: 26px 20px
  }

  .repair-tile h3,
  .repair-feature h3 {
    font-size: 1.3rem
  }

  .problems-layout {
    grid-template-columns: 1fr;
    gap: 30px
  }

  .problems-layout .lead-copy {
    max-width: 550px
  }

  .why-image {
    height: 560px
  }

  .process-grid {
    gap: 22px
  }

  .footer-grid {
    gap: 25px;
    grid-template-columns: 1.3fr 1fr 1fr
  }

  .footer-column:last-child {
    grid-column: 2/4
  }

  .contact-layout {
    grid-template-columns: 1fr 1.3fr;
    gap: 40px
  }

  .area-layout {
    gap: 50px
  }

  .beyond-layout {
    gap: 40px
  }
}

@media(max-width:767px) {
  .container {
    width: calc(100% - 40px)
  }

  .section {
    padding: 60px 0
  }

  .section-head {
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 30px
  }

  .section-head p {
    max-width: 260px;
    font-size: .875rem
  }

  .section-head .text-link {
    white-space: nowrap;
    font-size: .75rem;
    gap: 8px
  }

  .hero__slide {
    min-height: 680px;
    align-items: flex-start
  }

  .hero__content {
    padding: 40px 0 350px;
    max-width: 100%
  }

  .hero h1,
  .hero h2 {
    font-size: clamp(2.85rem, 8.6vw, 4rem);
    margin-bottom: 20px
  }

  .hero__content p {
    font-size: .875rem;
    max-width: 330px
  }

  .hero__content .eyebrow {
    font-size: .625rem;
    margin-bottom: 20px
  }

  .hero .button-row {
    margin-top: 22px;
    gap: 10px
  }

  .hero .button {
    min-height: 46px;
    padding: 11px 16px;
    font-size: .8125rem;
    gap: 16px
  }

  .hero__image-wrap {
    width: 100%;
    height: 310px;
    top: auto;
    bottom: 0
  }

  .hero__image {
    object-position: center 48%
  }

  .hero__image-wrap::after {
    background: linear-gradient(180deg, #efefec 0%, #efefec00 24%)
  }

  .hero__controls {
    bottom: 20px;
    background: #fffffff2;
    padding: 0 12px;
    border-radius: 3px;
    width: auto;
    right: auto;
    margin-left: 20px
  }

  .hero__slide--right .hero__content {
    margin: 0;
    padding: 40px 0 350px;
    max-width: 100%
  }

  .hero__slide--right .hero__image-wrap::after {
    background: linear-gradient(180deg, #efefec 0%, #efefec00 24%)
  }

  .trust-strip__inner {
    grid-template-columns: 1fr 1fr;
    padding: 10px 0
  }

  .trust-item {
    justify-content: flex-start;
    padding: 12px 14px;
    border: 0
  }

  .trust-item:nth-child(odd) {
    border-right: 1px solid var(--color-border)
  }

  .trust-item strong {
    font-size: .75rem
  }

  .trust-item small {
    font-size: .625rem
  }

  .trust-item .icon {
    width: 25px
  }

  .device-item {
    padding: 20px 14px
  }

  .device-item__label {
    font-size: .8125rem
  }

  .device-item__visual {
    height: 100px;
    margin-bottom: 15px
  }

  .device-item__visual img {
    height: 94px
  }

  .device-item__visual>.icon {
    height: 50px;
    width: 50px
  }

  .device-item small {
    font-size: .625rem
  }

  .popular-grid {
    grid-template-columns: 1fr 1fr
  }

  .repair-feature {
    grid-column: 1/-1;
    min-height: 320px
  }

  .repair-tile {
    min-height: 300px
  }

  .repair-tile>.icon {
    margin-bottom: 35px
  }

  .split,
  .area-layout,
  .about-band,
  .faq-layout,
  .contact-layout,
  .beyond-layout {
    grid-template-columns: 1fr;
    gap: 36px
  }

  .why-image {
    height: 400px
  }

  .why-content>p {
    margin-top: 20px
  }

  .process-grid {
    grid-template-columns: 1fr 1fr;
    gap: 34px
  }

  .process-step__number {
    margin-bottom: 20px
  }

  .area-layout {
    gap: 35px
  }

  .area-list a {
    font-size: 1.1rem
  }

  .about-band p {
    font-size: 1rem
  }

  .faq-layout p {
    max-width: none
  }

  .cta-inner {
    align-items: flex-start;
    flex-direction: column;
    gap: 26px
  }

  .cta-band {
    padding: 44px 0
  }

  .contact-intro>p {
    max-width: 500px;
    margin-bottom: 28px
  }

  .contact-detail {
    margin: 20px 0
  }

  .contact-map {
    height: 220px
  }

  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: 36px 24px
  }

  .footer-brand {
    grid-column: 1/-1
  }

  .footer-column:last-child {
    grid-column: auto
  }

  .footer-bottom {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px
  }

  .site-footer {
    padding-bottom: 100px
  }

  .floating-actions {
    display: none
  }

  .mobile-bottom {
    display: grid;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 90;
    grid-template-columns: 1fr 1.25fr 1fr;
    background: #fff;
    border-top: 1px solid #ddd;
    padding: 8px 14px calc(8px + env(safe-area-inset-bottom));
    gap: 10px
  }

  .mobile-bottom a {
    min-height: 47px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-size: .75rem;
    font-weight: 500
  }

  .mobile-bottom .mobile-bottom__repair {
    background: #171717;
    color: white;
    border-radius: 3px
  }

  .mobile-bottom .icon {
    width: 18px
  }

  .beyond-note {
    padding: 20px 0 20px 25px
  }

  .review-placeholder {
    flex-direction: column;
    align-items: flex-start
  }

  .page-intro {
    padding: 42px 0 48px
  }

  .page-intro h1 {
    font-size: clamp(2.5rem, 8vw, 3.5rem)
  }

  .service-list {
    grid-template-columns: 1fr
  }

  .device-tabs {
    gap: 0
  }

  .device-tab {
    padding: 12px 14px;
    font-size: .8125rem
  }

  .booking-form {
    gap: 18px 14px
  }
}

@media(max-width:479px) {
  .section-head {
    flex-direction: column;
    gap: 18px
  }

  .section-head h2 {
    font-size: 2rem
  }

  .section-head .eyebrow {
    margin-bottom: 14px
  }

  .section-head p {
    max-width: none
  }

  .header-actions .button {
    display: none
  }

  .hero__slide {
    min-height: 690px
  }

  .hero h1,
  .hero h2 {
    font-size: 2.9rem
  }

  .hero__content p {
    max-width: 300px
  }

  .hero .button {
    padding: 11px 14px
  }

  .hero .button .icon {
    width: 17px
  }

  .device-item {
    padding: 20px 9px
  }

  .device-item__label {
    font-size: .75rem;
    gap: 4px
  }

  .device-item__label .icon {
    width: 13px
  }

  .device-item__visual {
    height: 86px
  }

  .device-item__visual img {
    height: 80px
  }

  .popular-grid {
    gap: 12px
  }

  .repair-tile {
    padding: 24px 18px;
    min-height: 320px
  }

  .repair-tile h3 {
    font-size: 1.2rem
  }

  .repair-tile p {
    font-size: .8125rem
  }

  .repair-tile .text-link {
    font-size: .75rem;
    gap: 8px
  }

  .problem-grid {
    gap: 0 20px
  }

  .problem-link {
    font-size: .8125rem;
    line-height: 1.5;
    min-height: 70px;
    padding: 16px 0
  }

  .problem-link .icon:first-child {
    display: none
  }

  .booking-form,
  .form-extra {
    grid-template-columns: 1fr
  }

  .process-grid {
    grid-template-columns: 1fr;
    gap: 0
  }

  .process-step {
    padding: 0 0 30px 30px;
    border-top: 0;
    border-left: 1px solid var(--color-border)
  }

  .process-step::before {
    left: -4px;
    top: 5px
  }

  .process-step__number {
    margin-bottom: 12px
  }

  .process-step:last-child {
    padding-bottom: 0
  }

  .why-image {
    height: 350px
  }

  .why-image__tag {
    left: 16px;
    right: 16px;
    bottom: 16px;
    padding: 16px
  }

  .trust-item {
    padding: 12px 6px;
    gap: 9px
  }

  .trust-item strong {
    font-size: .6875rem
  }

  .trust-item .icon {
    width: 21px
  }

  .brand__sub {
    font-size: .56rem
  }
}

@media(max-width:359px) {
  .container {
    width: calc(100% - 32px)
  }

  .hero h1,
  .hero h2 {
    font-size: 2.65rem
  }

  .hero__content .eyebrow {
    font-size: .57rem
  }

  .hero .button-row {
    gap: 8px
  }

  .hero .button {
    font-size: .75rem;
    padding: 11px 12px;
    gap: 10px
  }

  .device-item__label {
    font-size: .6875rem
  }

  .device-item small {
    font-size: .6rem
  }

  .mobile-bottom {
    gap: 6px;
    padding-inline: 10px
  }

  .mobile-bottom a {
    gap: 5px;
    font-size: .6875rem
  }
}

@media(max-height:500px) and (orientation:landscape) {
  .hero__slide {
    min-height: 540px
  }

  .offcanvas-body {
    overflow-y: auto
  }
}

/* 29b. Requested visual refinements */
@media(min-width:1600px) {
  .hero__slide {
    min-height: 760px
  }

  .hero__content {
    padding-top: 190px;
    padding-bottom: 160px
  }
}

@media(max-width:1399px) {
  .hero__slide {
    min-height: 680px
  }

  .hero__image-wrap {
    width: 100%
  }

  .hero__content {
    max-width: 620px
  }
}

@media(max-width:1199px) {
  .hero__image-wrap {
    width: 100%;
    height: 100%;
    inset: 0
  }

  .hero__content {
    max-width: 560px
  }
}

@media(max-width:991px) {
  .site-header {
    height: 74px
  }

  .page-intro {
    padding-top: 132px
  }

  .hero__slide {
    min-height: 660px
  }

  .hero__content {
    padding: 140px 0 120px;
    max-width: 560px
  }

  .hero__content p {
    max-width: 390px
  }

  .hero__image-wrap {
    width: 100%;
    height: 100%;
    inset: 0
  }

  .hero__image-wrap::after,
  .hero__slide--right .hero__image-wrap::after {
    background: linear-gradient(90deg, #000d 0%, #0009 48%, #0004 100%)
  }
}

@media(max-width:767px) {
  .page-intro {
    padding: 126px 0 52px
  }

  .hero__slide {
    min-height: 700px;
    align-items: center
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding: 0px 0 40px;
    max-width: 100%
  }

  .hero__content p {
    font-size: .9375rem;
    max-width: 340px
  }

  .hero__image-wrap {
    width: 100%;
    height: 100%;
    inset: 0
  }

  .hero__image-wrap::after,
  .hero__slide--right .hero__image-wrap::after {
    background: linear-gradient(180deg, #000c 0%, #0008 42%, #0005 100%)
  }

  .hero__controls {
    bottom: 18px;
    background: #00000052;
    color: #fff;
    border: 1px solid #ffffff2e;
    backdrop-filter: blur(10px)
  }
}

@media(max-width:479px) {
  .hero__slide {
    min-height: 680px
  }

  .hero h1,
  .hero h2 {
    font-size: 2.85rem
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding-top: 118px;
    padding-bottom: 108px
  }
}

/* 29c. MODERN HOMEPAGE SECTIONS */
.modern-section {
  position: relative;
  overflow: hidden
}

.modern-head h2 {
  max-width: 760px
}

.modern-head>p {
  font-size: 1rem;
  max-width: 420px
}

.service-bento {
  display: grid;
  grid-template-columns: 1.35fr 1fr 1fr;
  grid-auto-rows: minmax(250px, auto);
  gap: 18px
}

.service-card {
  position: relative;
  min-height: 250px;
  padding: 28px;
  border: 1px solid var(--color-border);
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  overflow: hidden;
  transition: transform var(--transition-normal), box-shadow var(--transition-normal), border-color var(--transition-normal)
}

.service-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-hover);
  border-color: #b8b8b4
}

.service-card .icon--large {
  width: 42px;
  height: 42px;
  stroke-width: 1.1
}

.service-card h3 {
  font-size: 1.55rem;
  letter-spacing: -.035em;
  margin-top: 28px
}

.service-card p {
  font-size: .925rem;
  line-height: 1.7;
  margin-top: 12px;
  max-width: 360px
}

.service-card__number {
  font-size: .75rem;
  color: #777
}

.service-card--feature {
  grid-row: span 2;
  min-height: 520px;
  color: #fff;
  padding: 0;
  justify-content: flex-end;
  border: 0
}

.service-card--feature img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  filter: grayscale(1);
  transition: transform var(--transition-slow)
}

.service-card--feature:hover img {
  transform: scale(1.04)
}

.service-card--feature::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #00000014 0%, #000000c9 100%)
}

.service-card__content {
  position: relative;
  z-index: 1;
  padding: 34px
}

.service-card--feature p {
  color: #e6e6e3
}

.service-card--feature .pill {
  border-color: #ffffff80;
  color: #fff;
  background: #ffffff17
}

.service-card--dark {
  background: #151515;
  color: #fff;
  border-color: #151515
}

.service-card--dark p {
  color: #d8d8d5
}

.service-card--dark .text-link {
  margin-top: 24px
}

.problem-shell {
  display: grid;
  grid-template-columns: .85fr 1.35fr;
  gap: 60px;
  align-items: start
}

.problem-copy {
  position: sticky;
  top: 120px
}

.problem-copy .button {
  margin-top: 28px
}

.problem-grid--cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px
}

.problem-grid--cards .problem-link {
  min-height: 142px;
  padding: 20px;
  border: 1px solid var(--color-border);
  background: #fff;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start
}

.problem-grid--cards .problem-link span {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -.02em
}

.problem-grid--cards .problem-link small {
  font-size: .78rem;
  color: #777;
  line-height: 1.5
}

.problem-grid--cards .problem-link:hover {
  background: #171717;
  color: #fff;
  border-color: #171717
}

.problem-grid--cards .problem-link:hover small {
  color: #d7d7d2
}

.about-modern__grid {
  display: grid;
  grid-template-columns: .95fr 1.05fr;
  gap: 68px;
  align-items: stretch
}

.about-modern__media {
  position: relative;
  min-height: 520px;
  overflow: hidden;
  background: #ddd
}

.about-modern__media img {
  filter: grayscale(1);
  transition: transform var(--transition-slow)
}

.about-modern__media:hover img {
  transform: scale(1.035)
}

.about-stat {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 24px;
  background: #fffffff2;
  backdrop-filter: blur(12px);
  padding: 22px;
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center
}

.about-stat strong {
  font-size: 1.4rem;
  letter-spacing: -.04em
}

.about-stat span {
  font-size: .8125rem;
  color: #555;
  max-width: 190px
}

.about-modern__copy>p {
  font-size: 1.08rem;
  line-height: 1.85;
  margin-top: 24px;
  max-width: 640px
}

.about-points {
  display: grid;
  gap: 14px;
  margin-top: 34px
}

.about-points>div {
  padding: 22px 0;
  border-top: 1px solid var(--color-border);
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 18px;
  align-items: start
}

.about-points span {
  font-size: .75rem;
  color: #777;
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
  padding-top: .32em
}

.about-points h3 {
  font-size: 1.12rem;
  margin-bottom: 6px
}

.about-points p {
  font-size: .9375rem;
  line-height: 1.7;
  color: var(--color-muted);
  max-width: 52ch
}

.approach-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  gap: 18px
}

.approach-card {
  min-height: 260px;
  border: 1px solid var(--color-border);
  background: #fff;
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end
}

.approach-card span {
  font-size: .75rem;
  color: #777;
  margin-bottom: auto
}

.approach-card h3 {
  font-size: 1.4rem;
  margin-bottom: 12px
}

.approach-card p {
  font-size: .925rem;
  line-height: 1.7
}

.approach-card--image {
  grid-row: span 2;
  min-height: 538px;
  padding: 0;
  overflow: hidden
}

.approach-card--image img {
  width: 100%;
  height: 100%;
  filter: grayscale(1);
  transition: transform var(--transition-slow)
}

.approach-card--image:hover img {
  transform: scale(1.035)
}

.approach-card--dark {
  background: #171717;
  color: #fff;
  border-color: #171717
}

.approach-card--dark p {
  color: #d9d9d6
}

.approach-card--dark span {
  color: #aaa
}

.process-section {
  background: #fff
}

.process-grid--modern {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border: 1px solid var(--color-border);
  background: #fff
}

.process-grid--modern .process-step {
  min-height: 270px;
  padding: 30px;
  border: 0;
  border-right: 1px solid var(--color-border);
  display: flex;
  flex-direction: column
}

.process-grid--modern .process-step:last-child {
  border-right: 0
}

.process-grid--modern .process-step::before {
  display: none
}

.process-grid--modern .process-step__number {
  width: 44px;
  height: 44px;
  border: 1px solid var(--color-border);
  border-radius: 50%;
  display: grid;
  place-items: center;
  margin-bottom: auto;
  color: #171717
}

.process-grid--modern h3 {
  font-size: 1.32rem
}

.area-section--modern {
  background: #0b0b0b
}

.area-modern {
  display: grid;
  grid-template-columns: .9fr 1.25fr;
  gap: 64px;
  align-items: start
}

.area-modern__copy {
  position: sticky;
  top: 120px
}

.area-modern__copy h2 {
  margin-bottom: 24px
}

.area-modern__copy .small-text {
  margin-top: 18px;
  color: #9b9b9b
}

.area-list--cards {
  border: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px
}

.area-list--cards a {
  min-height: 156px;
  border: 1px solid #343434;
  background: #151515;
  padding: 22px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  font-size: 1rem;
  letter-spacing: 0
}

.area-list--cards a:hover {
  background: #fff;
  color: #111
}

.area-list--cards span {
  margin: 0;
  color: #8b8b8b
}

.area-list--cards strong {
  font-size: 1.35rem;
  letter-spacing: -.035em
}

.area-list--cards small {
  color: #a6a6a6;
  font-size: .8rem;
  line-height: 1.55
}

.area-list--cards a:hover small {
  color: #555
}

.faq-layout--modern {
  grid-template-columns: .75fr 1.25fr;
  align-items: start
}

.faq-copy {
  position: sticky;
  top: 120px
}

.faq-copy p {
  max-width: 360px
}

.accordion--modern {
  border: 0;
  display: grid;
  gap: 10px
}

.accordion--modern .accordion-item {
  border: 1px solid var(--color-border);
  background: #fff
}

.accordion--modern .accordion-item:first-child {
  border-top: 1px solid var(--color-border)
}

.accordion--modern .accordion-item summary {
  padding: 22px 24px;
  font-size: 1rem
}

.accordion--modern .accordion-body {
  padding: 6px 24px 26px;
  color: #555;
  line-height: 1.7
}

.cta-band--modern {
  background: #0b0b0b;
  color: #fff;
  padding: 78px 0
}

.cta-inner--modern {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 48px
}

.cta-inner--modern h2 {
  margin-top: 18px;
  max-width: 680px
}

.cta-inner--modern p {
  color: #d9d9d6;
  max-width: 480px
}

.cta-inner--modern .pill {
  border-color: #ffffff4d;
  color: #fff
}

.booking-section {
  background: var(--color-bg-soft)
}

.contact-layout--modern {
  grid-template-columns: .78fr 1.22fr;
  align-items: start
}

.contact-intro--modern {
  background: #171717;
  color: #fff;
  padding: 34px;
  position: sticky;
  top: 112px
}

.contact-intro--modern p,
.contact-intro--modern .muted {
  color: #d4d4d0
}

.contact-intro--modern .eyebrow {
  color: #d4d4d0
}

.contact-intro--modern .button--outline {
  color: #fff;
  border-color: #ffffff5c
}

.contact-card-list {
  display: grid;
  gap: 12px;
  margin: 30px 0
}

.contact-card-list .contact-detail {
  margin: 0;
  padding: 18px;
  border: 1px solid #333;
  background: #202020
}

.contact-intro--modern .contact-detail>span,
.booking-note>span {
  color: #aaa
}

.contact-intro--modern .contact-detail p {
  color: #fff
}

.booking-note {
  margin: 24px 0;
  padding: 20px;
  border-left: 1px solid #555
}

.booking-panel {
  background: #fff;
  border: 1px solid var(--color-border);
  padding: 34px;
  box-shadow: var(--shadow-soft)
}

.booking-panel .booking-intro {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  border-bottom: 1px solid var(--color-border);
  padding-bottom: 22px;
  margin-bottom: 24px
}

.booking-panel .booking-intro h3 {
  font-size: 1.8rem
}

.booking-panel .pill {
  white-space: nowrap
}

@media(max-width:1199px) {

  .service-bento,
  .approach-grid {
    grid-template-columns: 1fr 1fr
  }

  .service-card--feature,
  .approach-card--image {
    grid-row: auto;
    min-height: 420px
  }

  .problem-shell,
  .about-modern__grid,
  .area-modern,
  .faq-layout--modern,
  .contact-layout--modern {
    grid-template-columns: 1fr;
    gap: 42px
  }

  .problem-copy,
  .area-modern__copy,
  .faq-copy,
  .contact-intro--modern {
    position: static
  }

  .problem-grid--cards {
    grid-template-columns: repeat(2, 1fr)
  }

  .process-grid--modern {
    grid-template-columns: 1fr 1fr
  }

  .process-grid--modern .process-step:nth-child(2) {
    border-right: 0
  }

  .process-grid--modern .process-step:nth-child(-n+2) {
    border-bottom: 1px solid var(--color-border)
  }
}

@media(max-width:767px) {
  .modern-head {
    gap: 18px
  }

  .service-bento,
  .approach-grid,
  .problem-grid--cards,
  .area-list--cards {
    grid-template-columns: 1fr
  }

  .service-card,
  .approach-card {
    min-height: 220px;
    padding: 24px
  }

  .service-card--feature,
  .approach-card--image {
    min-height: 360px
  }

  .service-card__content {
    padding: 24px
  }

  .about-modern__media {
    min-height: 380px
  }

  .about-stat {
    flex-direction: column;
    align-items: flex-start
  }

  .about-points>div {
    grid-template-columns: 1fr;
    gap: 7px
  }

  .process-grid--modern {
    grid-template-columns: 1fr
  }

  .process-grid--modern .process-step {
    border-left: 0 !important;
    border-right: 0 !important;
    border-bottom: 1px solid var(--color-border);
    padding: 24px;
    min-height: 220px
  }

  .process-grid--modern .process-step:last-child {
    border-bottom: 0
  }

  .cta-inner--modern {
    align-items: flex-start;
    flex-direction: column
  }

  .contact-intro--modern,
  .booking-panel {
    padding: 24px
  }

  .booking-panel .booking-intro {
    display: block
  }

  .booking-panel .booking-intro .pill {
    display: inline-block;
    margin-bottom: 14px
  }
}

/* 29d. REPAIRS SECTION REFINEMENT */
.repair-studio {
  background: #f4f4f1;
  padding: 128px 0 118px
}

.repair-studio .container {
  max-width: 1420px
}

.repair-studio__head {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(300px, .45fr);
  align-items: end;
  gap: 72px;
  margin-bottom: 62px
}

.repair-studio__head h2 {
  font-size: clamp(3.4rem, 6.1vw, 6.7rem);
  line-height: .98;
  letter-spacing: -.075em;
  max-width: 930px
}

.repair-studio__summary {
  font-size: 1.12rem;
  line-height: 1.75;
  color: #6a6a66;
  max-width: 440px;
  margin-bottom: 12px
}

.repair-studio__grid {
  display: grid;
  grid-template-columns: minmax(440px, 1.1fr) repeat(2, minmax(260px, .78fr));
  grid-template-rows: repeat(2, minmax(310px, 1fr));
  gap: 20px
}

.repair-studio .service-card {
  border-color: #d9d9d4;
  background: #fff;
  border-radius: 0;
  box-shadow: none
}

.repair-studio .service-card:not(.service-card--feature) {
  min-height: 0;
  padding: 34px 34px 32px;
  isolation: isolate
}

.repair-studio .service-card:not(.service-card--feature)::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: #171717;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transition-normal)
}

.repair-studio .service-card:not(.service-card--feature):hover::before {
  transform: scaleX(1)
}

.repair-studio .service-card__number {
  font-size: .82rem;
  color: #8a8a86
}

.repair-studio .service-card .icon--large {
  width: 44px;
  height: 44px;
  margin-top: 26px;
  stroke-width: 1.35
}

.repair-studio .service-card h3 {
  font-size: clamp(1.35rem, 1.65vw, 1.85rem);
  letter-spacing: -.055em;
  line-height: 1.08;
  margin-top: auto;
  margin-bottom: 14px
}

.repair-studio .service-card p {
  font-size: 1rem;
  line-height: 1.72;
  color: #6a6a66;
  max-width: 390px
}

.repair-studio .service-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 22px 50px #0000000d;
  border-color: #c5c5bf
}

.repair-studio .service-card--feature {
  grid-row: 1/3;
  min-height: auto;
  border: 0;
  background: #111;
  box-shadow: 0 22px 55px #00000018
}

.repair-studio .service-card--feature::after {
  background: linear-gradient(180deg, #0000000a 0%, #00000042 42%, #000000e0 100%)
}

.repair-studio .service-card--feature img {
  opacity: .92
}

.repair-studio .service-card__content {
  padding: 44px;
  max-width: 560px
}

.repair-studio .service-card--feature .pill {
  border-color: #ffffff80;
  background: #11111159;
  backdrop-filter: blur(8px);
  padding: 8px 16px;
  font-size: .82rem
}

.repair-studio .service-card--feature h3 {
  font-size: clamp(2rem, 2.9vw, 3rem);
  letter-spacing: -.06em;
  margin: 28px 0 12px
}

.repair-studio .service-card--feature p {
  font-size: 1.08rem;
  color: #ededeb;
  max-width: 470px
}

.repair-studio .service-card--feature .text-link {
  margin-top: 20px;
  color: #fff;
  border-bottom-color: #ffffff8f;
  font-size: .98rem
}

.repair-studio .service-card--dark {
  background: #111;
  color: #fff;
  border-color: #111
}

.repair-studio .service-card--dark::before {
  background: #fff
}

.repair-studio .service-card--dark p {
  color: #cfcfcc
}

.repair-studio .service-card--dark .service-card__number {
  color: #777
}

.repair-studio .service-card--dark .text-link {
  margin-top: auto;
  border-bottom-color: #ffffff8f
}

.repair-studio .service-card--dark:hover {
  box-shadow: 0 24px 60px #00000024
}

@media(max-width:1199px) {
  .repair-studio {
    padding: 104px 0
  }

  .repair-studio__head {
    grid-template-columns: 1fr;
    gap: 24px
  }

  .repair-studio__head h2 {
    max-width: 900px
  }

  .repair-studio__summary {
    max-width: 620px
  }

  .repair-studio__grid {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto
  }

  .repair-studio .service-card--feature {
    grid-column: 1/-1;
    min-height: 520px
  }

  .repair-studio .service-card:not(.service-card--feature) {
    min-height: 270px
  }
}

@media(max-width:767px) {
  .repair-studio {
    padding: 78px 0
  }

  .repair-studio__head h2 {
    font-size: clamp(2.55rem, 11vw, 4.2rem)
  }

  .repair-studio__summary {
    font-size: 1rem
  }

  .repair-studio__grid {
    grid-template-columns: 1fr;
    gap: 14px
  }

  .repair-studio .service-card--feature {
    min-height: 480px
  }

  .repair-studio .service-card__content {
    padding: 26px
  }

  .repair-studio .service-card--feature h3 {
    font-size: 2rem
  }

  .repair-studio .service-card:not(.service-card--feature) {
    min-height: 235px;
    padding: 24px
  }

  .repair-studio .service-card .icon--large {
    margin-top: 18px
  }

  .repair-studio .service-card h3 {
    font-size: 1.45rem
  }
}

/* 29e. PROBLEM SECTION VISUAL CARDS */
.problem-lab {
  background: #fff;
  padding: 118px 0
}

.problem-lab .problem-shell {
  grid-template-columns: minmax(360px, .82fr) minmax(0, 1.38fr);
  gap: 72px;
  align-items: center
}

.problem-lab .problem-copy h2 {
  font-size: clamp(3rem, 5vw, 5.35rem);
  line-height: 1.02;
  letter-spacing: -.072em;
  max-width: 720px
}

.problem-lab .problem-copy .lead-copy {
  font-size: 1.12rem;
  line-height: 1.75;
  max-width: 560px;
  margin-top: 18px
}

.problem-lab .problem-copy .button {
  margin-top: 34px;
  min-width: 230px
}

.problem-lab__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px
}

.problem-lab .problem-card {
  position: relative;
  min-height: 236px;
  padding: 0;
  border: 1px solid #deded9;
  background: #fff;
  display: flex;
  flex-direction: column;
  justify-content: stretch;
  overflow: hidden;
  isolation: isolate;
  transition: transform var(--transition-normal), box-shadow var(--transition-normal), border-color var(--transition-normal), background var(--transition-normal), color var(--transition-normal)
}

.problem-lab .problem-card::after {
  content: '';
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 0;
  height: 3px;
  background: #171717;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transition-normal)
}

.problem-lab .problem-card:hover {
  transform: translateY(-6px);
  border-color: #171717;
  background: #111;
  color: #fff;
  box-shadow: 0 24px 60px #00000014
}

.problem-lab .problem-card:hover::after {
  transform: scaleX(1);
  background: #fff
}

.problem-card__media {
  position: relative;
  display: block;
  height: 92px;
  background: #ededeb;
  overflow: hidden
}

.problem-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1);
  opacity: .86;
  transform: scale(1.02);
  transition: transform var(--transition-slow), opacity var(--transition-normal)
}

.problem-card__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #00000008, #00000052)
}

.problem-card__media>span {
  position: absolute;
  left: 16px;
  bottom: 13px;
  z-index: 1;
  font-size: .72rem;
  font-weight: 650;
  letter-spacing: .08em;
  color: #fff
}

.problem-card:hover .problem-card__media img {
  transform: scale(1.09);
  opacity: .62
}

.problem-card__body {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  padding: 24px 24px 28px
}

.problem-card__body>.icon {
  width: 42px;
  height: 42px;
  padding: 10px;
  border: 1px solid #d4d4cf;
  background: #f6f6f3;
  stroke-width: 1.6;
  color: #171717;
  transition: background var(--transition-normal), border-color var(--transition-normal), color var(--transition-normal), transform var(--transition-normal)
}

.problem-card__body>span {
  display: grid;
  gap: 12px;
  min-width: 0
}

.problem-card__body span span {
  font-size: 1.15rem;
  font-weight: 650;
  letter-spacing: -.045em;
  line-height: 1.12
}

.problem-card__body small {
  font-size: .86rem;
  line-height: 1.55;
  color: #777;
  max-width: 220px;
  transition: color var(--transition-normal)
}

.problem-lab .problem-card:hover .problem-card__body>.icon {
  background: #fff;
  border-color: #fff;
  color: #111;
  transform: translateY(-2px)
}

.problem-lab .problem-card:hover small {
  color: #d8d8d4
}

@media(max-width:1199px) {
  .problem-lab {
    padding: 100px 0
  }

  .problem-lab .problem-shell {
    grid-template-columns: minmax(0, 1fr);
    gap: 42px
  }

  .problem-lab .problem-copy {
    position: static
  }

  .problem-lab .problem-copy h2 {
    max-width: 850px
  }

  .problem-lab .problem-copy .lead-copy {
    max-width: 650px
  }

  .problem-lab__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr))
  }

  .problem-lab .problem-card {
    min-height: 224px
  }
}

@media(max-width:767px) {
  .problem-lab {
    padding: 78px 0
  }

  .problem-lab .problem-copy h2 {
    font-size: clamp(2.45rem, 10vw, 4rem);
    letter-spacing: -.06em
  }

  .problem-lab .problem-copy .lead-copy {
    font-size: 1rem
  }

  .problem-lab .problem-copy .button {
    width: 100%;
    min-width: 0
  }

  .problem-lab__grid {
    grid-template-columns: 1fr;
    gap: 14px
  }

  .problem-lab .problem-card {
    min-height: 0
  }

  .problem-card__media {
    height: 108px
  }

  .problem-card__body {
    grid-template-columns: 40px 1fr;
    padding: 22px
  }

  .problem-card__body>.icon {
    width: 40px;
    height: 40px
  }

  .problem-card__body span span {
    font-size: 1.08rem
  }

  .problem-card__body small {
    max-width: none
  }
}

/* 29f. PROBLEM ICON-ONLY CARDS */
.problem-lab .problem-card {
  min-height: 244px;
  padding: 26px;
  background: #fff;
  justify-content: space-between;
  border-color: #ddddda;
  box-shadow: 0 1px 0 #00000005
}

.problem-lab .problem-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, #f7f7f4 0%, #fff 42%, #efefeb 100%);
  opacity: .72;
  z-index: -1;
  transition: opacity var(--transition-normal)
}

.problem-lab .problem-card::after {
  left: 26px;
  right: 26px
}

.problem-card__top {
  display: flex;
  align-items: center;
  justify-content: space-between
}

.problem-card__top>span {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border: 1px solid #d4d4cf;
  background: #fff;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: #777
}

.problem-card__top::after {
  content: '';
  width: 34px;
  height: 34px;
  border-top: 1px solid #c9c9c3;
  border-right: 1px solid #c9c9c3;
  transform: translate(-2px, 8px) rotate(45deg);
  opacity: .42;
  transition: transform var(--transition-normal), opacity var(--transition-normal), border-color var(--transition-normal)
}

.problem-lab .problem-card:hover::before {
  opacity: 0
}

.problem-lab .problem-card:hover .problem-card__top>span {
  border-color: #ffffff42;
  background: #ffffff12;
  color: #fff
}

.problem-lab .problem-card:hover .problem-card__top::after {
  border-color: #fff;
  opacity: .85;
  transform: translate(2px, 4px) rotate(45deg)
}

.problem-card__body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 22px;
  padding: 0
}

.problem-card__body>.icon {
  width: 74px;
  height: 74px;
  padding: 20px;
  border: 1px solid #cfcfca;
  background: #f8f8f5;
  stroke-width: 1.45;
  color: #111
}

.problem-card__body>span {
  gap: 10px
}

.problem-card__body span span {
  font-size: 1.32rem;
  letter-spacing: -.055em;
  line-height: 1.04;
  max-width: 230px
}

.problem-card__body small {
  font-size: .92rem;
  font-weight: 500;
  color: #70706c;
  max-width: 240px
}

.problem-lab .problem-card:hover .problem-card__body>.icon {
  background: #fff;
  border-color: #fff;
  color: #111;
  transform: translateY(-4px) scale(1.03)
}

.problem-lab .problem-card:hover small {
  color: #d7d7d2
}

@media(max-width:1199px) {
  .problem-lab .problem-card {
    min-height: 226px
  }

  .problem-card__body span span {
    max-width: none
  }
}

@media(max-width:767px) {
  .problem-lab .problem-card {
    min-height: 220px;
    padding: 22px
  }

  .problem-card__top>span {
    width: 40px;
    height: 40px
  }

  .problem-card__top::after {
    width: 28px;
    height: 28px
  }

  .problem-card__body {
    gap: 18px
  }

  .problem-card__body>.icon {
    width: 64px;
    height: 64px;
    padding: 17px
  }

  .problem-card__body span span {
    font-size: 1.2rem
  }

  .problem-card__body small {
    font-size: .88rem
  }
}

/* 30. ACCESSIBILITY */
:focus-visible {
  outline: 2px solid #171717;
  outline-offset: 5px
}

.area-section :focus-visible {
  outline-color: #fff
}

.skip-link {
  position: fixed;
  top: -100px;
  left: 16px;
  z-index: 2000;
  background: #171717;
  color: #fff;
  padding: 12px 20px
}

.skip-link:focus {
  top: 10px
}

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

[hidden] {
  display: none !important
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior: auto
  }

  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important
  }
}

/* 31. PRINT */
@media print {

  .site-header,
  .floating-actions,
  .mobile-bottom,
  .offcanvas,
  .hero__controls,
  .button,
  .booking-form,
  .contact-map {
    display: none !important
  }

  .section {
    padding: 25px 0
  }

  .container {
    width: 100%
  }

  .hero__image-wrap {
    display: none
  }

  .hero__content {
    padding: 20px 0
  }

  .hero__slide {
    min-height: 0
  }

  .site-footer {
    padding: 20px 0
  }

  body {
    font-size: 12pt
  }

  a[href^='tel:']::after {
    content: ' (' attr(href) ')'
  }
}

/* ========================================
   PURE HTML / CSS / JAVASCRIPT COMPONENTS
======================================== */
.container {
  margin-inline: auto
}

.w-100 {
  width: 100%
}

.mt-2 {
  margin-top: .5rem
}

.mt-3 {
  margin-top: 1rem
}

.mt-4 {
  margin-top: 1.5rem
}

.mt-5 {
  margin-top: 3rem
}

.mb-4 {
  margin-bottom: 1.5rem
}

.offcanvas {
  position: fixed;
  z-index: 1001;
  top: 0;
  right: 0;
  width: min(90vw, 390px);
  height: 100dvh;
  background: #fff;
  transform: translateX(102%);
  visibility: hidden;
  transition: transform var(--transition-normal), visibility var(--transition-normal);
  overflow-y: auto;
  box-shadow: -20px 0 50px #0002
}

.offcanvas.is-open {
  transform: translateX(0);
  visibility: visible
}

.offcanvas-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px;
  border-bottom: 1px solid var(--color-border)
}

.offcanvas-header h2 {
  font-size: 1.25rem
}

.offcanvas-body {
  padding: 4px 24px 30px
}

.menu-backdrop {
  position: fixed;
  z-index: 1000;
  inset: 0;
  background: #0008
}

.menu-open {
  overflow: hidden
}

.menu-close {
  border-color: transparent
}

.accordion {
  border-top: 1px solid var(--color-border)
}

.accordion-item {
  border-bottom: 1px solid var(--color-border)
}

.accordion-item summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 24px 4px;
  font-size: .9375rem;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -.015em;
  cursor: pointer
}

.accordion-item summary::-webkit-details-marker {
  display: none
}

.accordion-item summary::after {
  content: '+';
  font-size: 1.3rem;
  font-weight: 300;
  line-height: 1
}

.accordion-item[open] summary::after {
  content: '−'
}

.accordion-item .accordion-body {
  padding: 0 28px 24px 4px;
  color: var(--color-muted);
  font-size: .9375rem;
  line-height: 1.8
}

/* 29d. APPROACH SECTION — bento refinement */
.approach-grid {
  grid-template-columns: 1.25fr 1fr 1fr;
  gap: 18px;
  align-items: stretch
}

.approach-card {
  min-height: 238px;
  justify-content: flex-end
}

.approach-card span {
  font-variant-numeric: tabular-nums;
  letter-spacing: .08em
}

.approach-card h3 {
  font-size: 1.35rem;
  letter-spacing: -.02em;
  margin-bottom: 10px
}

.approach-card p {
  max-width: 44ch;
  color: var(--color-muted)
}

.approach-card--dark p {
  color: #d9d9d6
}

.approach-card--image {
  grid-row: span 2;
  min-height: 0
}

.approach-card--dark {
  grid-column: span 2;
  min-height: 186px
}

.approach-card--dark p {
  max-width: 60ch
}

.approach-card:not(.approach-card--image) {
  transition: border-color var(--transition-fast), transform var(--transition-fast)
}

.approach-card:not(.approach-card--image):hover {
  border-color: #171717;
  transform: translateY(-2px)
}

@media(max-width:1199px) {
  .approach-grid {
    grid-template-columns: 1fr 1fr
  }

  .approach-card--image {
    grid-column: span 2;
    grid-row: auto;
    min-height: 340px
  }

  .approach-card--dark {
    grid-column: span 2
  }
}

@media(max-width:767px) {
  .approach-grid {
    grid-template-columns: 1fr
  }

  .approach-card {
    min-height: 200px
  }

  .approach-card--image {
    grid-column: auto;
    min-height: 250px
  }

  .approach-card--dark {
    grid-column: auto;
    min-height: 200px
  }
}

.approach-card:not(.approach-card--image) span {
  font-size: 2.1rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.04em;
  color: #dcdcd8
}

.approach-card--dark span {
  color: #3d3d3d
}

.approach-card {
  min-height: 222px
}

.approach-card--dark {
  min-height: 182px
}

@media(max-width:1199px) {
  .approach-card--image {
    min-height: 0;
    aspect-ratio: 21/9
  }
}

@media(max-width:767px) {
  .approach-card--image {
    padding: 0;
    min-height: 0;
    aspect-ratio: 4/3
  }
}

/* 29e. BOOKING SECTION — modern refinement */
.map-button {
  background: none;
  border: 0;
  border-bottom: 1px solid currentColor;
  padding: 10px 0;
  cursor: pointer;
  font: inherit;
  font-size: .8125rem;
  font-weight: 550;
  color: inherit
}

.contact-intro--modern .map-button {
  color: #fff;
  border-bottom-color: #ffffff5c
}

.contact-layout--modern {
  grid-template-columns: .8fr 1.2fr;
  gap: 26px;
  align-items: start
}

.contact-intro--modern {
  padding: 30px;
  position: sticky;
  top: 104px
}

.contact-intro--modern h2 {
  font-size: clamp(2rem, 3vw, 2.6rem)
}

.contact-intro--modern>p {
  font-size: .9375rem;
  max-width: 34ch
}

.contact-card-list {
  gap: 8px;
  margin: 26px 0 22px
}

.contact-card-list .contact-detail {
  padding: 15px 16px;
  border-color: #2e2e2e;
  background: #1e1e1e;
  border-radius: var(--radius-sm)
}

.contact-card-list .contact-detail>a {
  font-size: 1.0625rem
}

.contact-detail--address p {
  font-size: .875rem;
  margin-bottom: 2px
}

.contact-detail--address .map-note {
  font-size: .6875rem;
  line-height: 1.5;
  margin-top: 8px;
  color: #8f8f8f
}

.contact-intro--modern .button--outline {
  width: 100%;
  justify-content: center
}

.booking-panel {
  padding: 32px 34px;
  border-radius: var(--radius-sm)
}

.booking-panel .booking-intro {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "pill pill" "title note";
  align-items: end;
  gap: 4px 32px;
  padding-bottom: 20px;
  margin-bottom: 24px
}

.booking-panel .booking-intro .pill {
  grid-area: pill;
  justify-self: start;
  margin-bottom: 12px
}

.booking-panel .booking-intro h3 {
  grid-area: title;
  font-size: 2rem;
  letter-spacing: -.03em;
  margin-bottom: 0
}

.booking-panel .booking-intro p {
  grid-area: note;
  max-width: 26ch;
  text-align: right;
  color: var(--color-muted)
}

.booking-form input,
.booking-form select,
.booking-form textarea {
  background: #fbfbfa;
  border-color: #dcdcd8;
  transition: border-color var(--transition-fast), background var(--transition-fast)
}

.booking-form input:hover,
.booking-form select:hover,
.booking-form textarea:hover {
  border-color: #adada8
}

.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus {
  background: #fff
}

@media(max-width:1199px) {
  .contact-layout--modern {
    grid-template-columns: 1fr;
    gap: 30px
  }

  .contact-intro--modern {
    position: static
  }

  .booking-panel .booking-intro {
    grid-template-columns: 1fr
  }
}

@media(max-width:767px) {

  .contact-intro--modern,
  .booking-panel {
    padding: 22px
  }

  .booking-panel .booking-intro {
    grid-template-areas: "pill" "title" "note";
    gap: 6px
  }

  .booking-panel .booking-intro h3 {
    font-size: 1.65rem
  }

  .booking-panel .booking-intro p {
    text-align: left;
    max-width: none
  }
}

/* 29f. DEVICE RAIL — icon-only */
.device-item__visual>.icon {
  transition: transform var(--transition-normal)
}

.device-item:hover .device-item__visual>.icon {
  transform: translateY(-5px)
}

/* 29g. BOOKING POPUP */
body.modal-open {
  overflow: hidden
}

.modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px
}

.modal[hidden] {
  display: none
}

.modal__backdrop {
  position: absolute;
  inset: 0;
  background: #11111f99;
  backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity .22s ease
}

.modal__dialog {
  position: relative;
  width: min(840px, 100%);
  max-height: calc(100vh - 56px);
  background: #fff;
  border-radius: var(--radius-sm);
  box-shadow: 0 30px 80px #0000003d;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  opacity: 0;
  transform: translateY(14px) scale(.985);
  transition: opacity .22s ease, transform .22s cubic-bezier(.22, 1, .36, 1)
}

.modal.is-open .modal__backdrop {
  opacity: 1
}

.modal.is-open .modal__dialog {
  opacity: 1;
  transform: none
}

.modal__dialog:focus {
  outline: none
}

.modal__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 26px 30px 20px;
  border-bottom: 1px solid var(--color-border)
}

.modal__head .pill {
  margin-bottom: 12px
}

.modal__head h2 {
  font-size: 1.9rem;
  letter-spacing: -.03em;
  margin-bottom: 6px
}

.modal__head>div>p {
  font-size: .875rem;
  color: var(--color-muted);
  max-width: 46ch
}

.modal__close {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  background: none;
  border: 1px solid var(--color-border);
  border-radius: 50%;
  cursor: pointer;
  color: inherit;
  transition: background var(--transition-fast), border-color var(--transition-fast)
}

.modal__close:hover {
  background: #171717;
  border-color: #171717;
  color: #fff
}

.modal__body {
  padding: 26px 30px 30px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch
}

/* the panel is borrowed from the page, so drop its own frame + duplicate heading */
.modal .booking-panel {
  padding: 0;
  border: 0;
  box-shadow: none;
  background: none;
  border-radius: 0
}

.modal .booking-intro {
  display: none
}

@media(max-width:767px) {
  .modal {
    padding: 0;
    align-items: flex-end
  }

  .modal__dialog {
    width: 100%;
    max-height: 80vh;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    transform: translateY(26px)
  }

  .modal__head {
    padding: 20px 20px 16px
  }

  .modal__head h2 {
    font-size: 1.5rem
  }

  .modal__body {
    padding: 20px
  }
}

@media(prefers-reduced-motion:reduce) {

  .modal__backdrop,
  .modal__dialog {
    transition: none
  }

  .modal__dialog {
    transform: none
  }
}

/* 29h. WHY CHOOSE — benefit + stat cards */
.choose-section {
  background: var(--color-bg-soft)
}

.choose-head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 52px
}

.choose-head h2 {
  font-size: clamp(2.1rem, 4vw, 3.2rem);
  letter-spacing: -.035em;
  margin-bottom: 14px
}

.choose-head p {
  color: var(--color-muted);
  font-size: 1.0625rem
}

.choose-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px
}

.choose-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 30px 28px;
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-soft);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast), border-color var(--transition-fast)
}

.choose-card:hover {
  box-shadow: var(--shadow-hover);
  transform: translateY(-3px);
  border-color: #c9c9c4
}

.choose-card__top {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 18px
}

.choose-card__icon {
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  background: #171717;
  color: #fff;
  border-radius: var(--radius-md)
}

.choose-card__icon .icon {
  width: 22px;
  height: 22px;
  stroke-width: 1.6
}

.choose-card h3 {
  font-size: 1.125rem;
  letter-spacing: -.02em;
  margin: 0
}

.choose-card p {
  color: var(--color-muted);
  font-size: .9375rem;
  line-height: 1.65;
  margin-bottom: 22px
}

.choose-card__stat {
  margin-top: auto;
  font-size: 1.55rem;
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.15
}

@media(max-width:1199px) {
  .choose-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px
  }
}

@media(max-width:767px) {
  .choose-head {
    margin-bottom: 34px
  }

  .choose-grid {
    grid-template-columns: 1fr;
    gap: 16px
  }

  .choose-card {
    padding: 24px 22px;
    border-radius: var(--radius-md)
  }

  .choose-card__stat {
    font-size: 1.4rem
  }
}

/* 29i. HERO SLIDER — colour photos + clearly visible controls */

/* 3. let the photography show its colour */
.hero__image {
  filter: none;
  opacity: 1
}

.hero__image-wrap::after {
  background: linear-gradient(90deg, #000000b8 0%, #00000073 40%, #0000001f 72%, #00000047 100%)
}

.hero__slide--right .hero__image-wrap::after {
  background: linear-gradient(270deg, #000000b8 0%, #00000073 40%, #0000001f 72%, #00000047 100%)
}

/* gentle drift while a slide is on screen — adds life without distracting */
.hero__slide:not([hidden]) .hero__image {
  animation: heroDrift 9s ease-out forwards
}

@keyframes heroDrift {
  from {
    transform: scale(1.02)
  }

  to {
    transform: scale(1.08)
  }
}

/* 2. controls people can actually see and tap */
.hero__controls {
  gap: 12px;
  padding: 8px 14px;
  border-radius: 999px;
  width: auto;
  right: auto;
  left: 0;
  margin-left: clamp(20px, 4vw, 60px);
  background: #0000006b;
  border: 1px solid #ffffff3d;
  backdrop-filter: blur(12px)
}

.hero__controls .icon-button {
  width: 42px;
  height: 42px;
  border-color: #ffffffb8;
  background: #ffffff1f;
  color: #fff
}

.hero__controls .icon-button:hover {
  background: #fff;
  border-color: #fff;
  color: #171717
}

.hero__controls .icon {
  width: 18px
}

.hero__dot {
  opacity: .55
}

.hero__dot[aria-current="true"] {
  opacity: 1
}

@media(max-width:767px) {

  /* the old bar sat low-contrast on a dark photo — make it unmistakable */
  .hero__controls {
    bottom: 24px;
    left: 0;
    right: 0;
    width: auto;
    margin: 0 20px;
    justify-content: space-between;
    padding: 9px 12px;
    background: #000000a3;
    border: 1px solid #ffffff4d;
    backdrop-filter: blur(12px);
    color: #fff
  }

  .hero__controls .icon-button {
    width: 44px;
    height: 44px;
    background: #ffffff29;
    border-color: #fff;
    border-width: 1.5px
  }

  .hero__controls .icon-button:active {
    background: #fff;
    color: #171717
  }

  .hero__controls .icon {
    width: 19px
  }

  /* a bit less dark so the colour survives on small screens too */
  .hero__image-wrap::after,
  .hero__slide--right .hero__image-wrap::after {
    background: linear-gradient(180deg, #000000a6 0%, #0000006b 42%, #00000052 100%)
  }
}

@media(prefers-reduced-motion:reduce) {
  .hero__slide:not([hidden]) .hero__image {
    animation: none
  }
}

/* 29j. HERO LAYOUT — fixed height, copy bottom-left, controls bottom-right */

/* 3. one fixed height for every slide, so swapping slides never moves the page */
.hero {
  height: clamp(640px, 84vh, 860px)
}

.hero__slide {
  height: 100%;
  min-height: 0;
  align-items: flex-end
}

/* 2. copy sits bottom-left on every slide (slide 2 used to sit right and reflow) */
.hero__content,
.hero__slide--right .hero__content {
  margin-left: 0;
  margin-right: auto;
  max-width: 640px;
  padding: 0 0 132px;
  padding-left: 0
}

.hero__content p {
  max-width: 460px
}

/* keep the dark side of the wash on the left for all three slides */
.hero__slide--right .hero__image-wrap::after {
  background: linear-gradient(90deg, #000000b8 0%, #00000073 40%, #0000001f 72%, #00000047 100%)
}

/* 1. controls to the right, inside the same column as the copy */
.hero__controls {
  left: 0;
  right: 0;
  margin-inline: auto;
  justify-content: flex-end;
  background: none;
  border: 0;
  backdrop-filter: none;
  padding: 0;
  border-radius: 0
}

.hero__controls-bar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  border-radius: 999px;
  background: #0000006b;
  border: 1px solid #ffffff3d;
  backdrop-filter: blur(12px)
}

@media(max-width:991px) {
  .hero {
    height: clamp(600px, 80vh, 780px)
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding-bottom: 124px;
    max-width: 560px
  }
}

@media(max-width:767px) {
  .hero {
    height: auto
  }

  .hero__slide {
    height: auto;
    min-height: 640px
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding: 150px 0 120px;
    max-width: 100%
  }

  .hero__content p {
    max-width: 340px
  }

  .hero__controls {
    margin: 0;
    padding: 0 20px
  }

  .hero__controls-bar {
    width: 100%;
    justify-content: space-between;
    padding: 9px 12px;
    background: #000000a3;
    border-color: #ffffff4d
  }
}

/* controls bar: mirror .container's own width math so it lines up with the copy column */
.hero__controls {
  left: 50%;
  right: auto;
  transform: translateX(-50%);
  width: min(calc(100% - 96px), var(--container-max));
  margin-inline: 0
}

@media(max-width:767px) {
  .hero__controls {
    width: calc(100% - 40px);
    padding: 0
  }
}

/* 29k. HERO COPY — smaller, tighter, pinned bottom-left, never under the header */
.hero__slide {
  padding-top: 104px;
  box-sizing: border-box
}

/* reserve the header strip */
.hero h1,
.hero h2 {
  font-size: clamp(2.1rem, 3.9vw, 3.5rem);
  line-height: 1.06;
  margin-bottom: 18px
}

.hero__content,
.hero__slide--right .hero__content {
  max-width: 600px;
  padding: 0 0 76px
}

.hero__content .eyebrow {
  margin-bottom: 16px
}

.hero__content p {
  font-size: 1rem;
  line-height: 1.6;
  max-width: 430px
}

.hero .button-row {
  margin-top: 24px
}

@media(max-width:991px) {
  .hero__slide {
    padding-top: 92px
  }

  .hero h1,
  .hero h2 {
    font-size: clamp(2rem, 4.6vw, 2.8rem)
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding-bottom: 84px;
    max-width: 520px
  }
}

@media(max-width:767px) {
  .hero__slide {
    padding-top: 84px
  }

  .hero h1,
  .hero h2 {
    font-size: clamp(2.1rem, 7.4vw, 2.9rem)
  }

  .hero__content,
  .hero__slide--right .hero__content {
    padding: 0px 0 40px;
    max-width: 100%
  }

  .hero__content p {
    max-width: 330px;
    font-size: .9375rem
  }

  .hero .button-row {
    margin-top: 20px
  }
}

/* 29l. DEVICE RAIL — gradient icons */
.gb-gradients {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden
}

.device-item__visual>.icon {
  stroke: url(#gbIconGrad);
  stroke-width: 1.15
}

.device-item:hover .device-item__visual>.icon {
  stroke: url(#gbIconGradSoft)
}

/* the little arrow picks up the accent on hover so the card reads as clickable */
.device-item .device-item__label .icon {
  transition: transform var(--transition-fast), stroke var(--transition-fast)
}

.device-item:hover .device-item__label .icon {
  stroke: url(#gbIconGrad);
  transform: translate(2px, -2px)
}

/* 29m. DEVICE CARD — gradient wash on hover */
.device-item {
  isolation: isolate
}

/* a background-image can't be animated, so the tint lives on a layer we can fade */
.device-item::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(135deg, #06b6d41f 0%, #3b82f61f 52%, #8b5cf628 100%);
  transition: opacity var(--transition-fast)
}

.device-item:hover::before,
.device-item:focus-visible::before {
  opacity: 1
}

/* accent line that draws in from the left */
.device-item::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 2px;
  pointer-events: none;
  background: linear-gradient(90deg, #06b6d4, #3b82f6, #8b5cf6);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transition-normal)
}

.device-item:hover::after,
.device-item:focus-visible::after {
  transform: scaleX(1)
}

/* the old flat grey would sit on top of the tint */
.device-item:hover {
  background: transparent
}

.device-item:hover .device-item__label {
  color: #1d4ed8
}

@media(prefers-reduced-motion:reduce) {
  .device-item::after {
    transition: none
  }
}

/* 29n. SECTION HEADINGS — one size everywhere
   These four had their own oversized/odd values; put them back on the base
   h2 scale (clamp(2.1rem,3.3vw,3.3rem)) and the shared line-height/tracking. */
.repair-studio__head h2,
.problem-lab .problem-copy h2,
.choose-head h2,
.cta-inner h2 {
  font-size: clamp(2.1rem, 3.3vw, 3.3rem);
  line-height: 1.08;
  letter-spacing: -.045em
}

/* below 480px only .section-head h2 was dropping to 2rem — bring every
   section heading down together so they stay equal on small phones */
@media(max-width:479px) {

  .section-head h2,
  .repair-studio__head h2,
  .problem-lab .problem-copy h2,
  .about-modern__copy h2,
  .area-modern__copy h2,
  .faq-copy h2,
  .choose-head h2,
  .cta-inner h2 {
    font-size: 2rem
  }
}

/* 29o. COMMON PROBLEMS — compact tiles, sticky copy, gradient icons
   Was: 236px-tall cards with big internal gaps and a full-black hover.
   Now: dense icon-left tiles that scan fast and carry the site accent.    */

.problem-lab {
  padding: 104px 0
}

.problem-lab .problem-shell {
  grid-template-columns: minmax(320px, .78fr) minmax(0, 1.42fr);
  gap: 64px;
  align-items: start
}

.problem-lab .problem-copy {
  position: sticky;
  top: 112px
}

.problem-lab .problem-copy .lead-copy {
  font-size: 1.0625rem;
  line-height: 1.7;
  max-width: 420px;
  margin-top: 16px
}

.problem-lab .problem-copy .button {
  margin-top: 28px;
  min-width: 0
}

.problem-lab__grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px
}

.problem-lab .problem-card {
  position: relative;
  min-height: 0;
  padding: 0;
  border: 1px solid #e5e5e1;
  border-radius: var(--radius-md);
  background: #fff;
  overflow: hidden;
  isolation: isolate;
  transform: none;
  box-shadow: none;
  transition: border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast)
}

/* tint layer (a gradient can't be transitioned, so fade a layer instead) */
.problem-lab .problem-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: 0;
  pointer-events: none;
  background: linear-gradient(135deg, #06b6d419 0%, #3b82f619 52%, #8b5cf626 100%);
  transition: opacity var(--transition-fast)
}

/* chevron that slides in on hover */
.problem-lab .problem-card::after {
  content: '';
  position: absolute;
  right: 20px;
  top: 50%;
  width: 7px;
  height: 7px;
  margin-top: -4px;
  border-right: 1.6px solid #3b82f6;
  border-top: 1.6px solid #3b82f6;
  border-radius: 1px;
  background: none;
  transform: translateX(-5px) rotate(45deg);
  opacity: 0;
  transform-origin: center;
  transition: opacity var(--transition-fast), transform var(--transition-fast)
}

.problem-lab .problem-card__body {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 15px 42px 15px 15px
}

.problem-lab .problem-card__body>.icon {
  width: 46px;
  height: 46px;
  padding: 11px;
  border: 0;
  border-radius: var(--radius-md);
  background: #f3f5fa;
  stroke: url(#gbIconGrad);
  stroke-width: 1.5;
  transition: background var(--transition-fast), transform var(--transition-fast)
}

.problem-lab .problem-card__body>span {
  display: grid;
  gap: 2px;
  min-width: 0
}

.problem-lab .problem-card__body span span {
  font-size: .9688rem;
  font-weight: 600;
  letter-spacing: -.022em;
  line-height: 1.25;
  color: var(--color-text)
}

.problem-lab .problem-card__body small {
  font-size: .8125rem;
  line-height: 1.45;
  color: #6f6f6a;
  max-width: none
}

/* hover — accent wash instead of the old full-black flip */
.problem-lab .problem-card:hover {
  background: #fff;
  color: inherit;
  border-color: #c3d6f7;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px #0b2f7a14
}

.problem-lab .problem-card:hover::before {
  opacity: 1
}

.problem-lab .problem-card:hover::after {
  opacity: 1;
  transform: translateX(0) rotate(45deg);
  background: none
}

.problem-lab .problem-card:hover .problem-card__body>.icon {
  background: #fff;
  border-color: transparent;
  color: inherit;
  stroke: url(#gbIconGradSoft);
  transform: none
}

.problem-lab .problem-card:hover .problem-card__body span span {
  color: #1d4ed8
}

.problem-lab .problem-card:hover small {
  color: #5f5f5a
}

.problem-lab .problem-card:focus-visible {
  border-color: #3b82f6
}

.problem-lab .problem-card:focus-visible::before {
  opacity: 1
}

@media(max-width:1199px) {
  .problem-lab {
    padding: 84px 0
  }

  .problem-lab .problem-shell {
    grid-template-columns: minmax(0, 1fr);
    gap: 36px
  }

  .problem-lab .problem-copy {
    position: static
  }

  .problem-lab .problem-copy .lead-copy {
    max-width: 560px
  }
}

@media(max-width:767px) {
  .problem-lab {
    padding: 64px 0
  }

  .problem-lab__grid {
    grid-template-columns: 1fr;
    gap: 8px
  }

  .problem-lab .problem-card__body {
    padding: 13px 38px 13px 13px;
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 12px
  }

  .problem-lab .problem-card__body>.icon {
    width: 42px;
    height: 42px;
    padding: 10px
  }
}

@media(prefers-reduced-motion:reduce) {

  .problem-lab .problem-card,
  .problem-lab .problem-card::after {
    transition: none
  }
}

/* 29p. COMMON PROBLEMS — device filter (segmented control)
   iOS-style pill switch above the tile grid. Narrows the 11 symptom tiles
   to the ones relevant to one device; "All" (default) shows everything.  */

.problem-filter {
  display: flex;
  gap: 2px;
  padding: 4px;
  margin-bottom: 18px;
  background: var(--color-bg-soft);
  border: 1px solid var(--color-border);
  border-radius: 99px;
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: none
}

.problem-filter::-webkit-scrollbar {
  display: none
}

.problem-filter button {
  appearance: none;
  border: 0;
  background: none;
  font: inherit;
  font-size: .8125rem;
  font-weight: 550;
  color: var(--color-muted);
  padding: 9px 17px;
  border-radius: 99px;
  cursor: pointer;
  white-space: nowrap;
  flex: 0 0 auto;
  transition: background var(--transition-fast), color var(--transition-fast)
}

.problem-filter button:hover {
  color: var(--color-text)
}

.problem-filter button[aria-selected="true"] {
  background: #fff;
  color: var(--color-text);
  box-shadow: 0 1px 3px #00000014
}

.problem-filter button[aria-selected="true"]:hover {
  color: var(--color-text)
}

.problem-filter button:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 2px
}

.problem-lab__grid .problem-card[hidden] {
  display: none
}

@media(max-width:767px) {
  .problem-filter {
    margin-bottom: 14px
  }

  .problem-filter button {
    padding: 8px 14px;
    font-size: .78125rem
  }
}

@media(prefers-reduced-motion:reduce) {
  .problem-filter button {
    transition: none
  }
}

/* 29q. ABOUT SECTION — colour photo, location pill, gradient step numbers
   Was: greyscale photo, a full-width "Doorstep and pickup support" bar,
   and plain grey 01/02/03 digits. Now: the real photo colour, a compact
   location pill, and gradient-ringed numbers matching the rest of the site. */

.about-modern__media img {
  filter: none
}

.about-modern__media::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 60%, #00000030 100%)
}

.about-stat {
  left: 24px;
  right: auto;
  bottom: 24px;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  padding: 12px 20px 12px 16px;
  border-radius: 99px;
  box-shadow: 0 8px 24px #00000018
}

.about-stat .icon {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  stroke: url(#gbIconGrad);
  stroke-width: 1.8
}

.about-stat strong {
  font-size: .9375rem;
  font-weight: 600;
  letter-spacing: -.015em
}

.about-points>div {
  display: block;
  position: relative;
  padding: 20px 0 20px 60px;
  border-top: 0;
  border-bottom: 1px solid var(--color-border)
}

.about-points>div:last-child {
  border-bottom: 0
}

.about-points span {
  position: absolute;
  left: 0;
  top: 20px;
  width: 38px;
  height: 38px;
  padding: 0;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--color-bg-soft);
  border: 1.5px solid #d3e0fb;
  font-size: .8125rem;
  font-weight: 650;
  color: #3b82f6;
  letter-spacing: 0
}

@media(max-width:767px) {
  .about-stat {
    padding: 10px 16px 10px 13px
  }

  .about-points>div {
    padding-left: 52px
  }

  .about-points span {
    width: 34px;
    height: 34px;
    top: 20px
  }
}

/* 29r. APPROACH SECTION UPGRADE — colour photo, gradient step icons
   Was: a greyscale photo and plain ghost-grey 01/02/03 digits with no
   iconography. Now: the real photo colour, and a gradient icon chip
   paired with each number, matching the device/problem card language.  */

.approach-card--image img {
  filter: none
}

.approach-card__top {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: auto
}

.approach-card__top span {
  margin-bottom: 0
}

.approach-card__icon {
  width: 40px;
  height: 40px;
  padding: 9px;
  flex: 0 0 auto;
  border: 0;
  border-radius: var(--radius-md);
  background: #f3f5fa;
  stroke: url(#gbIconGrad);
  stroke-width: 1.6
}

.approach-card--dark .approach-card__icon {
  background: #ffffff17;
  stroke: url(#gbIconGradSoft)
}

@media(max-width:767px) {
  .approach-card__icon {
    width: 36px;
    height: 36px;
    padding: 8px
  }
}

/* 29s. REPAIR PROCESS — oversized gradient numerals (Variant C)
   Was: a plain grey-bordered circle with a small "01" inside, then a
   big empty gap before the heading. Now: a bold gradient-filled digit
   sitting right above the heading, editorial and unmissable.         */

.process-grid--modern .process-step {
  justify-content: center
}

.process-grid--modern .process-step__number {
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  display: block;
  margin-bottom: 18px;
  font-size: 4rem;
  font-weight: 700;
  line-height: .8;
  letter-spacing: -.05em;
  font-variant-numeric: tabular-nums;
  background-image: linear-gradient(135deg, #06b6d4, #3b82f6 55%, #8b5cf6);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent
}

@media(max-width:1199px) {
  .process-grid--modern .process-step__number {
    font-size: 3.4rem;
    margin-bottom: 14px
  }
}

@media(max-width:767px) {
  .process-grid--modern .process-step__number {
    font-size: 3rem;
    margin-bottom: 10px
  }
}

.process-grid--modern {
  border: 0
}

/* 29t. REPAIR PROCESS — centre each step's content within its column */
.process-grid--modern .process-step {
  align-items: center;
  text-align: center
}

.process-grid--modern .process-step p {
  max-width: 32ch
}

/* 29u. WHY CHOOSE — featured bento (Variant C)
   Was: six identical flat cards. Now: the strongest proof point
   (the 4.9/5 rating) is pulled into one large dark highlight card
   with a soft gradient wash; the other five sit as smaller tiles
   beside it, echoing the bento treatment already used elsewhere.  */

.choose-grid--bento {
  grid-template-columns: 1fr 2fr;
  align-items: stretch
}

.choose-grid__rest {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px
}

.choose-card--feature {
  background: #171717 url('https://images.unsplash.com/photo-1507220529008-e931df30d1ed?fm=webp&q=80&w=1200&fit=crop') center/cover no-repeat;
  border-color: #171717;
  color: #fff;
  position: relative;
  overflow: hidden;
  justify-content: flex-end
}

.choose-card--feature::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: .9;
  pointer-events: none;
  background: linear-gradient(180deg, #171717d9 0%, #171717f2 55%, #171717 100%),
    radial-gradient(120% 100% at 0% 0%, #8b5cf64d, transparent 55%),
    radial-gradient(120% 100% at 100% 100%, #06b6d44d, transparent 55%)
}

.choose-card--feature>* {
  position: relative
}

.choose-grid__rest .choose-card__icon {
  background: linear-gradient(135deg, #06b6d41a, #3b82f61a 52%, #8b5cf626)
}

.choose-grid__rest .choose-card__icon .icon {
  stroke: url(#gbIconGrad);
  stroke-width: 1.6
}

.choose-card--feature .choose-card__icon {
  background: #ffffff1f;
  color: #fff;
  margin-bottom: 20px
}

.choose-card--feature .choose-card__stat {
  margin-top: 0;
  margin-bottom: 10px;
  font-size: 2.4rem;
  color: #fff
}

.choose-card--feature h3 {
  color: #fff;
  margin-bottom: 8px
}

.choose-card--feature p {
  color: #d9d9d6;
  margin-bottom: 0
}

@media(max-width:1199px) {
  .choose-grid--bento {
    grid-template-columns: 1fr;
    gap: 20px
  }

  .choose-grid__rest {
    grid-template-columns: repeat(2, 1fr)
  }

  .choose-card--feature {
    min-height: 0
  }
}

@media(max-width:767px) {
  .choose-grid__rest {
    grid-template-columns: 1fr;
    gap: 16px
  }

  .choose-card--feature .choose-card__stat {
    font-size: 1.9rem
  }
}

/* 29v. BOOKING FORM — icon-leading fields (Variant C)
   Was: one flat two-column grid of unrelated-looking fields plus a
   collapsed <details> for the optional extras. Now: every field
   carries a small inline gradient icon inside its input, rounded
   corners and a soft gradient focus ring instead of a hard outline —
   a "modern SaaS form" feel. The two requested fields (preferred
   service, address/timing/message) have been removed outright from
   the markup; service_type is now submitted as a hidden default. */

.booking-form--iconled {
  grid-template-columns: 1fr 1fr;
  gap: 20px
}

.form-field--iconled {
  position: relative
}

.form-field--iconled label {
  font-size: .875rem;
  font-weight: 550;
  margin-bottom: 7px
}

.form-field--iconled label span {
  font-weight: 400;
  color: #666
}

.form-field--iconled .form-field__icon {
  position: absolute;
  left: 14px;
  top: auto;
  bottom: 15px;
  width: 18px;
  height: 18px;
  stroke: url(#gbIconGrad);
  stroke-width: 1.8;
  pointer-events: none
}

.form-field--iconled input,
.form-field--iconled select {
  border-radius: 11px;
  padding-left: 42px
}

.form-field--iconled input:focus,
.form-field--iconled select:focus {
  outline: 0;
  border-color: transparent;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #3b82f6
}

@media(max-width:479px) {
  .booking-form--iconled {
    grid-template-columns: 1fr
  }
}

/* 29w. BOOKING FORM — visible error state on every empty required field
   Was: relying only on the browser's single native "please fill out
   this field" bubble, which points at one control at a time (and, in
   some browsers, not reliably the first one) while every other empty
   required field looks perfectly normal — confusing when several
   fields still need filling in. Now: once a submit attempt fails,
   .form-was-validated is added to the form and every still-invalid
   field gets a clear red outline and tint at once, live-updating as
   each one is corrected. novalidate on the form (see markup) hands
   all validation timing to this JS-driven check consistently. */

.form-was-validated .form-field--iconled input:invalid,
.form-was-validated .form-field--iconled select:invalid {
  box-shadow: 0 0 0 2px #dc2626;
  background: #fef2f2
}

.form-was-validated .form-field--iconled input:invalid:focus,
.form-was-validated .form-field--iconled select:invalid:focus {
  background: #fef2f2;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #dc2626
}

.form-was-validated .form-field--iconled:has(:invalid) .form-field__icon {
  stroke: #dc2626
}

/* ========================================================================
   29x. SITE-WIDE BENTO CONVERSION — Direction B, "Elevated & punchy"
   Was: hard 1px borders doing the separating everywhere — Why Choose
   tiles, the device rail, the trust strip, approach cards, the
   booking panel, the popup, FAQ boxes, problem tiles, Four Steps
   columns, buttons and form fields. Now: rounded corners + a real
   resting shadow, with a stronger lift-and-glow on hover, and no hard
   borders left standing in for depth. Applied site-wide (this file is
   shared by every page); only the homepage could be screenshotted in
   this session, so the token system below is written to be safe for
   the same components on other pages too.
   ======================================================================== */

:root {
  --bento-r-lg: 22px;
  --bento-r-md: 18px;
  --bento-r-sm: 14px;
  --bento-shadow: 0 10px 28px #00000012;
  --bento-shadow-hover: 0 24px 48px #0000001f;
  --bento-shadow-dark: 0 10px 26px #00000040;
  --bento-shadow-dark-hover: 0 20px 44px #00000060;
}

/* --- Buttons --- */
.button {
  border: 0;
  border-radius: var(--bento-r-md);
  box-shadow: 0 8px 20px #00000022;
  transition: box-shadow var(--transition-fast), transform var(--transition-fast), background var(--transition-fast), color var(--transition-fast)
}

.button:hover {
  box-shadow: 0 14px 30px #00000030;
  transform: translateY(-3px)
}

.button--outline {
  border: 0;
  box-shadow: inset 0 0 0 1.5px #00000018
}

.button--outline:hover {
  box-shadow: 0 10px 22px #00000022;
  transform: translateY(-3px)
}

.button--light {
  box-shadow: 0 8px 20px #00000018
}

.button--light:hover {
  box-shadow: 0 14px 28px #00000024;
  transform: translateY(-3px)
}

.button:disabled {
  box-shadow: none;
  transform: none
}

.hero .button--outline {
  box-shadow: inset 0 0 0 1.5px #ffffffb0
}

.hero .button--outline:hover {
  box-shadow: 0 10px 22px #00000030
}

.site-header.is-on-hero:not(.is-scrolled):not(.is-menu-open) .button {
  box-shadow: 0 6px 18px #00000030
}

.cta-inner--modern .pill,
.service-card--feature .pill {
  border: 0;
  box-shadow: inset 0 0 0 1px #ffffff4d
}

.pill {
  border: 0;
  box-shadow: inset 0 0 0 1px #00000014
}

/* --- Form fields (generic + booking form) --- */
.form-field input,
.form-field select,
.form-field textarea {
  border: 0;
  border-radius: var(--bento-r-sm);
  box-shadow: 0 2px 10px #00000012;
  transition: box-shadow var(--transition-fast)
}

.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline: 0;
  box-shadow: 0 0 0 3px #17171733
}

.booking-form input,
.booking-form select,
.booking-form textarea {
  box-shadow: 0 2px 10px #0000000a
}

.booking-form input:hover,
.booking-form select:hover,
.booking-form textarea:hover {
  box-shadow: 0 4px 14px #00000018
}

.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus {
  box-shadow: 0 0 0 3px #3b82f633
}

.form-field--iconled input,
.form-field--iconled select {
  border-radius: var(--bento-r-sm)
}

/* --- Why Choose tiles --- */
.choose-card {
  border: 0;
  border-radius: var(--bento-r-lg);
  box-shadow: var(--bento-shadow)
}

.choose-card:hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-7px)
}

@media(max-width:767px) {
  .choose-card {
    border-radius: var(--bento-r-md)
  }
}

/* --- Device rail: from a bordered strip to individual cards --- */
.device-rail {
  border: 0;
  gap: 14px
}

.device-item {
  border: 0 !important;
  border-radius: var(--bento-r-md);
  box-shadow: 0 6px 18px #00000010;
  transition: box-shadow var(--transition-fast), transform var(--transition-fast), background var(--transition-fast)
}

.device-item::before {
  border-radius: var(--bento-r-md)
}

.device-item:hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-5px)
}

@media(max-width:991px) {
  .device-rail {
    grid-template-columns: repeat(3, 1fr)
  }
}

@media(max-width:767px) {
  .device-item {
    border-radius: var(--bento-r-sm)
  }
}

/* --- Trust strip: from divided strip to individual chips --- */
.trust-strip {
  border: 0
}

.trust-strip__inner {
  gap: 12px
}

.trust-item {
  border: 0 !important;
  border-radius: var(--bento-r-sm);
  padding: 14px 10px;
  box-shadow: 0 4px 14px #00000010;
  transition: box-shadow var(--transition-fast), transform var(--transition-fast)
}

.trust-item:hover {
  box-shadow: 0 12px 26px #0000001a;
  transform: translateY(-3px)
}

/* --- Booking panel + popup dialog --- */
.booking-panel {
  border: 0;
  border-radius: var(--bento-r-lg);
  box-shadow: var(--bento-shadow)
}

.modal .booking-panel {
  box-shadow: none
}

.modal__dialog {
  border-radius: var(--bento-r-lg)
}

@media(max-width:767px) {
  .modal__dialog {
    border-radius: var(--bento-r-lg) var(--bento-r-lg) 0 0
  }
}

/* --- FAQ boxes --- */
.accordion--modern .accordion-item {
  border: 0;
  border-radius: var(--bento-r-md);
  box-shadow: 0 4px 16px #00000010;
  transition: box-shadow var(--transition-fast)
}

.accordion--modern .accordion-item:hover {
  box-shadow: 0 10px 26px #00000018
}

/* --- Approach cards --- */
.approach-card {
  border: 0;
  border-radius: var(--bento-r-lg);
  box-shadow: var(--bento-shadow);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast)
}

.approach-card:not(.approach-card--image):hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-7px)
}

.approach-card--image {
  overflow: hidden
}

.approach-card--dark {
  box-shadow: var(--bento-shadow-dark)
}

/* --- Four Steps: per-column dividers become individual cards --- */
.process-grid--modern {
  border: 0;
  gap: 16px
}

.process-grid--modern .process-step {
  border: 0 !important;
  border-radius: var(--bento-r-lg);
  box-shadow: var(--bento-shadow);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast)
}

.process-grid--modern .process-step:hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-7px)
}

@media(max-width:479px) {
  .process-grid--modern .process-step {
    padding: 26px
  }
}

/* --- Common problem tiles --- */
.problem-lab .problem-card {
  border: 0;
  border-radius: var(--bento-r-md);
  box-shadow: 0 4px 16px #00000010
}

.problem-lab .problem-card:hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-6px)
}

.problem-lab .problem-card:focus-visible {
  box-shadow: 0 0 0 3px #3b82f655
}

/* --- Service area cards (dark section) ---
   A drop-shadow doesn't read against a near-black section background,
   so depth here comes from a lighter fill + a soft inset top highlight
   (like light catching the top edge) instead of --bento-shadow-dark. */
.area-list--cards a {
  border: 0;
  border-radius: var(--bento-r-md);
  background: #1a1a1a;
  box-shadow: inset 0 1px 0 #ffffff1a, 0 10px 24px #00000050;
  transition: box-shadow var(--transition-fast), transform var(--transition-fast), background var(--transition-fast)
}

.area-list--cards a:hover {
  box-shadow: inset 0 1px 0 #ffffff40, 0 20px 40px #00000070;
  transform: translateY(-5px)
}

.area-list--cards a:hover {
  background: #fff
}

/* --- Contact sidebar rows (dark) + floating map --- */
.contact-card-list .contact-detail {
  border: 0;
  border-radius: var(--bento-r-sm);
  box-shadow: inset 0 1px 0 #ffffff1f
}

.contact-map {
  border: 0;
  border-radius: var(--bento-r-md);
  box-shadow: var(--bento-shadow)
}

.about-stat {
  border-radius: var(--bento-r-md);
  box-shadow: var(--bento-shadow)
}

/* --- Generic service/repair cards used on other pages --- */
.service-card {
  border: 0;
  border-radius: var(--bento-r-lg)
}

.service-card:hover {
  box-shadow: var(--bento-shadow-hover)
}

.service-card--dark {
  box-shadow: var(--bento-shadow-dark)
}

.repair-tile,
.repair-feature {
  border-radius: var(--bento-r-lg);
  box-shadow: var(--bento-shadow);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast)
}

.repair-tile:hover,
.repair-feature:hover {
  box-shadow: var(--bento-shadow-hover);
  transform: translateY(-6px)
}

.repair-feature {
  overflow: hidden
}

@media(prefers-reduced-motion:reduce) {

  .choose-card,
  .device-item,
  .trust-item,
  .approach-card,
  .process-grid--modern .process-step,
  .problem-lab .problem-card,
  .area-list--cards a,
  .repair-tile,
  .repair-feature,
  .button,
  .button--outline,
  .button--light {
    transition: none
  }
}

/* 30. LEGAL / POLICY PAGE HERO — full-width image, breadcrumb removed */
.page-intro--media {
  position: relative;
  overflow: hidden;
  background: #0b0b0b;
  isolation: isolate
}

.page-intro__media {
  position: absolute;
  inset: 0;
  z-index: 0
}

.page-intro__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  filter: none
}

.page-intro__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #000000c7 0%, #00000094 45%, #000000bd 100%)
}

.page-intro--media .page-intro__inner {
  position: relative;
  z-index: 1
}

.page-intro--media .eyebrow {
  color: #bcdcffe0
}

.page-intro--media h1 {
  color: #fff
}

.page-intro--media .lead-copy {
  color: #ffffffdb
}

@media(max-width:991px) {
  .page-intro--media {
    padding-top: 150px
  }
}

@media(max-width:767px) {
  .page-intro--media {
    padding: 132px 0 56px
  }
}

/* 31. MOBILE POLISH — hero controls hidden on small screens (desktop-only
   affordance), "Explore repairs"/"Check availability" hints hidden on the
   device rail, and a scroll fade on the Common Problems filter pills so a
   horizontally-scrollable row doesn't read as a design bug. */
@media(max-width:767px) {

  .hero__controls,
  .hero__controls-bar {
    display: none !important
  }

  .device-item small {
    display: none
  }

  .problem-filter {
    position: relative;
    border-radius: var(--bento-r-md)
  }

  .problem-filter::before {
    content: '';
    position: absolute;
    top: 1px;
    right: 1px;
    bottom: 1px;
    width: 46px;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, #f5f5f3 72%);
    border-radius: 0 18px 18px 0;
    z-index: 1
  }

  .problem-filter::after {
    content: '›';
    position: absolute;
    top: 50%;
    right: 6px;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    line-height: 22px;
    text-align: center;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 2px 6px #00000030;
    color: #171717;
    font-size: 15px;
    font-weight: 700;
    pointer-events: none;
    z-index: 2
  }
}

/* ========================================================================
   32. MOBILE SIDEBAR MENU — modern redesign
   Was: a plain white panel — a bare "Gadgets Buzz" heading, a list of
   links separated by thin bottom borders, a flat two-column text list of
   devices, and stacked full-width buttons. Now: a gradient brand mark to
   match the header, each nav row is its own rounded bento tile with an
   icon chip + trailing chevron, popular devices become icon chips in a
   grid (reusing the exact icons from the homepage device rail), and the
   region line reads as a small tag instead of a stray sentence. */

.offcanvas-header {
  border-bottom: 1px solid var(--color-border);
  padding: 22px 20px
}

.offcanvas-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  color: inherit;
  min-width: 0
}

.offcanvas-brand__mark {
  width: 40px;
  height: 40px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  color: #fff;
  background: #000;
  box-shadow: 0 4px 14px #00000026;
  flex: 0 0 auto
}

.offcanvas-brand__mark .icon {
  width: 19px;
  height: 19px;
  stroke-width: 2
}

.offcanvas-brand__text {
  display: flex;
  flex-direction: column;
  min-width: 0
}

.offcanvas-brand__text h2 {
  margin: 0;
  font-size: 1.05rem;
  letter-spacing: -.03em;
  font-weight: 650;
  line-height: 1.2
}

.offcanvas-brand__text small {
  font-size: .625rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #8a8a86;
  font-weight: 500;
  margin-top: 1px
}

.offcanvas-body {
  padding: 16px 18px 28px
}

.mobile-links {
  display: grid;
  gap: 4px;
  margin-bottom: 22px;
  border: 0
}

.mobile-links>a {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px;
  border-bottom: 0;
  border-radius: 14px;
  color: var(--color-text);
  text-decoration: none;
  transition: background var(--transition-fast)
}

.mobile-links>a:hover,
.mobile-links>a:focus-visible {
  background: var(--color-bg-soft)
}

.mobile-links__icon {
  width: 38px;
  height: 38px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  background: var(--color-bg-soft);
  color: #3b82f6;
  flex: 0 0 auto
}

.mobile-links__icon .icon {
  width: 18px;
  height: 18px;
  stroke-width: 1.8
}

.mobile-links__label {
  flex: 1;
  font-size: .9375rem;
  font-weight: 550
}

.mobile-links__chevron {
  width: 16px;
  height: 16px;
  color: #b4b4b0;
  flex: 0 0 auto;
  transition: transform var(--transition-fast)
}

.mobile-links>a:hover .mobile-links__chevron {
  transform: translateX(2px);
  color: #8a8a86
}

.mobile-section-label {
  font-size: .6875rem;
  text-transform: uppercase;
  letter-spacing: .09em;
  font-weight: 650;
  color: #8a8a86;
  margin: 0 4px 10px
}

.mobile-devices {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 22px
}

.mobile-devices a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  font-size: .8125rem;
  font-weight: 550;
  color: var(--color-text);
  text-decoration: none;
  transition: border-color var(--transition-fast), background var(--transition-fast), transform var(--transition-fast)
}

.mobile-devices a .icon {
  width: 18px;
  height: 18px;
  stroke-width: 1.6;
  color: #3b82f6;
  flex: 0 0 auto
}

.mobile-devices a:hover {
  border-color: #3b82f655;
  background: var(--color-bg-soft);
  transform: translateY(-1px)
}

.mobile-cta {
  display: grid;
  gap: 10px;
  margin-bottom: 20px
}

.mobile-cta .button {
  width: 100%;
  margin-top: 0
}

.mobile-region {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .8125rem;
  color: #666;
  background: var(--color-bg-soft);
  padding: 12px 14px;
  border-radius: 12px;
  margin-top: 0
}

.mobile-region .icon {
  width: 16px;
  height: 16px;
  color: #8a8a86;
  flex: 0 0 auto
}

/* ========================================================================
   33. PWA INSTALL TOAST — small floating card instead of a header button
   or a browser popup that may never show. Sits above the mobile bottom
   nav bar on small screens, and bottom-left (clear of the call/WhatsApp
   floating actions on the right) on larger ones. */
.pwa-toast {
  position: fixed;
  left: 20px;
  bottom: 24px;
  z-index: 120;
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: 360px;
  padding: 14px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--bento-r-md, 16px);
  box-shadow: 0 16px 40px #00000026
}

.pwa-toast[hidden] {
  display: none
}

.pwa-toast__icon {
  width: 38px;
  height: 38px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  color: #fff;
  background: #000;
  flex: 0 0 auto
}

.pwa-toast__icon .icon {
  width: 18px;
  height: 18px;
  stroke-width: 2
}

.pwa-toast__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0
}

.pwa-toast__text strong {
  font-size: .875rem;
  font-weight: 650;
  letter-spacing: -.01em
}

.pwa-toast__text small {
  font-size: .75rem;
  color: #777;
  line-height: 1.35
}

.pwa-toast__install {
  flex: 0 0 auto;
  border: 0;
  border-radius: 10px;
  background: #171717;
  color: #fff;
  font-size: .8125rem;
  font-weight: 550;
  padding: 9px 14px;
  cursor: pointer;
  transition: background var(--transition-fast)
}

.pwa-toast__install:hover {
  background: #373737
}

.pwa-toast__close {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: #999;
  cursor: pointer;
  border-radius: 50%
}

.pwa-toast__close:hover {
  background: var(--color-bg-soft);
  color: #555
}

.pwa-toast__close .icon {
  width: 14px;
  height: 14px
}

@media(max-width:767px) {
  .pwa-toast {
    left: 14px;
    right: 14px;
    bottom: calc(96px + env(safe-area-inset-bottom));
    max-width: none
  }
}

/* ========================================================================
   34. MOBILE BOTTOM BAR — floating dock
   Was: a flush, edge-to-edge white bar with a hard top border, sitting
   flat against the bottom of the screen. Now: a rounded floating card
   with margin on both sides and the bottom, a soft shadow and light
   blur, so it reads as a modern floating dock rather than a plain
   browser toolbar. */
@media(max-width:767px) {
  .mobile-bottom {
    left: 14px;
    right: 14px;
    bottom: calc(14px + env(safe-area-inset-bottom));
    border-top: 0;
    border: 1px solid var(--color-border);
    border-radius: 22px;
    background: #fffffff2;
    backdrop-filter: blur(16px);
    box-shadow: 0 14px 34px #00000022;
    padding: 8px
  }

  .mobile-bottom a {
    border-radius: 15px;
    color: #555;
    transition: background var(--transition-fast), color var(--transition-fast)
  }

  .mobile-bottom a:active {
    background: var(--color-bg-soft)
  }

  .mobile-bottom .mobile-bottom__repair {
    border-radius: 15px;
    box-shadow: 0 8px 18px #00000026
  }

  .mobile-bottom .mobile-bottom__repair:active {
    background: #171717
  }
}

/* ========================================================================
   35. FORM STATUS — modern response card
   Was: a flat grey rectangle with a hard 2px black left border, a plain
   line of text and an underlined "text-link". Now: a rounded bento card
   with a colour-coded icon (checkmark on real success, a notice mark on
   the WhatsApp fallback), and the WhatsApp continue link reads as a real
   button rather than a bare underlined link. */
.form-status:not(:empty) {
  padding: 20px;
  background: var(--color-bg-soft);
  border-left: 0;
  border-radius: var(--bento-r-md, 16px);
  box-shadow: 0 4px 16px #00000010
}

.form-status__head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px
}

.form-status__icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  background: #3b82f61a;
  color: #3b82f6
}

.form-status__icon .icon {
  width: 17px;
  height: 17px;
  stroke-width: 2
}

.form-status--ok .form-status__icon {
  background: #16a34a1a;
  color: #16a34a
}

.form-status--warn .form-status__icon {
  background: #d977061a;
  color: #b45309
}

.form-status__msg {
  margin: 0;
  padding-top: 5px;
  color: var(--color-text);
  font-weight: 550;
  font-size: .9375rem;
  line-height: 1.5
}

.form-status__action {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 11px 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--bento-r-sm, 12px);
  font-size: .8125rem;
  font-weight: 550;
  background: #fff;
  color: var(--color-text);
  transition: background var(--transition-fast), border-color var(--transition-fast)
}

.form-status__action:hover {
  background: #171717;
  color: #fff;
  border-color: #171717
}

.form-status__action .icon {
  width: 15px;
  height: 15px;
  transition: transform var(--transition-fast)
}

.form-status__action:hover .icon {
  transform: translateX(3px)
}

.form-status__note {
  margin: 12px 0 0;
  color: #777
}


/* MOBILE FIX — Common Problems cards: restore the icon (was hidden by an old
   list-row rule), stretch the card body to full width so headings/descriptions
   no longer wrap into a narrow column with dead space on the right, and give
   each row a light tap affordance. */
@media(max-width:767px) {
  .problem-lab .problem-card {
    align-items: stretch;
    border-radius: 16px;
    box-shadow: 0 1px 3px #00000012;
    position: relative
  }

  .problem-lab .problem-card__body {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 14px;
    width: 100%;
    box-sizing: border-box;
    padding: 16px 34px 16px 16px
  }

  .problem-lab .problem-card__body>.icon {
    display: flex !important;
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    padding: 9px;
    border-radius: 11px;
    background: #f3f5fa;
    color: #171717;
    align-items: center;
    justify-content: center;
    box-sizing: border-box
  }

  .problem-lab .problem-card__body>span {
    display: grid;
    gap: 4px;
    min-width: 0;
    flex: 1 1 auto
  }

  .problem-lab .problem-card__body span span {
    font-size: 1rem;
    font-weight: 650;
    letter-spacing: -.02em;
    line-height: 1.3
  }

  .problem-lab .problem-card__body small {
    font-size: .8438rem;
    line-height: 1.5;
    color: #777;
    max-width: none
  }

  .problem-lab .problem-card::before {
    content: none
  }

  .problem-lab .problem-card::after {
    content: '›' !important;
    position: absolute !important;
    right: 14px !important;
    left: auto !important;
    bottom: auto !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    text-align: center !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: none !important;
    font-size: 1.35rem !important;
    font-weight: 600 !important;
    color: #bbb !important;
    opacity: 1 !important;
    margin-top: 0 !important
  }

  .problem-lab .problem-card:hover::after {
    color: #fff
  }
}


/* Floating Call button — a second FAB (separate from the desktop-only
   .floating-actions pair) that shows on every screen size, above the mobile
   bottom bar. Shows the number itself (not just an icon) so tapping calls
   right away, no extra step. */
.call-fab {
  position: fixed;
  right: 22px;
  bottom: 134px;
  z-index: 100;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 54px;
  padding: 0 22px 0 18px;
  border-radius: 999px;
  background: #17a34a;
  color: #fff;
  box-shadow: 0 10px 28px #17a34a55, 0 2px 8px #00000030;
  text-decoration: none;
  isolation: isolate;
  transition: transform var(--transition-fast, .15s), box-shadow var(--transition-fast, .15s)
}

.call-fab::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: #17a34a;
  animation: call-fab-pulse 2.2s ease-out infinite
}

@keyframes call-fab-pulse {
  0% { opacity: .55; transform: scale(1) }
  100% { opacity: 0; transform: scale(1.35) }
}

@media (prefers-reduced-motion: reduce) {
  .call-fab::before { animation: none; display: none }
}

.call-fab:hover {
  transform: translateY(-2px) scale(1.03);
  color: #fff;
  box-shadow: 0 14px 34px #17a34a70, 0 4px 10px #00000030
}

.call-fab .icon {
  width: 20px;
  height: 20px;
  flex: 0 0 auto
}

.call-fab__number {
  font-size: 1rem;
  font-weight: 750;
  letter-spacing: -.01em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums
}

@media(max-width:767px) {
  .call-fab {
    right: 16px;
    bottom: calc(85px + env(safe-area-inset-bottom));
    height: 48px;
    padding: 0 16px 0 13px
  }

  .call-fab__number {
    font-size: .9375rem
  }
}
/* Mobile bottom bar — Call & Check price should read as bold as Book repair */
.mobile-bottom a:not(.mobile-bottom__repair){font-weight:800;color:#171717}
.mobile-bottom a:not(.mobile-bottom__repair):active{color:#171717}
