/* E-Bazzar storefront styles — mobile first.
   Base rules are the phone layout. min-width queries add tablet (640px), desktop (960px) and wide (1280px) layouts.
   Below 960px the site uses the hamburger drawer and the bottom tab bar; from 960px the inline header nav. */

:root {
  --ink: #142d38;
  --muted: #5f7177;
  --blue: #007ba9;
  --green: #66ad43;
  --line: #e1e8e9;
  --pale: #f4f7f7;
  --navy: #092e40;
  --gutter: 16px;
  --gx: max(var(--gutter), env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
  --header-h: 60px;
  --tabbar-h: 64px;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --tabbar-space: calc(var(--tabbar-h) + var(--safe-bottom));
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}
@media (min-width: 640px) {
  :root {
    --gutter: 28px;
  }
}
@media (min-width: 960px) {
  :root {
    --gutter: 40px;
    --header-h: 84px;
    --tabbar-space: 0px;
  }
}
@media (min-width: 1280px) {
  :root {
    --gutter: 50px;
  }
}

/* ---------- Base ---------- */
* {
  box-sizing: border-box;
}
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--header-h) + 16px);
}
html.scroll-locked,
html.scroll-locked body {
  overflow: hidden;
}
body {
  margin: 0;
  color: var(--ink);
  font-family: Arial, Helvetica, sans-serif;
  font-size: 16px;
  line-height: 1.5;
  background: white;
  overflow-x: clip;
}
@media (min-width: 960px) {
  body {
    font-size: 14px;
  }
}
a {
  color: inherit;
  text-decoration: none;
}
button,
input,
select,
textarea {
  font: inherit;
}
button,
a,
input,
textarea,
select,
label {
  -webkit-tap-highlight-color: transparent;
}
button {
  cursor: pointer;
}
button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
a,
button {
  transition:
    background 0.2s,
    color 0.2s,
    transform 0.2s,
    border-color 0.2s;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid #63b3d1;
  outline-offset: 3px;
}
img {
  max-width: 100%;
  height: auto;
  display: block;
}
h1,
h2,
h3,
h4,
p {
  margin-top: 0;
}
p {
  line-height: 1.65;
  color: var(--muted);
}
h2 {
  font-size: clamp(26px, 6vw, 34px);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1.2;
  margin-bottom: 12px;
}
h3 {
  font-size: 19px;
  letter-spacing: -0.4px;
}
svg {
  flex-shrink: 0;
  vertical-align: middle;
}
.container {
  width: min(1240px, 100% - 2 * var(--gx));
  margin-inline: auto;
}
.desktop-break {
  display: none;
}
@media (min-width: 960px) {
  .desktop-break {
    display: inline;
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.skip-link {
  position: fixed;
  top: -80px;
  left: 10px;
  padding: 12px;
  background: white;
  z-index: 100;
}
.skip-link:focus {
  top: 10px;
}

/* ---------- Buttons & small parts ---------- */
.button {
  min-height: 48px;
  border-radius: 8px;
  padding: 12px 20px;
  display: inline-flex;
  gap: 12px;
  justify-content: center;
  align-items: center;
  font-size: 15px;
  font-weight: 600;
  border: 1px solid transparent;
  text-align: center;
}
.button:active {
  transform: scale(0.98);
}
@media (min-width: 960px) {
  .button {
    font-size: 13px;
    padding: 13px 22px;
    gap: 18px;
  }
}
@media (hover: hover) {
  .button:hover {
    transform: translateY(-2px);
  }
  .primary:hover {
    background: #006a91;
  }
}
.primary {
  background: var(--blue);
  color: white;
}
.secondary {
  background: white;
  border-color: #d6e0e3;
  color: var(--ink);
}
.light {
  background: white;
  color: var(--navy);
}
.danger {
  background: #fff1f0;
  color: #b83333;
  border-color: #ecc9c5;
}
.button-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
@media (max-width: 639px) {
  /* Side by side when they fit, otherwise full-width rows. */
  .button-row > .button {
    flex: 1 1 auto;
    white-space: nowrap;
  }
}
.icon-btn {
  border: 0;
  background: none;
  padding: 8px;
  min-width: 44px;
  min-height: 44px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
}
.icon-btn:active {
  background: var(--pale);
}
.text-link {
  font-size: 14px;
  font-weight: 600;
  display: inline-flex;
  gap: 12px;
  align-items: center;
  white-space: nowrap;
  min-height: 44px;
  color: var(--ink);
}
@media (min-width: 960px) {
  .text-link {
    font-size: 12px;
    min-height: 0;
    padding-bottom: 4px;
  }
}
.eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  letter-spacing: 1.4px;
  font-weight: 700;
  color: var(--blue);
  line-height: 1.6;
  margin-bottom: 14px;
}
@media (min-width: 960px) {
  .eyebrow {
    font-size: 11px;
    letter-spacing: 1.6px;
    margin-bottom: 18px;
  }
}
.green-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  background: var(--green);
  box-shadow: 0 0 0 4px #73b85414;
}
.count {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 11px;
  background: #eaf4e5;
  color: #487b31;
  font-size: 12px;
  font-weight: 700;
}
.muted {
  color: var(--muted);
}
.small {
  font-size: 14px;
}
@media (min-width: 960px) {
  .small {
    font-size: 12px;
  }
}
.notice {
  padding: 14px 16px;
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.6;
  background: #edf5f8;
  color: #296378;
  margin: 15px 0;
}
@media (min-width: 960px) {
  .notice {
    font-size: 12px;
  }
}
.error {
  background: #fff0ed;
  color: #a23628;
}
.success {
  background: #eef7e9;
  color: #447b2e;
}

