    :root {
      --ink: #070707;
      --muted: #66615b;
      --line: #d9d5ce;
      --paper: #ffffff;
      --milk: #f7f5f0;
      --cream: #f1eee7;
      --sage: #a7b09a;
      --sage-dark: #59624f;
      --red: #e22b1a;
      --gold: #b58a3b;
      --black: #070707;
      --white: #ffffff;
      --rose: #c88d7c;
      --shadow: 0 24px 64px rgba(7, 7, 7, 0.18);
      --radius: 0;
      --container: min(1420px, calc(100vw - 56px));
    }

    * {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      margin: 0;
      color: var(--ink);
      background: var(--white);
      font-family: "Manrope", Arial, sans-serif;
      font-size: 16px;
      line-height: 1.35;
      overflow-x: hidden;
    }

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

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

    figure {
      margin: 0;
    }

    button,
    input {
      font: inherit;
    }

    main,
    section,
    .container,
    .pdp,
    .buy-panel {
      min-width: 0;
    }

    .topbar {
      min-height: 28px;
      display: grid;
      place-items: center;
      background: var(--black);
      color: var(--white);
      padding: 0 16px;
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .header,
    .site-header {
      position: sticky;
      top: 0;
      z-index: 50;
      border-bottom: 1px solid var(--line);
      background: rgba(255, 255, 255, 0.94);
      backdrop-filter: blur(14px);
    }

    .header-inner {
      width: min(1320px, calc(100vw - 72px));
      min-height: 62px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: 1fr auto 1fr;
      align-items: center;
      gap: 20px;
      position: relative;
    }

    .nav {
      display: flex;
      align-items: center;
      gap: 18px;
      color: var(--ink);
      font-size: 12px;
      font-weight: 800;
      text-transform: uppercase;
    }

    .nav a:hover {
      color: var(--red);
    }

    .nav a,
    .nav-trigger {
      white-space: nowrap;
    }

    .nav.right {
      justify-content: flex-end;
    }

    .nav-item {
      position: static;
    }

    .nav-trigger {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      min-height: 62px;
      padding: 0;
      border: 0;
      background: transparent;
      color: inherit;
      font: inherit;
      text-transform: inherit;
      cursor: pointer;
    }

    .nav-trigger:hover {
      color: var(--red);
    }

    .mega-menu {
      position: absolute;
      top: 100%;
      left: 50%;
      width: calc(100vw - 32px);
      gap: 1px;
      padding: 1px;
      background: var(--ink);
      border: 1px solid var(--ink);
      box-shadow: 0 28px 70px rgba(0,0,0,0.22);
      opacity: 0;
      visibility: hidden;
      transform: translate(-50%, 8px);
      transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
    }

    .nav-item:hover .mega-menu,
    .nav-item:focus-within .mega-menu {
      opacity: 1;
      visibility: visible;
      transform: translate(-50%, 0);
    }

    .mega-menu.shop-mega,
    .mega-menu.hair-mega {
      grid-template-columns: 1fr;
    }

    .mega-shell {
      display: grid;
      gap: 1px;
      background: var(--ink);
    }

    .shop-shell {
      grid-template-columns: minmax(380px, 0.95fr) minmax(460px, 1.18fr) minmax(260px, 0.68fr);
    }

    .hair-shell {
      grid-template-columns: minmax(640px, 1.05fr) minmax(420px, 0.8fr);
    }

    .mega-list-panel,
    .mega-visual-panel,
    .mega-quick-panel {
      min-height: 474px;
      padding: 30px;
      background: var(--white);
    }

    .mega-panel-head {
      display: grid;
      gap: 8px;
      max-width: 620px;
    }

    .mega-panel-head strong {
      color: var(--red);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .mega-panel-head h3 {
      margin: 0;
      font-size: clamp(34px, 3.5vw, 58px);
      line-height: 0.95;
      text-transform: uppercase;
    }

    .mega-panel-head p {
      margin: 0;
      color: var(--muted);
      font-size: 14px;
      font-weight: 800;
      line-height: 1.35;
    }

    .mega-thumb-list {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
      margin-top: 24px;
    }

    .hair-thumb-list {
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 9px;
    }

    .mega-thumb-link,
    .mega-quick-link {
      display: grid;
      align-items: center;
      border: 1px solid var(--ink);
      background: #fbfaf6;
      color: var(--ink);
      overflow: hidden;
      font-size: 11px;
      font-weight: 900;
      line-height: 1.15;
      text-transform: uppercase;
      transition: background 0.22s ease, color 0.22s ease, opacity 0.22s ease, grid-template-columns 0.28s ease, box-shadow 0.22s ease;
    }

    .mega-thumb-link {
      grid-template-columns: 56px minmax(0, 1fr) 18px;
      min-height: 66px;
      gap: 12px;
      padding: 7px;
    }

    .hair-thumb-list .mega-thumb-link {
      grid-template-columns: 50px minmax(0, 1fr);
      min-height: 74px;
      gap: 10px;
    }

    .mega-thumb-link img,
    .mega-quick-link img {
      width: 100%;
      height: 48px;
      object-fit: cover;
      object-position: center;
      filter: saturate(0.96) contrast(1.02);
      overflow: hidden;
      transition: transform 0.35s ease, filter 0.22s ease;
    }

    .hair-thumb-list .mega-thumb-link img {
      height: 56px;
    }

    .mega-thumb-link i,
    .mega-quick-link i {
      width: 17px;
      height: 17px;
      transition: transform 0.22s ease;
    }

    .mega-thumb-list:hover .mega-thumb-link,
    .mega-quick-list:hover .mega-quick-link {
      opacity: 0.66;
    }

    .mega-thumb-list .mega-thumb-link:hover,
    .mega-quick-list .mega-quick-link:hover {
      opacity: 1;
      background: var(--ink);
      color: var(--white);
      box-shadow: inset 0 -4px 0 var(--red);
    }

    .mega-thumb-link:hover {
      grid-template-columns: 92px minmax(0, 1fr) 18px;
    }

    .hair-thumb-list .mega-thumb-link:hover {
      grid-template-columns: 78px minmax(0, 1fr);
    }

    .mega-thumb-link:hover img,
    .mega-quick-link:hover img {
      transform: scale(1.08);
      filter: saturate(1.08) contrast(1.08);
    }

    .mega-thumb-link:hover i,
    .mega-quick-link:hover i {
      transform: translateX(4px);
    }

    .mega-expand-row {
      display: flex;
      min-height: 302px;
      margin-top: 24px;
      border: 1px solid var(--ink);
      background: var(--ink);
      overflow: hidden;
    }

    .mega-expand-card {
      position: relative;
      flex: 1 1 0;
      min-width: 90px;
      overflow: hidden;
      color: var(--white);
      transition: flex 0.38s ease, filter 0.22s ease;
    }

    .hair-shell .mega-expand-card {
      min-width: 118px;
    }

    .mega-expand-row:hover .mega-expand-card {
      flex: 0.74 1 0;
      filter: grayscale(0.45) brightness(0.82);
    }

    .mega-expand-row .mega-expand-card:hover {
      flex: 2.15 1 0;
      filter: none;
    }

    .mega-expand-card img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      opacity: 0.9;
      transition: transform 0.42s ease;
    }

    .mega-expand-card:hover img {
      transform: scale(1.08);
    }

    .mega-expand-card span {
      position: absolute;
      inset: auto 14px 14px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 14px;
      min-width: min(260px, calc(100% - 28px));
      padding: 12px 14px;
      background: var(--white);
      color: var(--ink);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
      z-index: 1;
      transition: background 0.22s ease, color 0.22s ease;
    }

    .mega-expand-card:hover span {
      background: var(--red);
      color: var(--white);
    }

    .mega-quick-list {
      display: grid;
      gap: 12px;
      margin-top: 24px;
    }

    .mega-quick-link {
      grid-template-columns: 82px minmax(0, 1fr) 18px;
      min-height: 76px;
      gap: 12px;
      padding: 8px;
    }

    .brand {
      display: grid;
      justify-items: center;
      line-height: 1;
      font-weight: 900;
      text-transform: uppercase;
    }

    .brand strong {
      font-size: 20px;
      font-weight: 900;
    }

    .brand span {
      margin-top: 5px;
      font-size: 10px;
      font-weight: 800;
      color: var(--gold);
      text-transform: uppercase;
    }

    .actions {
      justify-content: flex-end;
    }

    .icon-btn {
      width: 42px;
      height: 42px;
      display: inline-grid;
      place-items: center;
      border: 1px solid transparent;
      border-radius: 0;
      background: transparent;
      color: var(--ink);
      cursor: pointer;
      transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
    }

    .icon-btn:hover {
      border-color: var(--ink);
      background: var(--red);
      color: var(--white);
      transform: translate(-2px, -2px);
      box-shadow: 4px 4px 0 var(--ink);
    }

    .btn {
      min-height: 52px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
      border: 1px solid var(--ink);
      border-radius: var(--radius);
      padding: 0 24px;
      background: var(--ink);
      color: var(--white);
      font-weight: 900;
      text-transform: uppercase;
      cursor: pointer;
      box-shadow: inset 0 0 0 0 var(--red), 0 0 0 rgba(0,0,0,0);
      transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.24s ease, border-color 0.2s ease;
    }

    .btn:hover {
      transform: translate(-3px, -3px);
      background: var(--ink);
      border-color: var(--ink);
      box-shadow: inset 0 -58px 0 var(--red), 6px 6px 0 var(--ink);
    }

    .btn svg {
      transition: transform 0.22s ease;
    }

    .btn:hover svg {
      transform: translateX(5px);
    }

    .btn.secondary {
      background: transparent;
      color: var(--ink);
    }

    .btn.secondary:hover {
      background: var(--ink);
      color: var(--white);
      border-color: var(--ink);
      box-shadow: 6px 6px 0 var(--red);
    }

    .section {
      padding: 92px 0;
      border-top: 1px solid var(--line);
    }

    .container {
      width: var(--container);
      margin: 0 auto;
    }

    .eyebrow {
      margin: 0 0 12px;
      color: var(--red);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    h1,
    h2,
    h3 {
      margin: 0;
      font-family: "Manrope", Arial, sans-serif;
      line-height: 0.94;
      font-weight: 900;
      letter-spacing: 0;
      text-transform: uppercase;
    }

    h1 {
      font-size: clamp(44px, 5.6vw, 92px);
      overflow-wrap: anywhere;
    }

    h2 {
      font-size: clamp(36px, 4.8vw, 78px);
    }

    h3 {
      font-size: 30px;
    }

    .lead {
      margin: 0;
      color: var(--muted);
      font-size: 16px;
      font-weight: 800;
    }

    .breadcrumbs {
      width: var(--container);
      margin: 26px auto 0;
      padding-bottom: 14px;
      border-bottom: 1px solid var(--line);
      color: var(--muted);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .pdp {
      --pdp-height: clamp(660px, calc(100svh - 132px), 820px);
      width: var(--container);
      margin: 18px auto 0;
      display: grid;
      grid-template-columns: minmax(0, 1.05fr) minmax(420px, 0.78fr);
      gap: 1px;
      align-items: stretch;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .gallery {
      display: grid;
      grid-template-columns: 102px minmax(0, 1fr);
      gap: 1px;
      background: var(--ink);
      min-height: var(--pdp-height);
    }

    .thumbs {
      display: grid;
      gap: 1px;
      background: var(--ink);
    }

    .thumb {
      min-height: 86px;
      border: 0;
      background: var(--white);
      overflow: hidden;
      cursor: pointer;
      opacity: 0.72;
      transition: opacity 0.2s ease, filter 0.2s ease, transform 0.2s ease;
    }

    .thumb:hover {
      opacity: 1;
      transform: translateX(4px);
    }

    .thumb[aria-current="true"] {
      opacity: 1;
      box-shadow: inset 0 0 0 4px var(--red);
    }

    .thumb img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: transform 0.32s ease, filter 0.22s ease;
    }

    .thumb:hover img {
      transform: scale(1.12);
      filter: saturate(1.12) contrast(1.08);
    }

    .hero-image {
      min-height: var(--pdp-height);
      display: grid;
      place-items: center;
      background: var(--white);
      overflow: hidden;
      position: relative;
    }

    .hero-image img {
      width: 86%;
      max-height: 86%;
      object-fit: contain;
      mix-blend-mode: multiply;
    }

    .media-label {
      position: absolute;
      left: 20px;
      bottom: 20px;
      padding: 11px 14px;
      background: var(--red);
      color: var(--white);
      border: 1px solid var(--red);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .gallery-tag {
      position: absolute;
      top: 20px;
      left: 20px;
      padding: 10px 14px;
      background: var(--red);
      color: var(--white);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
      z-index: 1;
    }

    .hero-image::after {
      content: "Pearl Blonde";
      position: absolute;
      right: 20px;
      bottom: 20px;
      writing-mode: vertical-rl;
      transform: rotate(180deg);
      color: var(--ink);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
      opacity: 0.28;
    }

    .buy-panel {
      position: sticky;
      top: 91px;
      display: grid;
      align-content: start;
      gap: 16px;
      min-height: var(--pdp-height);
      padding: 28px 32px;
      background: var(--paper);
    }

    .buy-panel h1 {
      font-size: clamp(38px, 3.7vw, 64px);
      line-height: 0.96;
      text-wrap: balance;
    }

    .rating {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 10px;
      color: var(--muted);
      font-size: 14px;
      font-weight: 800;
    }

    .rating-link,
    .review-action {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      transition: color 0.2s ease, transform 0.2s ease;
    }

    .rating-link:hover,
    .review-action:hover {
      color: var(--red);
      transform: translateX(3px);
    }

    .review-action {
      color: var(--red);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .product-pills {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .product-pills span {
      min-height: 58px;
      display: grid;
      place-items: center;
      padding: 8px;
      background: var(--white);
      font-size: 11px;
      font-weight: 900;
      text-align: center;
      text-transform: uppercase;
    }

    .stars {
      color: var(--gold);
      font-weight: 900;
    }

    .price {
      display: flex;
      align-items: baseline;
      gap: 12px;
      padding-top: 8px;
      border-top: 1px solid var(--line);
      font-size: 34px;
      font-weight: 900;
    }

    .price small {
      color: var(--muted);
      font-size: 14px;
      text-decoration: line-through;
    }

    .swatches {
      display: grid;
      gap: 12px;
    }

    .swatches strong {
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .swatch-grid {
      display: grid;
      grid-template-columns: repeat(10, minmax(0, 1fr));
      gap: 8px;
    }

    .swatch {
      aspect-ratio: 1 / 1;
      border: 1px solid var(--ink);
      border-radius: 0;
      background: var(--tone);
      cursor: pointer;
      box-shadow: inset 0 0 0 4px var(--paper);
      transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
    }

    .swatch:hover {
      transform: translateY(-2px) scale(1.08);
      border-color: var(--red);
      box-shadow: inset 0 0 0 3px var(--paper), 0 4px 0 var(--ink);
    }

    .swatch[aria-pressed="true"] {
      border-color: var(--red);
      box-shadow: inset 0 0 0 4px var(--paper), 0 0 0 2px var(--red);
    }

    .qty-row {
      display: grid;
      grid-template-columns: 116px 1fr;
      gap: 12px;
    }

    .stepper {
      min-height: 52px;
      display: grid;
      grid-template-columns: 36px 1fr 36px;
      align-items: center;
      border: 1px solid var(--ink);
      border-radius: var(--radius);
      background: var(--white);
      overflow: hidden;
    }

    .stepper button {
      height: 100%;
      border: 0;
      background: transparent;
      cursor: pointer;
      font-weight: 900;
      transition: background 0.2s ease, color 0.2s ease;
    }

    .stepper button:hover {
      background: var(--red);
      color: var(--white);
    }

    .stepper span {
      text-align: center;
      font-weight: 900;
    }

    .trigger-list,
    .trust-icons {
      display: grid;
      gap: 1px;
      border: 1px solid var(--line);
      background: var(--line);
    }

    .panel-label {
      margin: 0 0 -10px;
      color: var(--red);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .trigger-list div,
    .trust-icons div {
      display: flex;
      align-items: center;
      gap: 10px;
      min-height: 44px;
      padding: 10px 12px;
      background: var(--white);
      color: #3d3831;
      font-size: 13px;
      font-weight: 800;
      transition: transform 0.18s ease, background 0.2s ease;
    }

    .trigger-list div:hover,
    .trust-icons div:hover {
      transform: translateX(5px);
      background: #fff;
    }

    .trigger-list svg,
    .trust-icons svg {
      color: var(--gold);
      flex: 0 0 auto;
    }

    .section-head {
      display: grid;
      grid-template-columns: minmax(0, 0.95fr) minmax(260px, 0.55fr);
      gap: 42px;
      align-items: end;
      margin-bottom: 36px;
    }

    .benefit-grid {
      display: grid;
      grid-template-columns: repeat(5, 1fr);
      gap: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .benefit {
      min-height: 240px;
      display: grid;
      align-content: space-between;
      padding: 24px;
      background: var(--white);
      transition: background 0.22s ease, color 0.22s ease, transform 0.22s ease, box-shadow 0.22s ease;
    }

    .benefit:hover {
      background: var(--ink);
      color: var(--white);
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .benefit i,
    .benefit svg {
      width: 30px;
      height: 30px;
      color: var(--red);
    }

    .benefit strong {
      display: block;
      margin-top: 22px;
      font-size: 16px;
      line-height: 1.25;
      text-transform: uppercase;
    }

    .split {
      display: grid;
      grid-template-columns: 1.1fr 0.9fr;
      gap: 1px;
      align-items: center;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .split > * {
      min-height: 560px;
      background: var(--paper);
    }

    .cream-band {
      background: var(--cream);
    }

    .before-after {
      height: 100%;
      overflow: hidden;
      background: var(--white);
    }

    .before-after img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .copy-stack {
      display: grid;
      gap: 18px;
      align-content: center;
      padding: clamp(28px, 5vw, 74px);
    }

    .fit-split {
      grid-template-columns: minmax(0, 0.92fr) minmax(320px, 0.72fr) minmax(280px, 0.62fr);
      align-items: stretch;
    }

    .fit-split > * {
      min-height: 600px;
    }

    .fit-copy {
      background: var(--paper);
      padding: clamp(28px, 4vw, 58px);
    }

    .fit-copy h2,
    .action-copy h2 {
      font-size: clamp(36px, 3.6vw, 58px);
    }

    .fit-card-grid {
      display: grid;
      gap: 1px;
      padding: 0;
      background: var(--ink);
    }

    .fit-card {
      display: grid;
      grid-template-columns: 82px minmax(0, 1fr);
      align-items: center;
      gap: 16px;
      padding: 18px;
      background: var(--white);
      color: var(--ink);
      font-size: 13px;
      font-weight: 900;
      line-height: 1.15;
      text-transform: uppercase;
      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease, color 0.22s ease;
    }

    .fit-card:hover {
      background: var(--ink);
      color: var(--white);
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .fit-card img {
      width: 82px;
      height: 82px;
      object-fit: cover;
      filter: saturate(0.98) contrast(1.03);
      transition: transform 0.28s ease, filter 0.22s ease;
    }

    .fit-card:hover img {
      transform: scale(1.08);
      filter: saturate(1.12) contrast(1.08);
    }

    .action-split {
      grid-template-columns: minmax(360px, 0.72fr) minmax(0, 1.1fr);
      align-items: stretch;
    }

    .action-copy {
      background: var(--ink);
      color: var(--white);
    }

    .action-copy .lead {
      color: #d8d3cb;
    }

    .impact-metrics {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1px;
      margin-top: 18px;
      border: 1px solid var(--white);
      background: var(--white);
    }

    .impact-metrics div {
      min-height: 98px;
      display: grid;
      align-content: space-between;
      padding: 14px;
      background: var(--ink);
      color: var(--white);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .impact-metrics strong {
      color: var(--red);
      font-size: 26px;
    }

    .bullet-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 1px;
      margin-top: 18px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .bullet {
      min-height: 64px;
      display: grid;
      align-items: center;
      padding: 14px 16px;
      background: var(--white);
      font-weight: 900;
      text-transform: uppercase;
      transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
    }

    .bullet:hover {
      background: var(--red);
      color: var(--white);
      transform: translateY(-3px);
    }

    .tabs {
      border: 1px solid var(--ink);
      border-radius: var(--radius);
      background: var(--white);
      overflow: hidden;
      display: grid;
      grid-template-rows: auto 1fr;
    }

    .tab-nav {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      border-bottom: 1px solid var(--ink);
    }

    .tab-nav button {
      min-height: 60px;
      border: 0;
      border-right: 1px solid var(--ink);
      background: var(--paper);
      color: var(--muted);
      font-weight: 900;
      text-transform: uppercase;
      cursor: pointer;
      transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    }

    .tab-nav button:last-child {
      border-right: 0;
    }

    .tab-nav button[aria-selected="true"] {
      background: var(--white);
      color: var(--red);
    }

    .tab-nav button:hover {
      background: var(--ink);
      color: var(--white);
      box-shadow: inset 0 -4px 0 var(--red);
    }

    .tab-panel {
      display: none;
      padding: 34px;
      min-height: 498px;
    }

    .tab-panel.active {
      display: grid;
      grid-template-rows: auto 1fr;
      align-content: stretch;
      gap: 24px;
    }

    .tab-detail-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1px;
      margin-top: 0;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .tab-detail-grid div {
      min-height: 0;
      display: grid;
      grid-template-rows: auto minmax(132px, 1fr) auto;
      align-content: stretch;
      gap: 16px;
      padding: 16px;
      background: var(--paper);
      font-weight: 900;
      text-transform: uppercase;
      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease, color 0.22s ease;
    }

    .tab-detail-grid div:hover {
      background: var(--ink);
      color: var(--white);
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .tab-detail-grid span {
      color: var(--red);
      font-size: 12px;
    }

    .tab-detail-grid img {
      width: 100%;
      height: 100%;
      min-height: 132px;
      object-fit: cover;
      border: 1px solid var(--ink);
      filter: saturate(0.98) contrast(1.03);
      transition: transform 0.32s ease, filter 0.22s ease, border-color 0.22s ease;
    }

    .tab-detail-grid img.contain {
      object-fit: contain;
      padding: 12px;
      background: var(--milk);
      mix-blend-mode: multiply;
    }

    .tab-detail-grid strong {
      display: block;
      font-size: 15px;
      line-height: 1.18;
    }

    .tab-detail-grid div:hover img {
      border-color: var(--white);
      transform: scale(1.04);
      filter: saturate(1.08) contrast(1.08);
    }

    .steps {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .use-step {
      min-height: 190px;
      border: 0;
      padding: 22px;
      background: var(--paper);
      transition: transform 0.22s ease, background 0.22s ease, color 0.22s ease, box-shadow 0.22s ease;
    }

    .use-step:hover {
      background: var(--white);
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .use-step span {
      width: 44px;
      height: 44px;
      display: grid;
      place-items: center;
      border: 1px solid var(--ink);
      color: var(--ink);
      font-weight: 900;
      transition: background 0.2s ease, color 0.2s ease;
    }

    .use-step:hover span {
      background: var(--red);
      color: var(--white);
      border-color: var(--red);
    }

    .use-step strong {
      display: block;
      margin-top: 22px;
      font-size: 16px;
      line-height: 1.2;
      text-transform: uppercase;
    }

    .faq {
      display: grid;
      grid-template-columns: 1fr;
      gap: 1px;
      padding: 0 12px 12px 0;
      background: var(--ink);
      border: 1px solid var(--ink);
      overflow: visible;
    }

    .faq details {
      border: 1px solid var(--ink);
      background: var(--white);
      transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
    }

    .faq details:hover {
      background: #fff;
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .faq summary {
      min-height: 86px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 28px;
      cursor: pointer;
      font-weight: 900;
      text-transform: uppercase;
      transition: color 0.2s ease;
    }

    .faq details:hover summary {
      color: var(--red);
    }

    .faq p {
      margin: 0;
      padding: 0 28px 28px;
      color: var(--muted);
      font-size: 16px;
      font-weight: 800;
    }

    .proof-block {
      display: grid;
      grid-template-columns: minmax(0, 0.82fr) minmax(0, 0.78fr);
      gap: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
      overflow: visible;
    }

    .proof-media {
      position: relative;
      min-height: 500px;
      overflow: visible;
      background: var(--white);
      transition: transform 0.22s ease, box-shadow 0.22s ease;
    }

    .proof-media:hover {
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .proof-media img {
      width: 100%;
      height: 100%;
      object-fit: contain;
      padding: 42px;
      transition: transform 0.5s ease, filter 0.3s ease;
    }

    .proof-media:hover img {
      transform: scale(1.025);
      filter: saturate(1.08) contrast(1.06);
    }

    .proof-caption {
      position: absolute;
      left: 24px;
      bottom: 24px;
      padding: 14px 18px;
      background: var(--red);
      color: var(--white);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
    }

    .proof-copy {
      display: grid;
      align-content: center;
      gap: 18px;
      padding: clamp(28px, 4.5vw, 62px);
      background: var(--paper);
    }

    .proof-copy h2 {
      font-size: clamp(34px, 3.7vw, 58px);
      text-wrap: balance;
    }

    .bundle {
      border: 1px solid var(--ink);
      border-radius: var(--radius);
      background: var(--white);
      overflow: hidden;
    }

    .bundle-head {
      display: flex;
      justify-content: space-between;
      gap: 16px;
      padding: 26px;
      border-bottom: 1px solid var(--ink);
      font-size: 20px;
      text-transform: uppercase;
    }

    .bundle-items {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1px;
      background: var(--ink);
    }

    .bundle-item {
      display: grid;
      gap: 14px;
      padding: 22px;
      background: var(--white);
      font-weight: 900;
      text-transform: uppercase;
      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
    }

    .bundle-item:hover {
      background: #fff;
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .bundle-item img {
      width: 100%;
      aspect-ratio: 1 / 1;
      object-fit: contain;
      background: var(--milk);
      border-radius: var(--radius);
      mix-blend-mode: multiply;
      transition: transform 0.28s ease;
    }

    .bundle-item:hover img {
      transform: scale(1.06) rotate(-1deg);
    }

    .bundle-item input {
      width: 22px;
      height: 22px;
      accent-color: var(--red);
    }

    .bundle-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
      padding: 26px;
      font-size: 20px;
      text-transform: uppercase;
    }

    .mobile-rail-controls {
      display: none;
    }

    .mobile-rail-btn {
      width: 44px;
      height: 44px;
      display: grid;
      place-items: center;
      border: 1px solid var(--ink);
      background: var(--white);
      color: var(--ink);
      cursor: pointer;
      transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
    }

    .mobile-rail-btn:hover {
      background: var(--ink);
      color: var(--white);
      transform: translate(-2px, -2px);
      box-shadow: 4px 4px 0 var(--red);
    }

    .mobile-rail-btn svg {
      width: 22px;
      height: 22px;
    }

    .review-grid,
    .recommend-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .review,
    .rec-card {
      border: 0;
      padding: 22px;
      background: var(--white);
      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
    }

    .review:hover,
    .rec-card:hover {
      background: #fff;
      transform: translate(-4px, -4px);
      box-shadow: 8px 8px 0 var(--red);
    }

    .review p {
      color: #403b34;
    }

    .review img {
      width: 100%;
      aspect-ratio: 16 / 10;
      object-fit: cover;
      margin-bottom: 14px;
      filter: saturate(0.96) contrast(1.02);
      transition: transform 0.32s ease, filter 0.22s ease;
    }

    .review:hover img {
      transform: scale(1.04);
      filter: saturate(1.08) contrast(1.08);
    }

    .review small {
      color: var(--muted);
      font-weight: 800;
    }

    .review-form-card {
      display: grid;
      grid-template-columns: minmax(0, 0.8fr) minmax(360px, 1fr);
      gap: 1px;
      margin-top: 1px;
      border: 1px solid var(--ink);
      background: var(--ink);
    }

    .review-form-card > div,
    .review-form {
      padding: 28px;
      background: var(--white);
    }

    .review-form-card h3 {
      max-width: 620px;
      font-size: clamp(28px, 3vw, 46px);
      line-height: 0.98;
      text-transform: uppercase;
    }

    .review-form {
      display: grid;
      gap: 12px;
    }

    .review-stars {
      color: var(--gold);
      font-size: 24px;
      font-weight: 900;
      letter-spacing: 2px;
    }

    .review-form input,
    .review-form textarea {
      width: 100%;
      border: 1px solid var(--ink);
      border-radius: 0;
      padding: 14px 16px;
      background: var(--paper);
      color: var(--ink);
      font-weight: 800;
    }

    .review-form textarea {
      min-height: 118px;
      resize: vertical;
    }

    .file-upload {
      min-height: 58px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      border: 1px solid var(--ink);
      padding: 0 16px;
      background: var(--paper);
      font-size: 12px;
      font-weight: 900;
      text-transform: uppercase;
      cursor: pointer;
      transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    }

    .file-upload:hover {
      transform: translate(-3px, -3px);
      background: var(--ink);
      color: var(--white);
      box-shadow: 6px 6px 0 var(--red);
    }

    .file-upload input {
      position: absolute;
      width: 1px;
      height: 1px;
      opacity: 0;
      pointer-events: none;
    }

    .rec-card img {
      width: 100%;
      aspect-ratio: 1 / 1;
      object-fit: contain;
      border-radius: var(--radius);
      background: var(--milk);
      mix-blend-mode: multiply;
      transition: transform 0.28s ease;
    }

    .rec-card:hover img {
      transform: scale(1.06) rotate(1deg);
    }

    .rec-card strong {
      display: block;
      margin: 14px 0 6px;
      text-transform: uppercase;
    }

    .rec-actions {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
      margin-top: 16px;
    }

    .mini-btn {
      min-height: 42px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: 1px solid var(--ink);
      background: var(--white);
      color: var(--ink);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
      cursor: pointer;
      transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    }

    .mini-btn.dark {
      background: var(--ink);
      color: var(--white);
    }

    .mini-btn:hover {
      transform: translate(-2px, -2px);
      background: var(--red);
      color: var(--white);
      box-shadow: 4px 4px 0 var(--ink);
    }

    .site-footer {
      background: var(--ink);
      color: var(--white);
      padding: 54px 0 32px;
      border-top: 1px solid var(--ink);
    }

    .footer-grid {
      display: grid;
      grid-template-columns: 1.1fr repeat(3, 0.7fr);
      gap: 32px;
    }

    .footer-grid h4 {
      margin: 0 0 14px;
      font-size: 13px;
      text-transform: uppercase;
    }

    .footer-grid > div:first-child h4 {
      font-size: clamp(24px, 2.6vw, 38px);
      line-height: 0.95;
      letter-spacing: 0;
    }

    .footer-grid a,
    .footer-grid p {
      display: block;
      margin: 0 0 10px;
      color: #cfc6b9;
      font-size: 14px;
    }

    .footer-bottom {
      display: flex;
      justify-content: space-between;
      gap: 20px;
      margin-top: 36px;
      padding-top: 24px;
      border-top: 1px solid rgba(255, 250, 242, 0.16);
      color: #b9aea0;
      font-size: 13px;
    }

    .mobile-buy {
      display: none;
    }

    @media (max-width: 1280px) {
      .mega-list-panel,
      .mega-visual-panel,
      .mega-quick-panel {
        padding: 24px;
      }

      .shop-shell {
        grid-template-columns: minmax(360px, 0.95fr) minmax(390px, 1fr) minmax(230px, 0.62fr);
      }

      .hair-shell {
        grid-template-columns: minmax(590px, 1.06fr) minmax(360px, 0.76fr);
      }

      .mega-panel-head h3 {
        font-size: clamp(30px, 3vw, 46px);
      }

      .mega-thumb-link {
        grid-template-columns: 48px minmax(0, 1fr) 16px;
        gap: 9px;
        font-size: 10px;
      }

      .mega-thumb-link:hover {
        grid-template-columns: 74px minmax(0, 1fr) 16px;
      }

      .hair-thumb-list .mega-thumb-link {
        grid-template-columns: 44px minmax(0, 1fr);
        min-height: 70px;
      }

      .hair-thumb-list .mega-thumb-link:hover {
        grid-template-columns: 62px minmax(0, 1fr);
      }

      .mega-expand-row {
        min-height: 274px;
      }
    }

    @media (max-width: 1040px) {
      .nav.left {
        display: none;
      }

      .header-inner {
        grid-template-columns: auto 1fr auto;
      }

      .brand {
        justify-items: start;
      }

      .pdp,
      .split,
      .section-head,
      .proof-block {
        grid-template-columns: 1fr;
      }

      .buy-panel {
        position: static;
        min-height: 0;
      }

      .benefit-grid {
        grid-template-columns: repeat(2, 1fr);
      }

      .steps,
      .bundle-items,
      .review-grid,
      .recommend-grid,
      .review-form-card,
      .footer-grid {
        grid-template-columns: 1fr;
      }

      .split > *,
      .proof-media {
        min-height: 440px;
      }

      .fit-card-grid,
      .tabs,
      .tab-panel {
        min-height: 0;
      }
    }

    @media (max-width: 760px) {
      :root {
        --container: min(100vw - 24px, 1180px);
      }

      .nav.right a {
        display: none;
      }

      .header-inner {
        min-height: 64px;
        grid-template-columns: auto 1fr auto;
      }

      .brand {
        justify-items: start;
      }

      .gallery {
        grid-template-columns: 1fr;
        width: 100%;
        max-width: calc(100vw - 24px);
        min-height: 0;
        overflow: hidden;
      }

      .thumbs {
        display: flex;
        gap: 8px;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        overflow-x: auto;
        padding-bottom: 4px;
        order: 2;
      }

      .thumb {
        flex: 0 0 104px;
      }

      .hero-image {
        min-height: 420px;
      }

      .qty-row,
      .bullet-grid,
      .benefit-grid,
      .impact-metrics,
      .faq,
      .tab-detail-grid,
      .tab-nav,
      .product-pills {
        grid-template-columns: 1fr;
      }

      .btn {
        width: 100%;
      }

      .topbar {
        padding: 8px 10px;
        font-size: 11px;
        line-height: 1.25;
        white-space: normal;
      }

      .nav.right {
        gap: 8px;
      }

      .icon-btn {
        width: 38px;
        height: 38px;
      }

      .nav.right .icon-btn:first-of-type {
        display: none;
      }

      h1 {
        width: 100%;
        max-width: 350px;
        font-size: 30px;
        overflow-wrap: anywhere;
      }

      .lead {
        max-width: 350px;
        overflow-wrap: anywhere;
      }

      .buy-panel {
        max-width: 350px;
        padding: 22px 12px;
      }

      .swatch-grid {
        display: flex;
        width: 100%;
        max-width: 350px;
        overflow-x: auto;
        padding: 2px 2px 8px;
      }

      .swatch {
        flex: 0 0 62px;
      }

      .section {
        padding: 58px 0;
      }

      .proof-media,
      .split > * {
        min-height: 360px;
      }

      .fit-copy,
      .action-copy,
      .tab-panel,
      .proof-copy {
        padding: 24px;
      }

      .section-head h2,
      .fit-copy h2,
      .action-copy h2,
      .proof-copy h2 {
        max-width: 100%;
        font-size: clamp(26px, 7.6vw, 30px);
        line-height: 1;
      }

      .tab-panel.active {
        grid-template-rows: auto auto;
      }

      .tab-detail-grid div {
        min-height: 118px;
        padding: 18px;
      }

      .tab-detail-grid img {
        min-height: 160px;
      }

      .benefit-grid {
        padding: 0 8px 8px 0;
        background: var(--ink);
      }

      .benefit {
        min-height: 0;
        display: grid;
        grid-template-columns: 34px minmax(0, 1fr);
        align-items: center;
        align-content: start;
        gap: 14px;
        padding: 16px;
        border: 1px solid var(--ink);
      }

      .benefit:hover {
        background: var(--white);
        color: var(--ink);
        transform: none;
        box-shadow: inset 5px 0 0 var(--red);
      }

      .benefit i,
      .benefit svg {
        width: 28px;
        height: 28px;
      }

      .benefit strong {
        margin-top: 0;
        font-size: 14px;
        line-height: 1.16;
      }

      .steps {
        padding: 0 8px 8px 0;
        background: var(--ink);
      }

      .use-step {
        min-height: 0;
        display: grid;
        grid-template-columns: 38px minmax(0, 1fr);
        align-items: center;
        gap: 14px;
        padding: 15px 16px;
        border: 1px solid var(--ink);
        background: var(--white);
      }

      .use-step:hover {
        background: var(--white);
        transform: none;
        box-shadow: inset 5px 0 0 var(--red);
      }

      .use-step span {
        width: 38px;
        height: 38px;
        font-size: 14px;
      }

      .use-step strong {
        margin-top: 0;
        font-size: 14px;
        line-height: 1.16;
      }

      .bundle {
        overflow: visible;
      }

      .mobile-rail-controls {
        display: flex;
        justify-content: flex-end;
        gap: 8px;
        margin: -8px 0 14px;
      }

      .bundle .mobile-rail-controls {
        padding: 0 12px;
        margin-top: 14px;
      }

      .bundle-items,
      .review-grid,
      .recommend-grid {
        display: flex;
        gap: 10px;
        overflow-x: auto;
        overflow-y: visible;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        padding: 0 12px 12px 0;
        background: transparent;
        border: 0;
        scrollbar-width: none;
      }

      .bundle-items::-webkit-scrollbar,
      .review-grid::-webkit-scrollbar,
      .recommend-grid::-webkit-scrollbar {
        display: none;
      }

      .bundle-item,
      .review,
      .rec-card {
        flex: 0 0 min(82vw, 310px);
        scroll-snap-align: start;
        border: 1px solid var(--ink);
      }

      .bundle-item:hover,
      .review:hover,
      .rec-card:hover {
        transform: none;
        box-shadow: inset 5px 0 0 var(--red);
      }

      .bundle-item {
        min-height: 360px;
        padding: 18px;
      }

      .bundle-item img {
        max-height: 190px;
      }

      .review {
        min-height: 390px;
        padding: 18px;
      }

      .review img {
        aspect-ratio: 4 / 3;
      }

      .recommend-grid {
        padding-left: 0;
      }

      .rec-card {
        min-height: 0;
      }

      .fit-card {
        grid-template-columns: 92px minmax(0, 1fr);
        min-height: 106px;
      }

      .fit-card img {
        width: 92px;
        height: 92px;
      }

      .faq {
        padding-right: 8px;
        padding-bottom: 8px;
      }

      .faq summary {
        min-height: 76px;
        padding: 0 20px;
      }

      .faq p {
        padding: 0 20px 22px;
      }

      .proof-media img {
        padding: 12px;
      }

      .review-form-card > div,
      .review-form {
        padding: 22px;
      }

      .rec-actions {
        grid-template-columns: 1fr;
      }

      .bundle-head,
      .bundle-footer,
      .footer-bottom {
        display: grid;
      }

      .mobile-buy {
      position: sticky;
      bottom: 0;
      z-index: 50;
      display: grid;
      grid-template-columns: 1fr 1.3fr;
      gap: 10px;
      align-items: center;
        border-top: 1px solid var(--ink);
      padding: 10px 12px;
        background: rgba(247, 245, 240, 0.94);
      backdrop-filter: blur(16px);
    }

      .mobile-buy strong {
        font-size: 14px;
      }

      .mobile-buy .btn {
        min-height: 44px;
      }
    }
  
    /* Cookie consent banner */
    .luneva-cookie-consent {
      position: fixed;
      left: max(12px, 2vw);
      right: max(12px, 2vw);
      bottom: 12px;
      z-index: 120;
      display: none;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: center;
      gap: 16px;
      border: 1px solid var(--ink, #070707);
      padding: 14px;
      background: var(--white, #fff);
      color: var(--ink, #070707);
      box-shadow: 6px 6px 0 var(--ink, #070707);
    }
    body.cookie-consent-visible .luneva-cookie-consent { display: grid; }
    .luneva-cookie-copy {
      display: grid;
      gap: 4px;
    }
    .luneva-cookie-copy strong {
      font-size: 13px;
      font-weight: 900;
      text-transform: uppercase;
    }
    .luneva-cookie-copy span,
    .luneva-cookie-copy a {
      color: var(--muted, #66615b);
      font-size: 12px;
      font-weight: 800;
    }
    .luneva-cookie-copy a {
      color: var(--ink, #070707);
      text-decoration: underline;
      text-underline-offset: 3px;
    }
    .luneva-cookie-actions {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-end;
      gap: 8px;
    }
    .luneva-cookie-btn,
    .luneva-cookie-link {
      min-height: 40px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: 1px solid var(--ink, #070707);
      padding: 0 13px;
      background: var(--white, #fff);
      color: var(--ink, #070707);
      font-size: 11px;
      font-weight: 900;
      text-transform: uppercase;
      cursor: pointer;
    }
    .luneva-cookie-btn.primary {
      background: var(--ink, #070707);
      color: var(--white, #fff);
    }
    .luneva-cookie-btn:hover,
    .luneva-cookie-link:hover {
      background: var(--red, #e22b1a);
      color: var(--white, #fff);
    }
    @media (max-width: 760px) {
      .luneva-cookie-consent {
        grid-template-columns: 1fr;
        left: 12px;
        right: 12px;
        bottom: 12px;
        max-height: calc(100svh - 24px);
        overflow: auto;
      }
      .luneva-cookie-actions {
        display: grid;
        grid-template-columns: 1fr;
      }
      .luneva-cookie-btn,
      .luneva-cookie-link { width: 100%; }
    }

/* ── Форма додавання в кошик від WooCommerce у панелі покупки ──────────── */
/* Кнопку і вибір варіанта малює Woo, щоб не ламати варіативні товари.
   Тут тільки підганяємо її під вигляд .qty-row з макета. */

.buy-panel .qty-row form.cart {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 10px;
  width: 100%;
  margin: 0;
}

.buy-panel .qty-row form.cart .quantity {
  flex: 0 0 auto;
}

.buy-panel .qty-row form.cart .quantity input.qty {
  width: 92px;
  min-height: 54px;
  padding: 12px;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--white);
  font-size: 15px;
  font-weight: 900;
  text-align: center;
}

.buy-panel .qty-row form.cart button.single_add_to_cart_button {
  flex: 1 1 200px;
  min-height: 54px;
  border-radius: 0;
  font-size: 12px;
}

/* Варіативний товар: вибір об'єму над кнопкою. */
.buy-panel .qty-row form.variations_form {
  display: block;
}

.buy-panel .variations {
  width: 100%;
  margin: 0 0 14px;
  border-collapse: collapse;
}

.buy-panel .variations th,
.buy-panel .variations td {
  display: block;
  width: 100%;
  padding: 0;
  text-align: left;
}

.buy-panel .variations th label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.buy-panel .variations td select {
  width: 100%;
  min-height: 48px;
  margin: 6px 0 12px;
  padding: 12px 14px;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--white);
  font: inherit;
}

.buy-panel .variations .reset_variations {
  display: inline-block;
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}

.buy-panel .woocommerce-variation-price {
  margin: 0 0 12px;
  font-size: 20px;
  font-weight: 900;
}

.buy-panel .woocommerce-variation-add-to-cart {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
}

.buy-panel p.stock.out-of-stock {
  margin: 0;
  color: var(--red);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

/* ── Таблиця характеристик ────────────────────────────────────────────── */

.woocommerce-product-attributes {
  width: 100%;
  border: 1px solid var(--ink);
  border-collapse: collapse;
  background: var(--white);
}

.woocommerce-product-attributes th,
.woocommerce-product-attributes td {
  padding: 13px 16px;
  border-top: 1px solid var(--line);
  font-size: 14px;
  text-align: left;
}

.woocommerce-product-attributes th {
  width: 220px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.woocommerce-product-attributes td p {
  margin: 0;
}

/* Опис товару з вивантаження несе власний блок FAQ. */
#about .lv-faq {
  margin-top: 26px;
}

#about .lv-faq h3 {
  margin: 22px 0 6px;
  font-size: 16px;
  text-transform: none;
}

/* ── До / після ────────────────────────────────────────────────────────── */
/* Пари фото з ACF-полів товару. Блок рендериться лише коли пари є. */

.ba-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 22px;
  margin-top: 26px;
}

.ba-pair {
  margin: 0;
  border: 1px solid var(--ink);
  background: var(--white);
}

.ba-shots {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--ink);
}

.ba-shot {
  position: relative;
  background: var(--paper);
  overflow: hidden;
}

.ba-shot img {
  display: block;
  width: 100%;
  height: 300px;
  object-fit: cover;
}

.ba-shot span {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 1;
  padding: 5px 10px;
  background: var(--ink);
  color: var(--white);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.ba-pair figcaption {
  padding: 13px 15px;
  border-top: 1px solid var(--ink);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.4;
}

/* ── Відгуки WooCommerce ───────────────────────────────────────────────── */

.woo-reviews { margin-top: 26px; }

.woo-reviews #reviews > h2,
.woo-reviews .woocommerce-Reviews-title { display: none; }

.woo-reviews ol.commentlist {
  margin: 0 0 30px;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 18px;
}

.woo-reviews ol.commentlist li {
  margin: 0;
  padding: 20px;
  border: 1px solid var(--ink);
  background: var(--white);
}

.woo-reviews .comment_container {
  display: grid;
  gap: 10px;
}

.woo-reviews .comment_container img.avatar {
  position: static;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 0;
}

.woo-reviews .comment-text {
  margin: 0;
  padding: 0;
  border: 0;
}

.woo-reviews .comment-text p.meta {
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.woo-reviews .comment-text .description p {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
}

.woo-reviews .star-rating {
  margin: 0 0 8px;
  color: var(--ink);
}

/* Форма відгуку — у стилі картки з макета. */
.woo-reviews #review_form_wrapper {
  padding: 26px;
  border: 1px solid var(--ink);
  background: var(--paper);
}

.woo-reviews #reply-title {
  display: block;
  margin: 0 0 16px;
  font-size: clamp(18px, 2vw, 26px);
  font-weight: 900;
  text-transform: uppercase;
}

.woo-reviews .comment-form input[type="text"],
.woo-reviews .comment-form input[type="email"],
.woo-reviews .comment-form textarea {
  width: 100%;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--white);
  font: inherit;
}

.woo-reviews .comment-form textarea { min-height: 120px; }

.woo-reviews .comment-form label {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.woo-reviews .comment-form .form-submit input {
  min-height: 52px;
  padding: 0 26px;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--ink);
  color: var(--white);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  cursor: pointer;
}

.woo-reviews .comment-form .form-submit input:hover {
  background: var(--red);
  border-color: var(--red);
}

@media (max-width: 620px) {
  .ba-shot img { height: 210px; }
}

/* ── Довгі назви товарів із вивантаження ───────────────────────────────── */
/* У макеті назва була «Маска Pearl Blonde проти жовтизни» — 35 символів.
   Справжні назви з Horoshop по 130+ символів, і при 64px капсом заголовок
   розтягував колонку на 1700px, а фото повисало в порожнечі. */

.buy-panel h1 {
  font-size: clamp(21px, 2.1vw, 32px);
  line-height: 1.14;
  text-transform: none;
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: auto;
}

/* Галерея більше не тягнеться під висоту правої колонки. */
.pdp .gallery,
.pdp .buy-panel {
  align-self: start;
}

.pdp .hero-image {
  align-self: start;
  max-height: 620px;
}

.pdp .hero-image img {
  max-height: 620px;
}

/* Кнопка «в кошик» має займати рядок, а не стискатись до тексту. */
.buy-panel .qty-row form.cart button.single_add_to_cart_button,
.buy-panel .woocommerce-variation-add-to-cart button.single_add_to_cart_button {
  flex: 1 1 220px;
  min-width: 220px;
  white-space: nowrap;
}

/* Крихти: повна назва товару в них не влазить. */
.breadcrumbs span:last-child {
  display: inline-block;
  max-width: 46ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}

/* Плашки характеристик: у макеті їх завжди було чотири, у реальних товарах
   буває одна. Сітка 4×1fr на чорному тлі показувала три порожні чорні
   клітинки — переводимо на потік. */
.product-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  border: 0;
  background: transparent;
}

.product-pills span {
  min-height: 0;
  flex: 0 1 auto;
  padding: 10px 14px;
  border: 1px solid var(--ink);
}

/* ── Блок «Схожі товари» на сторінці товару ────────────────────────────
   У макеті сторінка товару була самодостатньою і цього блоку не мала,
   тому в product.css не було жодного правила для карток: фото взагалі
   не отримувало розмірів і не малювалось, а назви йшли на пʼять рядків.
   Повторюємо оформлення карток каталогу. */

.product-grid .product-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px;
  background: var(--white);
  border: 1px solid var(--line);
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.product-grid .product-card:hover {
  transform: translate(-4px, -4px);
  border-color: var(--ink);
  box-shadow: 8px 8px 0 var(--red);
}

.product-grid .product-card .label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.product-grid .product-card .label span.is-sale {
  color: var(--red);
}

.product-grid .product-card .photo {
  display: block;
  flex: 0 0 auto;
  aspect-ratio: 1 / 1;
  background: #f4f1ec;
  overflow: hidden;
}

.product-grid .product-card .photo img {
  width: 100%;
  height: 100%;
  /* Знімки товарів вертикальні — cover зрізав би флакону горлечко. */
  object-fit: contain;
  padding: 10px;
  transition: transform 0.32s ease;
}

.product-grid .product-card:hover .photo img {
  transform: scale(1.05);
}

/* Назви з вивантаження довгі — три рядки, інакше картки різної висоти. */
.product-grid .product-card strong {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 15px;
  line-height: 1.2;
  font-weight: 900;
  text-transform: uppercase;
}

.product-grid .product-card .meta {
  margin-top: auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  font-size: 13px;
  font-weight: 900;
}

.product-grid .product-card .meta a {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 12px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--white);
  text-decoration: none;
  text-transform: uppercase;
  transition: background 0.2s ease, border-color 0.2s ease;
}

.product-grid .product-card .meta a:hover {
  background: var(--red);
  border-color: var(--red);
}

/* ── «Ритуал догляду»: реальні товари ──────────────────────────────────
   Картка bundle-item у макеті вертикальна, і фото займало всю ширину
   колонки — на реальних знімках це давало картку в 650px заввишки.
   Обмежуємо кадр і тримаємо назви у два рядки. */

#ritual .bundle-item img {
  height: 220px;
  width: 100%;
  object-fit: contain;
  background: #f4f1ec;
  padding: 10px;
}

#ritual .bundle-item strong {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.18;
}

#ritual .bundle-item .btn {
  margin-top: auto;
}

/* ── Блоки з макета: переваги, «для кого», кроки ───────────────────────
   Під них у темі вже були стилі, бракувало лише розмітки. Дрібні
   поправки під реальний текст. */

#usage .steps {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Ряд відтінку в панелі покупки — той самий, що на картках каталогу. */
.buy-panel .shade-row {
  display: flex;
  gap: 6px;
  margin: 0 0 4px;
}

.buy-panel .shade-dot {
  width: 20px;
  height: 20px;
  border: 1px solid var(--ink);
}

/* Кнопки кроку кількості. Поле лишається штатним полем Woo — саме його
   читає кошик, — а кнопки додаються по боках скриптом. */
.qty-row .quantity.stepper {
  display: inline-flex;
  align-items: stretch;
  gap: 0;
}

.qty-row .quantity.stepper button {
  width: 44px;
  border: 1px solid var(--ink);
  background: var(--white);
  color: var(--ink);
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}

.qty-row .quantity.stepper button:hover {
  background: var(--ink);
  color: var(--white);
}

.qty-row .quantity.stepper input.qty {
  border-left: 0;
  border-right: 0;
  text-align: center;
}

/* ── Галерея товару: правки під реальні фото ───────────────────────────
   Макет малювався на прозорих PNG-рендерах, а в магазині звичайні JPEG
   зі своїм фоном. Звідси три проблеми. */

/* 1. У CSS був зашитий підпис content: "Pearl Blonde" — назва вигаданого
      товару з макета красувалась на фото ВСІХ 53 товарів. У HTML її
      немає (це псевдоелемент), тому жодна перевірка на заглушки її не
      ловила. Тепер підпис бере коротку назву самого товару. */
.hero-image::after {
  content: var(--shade-label, '');
}

/* 2. mix-blend-mode: multiply прибирав білий фон у прозорих рендерів
      макета. На звичайних фото він лише бруднить кольори й може
      затемнити знімок до чорного прямокутника. */
.hero-image img {
  mix-blend-mode: normal;
  width: 92%;
  max-height: 92%;
}

/* Ізолюємо контекст накладання, щоб фото ніколи не змішувалось із
   темним фоном сітки галереї. */
.hero-image {
  isolation: isolate;
}

/* 3. Мініатюри розтягувались на всю висоту колонки: квадрат 150x150
      перетворювався на вузьку смужку 90x271 з обрізкою. Тримаємо
      пропорцію і вирівнюємо зверху. */
.thumbs {
  align-content: start;
  grid-auto-rows: max-content;
}

.thumbs img {
  aspect-ratio: 3 / 4;
  height: auto;
  object-fit: contain;
  background: var(--white);
}

/* Колонка мініатюр мала темний фон (він давав 1px розділювачі), а
   висоту тягнула на всю галерею — 820px. Коли фото у товара три, а не
   вісім, знизу лишався чорний прямокутник на пів екрана. Робимо фон
   світлим, а розділювачі — рамкою самих мініатюр. */
.thumbs {
  background: var(--white);
  align-content: start;
}

.thumbs img {
  border: 1px solid var(--line);
}

.thumbs img.is-active,
.thumbs img:hover {
  border-color: var(--ink);
}

/* Галерея була заввишки майже на весь екран, і навколо знімка лишалось
   до 200px порожнечі. Трохи нижче — фото читається щільніше. */
/* Змінна оголошена на .pdp, а не на :root, тож перевизначати треба там
   само — інакше правило просто не застосовується. */
.pdp {
  --pdp-height: clamp(560px, calc(100svh - 160px), 700px);
}

/* Чорний прямокутник на картці товару.

   Сітка .pdp і сама .gallery мали background: var(--ink) — темний фон
   просвічував крізь gap: 1px і працював як розділювачі. Але обидві
   колонки вирівняні по верху (align-self: start), а .hero-image ще й
   обмежене 620px при min-height галереї 700px. Тож усе, що нижче
   коротшої колонки, лишалось чистим чорним фоном на пів екрана — і
   найпомітніше це на варіативних товарах, де права колонка вища через
   селектор обʼєму. Прибираємо темний фон і малюємо розділювачі
   рамками. */
.pdp,
.pdp .gallery {
  background: var(--white);
}

.pdp .gallery {
  min-height: 0;
  align-content: start;
}

.pdp .hero-image {
  border-left: 1px solid var(--ink);
}

.pdp .buy-panel {
  border-left: 1px solid var(--ink);
}

/* На вузьких екранах колонки стають рядками — розділювач переїжджає
   зверху, інакше лишається висяча вертикальна лінія. */
@media (max-width: 1040px) {
  .pdp .buy-panel {
    border-left: 0;
    border-top: 1px solid var(--ink);
  }
}

@media (max-width: 760px) {
  .pdp .hero-image {
    border-left: 0;
    border-bottom: 1px solid var(--ink);
  }
}

/* ─── Правки за макетом product.html ───────────────────────────────── */

/* Кількість колонок дорівнює кількості карток. Раніше було зашито 5 і 4:
   у товара з трьома кроками четвертий трек лишався порожнім, і крізь
   нього світився темний фон сітки — той самий «чорний прямокутник». */
.benefit-grid {
  grid-template-columns: repeat(var(--cols, 5), minmax(0, 1fr));
}

.steps {
  grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
}

/* «Для кого»: велике фото прибрано з розмітки, лишились текст і картки.
   Три колонки на два блоки давали пів екрана порожнечі. */
.fit-split {
  grid-template-columns: minmax(0, 1fr) minmax(320px, 0.85fr);
}

.fit-split > * {
  min-height: 0;
}

.fit-copy {
  align-content: center;
}

.fit-card-grid {
  align-content: center;
}

/* Мініатюри переїжджають під головне фото: у лівій колоні вони стояли
   вузьким стовпчиком, а праворуч від них лишалось порожнє поле. */
.pdp .gallery {
  grid-template-columns: minmax(0, 1fr);
}

.pdp .hero-image {
  border-left: 0;
  order: 1;
}

.pdp .thumbs {
  order: 2;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 10px;
  padding: 10px 0 0;
}

.pdp .thumb {
  min-height: 0;
}

.pdp .thumbs img,
.pdp .thumb img {
  aspect-ratio: 1 / 1;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* Оцінка у формі відгуку — справжні radio-кнопки, а не текст із макета.
   Ховаємо кружечки, лишаємо зірки, які підсвічуються при виборі. */
.review-stars {
  display: flex;
  gap: 4px;
}

.review-stars label {
  cursor: pointer;
  color: var(--gold);
  transition: color 0.15s ease;
}

.review-stars input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}

/* Зірки золоті за замовчуванням; усе, що ПІСЛЯ обраної, гасне. */
.review-stars label:has(input:checked) ~ label {
  color: var(--line);
}

.review-stars input:focus-visible + span {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

/* Ширину 100% ставили всім input, включно з радіо. */
.review-form .review-stars input {
  width: 1px;
}

.review-form .btn {
  border: 1px solid var(--ink);
  padding: 16px 22px;
  background: var(--ink);
  color: var(--white);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  cursor: pointer;
}

.review-form .btn:hover {
  background: var(--red);
  border-color: var(--red);
}

@media (max-width: 1040px) {
  .fit-split {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Ціну варіації показує великий рядок угорі панелі — власний блок Woo
   під селектором дублював би те саме число. */
.buy-panel .woocommerce-variation-price {
  display: none;
}

/* Сітка відгуків так само рахує колонки по факту: з одним відгуком два
   порожні треки показували темний фон замість карток. */
.review-grid {
  grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
}

/* Картки у вкладці розраховані на «номер / фото / підпис», тому середній
   рядок резервує 132px під зображення. У кроків застосування фото немає,
   і цей рядок лишався порожнім — звідси майже 200px білого під двома
   рядками тексту. */
.tab-detail-grid.is-steps {
  grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
}

.tab-detail-grid.is-steps div {
  grid-template-rows: auto auto;
  align-content: start;
  gap: 14px;
}

/* «Для кого»: текст ліворуч коротший за список карток праворуч, і при
   розтягуванні на всю висоту навколо нього лишалось по 160px порожнього
   фону. Колонки вирівнюємо по верху. */
.fit-split {
  align-items: start;
}

/* Переваги: іконка вгорі, підпис унизу, а між ними 240px порожнечі —
   картка тримала фіксовану висоту і розкидала вміст по краях. */
.benefit {
  min-height: 0;
  align-content: start;
  padding: 26px 24px 30px;
}

.benefit strong {
  margin-top: 14px;
}

/* «Для кого»: контейнер має темний фон (він давав розділювачі), а
   текстова колонка коротша за список карток — знизу лишалась чорна
   смуга. Той самий випадок, що й у сітці галереї: фон світлий,
   розділювач — рамка. */
.fit-split {
  background: transparent;
}

.fit-split .fit-card-grid {
  border-left: 1px solid var(--ink);
}

/* Вкладок може бути дві, а треків було завжди чотири: праворуч лишалась
   порожнеча, і остання кнопка не мала правої межі. */
.tab-nav {
  grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
}

.tab-nav button:last-child {
  border-right: 0;
}

/* Посилання «Уся категорія» тулилось до середини — притискаємо вправо. */
.section-head > .text-link {
  justify-self: end;
}

/* Картка «Для кого»: короткий заголовок і пояснення під ним. Самі по
   собі підписи на кшталт «електризація» нічого покупцю не кажуть. */
.fit-card span {
  display: grid;
  gap: 6px;
}

.fit-card strong {
  font-size: 13px;
  font-weight: 900;
  line-height: 1.15;
  text-transform: uppercase;
}

.fit-card em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
  line-height: 1.35;
  text-transform: none;
}

/* На темному ховері приглушений текст був майже нечитабельним. */
.fit-card:hover em {
  color: rgba(255, 255, 255, 0.78);
}

/* Рядок «зберегти в обране» під кнопкою кошика. */
.buy-wishlist {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.buy-wishlist .wishlist-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: color 0.18s ease, transform 0.18s ease;
}

.buy-wishlist .wishlist-toggle svg {
  width: 19px;
  height: 19px;
}

.buy-wishlist .wishlist-toggle:hover,
.buy-wishlist .wishlist-toggle.is-active {
  color: var(--red);
}

.buy-wishlist .wishlist-toggle.is-active svg {
  fill: currentColor;
}

/* ── Опис під заголовком, а не збоку ────────────────────────────────
   `.section-head` був сіткою у дві колонки: ліворуч надпис і заголовок,
   праворуч пояснювальний абзац. Через це заголовок ламався раніше, ніж
   треба, а текст праворуч висів окремим стовпчиком.

   Тепер одна колонка: опис іде під заголовком.

   Виняток — блоки, де праворуч не текст, а керування: стрілки гортання
   стрічки та посилання «уся категорія». Їх лишаємо в рядку із
   заголовком, інакше вони поїдуть під нього і ряд розсиплеться. */
.section-head {
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}

.section-head:has(.rail-arrows),
.section-head:has(> .text-link),
.section-head:has(> a),
.section-head.compact-head {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
}

/* Опис тепер займає всю ширину рядка. Обмеження 520-610px лишились від
   тих часів, коли він стояв правою колонкою — у ній це був сенс, а під
   заголовком текст просто обривався на середині. */
.section-head > p,
.section-head .lead,
.section-head > div > p.lead {
  max-width: none;
}

/* Блоки з керуванням праворуч (стрілки, посилання) не чіпаємо: там
   ліва колонка вужча навмисно, щоб керування не притискалось. */
.section-head:has(.rail-arrows) > p,
.section-head:has(> .text-link) > p,
.section-head.compact-head > p {
  max-width: 100%;
}
