/**
 * Google Reviews Banner Styles
 */

/* CSS Custom Properties - All sizes scale from base */
:root {
    /* Master controls */
    --lde-reviews-scale: 1;
    --lde-reviews-base: calc(1rem * var(--lde-reviews-scale));

    /* Behavior */
    --lde-reviews-hide-threshold: 1.5;  /* Viewport heights scrolled before hiding (fallback) */

    /* Colors */
    --lde-reviews-bg: #f5f5f5;
    --lde-reviews-text-primary: var(--e-global-color-text);
    --lde-reviews-text-secondary: #262B39;
    --lde-reviews-link: #4DC3B5;
    --lde-reviews-link-hover: #30c5b4;
    --lde-reviews-shadow: rgba(0, 0, 0, 0.15);
    --lde-reviews-shadow-hover: rgba(0, 0, 0, 0.2);

    /* Compact state dimensions */
    --lde-reviews-compact-size: calc(var(--lde-reviews-base) * 7.5);      /* 120px */
    --lde-reviews-compact-padding: calc(var(--lde-reviews-base) * 1.25);  /* 20px */
    --lde-reviews-compact-gap: calc(var(--lde-reviews-base) * 0.75);      /* 12px */

    /* Expanded state dimensions */
    --lde-reviews-expanded-padding-v: calc(var(--lde-reviews-base) * 1.25); /* 20px */
    --lde-reviews-expanded-padding-h: calc(var(--lde-reviews-base) * 1.5);  /* 24px */
    --lde-reviews-expanded-gap: calc(var(--lde-reviews-base) * 1);          /* 16px */
    --lde-reviews-content-gap: calc(var(--lde-reviews-base) * 0.5);         /* 8px */

    /* Element sizes */
    --lde-reviews-logo-size: calc(var(--lde-reviews-base) * 3);           /* 48px */
    --lde-reviews-star-compact: calc(var(--lde-reviews-base) * 0.875);    /* 14px */
    --lde-reviews-star-expanded: calc(var(--lde-reviews-base) * 1);       /* 16px */
    --lde-reviews-star-gap: calc(var(--lde-reviews-base) * 0.125);        /* 2px */

    /* Font sizes */
    --lde-reviews-heading: calc(var(--lde-reviews-base) * 0.875);         /* 14px */
    --lde-reviews-rating-large: calc(var(--lde-reviews-base) * 1.25);     /* 20px */
    --lde-reviews-rating-text: var(--lde-reviews-base);                   /* 16px */
    --lde-reviews-count-text: calc(var(--lde-reviews-base) * 0.8);        /* 13px → 12.8px */
    --lde-reviews-link-text: calc(var(--lde-reviews-base) * 0.8);         /* 13px → 12.8px */

    /* Border radius */
    --lde-reviews-border-radius-compact: calc(var(--lde-reviews-base) * 6); /* 100px → 96px */
    --lde-reviews-border-radius-expanded: calc(var(--lde-reviews-base) * 1.5); /* 24px */

    /* Fixed positioning offsets (not scaled) */
    --lde-reviews-offset: 1.5rem;  /* 24px - fixed distance from edges */
}

/* Banner Container - Fixed bottom-right, starts off-screen */
.lde-google-reviews-banner {
    position: fixed;
    bottom: var(--lde-reviews-offset);
    right: calc(var(--lde-reviews-offset) * -12.5); /* Start off-screen (approx -300px) */
    z-index: 9999;
    opacity: 0;
    transition: right 0.6s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Visible state - slides in from right */
.lde-google-reviews-banner.is-visible {
    right: var(--lde-reviews-offset);
    opacity: 1;
}

/* Inner wrapper with background and shadow */
.lde-google-reviews-banner-inner {
    background: var(--lde-reviews-bg);
    border-radius: var(--lde-reviews-border-radius-compact);
    box-shadow: 0 4px 20px var(--lde-reviews-shadow);
    cursor: pointer;
    transition: border-radius 0.3s ease;
}

/* Hover effect on compact state */
.lde-google-reviews-banner[data-state="compact"] .lde-google-reviews-banner-inner:hover {
    box-shadow: 0 6px 24px var(--lde-reviews-shadow-hover);
}

/* Expanded state border-radius */
.lde-google-reviews-banner[data-state="expanded"] .lde-google-reviews-banner-inner {
    border-radius: var(--lde-reviews-border-radius-expanded);
}

/* Compact State Layout */
.lde-google-reviews-banner-compact {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--lde-reviews-compact-padding);
    gap: var(--lde-reviews-compact-gap);
    width: var(--lde-reviews-compact-size);
    height: var(--lde-reviews-compact-size);
}

