/* ==========================================================================
   IllumiWeb - GBP Reviews
   Polished header + carousel/list/grid/badge, read-more, dark mode, mobile.
   ========================================================================== */

.iwc-reviews {
    --iwc-rev-bg:        #ffffff;
    --iwc-rev-border:    #e6e8eb;
    --iwc-rev-text:      #3c4043;
    --iwc-rev-muted:     #80868b;
    --iwc-rev-name:      #202124;
    --iwc-rev-star:      #fbbc04;
    --iwc-rev-star-off:  #dadce0;
    --iwc-rev-accent:    #4361EE;
    --iwc-rev-reply-bg:  #f8f9fa;
    --iwc-rev-shadow:    0 1px 3px rgba(60,64,67,.12), 0 1px 2px rgba(60,64,67,.18);
    font-family: inherit;
    color: var(--iwc-rev-text);
    width: 100%;
    max-width: 1200px;
    min-width: 0;            /* allow shrinking inside the builder's flex column */
    margin: 0 auto;
    box-sizing: border-box;
    overflow: hidden;        /* clip any horizontal bleed from the carousel */
}
.iwc-reviews *, .iwc-reviews *::before, .iwc-reviews *::after { box-sizing: border-box; }

.iwc-reviews--dark {
    --iwc-rev-bg:       #1f2430;
    --iwc-rev-border:   #2f3645;
    --iwc-rev-text:     #d5d9e0;
    --iwc-rev-muted:    #8b93a3;
    --iwc-rev-name:     #f5f7fa;
    --iwc-rev-star-off: #3a4252;
    --iwc-rev-reply-bg: #161b24;
    --iwc-rev-shadow:   0 1px 3px rgba(0,0,0,.4);
}

/* On a colored Builder band (brand / dark), the header strip above the cards
   sits on the colored background, so its text must go light. But the cards
   themselves stay white, so their text must stay DARK. We therefore flip the
   tokens only on the header, and explicitly re-assert dark colors inside the
   cards (the Builder band also whitens descendant <p>/text, so we override that
   here with the card's own palette). Works for Core- or Builder-placed reviews. */
.iw-row--dark .iwc-reviews__header,
.iw-row--brand .iwc-reviews__header {
    --iwc-rev-text:   #ffffff;
    --iwc-rev-muted:  rgba(255,255,255,.82);
    --iwc-rev-name:   #ffffff;
    --iwc-rev-border: rgba(255,255,255,.28);
}
.iw-row--dark .iwc-reviews__header .iwc-reviews__bizname,
.iw-row--brand .iwc-reviews__header .iwc-reviews__bizname,
.iw-row--dark .iwc-reviews__header .iwc-reviews__count,
.iw-row--brand .iwc-reviews__header .iwc-reviews__count,
.iw-row--dark .iwc-reviews__header .iwc-reviews__powered,
.iw-row--brand .iwc-reviews__header .iwc-reviews__powered {
    color: #ffffff;
}
.iw-row--dark .iwc-reviews__header .iwc-reviews__count,
.iw-row--brand .iwc-reviews__header .iwc-reviews__count,
.iw-row--dark .iwc-reviews__header .iwc-reviews__powered,
.iw-row--brand .iwc-reviews__header .iwc-reviews__powered {
    opacity: .85;
}
.iw-row--dark .iwc-reviews__avg,
.iw-row--brand .iwc-reviews__avg {
    color: #ffd54a;   /* warmer gold reads better than orange on blue */
}

/* Cards stay white -> force their text back to the dark palette, beating the
   Builder band's descendant-whitening rule. */
