/* ==========================================================================
   POLY Cleaning — utility bar above the site header
   Transparent and borderless: it reads as the top row of the header itself
   rather than a separate band. Everything is aligned to the right edge,
   ending on the Google review badge.
   ========================================================================== */

.poly-topbar {
    position: relative;
    z-index: 901;
    background: transparent;
    border: 0;
    color: #5A6382;
    font-family: "DM Sans", system-ui, -apple-system, sans-serif;
    font-size: .8125rem;
    line-height: 1.4;
}

.poly-topbar__inner {
    display: flex;
    align-items: center;
    /* Nothing on the left: the whole row hangs off the right edge. */
    justify-content: flex-end;
    gap: clamp(14px, 2.4vw, 30px);
    width: 100%;
    max-width: 1290px;
    min-height: 38px;
    margin-inline: auto;
    padding-block: 6px;
    padding-inline: clamp(20px, 5.2vw, 72px);
}

.poly-topbar .poly-icon {
    width: 16px;
    height: 16px;
    flex: none;
}

/* ------------------------------------------------------------------ usps */

.poly-topbar__usps,
.poly-topbar__contact {
    display: flex;
    align-items: center;
    gap: clamp(12px, 2vw, 24px);
    margin: 0;
    padding: 0;
    list-style: none;
}

.poly-topbar__usp,
.poly-topbar__contact-item {
    display: flex;
    align-items: center;
    gap: .4rem;
}

.poly-topbar__contact-item > a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: inherit;
    text-decoration: none;
    transition: color .28s ease;
}

.poly-topbar__contact-item > a:hover,
.poly-topbar__contact-item > a:focus-visible { color: #10173A; }

.poly-topbar__icon { color: #39439B; }

/* --------------------------------------------------------------- reviews */

/* Sits last in the row, where the phone number used to be. */
.poly-topbar__reviews {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    flex: none;
    color: inherit;
    text-decoration: none;
    transition: color .28s ease;
}

a.poly-topbar__reviews:hover,
a.poly-topbar__reviews:focus-visible { color: #10173A; }

.poly-topbar .poly-icon--google { width: 15px; height: 15px; }

.poly-topbar__stars {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.poly-topbar__stars-base,
.poly-topbar__stars-fill > span {
    display: flex;
    align-items: center;
    gap: 1px;
    width: max-content;
}

/* Clipped to the exact score, so 4,8 never reads as a full five. */
.poly-topbar__stars-fill {
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    display: flex;
    align-items: center;
    overflow: hidden;
}

/* Scoped to beat the generic `.poly-topbar .poly-icon` sizing above. */
.poly-topbar .poly-topbar__star {
    width: 14px;
    height: 14px;
    color: #D3DAEA;
}

.poly-topbar .poly-topbar__star.is-filled { color: #FBBC05; }

.poly-topbar__rating {
    font-weight: 700;
    color: #10173A;
    letter-spacing: -.01em;
}

.poly-topbar__review-count { color: #6A7391; }

/* ------------------------------------------------------------- responsive */

/* The e-mail address is repeated in the footer, so it goes before the USPs. */
@media (max-width: 900px) {
    .poly-topbar__contact { display: none; }
}

@media (max-width: 780px) {
    .poly-topbar__usp:nth-child(n + 3) { display: none; }
}

/* On phones the review badge drops as well. That empties the bar, so the
   whole strip goes rather than leaving a blank band above the logo. */
@media (max-width: 620px) {
    .poly-topbar { display: none; }
}