.lde-google-reviews-banner[data-state="expanded"] .lde-google-reviews-banner-compact {
    display: none;
}

/* Expanded State Layout */
.lde-google-reviews-banner-expanded {
    display: none;
    padding: var(--lde-reviews-expanded-padding-v) var(--lde-reviews-expanded-padding-h);
    gap: var(--lde-reviews-expanded-gap);
}

.lde-google-reviews-banner[data-state="expanded"] .lde-google-reviews-banner-expanded {
    display: flex;
    align-items: center;
}

/* Google Logo */
.lde-google-reviews-banner-logo {
    width: var(--lde-reviews-logo-size);
    height: var(--lde-reviews-logo-size);
}

.lde-google-reviews-banner-logo.expanded {
    flex-shrink: 0;
}

/* Stars Container */
.lde-google-reviews-banner-stars {
    display: flex;
    gap: var(--lde-reviews-star-gap);
    align-items: center;
}

.lde-google-reviews-banner-star {
    width: var(--lde-reviews-star-expanded);
    height: var(--lde-reviews-star-expanded);
}

.lde-google-reviews-banner-stars.compact .lde-google-reviews-banner-star {
    width: var(--lde-reviews-star-compact);
    height: var(--lde-reviews-star-compact);
}

/* Rating Number - Compact */
.lde-google-reviews-banner-rating.compact {
    font-size: var(--lde-reviews-rating-large);
    font-weight: 700;
    color: var(--lde-reviews-text-primary);
}

/* Expanded Content */
.lde-google-reviews-banner-content {
    display: flex;
    flex-direction: column;
    gap: var(--lde-reviews-content-gap);
}

.lde-google-reviews-banner-heading {
    font-size: var(--lde-reviews-heading);
    font-weight: 400;
    color: var(--lde-reviews-text-secondary);
    line-height: 1;
}

.lde-google-reviews-banner-rating-row {
    display: flex;
    align-items: center;
    gap: var(--lde-reviews-content-gap);
}

.lde-google-reviews-banner-rating-text {
    font-size: var(--lde-reviews-rating-text);
    color: var(--lde-reviews-text-primary);
    line-height: 1;
}

.lde-google-reviews-banner-rating-text strong {
    font-weight: 700;
}

.lde-google-reviews-banner-reviews-count {
    font-size: var(--lde-reviews-count-text);
    color: var(--lde-reviews-text-secondary);
    line-height: 1;
}

.lde-google-reviews-banner-reviews-count strong {
    font-weight: 600;
    color: var(--lde-reviews-text-primary);
}

/* Link - Specific selector to override Elementor */
.lde-google-reviews-banner .lde-google-reviews-banner-link {
    font-size: var(--lde-reviews-link-text);
    color: var(--e-global-color-primary, var(--lde-reviews-link, #4DC3B5FF));
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s ease;
    margin-top: calc(var(--lde-reviews-base) * 0.25);
}

.lde-google-reviews-banner .lde-google-reviews-banner-link:hover {
    color: var(--lde-reviews-link-hover);
    text-decoration: underline;
}

/* Mobile Adjustments */
@media (max-width: 768px) {
    :root {
        --lde-reviews-scale: 0.85;
    }

    .lde-google-reviews-banner.is-visible {
        bottom: calc(var(--lde-reviews-offset) * 0.667); /* 10px at 1.5rem = 24px */
    }
}

@media (max-width: 480px) {
    :root {
        --lde-reviews-scale: 0.75;
    }
}