/*
 * Opranic 2027: ratings (Lipscore, Trusted Shops). Loaded on every page after base.css.
 */

/* Safety net: no Lipscore element on German pages, even if one slips through. */
html[lang^="de"] [class*="lipscore"] { display: none !important; }

/* Top strip: Trustbadge containers and the buyer protection seal with two lines (German only). */
.o27-topbar__trust { display: inline-flex; align-items: center; gap: 12px; }
#trustbadgeCustomContainer:empty,
#trustbadgeCustomMobileContainer:empty { display: none; }
.o27-topbar__ks { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: #fff; text-decoration: none; white-space: nowrap; }
.o27-topbar__ks img { display: block; width: 34px; height: 34px; max-width: none; }
/* The Trustbadge script already shows the seal in the strip: the still image only stands in while that container is empty. */
.o27-topbar__trust:has(#trustbadgeCustomContainer:not(:empty), #trustbadgeCustomMobileContainer:not(:empty)) .o27-topbar__ks img { display: none; }
.o27-topbar__ks-txt { display: block; }
.o27-topbar__ks-l1 { display: block; font-size: 0.5625rem; line-height: 1.3; letter-spacing: 0.02em; text-transform: uppercase; color: #fff; }
.o27-topbar__ks-l2 { display: block; font-size: 0.8125rem; line-height: 1.3; letter-spacing: 0; color: var(--o27-orange); }
.o27-topbar__ks:hover .o27-topbar__ks-l2, .o27-topbar__ks:focus-visible .o27-topbar__ks-l2 { text-decoration: underline; }

/* Footer column. The Lipscore column stays hidden until the plugin script has filled the badge. */
.o27-ratings { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.o27-ratings__seal { display: inline-flex; line-height: 0; }
.o27-ratings__seal img { width: 56px; height: 56px; max-width: none; }
.o27-footer__col--rating:has(.o27-ratings--ls):not(:has(.lipscore-service-review-badge-small-short > *)) { display: none; }

/* Buy box slots that stay empty when no service prints into them (staging, or German pages for Lipscore). */
.oprbb-stars:empty,
.oprbb-rpanel.is-2 > .oprbb-card:empty { display: none; }
/* With nothing to show under "this product", its sub tab goes too and the marketplace reviews stand alone. */
.oprbb-rtabs:has(> .oprbb-rpanel.is-2 > .oprbb-card:empty:only-child) > label[for="oprbb-rt2"] { display: none; }

/* German product page: Trusted Shops stars under the title and the review list in the reviews tab. */
.o27-ts-starext { display: block; min-height: 20px; cursor: pointer; }
.o27-ts-reviewlist { display: block; }

/* Stars on product cards. */
.o27-ratings__stars { display: block; min-height: 20px; margin-top: 4px; }
.o27-ratings__stars:empty { display: none; }

/* [opr_kaeuferschutz] block. */
.o27-ks { display: flex; align-items: center; gap: 12px; margin-block: 14px; padding: 10px 14px; border: 1px solid var(--o27-border); border-radius: 16px; background: #fff; color: var(--o27-text); font-size: 0.875rem; line-height: 1.4; text-align: left; }
.o27-ks .o27-ratings__seal { flex: 0 0 auto; }
.o27-ks .o27-ratings__seal img { width: 40px; height: 40px; }
.o27-ks--home .o27-ratings__seal img { width: 48px; height: 48px; }
.o27-ks__text { display: block; min-width: 0; }
.o27-ks__title { display: block; color: var(--o27-heading); font-weight: 700; }
.o27-ks__sub { display: block; font-size: 0.8125rem; color: var(--o27-muted); }
.o27-ks--product { max-width: 520px; }
.o27-ks--cart .o27-ks__title, .o27-ks--cart .o27-ks__sub { display: inline; }
.o27-ks--home { justify-content: center; border-width: 0 0 1px; border-radius: 0; margin: 0; padding: 14px 20px; }
@media (max-width: 480px) { .o27-ks { font-size: 0.8125rem; padding: 9px 12px; } .o27-ks--home { justify-content: flex-start; } }

/* Opranic Reviews: the model name on a review card is small orange text on a near-white card (2.3:1). The darker
   line-label tone reads at 5.4:1 (0.9.33). */
.oprrev-card-top .oprrev-model { color: var(--o27-linelabel); }