/* ---------- Header ---------- */
.topbar {
  display: none;
  background: var(--navy);
  color: #e6f1f3;
  font-size: 12px;
  letter-spacing: 0.3px;
}
.topbar .container {
  height: 34px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.topbar a {
  display: flex;
  align-items: center;
  gap: 9px;
}
@media (min-width: 960px) {
  .topbar {
    display: block;
  }
}
.header {
  position: sticky;
  top: 0;
  z-index: 40;
  background: #ffffffee;
  -webkit-backdrop-filter: saturate(1.8) blur(14px);
  backdrop-filter: saturate(1.8) blur(14px);
  border-bottom: 1px solid var(--line);
  transition:
    transform 0.32s var(--ease),
    box-shadow 0.32s;
}
.header.is-scrolled {
  box-shadow: 0 6px 24px #142d380d;
}
.header.is-hidden {
  transform: translateY(-100%);
  box-shadow: none;
}
.header-inner {
  height: var(--header-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
@media (min-width: 960px) {
  .header-inner {
    gap: 25px;
  }
}
.brand {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-shrink: 0;
  min-height: 44px;
}
.brand-mark {
  font-size: 36px;
  font-weight: 900;
  font-style: italic;
  line-height: 1;
  color: var(--blue);
  position: relative;
  letter-spacing: -0.18em;
  margin-right: 0.2em;
}
.brand-mark > span {
  position: absolute;
  font-size: 0.667em;
  left: 0.433em;
  top: -0.267em;
  color: var(--green);
}
.brand-name {
  display: block;
  font-size: 19px;
  font-weight: 900;
  letter-spacing: -1px;
  color: #0575a0;
}
.brand-name > span {
  color: #65a442;
}
.brand-sub {
  display: none;
  font-size: 8px;
  letter-spacing: 1.1px;
  color: #67797b;
  margin-top: 4px;
  text-align: center;
}
.brand-logo {
  width: auto;
  height: 44px;
  max-width: 150px;
  object-fit: contain;
}
@media (min-width: 640px) {
  .brand-sub {
    display: block;
  }
}
@media (min-width: 960px) {
  .brand-mark {
    font-size: 45px;
  }
  .brand-name {
    font-size: 22px;
  }
  .brand-logo {
    height: 64px;
    max-width: 175px;
  }
}
.nav {
  display: none;
}
@media (min-width: 960px) {
  .nav {
    display: flex;
    gap: clamp(16px, 2vw, 28px);
    align-items: center;
    font-size: 13px;
    font-weight: 600;
  }
  .nav a {
    position: relative;
    white-space: nowrap;
    padding: 10px 0;
  }
  .nav a:hover,
  .nav a.active {
    color: var(--blue);
  }
  .nav a.active:after {
    content: "";
    height: 2px;
    position: absolute;
    bottom: -4px;
    left: 0;
    right: 0;
    background: var(--blue);
  }
}
.nav-dot {
  display: inline-block;
  background: var(--green);
  width: 5px;
  height: 5px;
  border-radius: 100%;
  margin: 0 0 5px 4px;
}
.header-actions {
  display: flex;
  gap: 2px;
  align-items: center;
}
.basket-link {
  display: none;
  gap: 9px;
  align-items: center;
  font-size: 12px;
  font-weight: 600;
  min-height: 44px;
  padding: 0 6px;
}
.basket-label {
  display: none;
}
@media (min-width: 960px) {
  .header-actions {
    gap: 12px;
  }
  .basket-link {
    display: flex;
  }
  .mobile-menu {
    display: none;
  }
}
@media (min-width: 1100px) {
  .basket-label {
    display: inline;
  }
}

/* Header search panel */
.search-panel {
  border-top: 1px solid var(--line);
  padding: 10px 0 12px;
}
.search-form {
  display: flex;
  align-items: center;
  gap: 6px;
}
.search-box {
  position: relative;
  flex: 1;
  display: block;
}
.search-box > svg {
  position: absolute;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
}
.search-box .input {
  padding-left: 42px;
}

/* ---------- Drawer (hamburger menu) ---------- */
.drawer-backdrop,
.sheet-backdrop {
  position: fixed;
  inset: 0;
  z-index: 65;
  background: #06243466;
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
}
.drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 70;
  width: min(360px, 88vw);
  background: white;
  display: flex;
  flex-direction: column;
  box-shadow: -20px 0 60px #092e4033;
  transform: translateX(100%);
  visibility: hidden;
  transition:
    transform 0.35s var(--ease),
    visibility 0s 0.35s;
  padding-bottom: var(--safe-bottom);
  overscroll-behavior: contain;
}
.drawer.is-open {
  transform: none;
  visibility: visible;
  transition: transform 0.35s var(--ease);
}
.drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 8px 8px 20px;
  min-height: var(--header-h);
  border-bottom: 1px solid var(--line);
}
.drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 8px 12px 20px;
}
.drawer-nav {
  display: flex;
  flex-direction: column;
}
.drawer-nav a {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 54px;
  padding: 0 10px;
  border-radius: 12px;
  font-size: 17px;
  font-weight: 600;
}
.drawer-nav a > svg:last-child {
  margin-left: auto;
  color: #a5b3b6;
}
.drawer-nav a:active {
  background: var(--pale);
}
.drawer-nav a.active {
  color: var(--blue);
  background: #eaf5fa;
}
.drawer-ico {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  background: var(--pale);
  color: var(--blue);
}
.drawer-nav a.active .drawer-ico {
  background: white;
}
.drawer-basket {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 54px;
  margin: 10px 0 4px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  font-weight: 600;
}
.drawer-basket .count {
  margin-left: auto;
}
.drawer-card {
  margin-top: 16px;
  padding: 20px;
  border-radius: 14px;
  background: var(--navy);
  color: white;
}
.drawer-card .eyebrow {
  color: #a8d490;
  margin-bottom: 8px;
}
.drawer-card h3 {
  font-size: 19px;
  line-height: 1.35;
  margin-bottom: 14px;
}
.drawer-card .button {
  width: 100%;
}
.drawer-contact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 16px;
}
.drawer-contact .button {
  padding: 10px;
  gap: 8px;
  font-size: 14px;
}
.drawer-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 20px;
  border-top: 1px solid var(--line);
  font-size: 13px;
  color: var(--muted);
}
.drawer-foot a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
@media (min-width: 960px) {
  .drawer,
  .drawer-backdrop,
  .tabbar {
    display: none !important;
  }
}

/* ---------- Bottom tab bar ---------- */
.shop-shell {
  padding-bottom: var(--tabbar-space);
}
.tabbar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 50;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  height: var(--tabbar-space);
  padding: 0 max(4px, env(safe-area-inset-left, 0px)) var(--safe-bottom) max(4px, env(safe-area-inset-right, 0px));
  background: #ffffffef;
  -webkit-backdrop-filter: saturate(1.8) blur(14px);
  backdrop-filter: saturate(1.8) blur(14px);
  border-top: 1px solid var(--line);
}
.tab {
  position: relative;
  border: 0;
  background: none;
  padding: 6px 0 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  color: #6b7d82;
  font-size: 12px;
  font-weight: 600;
}
.tab-icon {
  position: relative;
  display: grid;
  place-items: center;
  width: 52px;
  height: 30px;
  border-radius: 15px;
  transition: background 0.25s;
}
.tab.active {
  color: var(--blue);
}
.tab.active .tab-icon {
  background: #e3f1f7;
}
.tab:active .tab-icon {
  transform: scale(0.92);
}
.tab-badge {
  position: absolute;
  top: -4px;
  right: 4px;
  min-width: 19px;
  height: 19px;
  padding: 0 5px;
  border-radius: 10px;
  border: 2px solid white;
  background: var(--green);
  color: white;
  font-size: 11px;
  font-weight: 700;
  line-height: 15px;
  text-align: center;
}

/* ---------- Toast ---------- */
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(var(--tabbar-space) + 14px);
  z-index: 60;
  transform: translateX(-50%);
  width: max-content;
  max-width: calc(100% - 2 * var(--gx));
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 8px 8px 16px;
  border-radius: 12px;
  background: var(--navy);
  color: white;
  font-size: 15px;
  box-shadow: 0 14px 40px #092e4040;
}
.toast > svg {
  color: #a8d490;
}
.toast a {
  font-weight: 700;
  color: #a8d490;
  padding: 0 10px;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
}
@media (min-width: 960px) {
  .toast {
    bottom: 28px;
    font-size: 14px;
  }
}