.iw-row--dark .iwc-review-card,
.iw-row--brand .iwc-review-card {
    --iwc-rev-text: #3c4043;
    --iwc-rev-muted: #80868b;
    --iwc-rev-name: #202124;
}
.iw-row--dark .iwc-review-card .iwc-review-card__name,
.iw-row--brand .iwc-review-card .iwc-review-card__name,
.iw-row--dark .iwc-review-card .iwc-review-card__reply-label,
.iw-row--brand .iwc-review-card .iwc-review-card__reply-label { color: #202124; }
.iw-row--dark .iwc-review-card .iwc-review-card__text,
.iw-row--brand .iwc-review-card .iwc-review-card__text,
.iw-row--dark .iwc-review-card .iwc-review-card__text-inner,
.iw-row--brand .iwc-review-card .iwc-review-card__text-inner { color: #3c4043; }
.iw-row--dark .iwc-review-card .iwc-review-card__date,
.iw-row--brand .iwc-review-card .iwc-review-card__date,
.iw-row--dark .iwc-review-card .iwc-review-card__reply-text,
.iw-row--brand .iwc-review-card .iwc-review-card__reply-text { color: #80868b; }

/* ---------- Header (refined bar) ---------- */
.iwc-reviews__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
    padding: 4px 2px 16px;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--iwc-rev-border);
}
.iwc-reviews__headleft { display: flex; align-items: center; gap: 14px; min-width: 0; }
.iwc-reviews__logo img {
    width: 52px; height: 52px;
    object-fit: contain;
    border-radius: 10px;
    display: block;
}
.iwc-reviews__headmeta { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.iwc-reviews__bizname { font-size: 17px; font-weight: 700; color: var(--iwc-rev-name); line-height: 1.25; }
.iwc-reviews__bizname a { color: inherit; text-decoration: none; }
.iwc-reviews__bizname a:hover { text-decoration: underline; }
.iwc-reviews__rating { display: flex; align-items: center; gap: 7px; }
.iwc-reviews__avg { font-size: 18px; font-weight: 700; color: #e7711b; }
.iwc-reviews__stars { font-size: 16px; line-height: 1; white-space: nowrap; }
.iwc-reviews__count { font-size: 13px; color: var(--iwc-rev-muted); }
.iwc-reviews__powered { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--iwc-rev-muted); margin-top: 1px; }
.iwc-reviews__powered svg { display: block; }
.iwc-reviews__links { display: flex; gap: 8px; flex-wrap: wrap; flex-shrink: 0; }
.iwc-reviews__btn {
    display: inline-block;
    font-size: 13px; font-weight: 600;
    padding: 8px 16px;
    border-radius: 999px;
    text-decoration: none;
    white-space: nowrap;
    color: var(--iwc-rev-accent);
    border: 1px solid var(--iwc-rev-border);
    background: var(--iwc-rev-bg);
    transition: all .15s ease;
}
.iwc-reviews__btn:hover { border-color: var(--iwc-rev-accent); }
.iwc-reviews__btn--primary { color: #fff; background: var(--iwc-rev-accent); border-color: var(--iwc-rev-accent); }
.iwc-reviews__btn--primary:hover { filter: brightness(1.06); }

/* ---------- Card ---------- */
.iwc-review-card {
    background: var(--iwc-rev-bg);
    border: 1px solid var(--iwc-rev-border);
    border-radius: 14px;
    padding: 18px;
    box-shadow: var(--iwc-rev-shadow);
    display: flex;
    flex-direction: column;
    gap: 10px;
    height: 100%;
    width: 100%;
}
.iwc-review-card__top { display: flex; align-items: center; gap: 12px; }
.iwc-review-card__avatar {
    width: 44px; height: 44px; border-radius: 50%;
    object-fit: cover; flex-shrink: 0;
}
.iwc-review-card__avatar--placeholder {
    display: flex; align-items: center; justify-content: center;
    background: var(--iwc-rev-accent); color: #fff;
    font-weight: 700; font-size: 18px;
}
.iwc-review-card__meta { flex: 1; min-width: 0; }
.iwc-review-card__name { font-weight: 600; color: var(--iwc-rev-name); font-size: 15px; line-height: 1.2; }
.iwc-review-card__date { font-size: 12px; color: var(--iwc-rev-muted); margin-top: 2px; }
.iwc-review-card__gicon { flex-shrink: 0; opacity: .9; }
.iwc-review-card__stars { font-size: 16px; line-height: 1; }

.iwc-review-card__text { font-size: 14px; line-height: 1.6; color: var(--iwc-rev-text); }
.iwc-review-card__text.is-clamped .iwc-review-card__text-inner {
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.iwc-review-card__more {
    display: inline-block;
    margin-top: 4px;
    padding: 0;
    background: none; border: none;
    color: var(--iwc-rev-accent);
    font-size: 13px; font-weight: 600;
    cursor: pointer;
}
.iwc-review-card__more:hover { text-decoration: underline; }

.iwc-review-card__reply {
    background: var(--iwc-rev-reply-bg);
    border-radius: 10px;
    padding: 10px 12px;
    margin-top: 2px;
}
.iwc-review-card__reply-label { font-size: 12px; font-weight: 700; color: var(--iwc-rev-name); margin-bottom: 3px; }
.iwc-review-card__reply-text { font-size: 13px; line-height: 1.5; color: var(--iwc-rev-muted); }

/* ---------- Stars ---------- */
.iwc-star { color: var(--iwc-rev-star-off); }
.iwc-star--full { color: var(--iwc-rev-star); }
.iwc-star--half { position: relative; color: var(--iwc-rev-star-off); }
.iwc-star--half::before {
    content: '\2605';
    position: absolute; left: 0; top: 0;
    width: 50%; overflow: hidden; color: var(--iwc-rev-star);
}

/* ---------- List ---------- */
.iwc-reviews--list .iwc-reviews__list { display: flex; flex-direction: column; gap: 14px; }

/* ---------- Grid ---------- */
.iwc-reviews--grid .iwc-reviews__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 16px;
    align-items: stretch;
}

/* ---------- Carousel (Swiper - minimal, proven) ----------
   Do NOT set width/flex-basis/min-width/max-width/overflow on .swiper,
   .swiper-wrapper, or .swiper-slide. Swiper owns all of that via inline
   styles; any rule here fights it and breaks the row. Only padding (for arrow
   room) on .swiper and height:auto+flex on the slide (for equal-height cards). */
.iwc-reviews--slider .swiper {
    width: 100%;
    max-width: 100%;
    min-width: 0;           /* critical: lets Swiper measure correctly inside a flex column */
    padding: 0 48px;        /* gutter for the arrows, outside the cards */
    box-sizing: border-box;
    overflow: hidden;       /* contain slides within the column */
}
.iwc-reviews--slider .swiper-slide {
    height: auto;
    display: flex;          /* equal-height cards */
}

/* Arrows: transparent chevrons sitting in the outer gutter, beside the cards. */
.iwc-reviews--slider .swiper-button-prev,
.iwc-reviews--slider .swiper-button-next {
    color: var(--iwc-rev-accent);
    background: transparent;
    border: none;
    box-shadow: none;
    width: 32px;
    margin-top: 0;
    transform: translateY(-50%);
    top: 50%;
}
.iwc-reviews--slider .swiper-button-prev { left: 2px; }
.iwc-reviews--slider .swiper-button-next { right: 2px; }
.iwc-reviews--slider .swiper-button-prev::after,
.iwc-reviews--slider .swiper-button-next::after { font-size: 26px; font-weight: 700; }
.iwc-reviews--slider .swiper-pagination-bullet-active { background: var(--iwc-rev-accent); }


/* ---------- Badge ---------- */
.iwc-reviews--badge { max-width: 360px; }
.iwc-reviews-badge {
    position: relative;
    display: flex; align-items: center; gap: 14px;
    background: var(--iwc-rev-bg);
    border: 1px solid var(--iwc-rev-border);
    border-radius: 14px;
    padding: 14px 18px;
    box-shadow: var(--iwc-rev-shadow);
}
.iwc-reviews-badge__logo { width: 48px; height: 48px; object-fit: contain; border-radius: 10px; }
.iwc-reviews-badge__content { display: flex; flex-direction: column; gap: 2px; }
.iwc-reviews-badge__name { font-weight: 700; color: var(--iwc-rev-name); font-size: 15px; }
.iwc-reviews-badge__rating { display: flex; align-items: center; gap: 6px; }
.iwc-reviews-badge__avg { font-size: 20px; font-weight: 700; color: #e7711b; }
.iwc-reviews-badge__stars { font-size: 15px; }
.iwc-reviews-badge__count { font-size: 12px; color: var(--iwc-rev-muted); }
.iwc-reviews-badge__link { position: absolute; inset: 0; }

/* ---------- Mobile ---------- */
@media (max-width: 768px) {
    .iwc-reviews__header { gap: 12px; padding: 4px 2px 14px; }
    .iwc-reviews__links { width: 100%; }
    .iwc-reviews__btn { flex: 1; text-align: center; }
    .iwc-reviews__logo img { width: 48px; height: 48px; }
    .iwc-reviews__bizname { font-size: 16px; }
    .iwc-reviews--slider .swiper { padding: 0 20px; }
    .iwc-reviews--slider .swiper-button-prev::after,
    .iwc-reviews--slider .swiper-button-next::after { font-size: 20px; }
    .iwc-review-card { padding: 16px; }
}
