body[data-theme]{--text-heading:#302D33;--text-body:#646068;--text-accent:#9B1B5E;--text-muted:#5E5B60;--text-navigation:#343138;--text-price:#302D33;--text-link:#8B1F56;}
body[data-theme]{--frame-radius:8px;--image-radius:10px}
/* 2.8.6: Die tatsächlichen Startseiten-Kacheln müssen eingeschlossen sein.
   Der Kartenrahmen schneidet ein überstehendes Motiv an den Ecken sauber ab. */
body[data-theme] :is(.showcase-card,.gift-card,.portal-card,.card,.hero-visual,.hero-visual-video .hero-video-shell,.institute-image,.editorial-visual,.form-panel,.hero-tag){
  border-radius:var(--frame-radius);
  overflow:hidden;
}
/* Getrennte Pixel-Rundung der Medien: Bilder, Videos und Gutscheinmotive. */
body[data-theme] :is(.showcase-media,.card-photo,.gift-image,.voucher-image,.portal-card .video-media){
  border-radius:var(--image-radius);
  overflow:hidden;
}
body[data-theme] :is(.showcase-media img,.card-photo img,.gift-image img,.voucher-image img,.portal-card .video-media>img,.portal-card .video-media iframe,.portal-card>img,.institute-image img,.editorial-visual img,.hero-visual img,.hero-photo,.hero-upload,.hero-inline-video,.hero-visual-video .hero-poster,.hero-visual-video .hero-loop-poster){
  border-radius:var(--image-radius);
}
/* Die beiden großen Abbildungen bekommen die separat einstellbare Bildrundung. */
body[data-theme] :is(.hero-visual,.institute-image,.editorial-visual) {border-radius:var(--image-radius)}
/* V2.6: Textfarben unabhängig von den Markenfarben. Farbige Flächen, Buttons und weiße Texte bleiben erhalten. */
body[data-theme] {color:var(--text-body)}
body[data-theme] :is(.hero-copy h1,.section-head h2,.editorial-copy h2,.treatments-left h2,.portal-head h2,.contact-info h2,.portal-card h3,.card h3,.service-row h3,.price-content>b,.contact .form-panel h3,.hero-tag b,.brand-name) {color:var(--text-heading)}
body[data-theme] :is(.hero-copy h1,.section-head h2,.editorial-copy h2,.treatments-left h2,.portal-head h2,.contact-info h2) em {color:var(--text-accent)}
body[data-theme] :is(.smallcap,.news-date,.card .smallcap,.brand-sub,.editorial-copy .signature,.price-group-heading) {color:var(--text-accent)}
body[data-theme] :is(.hero-copy .lead,.section-head .lead,.editorial-copy p,.treatments-left .lead,.portal-head p,.portal-card p,.card-body p,.contact-info>.lead,.price-explanation,.price-option,.price-line p,.form-panel>p,.service-row p) {color:var(--text-body)}
body[data-theme] :is(.services-note,.price-pdf-hint,.info-line p,.form-panel .mini-notice,.hero-tag small,.portal-card .news-date,.card-body .smallcap + h3 + p) {color:var(--text-muted)}
body[data-theme] :is(.value,.info-line strong) {color:var(--text-body)}
body[data-theme] .header .nav a {color:var(--text-navigation)}
body[data-theme] :is(.link-line,.map-link,.info-line a,.footer-columns a:not(.brand)) {color:var(--text-link)}
body[data-theme] :is(.price-amount,.price-option strong,.coupon-value) {color:var(--text-price)}
body[data-theme] :is(.btn:not(.outline),.quote-band,.footer,.topline,.whatsapp-contact) {color:#fff}
body[data-theme] .quote-band h2,body[data-theme] .quote-band .smallcap,body[data-theme] .footer :is(p,h3,h4,a:not(.brand),.brand-name,.brand-sub) {color:#fff}
body[data-theme] .footer .brand-name em {color:#fff}

/* v2.6.1 – Footer benutzt immer kontrastreiche helle Schrift, unabhängig von
   frei einstellbaren globalen Textfarben. Die Hintergrundfarbe bleibt unverändert. */
body[data-theme] .footer .brand,
body[data-theme] .footer .brand-name,
body[data-theme] .footer .brand-name em,
body[data-theme] .footer .brand-sub,
body[data-theme] .footer :is(.intro,h4,p,a:not(.brand)) {
  color:#fffaf2;
}
body[data-theme] .footer .footer-bottom :is(span,a) {color:#f7f5ec;}
body[data-theme] .footer .brand {display:flex; flex-direction:column; align-items:flex-start;}
body[data-theme] .footer .social-links a {color:#fffaf2;}
body[data-theme] main h2{font-size:clamp(26px,4.1vw,28px)!important}
/* v2.8.7: Alle tatsächlich benutzten Startseiten-Bereiche reagieren auf Schriftfarben. */
body[data-theme] main :is(.hero-panel h1,.home-showcase-head h2,.showcase-body h3,.gift-card h3,.institute-copy h2,.portal-head h2,.portal-card h3,.contact-info h2,.form-panel h3){color:var(--text-heading)!important}
body[data-theme] main :is(.hero-panel p,.home-showcase-head p,.showcase-body p,.gift-card p,.institute-copy p,.portal-head p,.portal-card p,.contact-info p,.form-panel p){color:var(--text-body)!important}
body[data-theme] main :is(.smallcap,.news-date){color:var(--text-accent)!important}
body[data-theme] main .portal-card p.coupon-value{color:var(--text-price)!important}
body[data-theme] main :is(.mini-link,.catalog-link){color:var(--text-link)!important}
/* Individuelle Einleitungsgrößen gelten weiterhin je Einleitung. */
/* Die Rundung betrifft auch die innere Gutscheinkarte, ohne Medien zu verzerren. */
body[data-theme] main :is(.showcase-card,.gift-card,.portal-card){border-radius:var(--frame-radius)!important;overflow:hidden}
body[data-theme] main :is(.showcase-media,.gift-image,.voucher-image){border-radius:var(--image-radius)!important;overflow:hidden}