/* ---------- Homepage: slider & hero ---------- */
.home-slider {
  position: relative;
  overflow: hidden;
}
.slider-track {
  display: grid;
}
.slider-slide {
  grid-area: 1 / 1;
  min-width: 0;
  touch-action: pan-y;
}
.slider-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding-bottom: 12px;
}
.slider-arrow {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--blue);
  display: grid;
  place-items: center;
}
.slider-dots {
  display: flex;
}
.slider-dots button {
  height: 44px;
  min-width: 24px;
  padding: 0 7px;
  border: 0;
  background: none;
  display: grid;
  place-items: center;
}
.slider-dots .dot {
  position: relative;
  overflow: hidden;
  display: block;
  width: 9px;
  height: 9px;
  border-radius: 6px;
  background: #c9d4c6;
  transition:
    width 0.25s,
    background 0.25s;
}
.slider-dots button.active .dot {
  width: 28px;
  background: var(--green);
}
.slider-dots .dot-fill {
  position: absolute;
  inset: 0;
  background: var(--blue);
  transform-origin: left;
  border-radius: inherit;
}
.hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  padding-top: 20px;
  padding-bottom: 24px;
}
.hero-copy {
  padding: 6px 0 0;
}
.hero h1 {
  font-size: clamp(38px, 11vw, 56px);
  font-weight: 600;
  letter-spacing: -0.045em;
  line-height: 1.05;
  margin: 14px 0;
}
.hero h1 > span {
  color: var(--blue);
}
.hero-copy > p {
  font-size: 16px;
  margin: 14px 0 22px;
}
.hero-bottom {
  display: none;
  gap: 12px;
  align-items: center;
  margin-top: 34px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}
