/* Review data stays with the provider; these styles belong to Lex's design. */
.lex-reviews { color: var(--ink, #142f27); }
.lex-review-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 3.5vw, 64px); }
.lex-review { margin: 0; padding: 32px 0 0; border-top: 1px solid #b4c3a8; min-width: 0; }
.lex-review-source { display: flex; align-items: center; gap: 16px; color: #52634e; font-size: 12px; }
.lex-review-stars { color: #087e49; letter-spacing: .11em; font-size: 18px; white-space: nowrap; }
.lex-review blockquote { margin: 22px 0 28px; padding: 0; border: 0; }
.lex-review blockquote p { font-family: "Outfit", Arial, sans-serif; font-size: clamp(22px, 1.9vw, 31px); line-height: 1.4; letter-spacing: -.02em; margin: 0; color: #142f27; }
.lex-review figcaption { display: flex; align-items: center; gap: 12px; font-size: 13px; color: #52634e; }
.lex-review figcaption strong, .lex-review time { display: block; }
.lex-review figcaption strong { color: #142f27; font-size: 14px; }
.lex-review time { margin-top: 3px; }
.lex-review-avatar { overflow: hidden; display: grid; place-items: center; width: 40px; height: 40px; flex: 0 0 40px; border: 1px solid #b4c3a8; border-radius: 50%; background: #dce6cc; color: #355a40; font-size: 15px; }
.lex-review-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.lex-review figcaption a { margin-left: auto; text-underline-offset: 4px; font-size: 12px; color: #31513b; }
.lex-review-rating-only { margin: 24px 0; font-family: "Outfit", sans-serif; font-size: 24px; }
.lex-review-section { background: #e7ecdd; padding-block: clamp(40px, 4.5vw, 72px); }
.lex-reviews--compact { display: grid; gap: 30px; }
.lex-reviews--compact .lex-reviews-intro { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 32px; align-items: end; }
.lex-reviews-intro .eyebrow { margin: 0 0 12px; }
.lex-reviews-intro h2 { font-family: "Outfit", Arial, sans-serif; font-size: clamp(30px, 3vw, 44px); line-height: 1.1; letter-spacing: -.035em; margin: 0; }
.lex-reviews-intro h2 br { display: none; }
.lex-reviews--compact .lex-reviews-intro .eyebrow,
.lex-reviews--compact .lex-reviews-intro h2 { grid-column: 1; }
.lex-reviews--compact .lex-reviews-intro > a { grid-column: 2; grid-row: 1 / 3; align-self: end; padding-bottom: 5px; }
.lex-reviews-intro > a { font-size: 13px; text-underline-offset: 5px; }
.lex-reviews--compact .lex-review blockquote { margin-block: 18px 22px; }
.lex-reviews--compact .lex-review blockquote p { font-size: clamp(22px, 1.6vw, 25px); }
@media (max-width: 900px) {
    .lex-review-grid { grid-template-columns: 1fr; }
    .lex-review figcaption { flex-wrap: wrap; }
}
@media (max-width: 620px) {
    .lex-reviews--compact { gap: 24px; }
    .lex-reviews--compact .lex-reviews-intro { display: block; }
    .lex-reviews-intro h2 { font-size: 32px; }
    .lex-reviews--compact .lex-reviews-intro > a { display: inline-block; margin-top: 16px; padding-bottom: 0; }
    .lex-review figcaption a { margin-left: 52px; flex-basis: 100%; }
    .lex-review-section { padding-block: 38px; }
}

/* User-controlled carousel. The scroll track remains usable without JavaScript. */
.lex-review-carousel { min-width: 0; }
.lex-reviews .lex-review-grid {
    display: grid;
    grid-template-columns: none;
    grid-auto-flow: column;
    --lex-review-visible: min(3, var(--lex-review-count, 3));
    grid-auto-columns: calc((100% - (var(--lex-review-visible) - 1) * 32px) / var(--lex-review-visible));
    gap: 32px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
    scrollbar-color: #9aae88 transparent;
}
.lex-reviews .lex-review { display: flex; flex-direction: column; scroll-snap-align: start; padding: 26px 0 12px; }
.lex-reviews--home .lex-review { min-height: 290px; }
.lex-reviews--home .lex-review blockquote p { font-size: clamp(22px, 1.5vw, 26px); }
.lex-reviews .lex-review figcaption { margin-top: auto; }
.lex-review-controls { display: flex; justify-content: space-between; align-items: center; gap: 20px; border-top: 1px solid #b4c3a8; padding-top: 20px; margin-top: 26px; }
.lex-review-controls[hidden] { display: none; }
.lex-review-position { font-size: 13px; letter-spacing: .06em; color: #52634e; font-variant-numeric: tabular-nums; }
.lex-review-arrows { display: flex; gap: 8px; }
.lex-review-arrows button { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid #768d70; border-radius: 50%; background: transparent; color: #142f27; font-size: 24px; line-height: 1; cursor: pointer; transition: background .15s, color .15s; }
.lex-review-arrows button:hover:not(:disabled) { color: #fff; background: #142f27; }
.lex-review-arrows button:disabled { opacity: .3; cursor: default; }
.lex-review-arrows button:focus-visible, .lex-review-grid:focus-visible { outline: 2px solid #087e49; outline-offset: 4px; }
.lex-reviews--compact .lex-review { min-height: 260px; }
.lex-reviews--compact .lex-review figcaption { display: grid; grid-template-columns: 40px minmax(0, 1fr); }
.lex-reviews--compact .lex-review figcaption a { grid-column: 2; margin-left: 0; }
.lex-reviews--compact .lex-review-controls { margin-top: 18px; padding-top: 14px; }
@media (min-width: 901px) {
    .lex-reviews--home .lex-review figcaption { display: grid; grid-template-columns: 40px minmax(0,1fr); }
    .lex-reviews--home .lex-review figcaption a { grid-column: 2; margin-left: 0; }
}
@media (max-width: 1100px) and (min-width: 621px) {
    .lex-reviews .lex-review-grid { --lex-review-visible: min(2, var(--lex-review-count, 2)); }
}
@media (max-width: 620px) {
    .lex-reviews .lex-review-grid { grid-template-columns: none; grid-auto-columns: 100%; gap: 24px; }
    .lex-reviews--compact .lex-review { min-height: 280px; }
    .lex-reviews--home .lex-review { min-height: 360px; }
    .lex-review-controls { margin-top: 16px; padding-top: 16px; }
}
@media (prefers-reduced-motion: reduce) { .lex-review-arrows button { transition: none; } }

/* The whole Google profile score accompanies the customer review carousel. */
.reviews-source .lex-google-rating { margin-top: 19px; }
.lex-google-rating-score { display: flex; flex-wrap: wrap; align-items: center; gap: 15px; }
.lex-google-rating-value { font-family: var(--display); font-size: 41px; font-weight: 450; line-height: 1; letter-spacing: -.04em; color: var(--ink); white-space: nowrap; }
.lex-google-rating-value > span { font-size: 18px; font-weight: 400; letter-spacing: -.01em; color: #52634e; }
.lex-google-rating-stars { position: relative; display: inline-block; color: #b1c0a1; font-size: 20px; letter-spacing: .05em; line-height: 1.4; white-space: nowrap; }
.lex-google-rating-stars > span { position: absolute; inset: 0 auto 0 0; width: var(--rating-fill); overflow: hidden; color: #087e49; }
.lex-google-rating-count { margin-top: 10px; font-size: 13px; line-height: 1.7; color: #52634e; }
.reviews-source:has(.lex-google-rating) .line-link { margin-top: 22px; }
@media (max-width: 500px) {
    .reviews-source .lex-google-rating { margin-top: 13px; }
    .lex-google-rating-value { font-size: 37px; }
    .lex-google-rating-stars { font-size: 19px; }
    .lex-google-rating-count { font-size: 13px; }
    .reviews-source:has(.lex-google-rating) .line-link { margin-top: 17px; }
}


/* The public Places response can contain fewer cards than the saved collection. */
.lex-reviews[data-review-count="1"] .lex-review-grid { --lex-review-count: 1; }
.lex-reviews[data-review-count="2"] .lex-review-grid { --lex-review-count: 2; }
.lex-reviews[data-review-count="1"] .lex-review { min-height: 0; }
.lex-reviews[data-review-count="1"] .lex-review blockquote { max-width: 72ch; }
.lex-review-attribution { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; margin: 18px 0 0; color: #52634e; font-size: 12px; line-height: 1.6; }
.lex-review-attribution > a + span::before { content: "·"; margin-right: 16px; }
.lex-review-attribution a { color: inherit; text-underline-offset: 3px; }
.lex-review-attribution img { width: auto; max-width: 140px; max-height: 24px; }

/* Load near the viewport without storing Google content in the browser. */
.lex-live-reviews, .lex-live-rating { min-width: 0; }
.lex-live-skeleton { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; min-height: 170px; padding-block: 26px; border-top: 1px solid #b4c3a8; }
.lex-live-skeleton > span { display: block; height: 112px; background: linear-gradient(to bottom, #b4c3a833 0 12px, transparent 12px 22px, #b4c3a833 22px 34px, transparent 34px 44px, #b4c3a833 44px 56px, transparent 56px 90px, #b4c3a833 90px 102px, transparent 102px); }
.lex-live-rating .lex-live-skeleton { display: block; min-height: 94px; margin-top: 19px; padding-block: 0; border: 0; }
.lex-live-rating .lex-live-skeleton > span { display: none; }
.lex-live-rating .lex-live-skeleton > span:first-child { display: block; width: min(80%, 180px); height: 60px; background: linear-gradient(to bottom, #b4c3a833 0 32px, transparent 32px 48px, #b4c3a833 48px 60px); }
.lex-live-fallback { margin: 0; padding-block: 22px; color: #52634e; font-size: 14px; line-height: 1.7; }
.lex-live-fallback[hidden] { display: none; }
.lex-live-fallback a { color: #31513b; text-underline-offset: 5px; }
.lex-live-reviews.is-error { border-top: 1px solid #b4c3a8; }
.lex-live-rating .lex-live-fallback { padding-block: 12px; font-size: 13px; }
.lex-reviews .lex-review figcaption strong > a { margin: 0; grid-column: auto; flex-basis: auto; font: inherit; color: inherit; text-decoration: none; }
.lex-reviews .lex-review figcaption strong > a:hover,
.lex-reviews .lex-review figcaption strong > a:focus-visible { text-decoration: underline; }
.lex-review-empty { margin: 0; max-width: 70ch; padding-block: 22px; font-size: 16px; line-height: 1.7; }
.lex-review-empty a { color: #31513b; text-underline-offset: 5px; }
@media (max-width: 1100px) and (min-width: 621px) {
    .lex-live-reviews .lex-live-skeleton { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .lex-live-reviews .lex-live-skeleton > span:last-child { display: none; }
}
@media (max-width: 620px) {
    .lex-live-skeleton { grid-template-columns: 1fr; min-height: 150px; }
    .lex-live-reviews .lex-live-skeleton > span:not(:first-child) { display: none; }
    .lex-review-attribution { margin-top: 14px; font-size: 11px; }
}
