/* ================================================================
   NGP Google Reviews Carousel — reviews.css v5.2
   ================================================================ */

.ngp-reviews-carousel { width:100%; position:relative; }

/* ── Loading ── */
.ngp-reviews-loading { display:flex; align-items:center; justify-content:center; gap:14px; padding:60px 20px; color:#888; font-size:14px; }
.ngp-spinner { width:24px; height:24px; border:3px solid #e0e0e0; border-top-color:#1a73e8; border-radius:50%; animation:ngp-spin .7s linear infinite; }
@keyframes ngp-spin { to { transform:rotate(360deg); } }
.ngp-reviews-error { background:#fff3f3; border:1px solid #fcc; border-radius:10px; padding:20px 24px; color:#c00; font-size:14px; }

/* ── Track & Slides ──
   Key fix: track-wrap has overflow:hidden for horizontal clip,
   but height is managed by JS (syncHeight) so expanded cards aren't clipped vertically.
   overflow is temporarily set to visible during read-more expansion. ── */
.ngp-reviews-track-wrap {
    overflow: hidden;
    width: 100%;
    transition: height .35s ease;
    padding: 8px 4px;      /* let card box-shadows breathe — no visual gap */
    margin: -8px -4px;     /* compensate so outer width stays correct */
    box-sizing: content-box;
}
.ngp-reviews-track {
    display: flex;
    transition: transform .45s cubic-bezier(.25,.1,.25,1);
    will-change: transform;
    align-items: flex-start; /* slides align top, can grow independently */
}
.ngp-reviews-slide {
    flex: 0 0 auto;
    box-sizing: border-box;
    display: flex;
}

/* ── Card ── */
.ngp-review-card {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 2px 16px rgba(0,0,0,.06);
    padding: 28px;
    display: flex;
    flex-direction: column;
    width: 100%;
    box-sizing: border-box;
    transition: box-shadow .25s, transform .25s;
    /* NO overflow:hidden — card must be able to expand for Read More */
}
.ngp-review-card:hover { box-shadow:0 6px 32px rgba(0,0,0,.10); transform:translateY(-2px); }

/* ── Avatar ── */
.ngp-reviewer-avatar { width:42px; height:42px; border-radius:50%; background:linear-gradient(135deg,#1a73e8,#0d47a1); color:#fff; font-size:18px; font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-bottom:12px; }
.ngp-reviewer-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }

/* ── Name ── */
.ngp-reviewer-name { font-size:18px; font-weight:700; color:#1a1a1a; margin:0 0 8px; line-height:1.3; }

/* ── Stars ── */
.ngp-stars { display:flex; align-items:center; gap:2px; margin-bottom:6px; }
.ngp-star       { font-size:18px; color:#f4b400; line-height:1; }
.ngp-star.empty { color:#ddd; }

/* ── Meta ── */
.ngp-reviewer-meta { font-size:13px; color:#777; margin-bottom:16px; }
.ngp-reviewer-meta .ngp-location { display:block; }
.ngp-reviewer-meta .ngp-date     { display:block; margin-top:1px; }

/* ── Review text ── */
.ngp-review-text { font-size:15px; color:#333; line-height:1.65; margin:0; }

/* ── Height modes ── */

/* Mode: scrollable */
.ngp-review-text-wrap.ngp-mode-scrollable { overflow:hidden; }

/* Mode: full — no restrictions */
.ngp-review-text-wrap.ngp-mode-full { overflow:visible; }

/* Mode: word_limit — preview shown, full hidden */
.ngp-review-text-wrap.ngp-mode-word_limit .ngp-text-preview { display:block; margin:0; }
.ngp-review-text-wrap.ngp-mode-word_limit .ngp-text-full    { display:none;  margin:0; }

/* Expanded state: full shown, preview hidden */
.ngp-review-card.ngp-card-expanded .ngp-text-preview { display:none; }
.ngp-review-card.ngp-card-expanded .ngp-text-full    { display:block; }

/* ── READ MORE BUTTON ──
   Pure text link — NO background, NO border, NO width stretching.
   WP admin resets are specifically overridden here. ── */
.ngp-read-more-btn {
    all: unset;                /* nuke all inherited/WP styles */
    display: inline-block !important;
    background: none !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
    padding: 0 !important;
    margin: 10px 0 0 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    color: #1a73e8 !important;
    cursor: pointer !important;
    text-transform: uppercase !important;
    letter-spacing: .5px !important;
    text-decoration: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}
.ngp-read-more-btn:hover {
    color: #1557b0 !important;
    text-decoration: underline !important;
    background: none !important;
}

/* ── Spacer + footer ── */
.ngp-card-spacer { flex:1; min-height:12px; }
.ngp-card-footer { margin-top:20px; padding-top:16px; border-top:1px solid #f0f0f0; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ngp-google-logo svg { width:60px; height:auto; display:block; }
.ngp-official-label { font-size:13px; color:#999; display:block; }

/* ── Dots ── */
.ngp-reviews-dots { display:flex; justify-content:center; gap:8px; margin-top:24px; }
.ngp-dot { width:8px; height:8px; border-radius:50%; background:#ddd; cursor:pointer; transition:background .25s, transform .25s; border:none; padding:0; }
.ngp-dot.active { background:#1a73e8; transform:scale(1.35); }

/* ── Arrows ── */
.ngp-reviews-arrows { display:flex; justify-content:center; gap:12px; margin-top:20px; }
.ngp-arrow-btn { width:40px; height:40px; border-radius:50%; background:#fff; border:1px solid #e0e0e0; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all .2s; color:#333; }
.ngp-arrow-btn:hover { background:#1a73e8; border-color:#1a73e8; color:#fff; }
.ngp-arrow-btn svg { width:18px; height:18px; }

/* ── Responsive ── */
@media (max-width:900px) { .ngp-review-card { padding:20px; } }
@media (max-width:600px) { .ngp-reviewer-name { font-size:16px; } .ngp-review-text { font-size:14px; } }