.hero-bottom strong {
  font-weight: 500;
  color: var(--ink);
}
.small-icon {
  display: flex;
  border: 1px solid var(--line);
  padding: 9px;
  border-radius: 50%;
  color: var(--blue);
}
.hero-scene {
  min-height: 300px;
  background: #eef2eb;
  position: relative;
  border-radius: 14px;
  overflow: hidden;
}
.scene-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(#7e9d7d0d 1px, transparent 1px),
    linear-gradient(90deg, #7e9d7d0d 1px, transparent 1px);
  background-size: 40px 40px;
}
.scene-label {
  position: absolute;
  left: 16px;
  right: 16px;
  top: 14px;
  font-size: 11px;
  letter-spacing: 1.6px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 2;
}
.scene-label > span {
  font-size: 22px;
  font-weight: 300;
}
.hero-orbit {
  position: absolute;
  width: 300px;
  height: 300px;
  border: 1px solid #b7c8b89c;
  border-radius: 50%;
  left: calc(50% - 150px);
  top: 10px;
}
.hero-orbit:after {
  content: "";
  position: absolute;
  inset: 30px;
  border-radius: 50%;
  border: 1px solid #b7c8b845;
}
.hero-phone {
  position: absolute;
  width: 310px;
  height: 430px;
  top: -64px;
  left: calc(42% - 155px);
  transform: scale(0.68) rotate(-13deg);
}
.hero-phone .phone-object {
  width: 160px;
  height: 302px;
  box-shadow:
    14px 20px 24px #193f3933,
    inset 3px 2px 6px #dae9d8;
}
.hero-phone .camera-block {
  width: 70px;
  height: 76px;
  gap: 7px;
  padding: 8px;
}
.hero-phone .camera-block i {
  width: 23px;
  height: 23px;
}
.hero-phone .phone-ring {
  width: 70px;
  height: 70px;
}
.hero-charger {
  position: absolute;
  width: 250px;
  height: 300px;
  right: -48px;
  bottom: -44px;
  transform: scale(0.68) rotate(11deg);
}
.hero-charger .charger-object {
  width: 117px;
  height: 139px;
}
.floating-note {
  position: absolute;
  bottom: 14px;
  left: 14px;
  padding: 10px 14px;
  background: #fffffff0;
  border: 1px solid white;
  box-shadow: 0 5px 22px #264c3510;
  border-radius: 8px;
  font-size: 13px;
  display: flex;
  gap: 10px;
  align-items: center;
  z-index: 3;
}
.scene-bottom {
  display: none;
  position: absolute;
  bottom: 24px;
  right: 25px;
  font-size: 11px;
  letter-spacing: 2px;
  color: #718274;
}
.slide-panel {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  align-items: center;
  padding-top: 20px;
  padding-bottom: 24px;
}
.slide-copy h2 {
  font-size: clamp(32px, 9vw, 56px);
  font-weight: 600;
  letter-spacing: -0.045em;
  line-height: 1.08;
  margin: 14px 0;
}
.slide-copy p {
  margin: 0 0 22px;
  max-width: 460px;
}
.slide-art,
.slide-banner-image {
  min-height: 300px;
  border-radius: 14px;
  background: #eef2eb;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.slide-banner-image {
  width: 100%;
  height: 300px;
  object-fit: cover;
}
@media (min-width: 640px) {
  .hero-scene {
    min-height: 400px;
  }
  .hero-orbit {
    width: 380px;
    height: 380px;
    left: calc(50% - 190px);
  }
  .hero-phone {
    top: -20px;
    left: calc(40% - 155px);
    transform: scale(0.85) rotate(-13deg);
  }
  .hero-charger {
    right: -10px;
    bottom: -10px;
    transform: scale(0.85) rotate(11deg);
  }
  .scene-label {
    left: 24px;
    right: 24px;
    top: 22px;
  }
  .floating-note {
    left: 24px;
    bottom: 24px;
  }
  .scene-bottom {
    display: block;
  }
  .slide-art {
    min-height: 360px;
  }
  .slide-banner-image {
    height: 360px;
  }
}
@media (min-width: 960px) {
  .slider-controls {
    gap: 16px;
    padding-bottom: 20px;
  }
  .hero {
    grid-template-columns: 1fr 1fr;
    gap: 42px;
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .hero-copy {
    padding: 35px 0 15px;
  }
  .hero h1 {
    font-size: clamp(44px, 4.7vw, 68px);
    letter-spacing: -3px;
    line-height: 1.06;
    margin: 23px 0;
  }
  .hero-copy > p {
    font-size: 15px;
    line-height: 1.8;
    margin: 25px 0;
  }
  .hero-bottom {
    display: flex;
  }
  .hero-scene {
    min-height: 480px;
    border-radius: 12px;
  }
  .hero-orbit {
    width: 450px;
    height: 450px;
    left: 70px;
    top: 78px;
  }
  .hero-orbit:after {
    inset: 38px;
  }
  .hero-phone {
    top: 46px;
    left: -10px;
    transform: rotate(-15deg);
  }
  .hero-charger {
    right: -40px;
    bottom: 26px;
    transform: rotate(11deg);
  }
  .scene-label {
    left: 28px;
    right: 28px;
    top: 28px;
  }
  .floating-note {
    bottom: 53px;
    left: 28px;
    padding: 13px 16px;
    font-size: 12px;
  }
  .slide-panel {
    grid-template-columns: 1fr 1fr;
    gap: 42px;
    padding-top: 48px;
    padding-bottom: 48px;
    min-height: 560px;
  }
  .slide-copy h2 {
    font-size: clamp(36px, 4vw, 56px);
    letter-spacing: -2.5px;
    margin: 18px 0;
  }
  .slide-copy p {
    margin-bottom: 26px;
  }
  .slide-art {
    min-height: 420px;
    border-radius: 12px;
  }
  .slide-banner-image {
    height: 100%;
    min-height: 420px;
    max-height: 460px;
  }
}
@media (min-width: 1280px) {
  .hero-scene {
    min-height: 495px;
  }
  .hero-phone {
    left: 26px;
  }
  .hero-charger {
    right: -2px;
  }
}
@media (min-width: 1500px) {
  .hero h1 {
    font-size: 70px;
  }
  .hero {
    gap: 65px;
  }
}

/* ---------- Product illustrations ---------- */
.product-art {
  height: 100%;
  width: 100%;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 180px;
  overflow: hidden;
  transition: transform 0.3s;
}
.art-shadow {
  position: absolute;
  width: 60%;
  height: 19px;
  background: #2740341c;
  filter: blur(13px);
  border-radius: 50%;
  bottom: 16%;
}
.phone-object {
  height: 171px;
  width: 89px;
  border-radius: 19px;
  background: linear-gradient(120deg, #b7c9b3, #8ea58b 70%, #6e8b71);
  border: 2px solid #81977d;
  box-shadow:
    7px 11px 18px #314f3526,
    inset 2px 2px 3px #dee6d7;
  position: relative;
  transform: rotate(-13deg);
}
.camera-block {
  display: grid;
  grid-template-columns: 1fr 1fr;
  position: absolute;
  top: 8px;
  left: 7px;
  padding: 5px;
  gap: 4px;
  border-radius: 12px;
  background: #a0b197;
  box-shadow: 1px 2px 2px #52694e70;
}
.camera-block i {
  display: block;
  width: 13px;
  height: 13px;
  border: 3px solid #283d36;
  outline: 1px solid #8f9f8d;
  background: radial-gradient(#52736d, #13262b);
  border-radius: 50%;
}
.camera-block b {
  height: 7px;
  width: 7px;
  align-self: center;
  justify-self: center;
  border-radius: 50%;
  background: #e6e9d1;
}
.phone-ring {
  position: absolute;
  border: 2px solid #ccd5c63d;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  left: 50%;
  top: 52%;
  transform: translate(-50%, -50%);
}
.phone-line {
  position: absolute;
  background: #dce4d244;
  width: 3px;
  height: 20px;
  top: 67%;
  left: 50%;
  border-radius: 3px;
}
.charger-object {
  width: 83px;
  height: 97px;
  background: linear-gradient(115deg, #fff 10%, #e4e7e7 68%, #c5cdcf);
  border-radius: 12px 12px 19px 19px;
  box-shadow:
    10px 12px 17px #26425525,
    inset 2px 2px 2px white;
  position: relative;
  transform: rotate(17deg);
}
.prong {
  position: absolute;
  top: -29px;
  height: 31px;
  width: 9px;
  background: linear-gradient(90deg, #9aa3a5, #e7ebed, #7f8a8b);
  border-radius: 3px 3px 0 0;
}
.prong.one {
  left: 24%;
}
.prong.two {
  right: 24%;
}
.charger-port {
  position: absolute;
  width: 26px;
  height: 7px;
  border-radius: 4px;
  left: 50%;
  transform: translateX(-50%);
  bottom: 22px;
  background: #333f42;
  border: 2px solid #828b8b;
}
.charger-object small {
  position: absolute;
  bottom: 9px;
  width: 100%;
  text-align: center;
  color: #9fa9ac;
  font-size: 6px;
  letter-spacing: 1px;
}
.art-glass .phone-object {
  background: linear-gradient(125deg, #eaf3f980, #f7faff80 40%, #bbd4e770);
  border: 2px solid #6f8c9fa3;
  box-shadow:
    6px 6px 0 #bed0dc60,
    12px 12px 0 #d8e6ef60;
}
.art-glass .camera-block {
  display: none;
}
.art-glass .phone-ring {
  border: 0;
  background: linear-gradient(150deg, #d5e7f190, #ffffffb0);
  height: 85%;
  width: 85%;
  border-radius: 12px;
}
.art-glass .phone-line {
  display: none;
}
.cable-object {
  width: 144px;
  height: 144px;
  border: 11px solid #586168;
  border-radius: 50%;
  box-shadow:
    inset 2px 2px 3px #ffffff55,
    3px 3px 6px #1c2d4422;
  position: relative;
  transform: rotate(-25deg);
}
.cable-object:after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 8px solid #646e75;
  border-radius: 50%;
  box-shadow: inset 1px 1px 2px white;
}
.cable-object span,
.cable-object i {
  position: absolute;
  height: 58px;
  width: 13px;
  background: linear-gradient(90deg, #8b9397, #535f65);
  border-radius: 4px;
  z-index: 2;
  left: -4px;
  bottom: 15px;
  transform: rotate(-15deg);
}
.cable-object span:before,
.cable-object i:before {
  content: "";
  position: absolute;
  top: -14px;
  left: 1px;
  right: 1px;
  height: 16px;
  background: #c0c5c7;
  border-radius: 3px;
}
.cable-object i {
  left: auto;
  right: -4px;
  bottom: -8px;
  transform: rotate(25deg);
}
.headphones-object {
  width: 135px;
  height: 145px;
  border: 14px solid #607888;
  border-bottom: 0;
  border-radius: 80px 80px 30px 30px;
  position: relative;
  transform: rotate(-13deg);
  box-shadow: inset 2px 2px 3px #f3f7fa;
}
.headphones-object span,
.headphones-object i {
  position: absolute;
  bottom: -7px;
  width: 34px;
  height: 70px;
  border-radius: 15px;
  background: linear-gradient(90deg, #91a5b0, #566f7e);
  box-shadow: 5px 7px 12px #30465422;
}
.headphones-object span {
  left: -20px;
}
.headphones-object i {
  right: -20px;
}
.product-image {
  height: 100%;
  width: 100%;
  object-fit: contain;
  padding: 12px;
}

/* ---------- Homepage sections ---------- */
.benefit-bar {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.benefit-bar > .container {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  padding-top: 20px;
  padding-bottom: 20px;
}
.benefit {
  display: flex;
  gap: 14px;
  align-items: center;
  color: var(--blue);
}
.benefit > svg {
  width: 40px;
  height: 40px;
  padding: 9px;
  border-radius: 10px;
  background: #eaf5fa;
}
.benefit strong {
  font-size: 15px;
  color: var(--ink);
  display: block;
  margin-bottom: 2px;
}
.benefit small {
  font-size: 14px;
  color: var(--muted);
}
@media (min-width: 640px) {
  .benefit-bar > .container {
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    padding-top: 22px;
    padding-bottom: 22px;
  }
  .benefit {
    padding-left: 18px;
    gap: 10px;
    border-right: 1px solid var(--line);
  }
  .benefit:first-child {
    padding-left: 0;
  }
  .benefit:last-child {
    border: 0;
  }
  .benefit > svg {
    width: 24px;
    height: 24px;
    padding: 0;
    background: none;
  }
  .benefit strong {
    font-size: 13px;
    margin-bottom: 5px;
  }
  .benefit small {
    font-size: 12px;
  }
}
@media (min-width: 960px) {
  .benefit {
    padding-left: 40px;
    gap: 15px;
  }
}
.section {
  padding-top: 40px;
  padding-bottom: 40px;
}
@media (min-width: 960px) {
  .section {
    padding-top: 65px;
    padding-bottom: 65px;
  }
}
.section-heading {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  margin-bottom: 22px;
}
.section-heading .eyebrow {
  margin-bottom: 10px;
}
.section-heading h2 {
  margin-bottom: 8px;
}
.section-heading p {
  font-size: 15px;
  margin-bottom: 0;
}
@media (min-width: 640px) {
  .section-heading {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    gap: 25px;
    margin-bottom: 30px;
  }
}
@media (min-width: 960px) {
  .section-heading p {
    font-size: 13px;
  }
}

.service-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
.service-card {
  display: block;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 22px;
  position: relative;
}
.service-card:active {
  transform: scale(0.99);
}
@media (hover: hover) {
  .service-card:hover {
    border-color: #6eabbb;
    transform: translateY(-3px);
  }
}
.service-0 {
  background: #f0f7f8;
  border-color: #e1eef0;
}
.service-icon {
  width: 48px;
  height: 48px;
  background: #e2eef0;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--blue);
  margin-bottom: 20px;
}
.service-number {
  position: absolute;
  right: 22px;
  top: 24px;
  color: #8b9ca2;
  font-size: 12px;
}
.service-card h3 {
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 10px;
}
.service-card p {
  font-size: 15px;
  line-height: 1.7;
}
.service-link {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
  font-weight: 600;
  margin-top: 18px;
}
@media (min-width: 640px) {
  .service-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
  }
}
@media (min-width: 960px) {
  .service-grid {
    grid-template-columns: repeat(3, 1fr);
  }
  .service-card {
    padding: 28px;
    border-radius: 8px;
  }
  .service-icon {
    margin-bottom: 26px;
  }
  .service-number {
    right: 25px;
    top: 28px;
  }
  .service-card h3 {
    font-size: 19px;
    margin-bottom: 12px;
  }
  .service-card p {
    font-size: 13px;
    line-height: 1.8;
    min-height: 65px;
  }
  .service-link {
    font-size: 12px;
    margin-top: 26px;
  }
}

.category-section {
  background: #f7f9f8;
}
/* Phones: categories swipe sideways. */
.category-grid {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: min(68%, 260px);
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gx);
  margin-inline: calc(-1 * var(--gx));
  padding: 0 var(--gx) 6px;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.category-grid::-webkit-scrollbar {
  display: none;
}
.category-grid > * {
  scroll-snap-align: start;
}
.category-card {
  display: block;
  border-radius: 12px;
  overflow: hidden;
  position: relative;
  background: #eaf0e5;
}
.category-card:active {
  transform: scale(0.98);
}
.category-1 {
  background: #eaf0f5;
}
.category-2 {
  background: #f0eeeb;
}
.category-3 {
  background: #e9edef;
}
.category-num {
  position: absolute;
  top: 14px;
  left: 16px;
  font-size: 12px;
  color: #7b877f;
  z-index: 2;
}
.category-card .product-art,
.category-card .product-image {
  height: 180px;
}
.category-card > div:last-child {
  padding: 6px 16px 18px;
}
.category-card h3 {
  font-size: 16px;
  margin-bottom: 8px;
}
.category-card > div > span {
  font-size: 14px;
  color: var(--muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
@media (min-width: 640px) {
  .category-grid {
    grid-auto-flow: row;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    overflow: visible;
    margin-inline: 0;
    padding: 0;
  }
}
@media (min-width: 960px) {
  .category-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 17px;
  }
  .category-card {
    border-radius: 7px;
  }
  .category-card .product-art,
  .category-card .product-image {
    height: 210px;
  }
  .category-card > div:last-child {
    padding: 7px 22px 24px;
  }
  .category-card h3 {
    font-size: 15px;
  }
  .category-card > div > span {
    font-size: 12px;
  }
}

/* ---------- Product cards ---------- */
.product-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px 12px;
}
.product-card {
  min-width: 0;
}
.product-visual {
  display: block;
  aspect-ratio: 5 / 6;
  background: #f3f5f4;
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  margin-bottom: 12px;
}
.product-visual .product-art {
  min-height: 0;
}
@media (hover: hover) {
  .product-visual:hover .product-art {
    transform: scale(1.05);
  }
}
.offer-badge {
  position: absolute;
  top: 10px;
  left: 10px;
  border-radius: 6px;
  padding: 4px 8px;
  background: #e3f0dd;
  color: #3d7629;
  font-size: 12px;
  font-weight: 700;
}
.visual-arrow {
  display: none;
  position: absolute;
  top: 13px;
  right: 13px;
  border: 1px solid #d9e2de;
  background: #ffffff9e;
  border-radius: 50%;
  height: 27px;
  width: 27px;
  align-items: center;
  justify-content: center;
}
.product-meta {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.product-card h3 {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.2px;
  margin-bottom: 10px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.product-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}
.product-bottom strong {
  font-size: 15px;
  font-weight: 700;
}
.product-bottom del {
  display: block;
  font-size: 13px;
  color: #8a9699;
  margin-top: 3px;
}
.product-bottom .muted {
  font-size: 13px;
}
.add-btn {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: white;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink);
}
.add-btn:active {
  background: var(--blue);
  color: white;
  transform: scale(0.94);
}
@media (hover: hover) {
  .add-btn:hover {
    background: var(--blue);
    color: white;
  }
}
.variant-note {
  font-size: 12px;
  color: var(--muted);
  display: block;
  margin-top: 8px;
}
@media (min-width: 640px) {
  .product-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 26px 16px;
  }
  .product-visual {
    aspect-ratio: 1;
  }
}
@media (min-width: 960px) {
  .product-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
  }
  .product-visual {
    aspect-ratio: 6 / 5;
    border-radius: 7px;
    margin-bottom: 17px;
  }
  .visual-arrow {
    display: flex;
  }
  .offer-badge {
    top: 14px;
    left: 14px;
    font-size: 11px;
  }
  .product-meta {
    font-size: 11px;
    margin-bottom: 9px;
  }
  .product-card h3 {
    font-size: 14px;
    margin-bottom: 11px;
  }
  .product-bottom strong {
    font-size: 14px;
  }
  .product-bottom del {
    font-size: 12px;
  }
  .add-btn {
    width: 34px;
    height: 34px;
    border-radius: 6px;
  }
}

/* ---------- Call-to-action panels ---------- */
.cta-panel {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 20px;
  background: var(--navy);
  border-radius: 14px;
  padding: 26px 22px;
  color: white;
  position: relative;
  overflow: hidden;
}
.cta-panel .eyebrow {
  color: #a8d490;
}
.cta-panel h2 {
  font-size: clamp(26px, 7vw, 33px);
}
.cta-panel p {
  color: #b7ced5;
  font-size: 15px;
  margin-bottom: 0;
}
.banner-image {
  width: 100%;
  height: 170px;
  object-fit: cover;
  border-radius: 10px;
  flex-shrink: 0;
}
.final-cta {
  padding-top: 0;
}
@media (min-width: 640px) {
  .cta-panel {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    padding: 34px;
  }
  .cta-panel > .button {
    flex-shrink: 0;
  }
  .banner-image {
    width: 130px;
    height: 130px;
    border-radius: 8px;
  }
}
@media (min-width: 960px) {
  .cta-panel {
    padding: 45px 50px;
    border-radius: 9px;
  }
  .cta-panel p {
    font-size: 13px;
  }
  .final-cta {
    padding-top: 10px;
  }
}

/* ---------- Footer ---------- */
.footer {
  border-top: 1px solid var(--line);
  background: #f8faf9;
  padding-top: 32px;
}
.footer-top {
  display: grid;
  grid-template-columns: 1fr;
  padding-bottom: 20px;
}
.footer-brand p {
  font-size: 15px;
  margin: 14px 0 20px;
}
.footer-group {
  border-top: 1px solid var(--line);
}
.footer-group:last-of-type {
  border-bottom: 1px solid var(--line);
}
.footer h4 {
  margin: 0;
  font-size: 15px;
}
.footer h4 button {
  width: 100%;
  min-height: 54px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--ink);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.footer h4 button svg {
  transition: transform 0.25s var(--ease);
}
.footer h4 button[aria-expanded="true"] svg {
  transform: rotate(180deg);
}
.footer-links {
  display: none;
  padding-bottom: 10px;
}
.footer-links.open {
  display: block;
}
.footer-links a {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  font-size: 15px;
  color: var(--muted);
  overflow-wrap: anywhere;
}
.footer-note {
  display: none;
  border-left: 1px solid var(--line);
  padding-left: 32px;
}
.footer-note .eyebrow {
  margin-bottom: 14px;
}
.footer-note h3 {
  font-size: 19px;
  line-height: 1.5;
  font-weight: 500;
}
.footer-bottom {
  border-top: 1px solid var(--line);
  padding: 16px 0 20px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 13px;
  color: var(--muted);
}
.footer-bottom a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
@media (min-width: 640px) {
  .footer {
    padding-top: 45px;
  }
  .footer-top {
    grid-template-columns: 1.2fr 1fr 1fr;
    gap: 30px;
    padding-bottom: 38px;
  }
  .footer-group,
  .footer-group:last-of-type {
    border: 0;
  }
  .footer h4 {
    font-size: 12px;
    margin: 6px 0 16px;
  }
  .footer h4 button {
    min-height: 0;
    pointer-events: none;
  }
  .footer h4 button svg {
    display: none;
  }
  .footer-links {
    display: block;
    padding: 0;
  }
  .footer-links a {
    font-size: 13px;
    min-height: 0;
    margin-bottom: 13px;
  }
  .footer-brand p {
    font-size: 13px;
    margin-top: 20px;
  }
  .footer-bottom {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    font-size: 12px;
  }
}
@media (min-width: 1100px) {
  .footer-top {
    grid-template-columns: 1.1fr 0.7fr 1fr 1.2fr;
  }
  .footer-note {
    display: block;
  }
}

/* ---------- Page headings ---------- */
.page-heading {
  padding-top: 22px;
  padding-bottom: 22px;
}
.breadcrumb {
  font-size: 14px;
  color: var(--muted);
  margin-bottom: 18px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
}
.breadcrumb a {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  color: var(--ink);
}
.page-heading h1,
.detail-copy h1,
.page-title {
  font-size: clamp(30px, 8vw, 43px);
  font-weight: 600;
  letter-spacing: -0.04em;
  line-height: 1.12;
  margin-bottom: 12px;
}
.page-heading p {
  font-size: 16px;
}
@media (min-width: 960px) {
  .page-heading {
    padding-top: 48px;
    padding-bottom: 30px;
  }
  .breadcrumb {
    font-size: 12px;
    margin-bottom: 30px;
  }
  .page-heading p {
    font-size: 14px;
  }
}

/* ---------- Forms ---------- */
.field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  font-size: 14px;
  font-weight: 600;
}
.field input,
.field select,
.field textarea,
.input {
  width: 100%;
  padding: 11px 14px;
  border: 1px solid #d0dbdd;
  border-radius: 10px;
  background: white;
  color: var(--ink);
  font-weight: 400;
  font-size: 16px; /* 16px stops iPhones zooming in on focus */
  min-height: 48px;
}
.field select,
select.input {
  -webkit-appearance: none;
  appearance: none;
  padding-right: 38px;
  background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236a7b81' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;
}
.field input:focus,
.field select:focus,
.field textarea:focus,
.input:focus {
  border-color: var(--blue);
}
.field textarea {
  min-height: 110px;
  resize: vertical;
}
.field small {
  font-weight: 400;
  color: var(--muted);
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
.span-2 {
  grid-column: 1 / -1;
}
@media (min-width: 640px) {
  .form-grid {
    grid-template-columns: 1fr 1fr;
    gap: 18px;
  }
}
@media (min-width: 960px) {
  .field {
    font-size: 12px;
  }
  .field input,
  .field select,
  .field textarea,
  .input {
    font-size: 14px;
    min-height: 44px;
    border-radius: 6px;
  }
}
.panel {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 20px;
  background: white;
}
.panel h2 {
  font-size: 24px;
}
.panel h3 {
  font-size: 18px;
}
.panel > form > .button,
.form-grid > .button {
  width: 100%;
}
@media (min-width: 960px) {
  .panel {
    padding: 28px;
    border-radius: 9px;
  }
  .panel h2 {
    font-size: 25px;
  }
}

/* Quantity stepper */
.stepper {
  display: inline-flex;
  align-items: stretch;
  height: 48px;
  border: 1px solid #d0dbdd;
  border-radius: 10px;
  overflow: hidden;
  background: white;
}
.stepper button {
  width: 48px;
  border: 0;
  background: none;
  color: var(--ink);
  display: grid;
  place-items: center;
}
.stepper button:active {
  background: var(--pale);
}
.field .stepper {
  align-self: flex-start;
}
.stepper input,
.field .stepper input {
  width: 52px;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  border-inline: 1px solid var(--line);
  text-align: center;
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  -moz-appearance: textfield;
  appearance: textfield;
}
.stepper input::-webkit-outer-spin-button,
.stepper input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.stepper.sm {
  height: 42px;
}
.stepper.sm button {
  width: 42px;
}
.stepper.sm input {
  width: 46px;
}

/* ---------- Catalogue ---------- */
.catalog-layout {
  padding-bottom: 48px;
}
.catalog-main {
  min-width: 0;
}
.catalog-toolbar {
  position: sticky;
  top: var(--header-h);
  z-index: 30;
  display: flex;
  gap: 8px;
  padding: 10px var(--gx);
  margin-inline: calc(-1 * var(--gx));
  background: #ffffffef;
  -webkit-backdrop-filter: saturate(1.8) blur(14px);
  backdrop-filter: saturate(1.8) blur(14px);
  border-bottom: 1px solid var(--line);
  transition: top 0.32s var(--ease);
}
html.header-hidden .catalog-toolbar {
  top: 0;
}
.catalog-toolbar .search-box {
  min-width: 0;
}
.filter-toggle {
  flex-shrink: 0;
  padding: 10px 14px;
  gap: 8px;
}
.filter-count {
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 11px;
  background: var(--blue);
  color: white;
  font-size: 12px;
  line-height: 22px;
}
.catalog-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 14px 0 18px;
  font-size: 14px;
  color: var(--muted);
}
.sort-select {
  width: auto;
  max-width: 200px;
}

/* Filters: a bottom sheet on phones and tablets, a sidebar on desktop. */
.filters {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 70;
  max-height: 86dvh;
  display: flex;
  flex-direction: column;
  background: white;
  border-radius: 20px 20px 0 0;
  box-shadow: 0 -20px 60px #092e4033;
  transform: translateY(100%);
  visibility: hidden;
  transition:
    transform 0.35s var(--ease),
    visibility 0s 0.35s;
}
.filters.is-open {
  transform: none;
  visibility: visible;
  transition: transform 0.35s var(--ease);
}
.filters-head {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 8px 8px 20px;
  border-bottom: 1px solid var(--line);
}
.filters-head::before {
  content: "";
  position: absolute;
  top: 8px;
  left: 50%;
  width: 40px;
  height: 4px;
  margin-left: -20px;
  border-radius: 2px;
  background: #d3dcde;
}
.filters-head h2 {
  font-size: 20px;
  margin: 0;
}
.filters-body {
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 4px 20px 20px;
}
.filters-foot {
  display: flex;
  gap: 10px;
  padding: 12px 20px calc(12px + var(--safe-bottom));
  border-top: 1px solid var(--line);
}
.filters-foot .button {
  flex: 1;
}
.filters h3 {
  font-size: 15px;
  margin: 20px 0 8px;
}
.filters label {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  font-size: 16px;
}
.filters input[type="radio"],
.filters input[type="checkbox"] {
  accent-color: var(--blue);
  width: 20px;
  height: 20px;
  margin: 0;
}
.filters .clear-filters {
  display: none;
}
@media (min-width: 960px) {
  .catalog-layout {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 35px;
    padding-bottom: 65px;
  }
  .catalog-main {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    column-gap: 20px;
    align-content: start;
  }
  .catalog-main > .product-grid {
    grid-column: 1 / -1;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .catalog-toolbar {
    position: static;
    padding: 0;
    margin: 0 0 24px;
    background: none;
    border: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    max-width: 340px;
  }
  .filter-toggle {
    display: none;
  }
  .catalog-meta {
    margin: 0 0 24px;
    gap: 20px;
    font-size: 12px;
  }
  .sort-select {
    width: 180px;
  }
  .filters {
    position: static;
    max-height: none;
    display: block;
    transform: none;
    visibility: visible;
    transition: none;
    background: none;
    border-radius: 0;
    box-shadow: none;
    border-top: 1px solid var(--line);
    padding-top: 22px;
    z-index: auto;
  }
  .filters-head,
  .filters-foot,
  .sheet-backdrop {
    display: none !important;
  }
  .filters-body {
    overflow: visible;
    padding: 0;
  }
  .filters h3 {
    font-size: 13px;
    margin: 24px 0 12px;
  }
  .filters label {
    min-height: 0;
    font-size: 13px;
    gap: 9px;
    margin-bottom: 12px;
  }
  .filters input[type="radio"],
  .filters input[type="checkbox"] {
    width: 15px;
    height: 15px;
  }
  .filters .clear-filters {
    display: inline-flex;
    margin-top: 12px;
    padding: 0;
  }
}
@media (min-width: 1280px) {
  .catalog-main > .product-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.empty-state {
  padding: 44px 22px;
  text-align: center;
  background: var(--pale);
  border-radius: 12px;
  grid-column: 1/-1;
}
.empty-state h1,
.empty-state h2 {
  font-size: 24px;
}
.empty-state .eyebrow {
  justify-content: center;
}
.is-filtered {
  display: none !important;
}

/* ---------- Product detail ---------- */
.detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  padding-bottom: 32px;
}
.detail-image {
  position: relative;
  aspect-ratio: 1;
  max-height: 72vh;
  width: 100%;
  background: #f0f4f1;
  overflow: hidden;
  border-radius: 14px;
}
@media (max-width: 639px) {
  /* Edge-to-edge photo on phones. */
  .detail-image {
    width: auto;
    margin-inline: calc(-1 * var(--gx));
    border-radius: 0;
  }
}
.detail-image > .product-image {
  position: absolute;
  inset: 0;
}
.gallery-track {
  display: flex;
  height: 100%;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.gallery-track::-webkit-scrollbar {
  display: none;
}
.gallery-track > * {
  flex: 0 0 100%;
  height: 100%;
  scroll-snap-align: center;
  scroll-snap-stop: always;
}
.gallery-dots {
  position: absolute;
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  padding: 6px 9px;
  border-radius: 99px;
  background: #ffffffd9;
}
.gallery-dots span {
  width: 7px;
  height: 7px;
  border-radius: 4px;
  background: #b9c6c9;
  transition:
    width 0.25s,
    background 0.25s;
}
.gallery-dots span.active {
  width: 18px;
  background: var(--blue);
}
.gallery-thumbs {
  display: none;
  gap: 10px;
  margin-top: 14px;
  overflow-x: auto;
  scrollbar-width: none;
}
.gallery-thumbs button {
  flex: 0 0 auto;
  width: 70px;
  height: 70px;
  padding: 4px;
  border: 1px solid var(--line);
  background: white;
  border-radius: 8px;
}
.gallery-thumbs button.active {
  border-color: var(--blue);
  box-shadow: inset 0 0 0 1px var(--blue);
}
.gallery-thumbs img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.detail-image .phone-object {
  transform: scale(1.5) rotate(-10deg);
}
.detail-image .charger-object,
.detail-image .cable-object {
  transform: scale(1.4) rotate(12deg);
}
.detail-copy {
  min-width: 0;
}
.detail-copy > p {
  font-size: 16px;
}
.detail-price {
  font-size: 26px;
  font-weight: 700;
  margin: 18px 0;
}
.detail-price del {
  font-size: 16px;
  color: var(--muted);
  margin-left: 12px;
  font-weight: 400;
}
.availability {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: #437e34;
  margin: 6px 0 4px;
}
.detail-copy .field,
.variant-picker {
  margin: 20px 0;
}
.variant-picker {
  border: 0;
  padding: 0;
  min-width: 0;
}
.variant-picker legend {
  padding: 0;
  margin-bottom: 10px;
  font-size: 14px;
  font-weight: 600;
}
.chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.chip {
  position: relative;
}
.chip input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.chip span {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 9px 16px;
  border: 1px solid #d0dbdd;
  border-radius: 10px;
  font-size: 15px;
  cursor: pointer;
  transition:
    border-color 0.2s,
    background 0.2s;
}
.chip input:checked + span {
  border-color: var(--blue);
  background: #eaf5fa;
  color: var(--blue);
  font-weight: 600;
  box-shadow: inset 0 0 0 1px var(--blue);
}
.chip input:focus-visible + span {
  outline: 3px solid #63b3d1;
  outline-offset: 2px;
}
.chip.is-unavailable span {
  color: #93a1a4;
  text-decoration: line-through;
}
/* The add-to-basket bar sticks above the tab bar on phones. */
.buy-bar {
  position: sticky;
  bottom: var(--tabbar-space);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 18px calc(-1 * var(--gx)) 0;
  padding: 10px var(--gx);
  background: #ffffffef;
  -webkit-backdrop-filter: saturate(1.8) blur(14px);
  backdrop-filter: saturate(1.8) blur(14px);
  border-top: 1px solid var(--line);
}
.buy-bar-price {
  display: flex;
  flex-direction: column;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.3;
}
.buy-bar-price strong {
  font-size: 18px;
  color: var(--ink);
}
.buy-bar .button {
  flex: 1;
}
.detail-copy .after-add {
  margin-top: 12px;
}
.detail-copy .small {
  margin-top: 16px;
}
.specs {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
  font-size: 15px;
}
.specs td {
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.specs td:first-child {
  color: var(--muted);
  width: 45%;
  padding-right: 12px;
}
@media (min-width: 640px) {
  .detail-image {
    aspect-ratio: 4 / 3;
  }
  .gallery-thumbs {
    display: flex;
  }
  .gallery-dots {
    display: none;
  }
}
@media (min-width: 960px) {
  .detail-grid {
    grid-template-columns: 1fr 1fr;
    gap: 65px;
    padding-bottom: 70px;
  }
  .detail-image {
    aspect-ratio: auto;
    height: 480px;
    max-height: none;
    border-radius: 10px;
  }
  .detail-image .phone-object {
    transform: scale(1.8) rotate(-10deg);
  }
  .detail-image .charger-object,
  .detail-image .cable-object {
    transform: scale(1.6) rotate(12deg);
  }
  .detail-copy {
    padding-top: 15px;
  }
  .detail-copy h1 {
    font-size: 36px;
  }
  .detail-copy > p {
    font-size: 14px;
  }
  .detail-price {
    font-size: 25px;
    font-weight: 600;
    margin: 22px 0;
  }
  .availability {
    font-size: 12px;
  }
  .variant-picker legend {
    font-size: 12px;
  }
  .chip span {
    font-size: 13px;
    min-height: 40px;
  }
  .buy-bar {
    position: static;
    margin: 18px 0 0;
    padding: 0;
    background: none;
    border: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  .buy-bar-price {
    display: none;
  }
  .specs {
    font-size: 12px;
    margin-top: 25px;
  }
  .specs td {
    padding: 11px 0;
  }
}

/* ---------- Basket & enquiry ---------- */
.enquiry-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
  padding-bottom: 48px;
}
.basket-item {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  grid-template-areas:
    "thumb info"
    "thumb qty";
  gap: 10px 14px;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
  align-items: start;
}
.basket-thumb {
  grid-area: thumb;
  width: 76px;
  height: 92px;
  background: var(--pale);
  border-radius: 10px;
  overflow: hidden;
}
.basket-thumb .product-art {
  min-height: 0;
  transform: scale(0.45);
  width: 170px;
  height: 200px;
  transform-origin: top left;
}
.basket-thumb .product-image {
  padding: 6px;
}
.basket-info {
  grid-area: info;
  min-width: 0;
}
.basket-item h3 {
  font-size: 16px;
  margin-bottom: 4px;
  line-height: 1.3;
}
.basket-item p {
  margin-bottom: 4px;
}
.basket-item .error {
  background: none;
  margin-top: 4px;
}
.quantity {
  grid-area: qty;
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}
.remove-btn {
  color: #8a5a55;
}
.basket-summary {
  position: sticky;
  bottom: var(--tabbar-space);
  z-index: 20;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  margin: 0 calc(-1 * var(--gx));
  padding: 12px var(--gx);
  background: #ffffffef;
  -webkit-backdrop-filter: saturate(1.8) blur(14px);
  backdrop-filter: saturate(1.8) blur(14px);
  border-top: 1px solid var(--line);
}
.totals {
  display: flex;
  justify-content: space-between;
  margin-top: 25px;
  font-size: 18px;
}
.basket-summary .totals {
  margin: 0;
  flex-direction: column;
  font-size: 13px;
  color: var(--muted);
}
.basket-summary .totals strong {
  font-size: 19px;
  color: var(--ink);
}
.basket-summary .button {
  flex-shrink: 0;
}
.prose {
  white-space: pre-line;
  font-size: 16px;
  line-height: 1.8;
  max-width: 760px;
}
.service-detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
  padding-bottom: 48px;
}
.service-detail .panel {
  align-self: start;
}
.service-detail > div > h2 {
  font-size: 23px;
  margin-top: 30px;
}
.content-image {
  width: 100%;
  max-height: 420px;
  object-fit: cover;
  border-radius: 14px;
  margin-bottom: 24px;
}
.group-heading {
  font-size: 20px;
  margin: 28px 0 18px;
}
@media (min-width: 640px) {
  .basket-item {
    grid-template-columns: 85px minmax(0, 1fr) auto;
    grid-template-areas: "thumb info qty";
    align-items: center;
    gap: 17px;
  }
  .basket-thumb {
    width: 85px;
    height: 100px;
  }
  .basket-thumb .product-art {
    transform: scale(0.5);
  }
}
@media (min-width: 960px) {
  .enquiry-layout {
    grid-template-columns: 1.2fr 0.8fr;
    gap: 50px;
    padding-bottom: 65px;
  }
  .enquiry-layout > :last-child {
    position: sticky;
    top: calc(var(--header-h) + 20px);
    align-self: start;
  }
  .service-detail {
    grid-template-columns: 1.2fr 0.8fr;
    gap: 60px;
    padding-bottom: 70px;
  }
  .basket-item h3 {
    font-size: 14px;
  }
  .basket-summary {
    position: static;
    display: block;
    margin: 0;
    padding: 0;
    background: none;
    border: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  .basket-summary .totals {
    margin-top: 25px;
    flex-direction: row;
    font-size: 18px;
    color: var(--ink);
  }
  .basket-summary .button {
    display: none;
  }
  .prose {
    font-size: 16px;
    line-height: 1.9;
  }
  .content-image {
    border-radius: 10px;
  }
  .group-heading {
    margin: 35px 0 24px;
  }
}

/* ---------- Contact & about ---------- */
.contact-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-top: 20px;
}
.contact-card {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 72px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: white;
}
a.contact-card:active {
  background: var(--pale);
}
.contact-card > span:nth-child(2) {
  flex: 1;
  min-width: 0;
}
.contact-card small {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 3px;
}
.contact-card strong {
  display: block;
  font-size: 16px;
  font-weight: 600;
  overflow-wrap: anywhere;
  white-space: pre-line;
}
.contact-card > svg:last-child {
  color: #a5b3b6;
}
.contact-ico {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: #eaf5fa;
  color: var(--blue);
}
@media (min-width: 640px) and (max-width: 959px) {
  .contact-cards {
    grid-template-columns: 1fr 1fr;
  }
}
@media (min-width: 960px) {
  .contact-card strong {
    font-size: 14px;
  }
}
.about-title {
  font-size: clamp(32px, 9vw, 46px);
  letter-spacing: -0.045em;
  line-height: 1.1;
  max-width: 650px;
}

/* ---------- Motion preferences ---------- */
@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
