Files
GDPR-Content-Blocker/gdpr-content-blocker/assets/frontend.css
s4luorth 2ef1d0769b feat: Werbe-Badge im content blocker (unten rechts) + abschaltbar nur mit unlimited (v1.5.0)
- Kleines Badge "GDPR Content Blocker" unten rechts im platzhalter, verlinkt
  auf die kaufseite (rel=nofollow sponsored). Server- und client-seitig.
- Wird IMMER angezeigt; abschaltbar via checkbox im Darstellung-tab
  ("Werbe-Badge ausblenden") - die checkbox ist aber nur mit aktiver
  Unlimited-lizenz nutzbar (sonst disabled) und greift am render-punkt nur,
  wenn is_unlimited() true ist.
- Dafuer speichert das plugin jetzt max_activations aus der backend-antwort
  (activate/validate/swap) und bietet is_unlimited().

+ i18n DE/EN (134 strings). version 1.5.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 14:08:08 +02:00

231 lines
5.4 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Content Blocker – frontend.css
* Design: minimalist black/white with accent #2043B7
* Colors come from CSS custom properties set inline by PHP.
*
* Note on specificity: every visible rule is scoped under `.cb-blocker`
* (specificity 0,2,0) so theme button/link styles (typically 0,1,1) cannot
* override the plugin. Your Custom-CSS is injected AFTER this file, so it can
* still override everything — use the same `.cb-blocker …` prefix to be safe.
*/
:root {
--cb-text: #ffffff;
--cb-bg: #111111;
--cb-btn-bg: #2043B7;
--cb-btn-text: #ffffff;
--cb-btn-hover-bg: #1a369a;
--cb-btn-hover-text: #ffffff;
}
/* ── Wrapper / placeholder ── */
.cb-blocker {
position: relative; /* anchor for the bottom-right badge */
display: flex;
align-items: flex-start; /* pin content to the top */
justify-content: center;
width: 100%;
background-color: var(--cb-bg);
color: var(--cb-text);
box-sizing: border-box;
padding: 24px 8px 22px; /* min 20px top/bottom, 8px sides */
font-family: inherit;
border-radius: 4px;
/* No reserved height: the placeholder is exactly as tall as its content. */
}
/* ── Promo badge (bottom-right) ── */
.cb-blocker .cb-blocker__badge {
position: absolute;
right: 8px;
bottom: 5px;
font-size: 0.6875rem;
line-height: 1;
color: var(--cb-text);
opacity: 0.55;
text-decoration: none;
white-space: nowrap;
}
.cb-blocker .cb-blocker__badge:hover {
opacity: 1;
text-decoration: underline;
}
/* ── Inner content ── */
.cb-blocker .cb-blocker__inner {
width: 100%;
max-width: 520px;
text-align: center;
}
/* ── Text elements ── */
.cb-blocker .cb-blocker__text,
.cb-blocker .cb-blocker__recipient,
.cb-blocker .cb-blocker__purpose {
margin: 0 0 0.65em;
font-size: 0.875rem;
line-height: 1.6;
color: var(--cb-text);
}
.cb-blocker .cb-blocker__text {
font-size: 0.9375rem;
}
.cb-blocker .cb-blocker__third-country {
display: block; /* own line, no separator needed */
margin-top: 0.25em;
font-size: 0.875rem; /* same as the rest of the text */
color: var(--cb-text); /* same colour as the rest of the text */
}
/* ── Privacy link ── */
.cb-blocker .cb-blocker__privacy-link {
display: inline-block;
margin-bottom: 0.75em;
font-size: 0.8125rem;
line-height: 1.5;
color: var(--cb-btn-bg);
text-decoration: underline;
text-underline-offset: 3px;
transform: none; /* neutralise theme hover scaling */
}
.cb-blocker .cb-blocker__privacy-link:hover,
.cb-blocker .cb-blocker__privacy-link:focus {
color: var(--cb-btn-hover-bg);
transform: none; /* link must not grow on hover */
font-size: 0.8125rem;
}
/* ── Button ── */
.cb-blocker .cb-blocker__button {
display: inline-block;
margin-top: 1em;
padding: 0.6em 1.4em;
background-color: var(--cb-btn-bg);
color: var(--cb-btn-text);
border: none; /* never a border/frame */
outline: none;
box-shadow: none;
transform: none; /* no size change, even with theme hover styles */
border-radius: 3px;
font-size: 0.9375rem;
font-weight: 600;
cursor: pointer;
transition: background-color 0.18s ease, color 0.18s ease;
letter-spacing: 0.01em;
}
/* Hover: only the colour changes — no frame, no resize. */
.cb-blocker .cb-blocker__button:hover {
background-color: var(--cb-btn-hover-bg);
color: var(--cb-btn-hover-text);
border: none;
outline: none;
box-shadow: none;
transform: none;
}
/* Keyboard focus keeps a subtle, accessible ring (not shown on mouse hover). */
.cb-blocker .cb-blocker__button:focus-visible {
outline: 2px solid var(--cb-btn-hover-bg);
outline-offset: 2px;
}
/* "Remember this service" checkbox under the button */
.cb-blocker .cb-blocker__remember {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 0.8em;
font-size: 0.8rem;
opacity: 0.85;
cursor: pointer;
}
.cb-blocker .cb-blocker__remember input {
margin: 0;
cursor: pointer;
}
/* ── Revoke button ── */
.cb-revoke-btn {
display: inline-block;
padding: 0.5em 1.2em;
background-color: #111111;
color: #ffffff;
border: 2px solid #111111;
border-radius: 3px;
font-size: 0.875rem;
font-weight: 600;
cursor: pointer;
transition: background-color 0.18s ease, color 0.18s ease;
}
.cb-revoke-btn:hover,
.cb-revoke-btn:focus-visible {
background-color: #ffffff;
color: #111111;
}
/* ── Revoke as a visible text link (default) ── */
.cb-revoke-link {
display: inline-block;
color: var(--cb-btn-bg);
font-weight: 600;
text-decoration: underline;
text-underline-offset: 3px;
cursor: pointer;
}
.cb-revoke-link:hover,
.cb-revoke-link:focus-visible {
color: var(--cb-btn-hover-bg);
text-decoration: underline;
}
.cb-revoke-note {
display: block;
margin-top: 6px;
font-size: 0.8125rem;
opacity: 0.8;
}
/* ── Services overview (for the privacy policy) ── */
.cb-services-list {
list-style: none;
margin: 1em 0;
padding: 0;
}
.cb-services-list .cb-service-entry {
margin: 0 0 1.1em;
padding: 0 0 1.1em;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.cb-services-list .cb-service-entry:last-child {
border-bottom: none;
}
.cb-services-list .cb-service-entry__name {
font-weight: 700;
font-size: 1.02em;
}
.cb-services-list .cb-service-entry dl {
margin: 0.4em 0 0;
display: grid;
grid-template-columns: max-content 1fr;
gap: 2px 14px;
}
.cb-services-list .cb-service-entry dt {
font-weight: 600;
}
.cb-services-list .cb-service-entry dd {
margin: 0;
}