/* ============================================================
   ASSESI — KOMPONENTEN (validiert)
   Token-getrieben: Themes (.theme-assesi/.theme-label) liefern
   Akzent, Radius, Tiefe; die Komponenten färben sich automatisch.
   Setzt assets/css/tokens.css voraus.
   ============================================================ */

/* ---- Basis-Bindung (entfernen, falls Elementor Global Fonts greift) ---- */
body{font-family:var(--font-body);font-size:var(--fs-base);line-height:var(--lh-loose);
  color:var(--text-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--text-strong);
  letter-spacing:var(--ls-snug);line-height:var(--lh-snug)}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}

/* ---- Elementor-Widget-Defaults (an Token-System angeglichen) ----
   Setzt sinnvolle Marken-Größen für native Widgets. Pro Widget in
   Elementor weiterhin übersteuerbar (höhere Spezifität gewinnt). */
.elementor-widget-icon-box .elementor-icon-box-title{
  font-family:var(--font-display);font-weight:600;font-size:1rem;line-height:1.3;
  color:var(--text-strong);overflow-wrap:break-word;hyphens:auto}
.elementor-widget-icon-box .elementor-icon-box-description{
  font-size:.9rem;line-height:1.6;color:var(--text-soft)}
.elementor-accordion .elementor-tab-title{
  font-family:var(--font-display);font-weight:700;font-size:1.0625rem;color:var(--text-strong)}
.elementor-accordion .elementor-tab-content{
  font-size:.95rem;line-height:1.65;color:var(--text-soft)}

/* ---- Layout: Band / Section / Sektionskopf ---- */
.band{background:var(--surface-soft);border-top:1px solid var(--border)}
.section{max-width:1240px;margin:0 auto;padding:var(--section-y) var(--section-x)}
.sec-head{max-width:var(--kopfbreite);margin-bottom:clamp(1rem,2vw,1.4rem)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);
  font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--eyebrow);margin-bottom:1rem}
.eyebrow::before{content:'';width:22px;height:2px;background:var(--accent-2)}
.theme-label .eyebrow::before{content:'✓';width:auto;height:auto;background:none;color:var(--ci-lime);font-size:.9rem;font-weight:800}
.sec-title{font-family:var(--font-display);font-weight:800;overflow-wrap:break-word;letter-spacing:-.025em;line-height:1.1;
  font-size:clamp(1.875rem,1.4rem + 2vw,2.5rem);color:var(--text-strong)}
.sec-title em{font-style:normal;position:relative;z-index:0;color:var(--accent)}
.theme-label .sec-title em{color:var(--text-strong)}
.theme-label .sec-title em::after{content:'';position:absolute;left:0;right:0;bottom:.06em;height:.3em;background:var(--ci-lime);opacity:.4;z-index:-1;border-radius:3px}
.sec-lede{font-size:1.05rem;line-height:1.75;color:var(--text-soft);margin-top:1rem;
  max-width:var(--lesebreite)}

/* ---- Navigation (adaptiv über --nav-bg/--nav-fg) ---- */
.nav{position:sticky;top:0;z-index:50;background:var(--nav-bg);color:var(--nav-fg);
  border-bottom:1px solid color-mix(in srgb,var(--nav-fg) 16%,transparent)}
.nav__in{max-width:1240px;margin:0 auto;padding:0 var(--section-x);height:68px;
  display:flex;align-items:center;gap:28px}
.brand{display:flex;align-items:center;gap:11px;margin-right:auto}
.brand__mark{width:34px;height:34px;border-radius:7px;flex:none;
  background:linear-gradient(135deg,var(--ci-blue),var(--ci-navy));
  border:1px solid rgba(255,255,255,.25);display:grid;place-items:center;
  font-family:var(--font-display);font-weight:800;font-size:.95rem;color:#fff}
.brand__name{display:block;font-family:var(--font-display);font-weight:800;font-size:1.12rem;letter-spacing:.02em;line-height:1.05;color:var(--nav-fg)}
.brand__tag{display:block;font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--nav-fg) 60%,transparent);margin-top:4px}
.nav__links{display:flex;gap:24px}
.nav__links a{font-size:.9rem;font-weight:500;color:color-mix(in srgb,var(--nav-fg) 82%,transparent);transition:color var(--dur-base)}
.nav__links a:hover{color:var(--nav-fg)}
.nav__util{display:flex;align-items:center;gap:14px}
.lang{display:flex;gap:2px;font-size:.78rem;font-weight:600}
.lang a{padding:4px 7px;border-radius:6px;color:color-mix(in srgb,var(--nav-fg) 55%,transparent)}
.lang a[aria-current="true"]{color:var(--nav-bg);background:var(--nav-fg)}
.nav__cross{font-size:.78rem;font-weight:600;color:var(--accent);
  border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);padding:6px 13px;border-radius:100px;transition:background var(--dur-base)}
.nav__cross:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.nav__cta{background:var(--cta-bg);color:var(--cta-fg);font-weight:700;font-size:.82rem;
  padding:9px 18px;border-radius:var(--r-btn);transition:transform var(--dur-base) var(--ease-out)}
.nav__cta:hover{transform:translateY(-1px)}
/* Cross-Domain-CTA assesi.eu -> assesi-label.eu: bewusst Lime (nicht --accent),
   damit sie unabhängig vom Theme-Akzent immer auf das Siegel verweist. */
.nav__lime{background:var(--ci-lime);color:var(--ci-navy);font-weight:700;font-size:.82rem;
  padding:9px 18px;border-radius:var(--r-btn);transition:transform var(--dur-base) var(--ease-out)}
.nav__lime:hover{transform:translateY(-1px)}
.nav__burger{display:none;background:none;border:none;color:var(--nav-fg);font-size:1.4rem;cursor:pointer}
@media(max-width:920px){.nav__links,.nav__cross{display:none}.nav__burger{display:block}}

/* ---- Mobile-Menü ---- */
.nav__panel{display:none;position:fixed;top:68px;left:0;right:0;z-index:49;
  background:var(--nav-bg);border-top:1px solid color-mix(in srgb,var(--nav-fg) 16%,transparent);
  padding:.5rem var(--section-x) 1.5rem;flex-direction:column}
.nav__panel.is-open{display:flex}
.nav__panel a{color:color-mix(in srgb,var(--nav-fg) 90%,transparent);font-size:1.02rem;font-weight:500;
  padding:15px 0;border-bottom:1px solid color-mix(in srgb,var(--nav-fg) 16%,transparent)}
.nav__panel-cross{color:var(--accent)!important}
.nav__panel-lime{margin-top:1.2rem;text-align:center;border-bottom:none!important;
  background:var(--ci-lime);color:var(--ci-navy)!important}
.nav__panel-cta{margin-top:.6rem;text-align:center;border-bottom:none!important}
@media(min-width:921px){.nav__panel{display:none!important}}

/* ---- Buttons ---- */
.btn-row{display:flex;flex-wrap:wrap;gap:12px}
.btn{font-family:var(--font-body);font-weight:600;font-size:.92rem;line-height:1;
  padding:14px 26px;border-radius:var(--r-btn);cursor:pointer;border:1.5px solid transparent;
  transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),
  background var(--dur-base),border-color var(--dur-base)}
.btn--primary{background:var(--ci-navy);color:#fff}
.btn--primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(2,0,68,.24)}
.btn--cta{background:var(--cta-bg);color:var(--cta-fg);font-weight:700}
.btn--cta:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(2,0,68,.18)}
.btn--ghost{background:transparent;color:var(--ci-navy);border-color:var(--border-strong)}
.btn--ghost:hover{border-color:var(--ci-navy);background:rgba(2,0,68,.04)}
.btn--ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
.btn--ghost-dark:hover{border-color:#fff;background:rgba(255,255,255,.08)}

/* ---- Hero ---- */
.hero{max-width:1240px;margin:0 auto;padding:var(--section-y) var(--section-x);
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,5vw,5rem);align-items:center}
@media(max-width:880px){.hero{grid-template-columns:1fr;gap:2.5rem}}
.hero__eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);
  font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1.4rem}
.hero__eyebrow::before{content:'';width:22px;height:2px;background:var(--accent-2)}
.hero h1{font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;line-height:1.05;
  font-size:var(--fs-display);color:var(--text-strong);margin-bottom:1.3rem}
.hero h1 em{font-style:normal;position:relative;z-index:0;color:var(--accent)}
.theme-label .hero h1 em{color:var(--text-strong)}
.theme-label .hero h1 em::after{content:'';position:absolute;left:0;right:0;bottom:.08em;height:.32em;background:var(--ci-lime);opacity:.4;z-index:-1;border-radius:3px}
.hero__lede{font-size:1.12rem;line-height:1.75;color:var(--text-soft);max-width:48ch;margin-bottom:2.2rem}
.hero__trust{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding-top:1.6rem;border-top:1px solid var(--border)}
.trust__item{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:500;color:var(--text-soft)}
.trust__item::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--ci-lime);flex:none}

/* ---- Karte: Standard/Index (Hero) ---- */
.std-card{background:var(--surface-soft);border:1px solid var(--border);border-radius:16px;padding:2rem 1.9rem}
.std-card__label{font-family:var(--font-display);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1.3rem}
.std-row{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--border)}
.std-row:last-of-type{border-bottom:none}
.std-row__num{font-family:var(--font-display);font-weight:800;font-size:.95rem;color:var(--accent);font-variant-numeric:tabular-nums;flex:none;width:22px}
.std-row__t{display:block;font-family:var(--font-display);font-weight:700;font-size:.92rem;color:var(--text-strong);margin-bottom:3px}
.std-row__d{display:block;font-size:.82rem;color:var(--text-soft);line-height:1.5}
.std-card__foot{display:flex;align-items:center;gap:10px;margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid var(--border)}
.std-card__foot span{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);white-space:nowrap}
.supporter{background:#fff;border:1px solid var(--border);border-radius:7px;padding:5px 12px;font-size:.76rem;font-weight:600;color:var(--text-strong)}

/* ---- Karten-Raster (Vorteile) ---- */
.v-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
.v-card{background:#fff;border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:1.7rem 1.6rem;transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base),box-shadow var(--dur-base)}
.v-card:hover{transform:translateY(-3px)}
.v-card__icon{width:46px;height:46px;border-radius:11px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);margin-bottom:1.2rem}
.v-card__icon svg{width:23px;height:23px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}
.v-card__title{font-family:var(--font-display);font-weight:700;font-size:1.06rem;color:var(--text-strong);margin-bottom:.5rem}
.v-card__desc{font-size:.9rem;line-height:1.6;color:var(--text-soft)}

/* ---- Timeline → Accordion ---- */
.acc{border-top:1px solid var(--border);max-width:840px}
.acc__item{border-bottom:1px solid var(--border)}
.acc__head{width:100%;display:flex;align-items:center;gap:16px;text-align:left;background:none;border:none;cursor:pointer;padding:20px 4px;font-family:var(--font-body)}
.acc__dot{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:.82rem;font-variant-numeric:tabular-nums}
.acc__item.is-done   .acc__dot{background:var(--ci-lime);color:var(--ci-navy)}
.acc__item.is-active .acc__dot{background:var(--ci-gold);color:var(--ci-navy);box-shadow:0 0 0 5px rgba(245,197,3,.2)}
.acc__item.is-future .acc__dot{background:#fff;border:2px solid var(--border-strong);color:var(--text-faint)}
.acc__meta{flex:1;min-width:0}
.acc__date{display:block;font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin-bottom:2px}
.acc__title{display:block;font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--text-strong)}
.acc__chev{flex:none;color:var(--text-faint);font-size:.8rem;transition:transform var(--dur-base) var(--ease-out)}
.acc__head[aria-expanded="true"] .acc__chev{transform:rotate(180deg)}
.acc__panel{overflow:hidden;max-height:0;transition:max-height var(--dur-base) var(--ease-out)}
.acc__panel-inner{padding:0 4px 22px 68px;font-size:.92rem;color:var(--text-soft);line-height:1.65;max-width:60ch}

/* ---- CTA / Kosten-Band ---- */
.cta-band{background:var(--ci-navy);color:#fff}
.cta-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,5vw,4rem);align-items:center}
@media(max-width:880px){.cta-grid{grid-template-columns:1fr;gap:2.5rem}}
.cta-band .eyebrow{color:var(--ci-lime)}
.cta-band .eyebrow::before{background:var(--ci-gold)}
.cta-band .sec-title{color:#fff}
.cta-band .sec-title em{color:var(--ci-lime)}
.cta-lede{font-size:1.08rem;line-height:1.75;color:rgba(255,255,255,.78);margin:1rem 0 2rem;max-width:44ch}
.price-card{background:#fff;color:var(--text-body);border-radius:16px;padding:2rem 1.9rem;position:relative;overflow:hidden}
.price-card::before{content:'';position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--ci-blue),var(--ci-gold))}
.price-card__label{font-family:var(--font-display);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1.2rem}
.price-list{list-style:none;margin:0 0 1.4rem;padding:0}
.price-list li{display:flex;align-items:flex-start;gap:11px;padding:9px 0;font-size:.92rem}
.price-list svg{flex:none;width:19px;height:19px;stroke:var(--ci-lime);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;margin-top:2px}
.price-foot{border-top:1px solid var(--border);padding-top:1.2rem}
.price-foot__k{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin-bottom:5px}
.price-foot__v{font-family:var(--font-display);font-weight:700;font-size:1.02rem;color:var(--text-strong)}
.price-foot__v small{display:block;font-family:var(--font-body);font-weight:400;font-size:.78rem;color:var(--text-soft);margin-top:5px}

/* ---- Footer ---- */
.footer{background:var(--ci-navy);color:rgba(255,255,255,.75)}
.footer__in{max-width:1240px;margin:0 auto;padding:clamp(3rem,6vw,4.5rem) var(--section-x) 2.5rem;
  display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:2.5rem}
@media(max-width:820px){.footer__in{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.footer__in{grid-template-columns:1fr}}
.footer__brand .brand__name{color:#fff}
.footer__tag{font-size:.9rem;line-height:1.7;color:rgba(255,255,255,.6);margin-top:1rem;max-width:34ch}
.footer__cross{display:inline-flex;margin-top:1.3rem;font-size:.82rem;font-weight:600;color:var(--ci-lime);
  border:1px solid rgba(180,205,0,.4);padding:7px 15px;border-radius:100px;transition:background var(--dur-base)}
.footer__cross:hover{background:rgba(180,205,0,.14)}
.footer__col h4{font-family:var(--font-display);font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:1.1rem}
.footer__col a{display:block;font-size:.92rem;color:rgba(255,255,255,.8);padding:6px 0;transition:color var(--dur-base)}
.footer__col a:hover{color:#fff}
.footer__bar{border-top:1px solid var(--border-on-dark)}
.footer__bar-in{max-width:1240px;margin:0 auto;padding:1.5rem var(--section-x);display:flex;flex-wrap:wrap;
  gap:10px 22px;justify-content:space-between;align-items:center;font-size:.8rem;color:rgba(255,255,255,.55)}
.footer__bar-in a{color:rgba(255,255,255,.7)}
.footer__legal{display:flex;gap:18px}

/* ============================================================
   LABEL-MODULE (validiert an assesi-label.eu)
   Token-getrieben; primär für .theme-label, generisch nutzbar.
   ============================================================ */
.band-warm{background:var(--surface-soft)}

/* Siegel-Showcase (Hero-Signatur Label) */
.showcase{background:#fff;border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:2.4rem 2rem}
.seal{width:128px;height:128px;border-radius:50%;margin:0 auto 1.7rem;background:var(--ci-navy);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  box-shadow:0 0 0 4px #fff,0 0 0 7px var(--ci-lime),0 14px 30px rgba(2,0,68,.20)}
.seal svg{width:38px;height:38px;stroke:var(--ci-lime);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.seal span{font-family:var(--font-display);font-size:.58rem;font-weight:800;letter-spacing:.16em;color:#fff;text-transform:uppercase}
.showcase__product{text-align:center;margin-bottom:1.5rem}
.showcase__pname{font-family:var(--font-display);font-weight:800;font-size:1.08rem;color:var(--text-strong)}
.showcase__issuer{font-size:.8rem;color:var(--text-soft);margin-top:4px}
.showcase__issuer b{color:var(--accent-2);font-weight:600}
.crit{display:flex;flex-direction:column;gap:9px}
.crit-row{display:flex;align-items:center;gap:11px;padding:12px 15px;border-radius:13px;background:var(--surface-soft);font-size:.88rem;font-weight:500}
.crit-row svg{flex:none;width:18px;height:18px;stroke:var(--ci-lime);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* Zielgruppen-Split */
.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:760px){.split{grid-template-columns:1fr}}
.aud-card{background:#fff;border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:2rem 1.9rem}
.aud-card__icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--ci-navy);margin-bottom:1.3rem}
.aud-card__icon svg{width:24px;height:24px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}
.aud-card__k{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2);margin-bottom:.4rem}
.aud-card__t{font-family:var(--font-display);font-weight:800;font-size:1.22rem;color:var(--text-strong);margin-bottom:.7rem}
.aud-card__d{font-size:.95rem;line-height:1.65;color:var(--text-soft);margin-bottom:1.2rem}
.aud-list{list-style:none;display:flex;flex-direction:column;gap:9px}
.aud-list li{display:flex;gap:10px;align-items:flex-start;font-size:.9rem;color:var(--text-body)}
.aud-list svg{flex:none;width:17px;height:17px;stroke:var(--ci-lime);stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round;margin-top:3px}

/* Horizontaler Prozess-Stepper */
.proc{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:860px){.proc{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.proc{grid-template-columns:1fr}}
.proc-step{background:#fff;border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:1.7rem 1.5rem}
.proc-step__n{width:40px;height:40px;border-radius:50%;background:var(--ci-navy);color:#fff;display:grid;place-items:center;
  font-family:var(--font-display);font-weight:800;font-size:1rem;margin-bottom:1.1rem}
.proc-step.is-active .proc-step__n{background:var(--ci-lime);color:var(--ci-navy);box-shadow:0 0 0 5px rgba(180,205,0,.25)}
.proc-step__t{font-family:var(--font-display);font-weight:700;font-size:1.02rem;color:var(--text-strong);margin-bottom:.45rem}
.proc-step__d{font-size:.88rem;line-height:1.6;color:var(--text-soft)}

/* Warmes CTA-Band + Such-Mock */
.cta-warm{background:linear-gradient(180deg,#F6F9E9,#FCFDF8)}
.cta-warm .section{text-align:center}
.cta-warm .eyebrow{justify-content:center}
.cta-warm .sec-head{max-width:none;margin-bottom:2rem}
.cta-warm .sec-lede{margin-left:auto;margin-right:auto;max-width:52ch}
.search-mock{max-width:560px;margin:0 auto 1.2rem;display:flex;gap:10px;align-items:center;
  background:#fff;border:1px solid var(--border);border-radius:100px;padding:8px 8px 8px 22px;box-shadow:var(--card-shadow)}
.search-mock input{flex:1;border:none;background:none;font-family:var(--font-body);font-size:.95rem;color:var(--text-body);outline:none}
.search-mock button{background:var(--ci-lime);color:var(--ci-navy);font-weight:700;font-size:.88rem;border:none;border-radius:100px;padding:12px 22px;cursor:pointer}
.search-note{font-size:.82rem;color:var(--text-soft)}
.cta-warm .btn-row{justify-content:center;margin-top:1.8rem;margin-bottom:0}

/* ============================================================
   NATIVE ROUTE — Elementor-Container statt HTML-Markup
   Rein additiv: die HTML-Route oben bleibt unberührt, alle Regeln
   hier sind auf :is(.theme-label,.theme-assesi) gescopet.

   Zwei Eigenheiten von Elementor machen die Ergänzungen nötig:
   1. `_css_classes` landet auf `.elementor-element`, dem äußeren
      Widget-Wrapper — nicht auf dem <h3>/<p> darin. Die inneren Tags
      werden deshalb über Nachfahren-Selektoren angesprochen. Die
      Selektoren liegen bewusst eine Klasse höher als Elementors
      eigene (`.elementor-widget-heading .elementor-heading-title`),
      damit die Marke gewinnt, egal in welcher Reihenfolge die
      Stylesheets geladen werden.
   2. Ein Container mit content_width:"boxed" schiebt `.e-con-inner`
      zwischen sich und seine Kinder; ein Grid auf dem Container
      erreicht die Karten dann nicht. Layout-Container laufen darum
      mit content_width:"full".

   [DOM-PROBE] markiert Absicherungen für den Fall, dass Punkt 2 doch
   anders gerendert wird. Sie kosten nichts, wenn die Annahme stimmt,
   und können nach der Probe an der Live-Installation entfallen.
   ============================================================ */

/* ---- Prozess-Raster (Sektion 4) ---- */
/* Spaltenzahl als Variable, damit das Raster nicht doppelt gepflegt
   werden muss — sie vererbt sich bis in ein etwaiges .e-con-inner. */
:is(.theme-label,.theme-assesi) .proc{--proc-cols:repeat(4,1fr)}
@media(max-width:860px){:is(.theme-label,.theme-assesi) .proc{--proc-cols:1fr 1fr}}
@media(max-width:480px){:is(.theme-label,.theme-assesi) .proc{--proc-cols:1fr}}
/* Schlägt Elementors `.e-con{display:flex}` über die höhere Spezifität. */
:is(.theme-label,.theme-assesi) .proc{display:grid;grid-template-columns:var(--proc-cols);gap:18px}
/* [DOM-PROBE] Liegt doch ein .e-con-inner dazwischen, wandert das
   Raster eine Ebene tiefer. Ohne :has()-Unterstützung fällt die Regel
   weg und es bleibt beim Grid oben — die Annahme "full". */
:is(.theme-label,.theme-assesi) .proc:has(>.e-con-inner){display:block}
:is(.theme-label,.theme-assesi) .proc:has(>.e-con-inner)>.e-con-inner{display:grid;grid-template-columns:var(--proc-cols);gap:18px}

/* ---- Prozessschritt-Karte ---- */
/* position:relative trägt das Icon; gap:0, weil die Abstände über die
   Margins der einzelnen Teile laufen, nicht über den Container-Gap. */
:is(.theme-label,.theme-assesi) .proc-step{position:relative;gap:0}
/* [DOM-PROBE] Bei "boxed" trägt das .e-con-inner den Gap, nicht die Karte. */
:is(.theme-label,.theme-assesi) .proc-step>.e-con-inner{gap:0}
/* Elementor setzt zwischen Widgets einen Grundabstand — hier stört er.
   Der Neutralisierer liegt zwangsläufig hoch in der Spezifität und
   würde auch die gewollten Abstände der Basisregeln schlucken; die
   beiden Zeilen danach holen sie auf gleicher Ebene zurück. */
:is(.theme-label,.theme-assesi) .proc-step .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .proc-step .elementor-widget.proc-step__n{margin-block-end:1.1rem;width:40px;height:40px}
:is(.theme-label,.theme-assesi) .proc-step .elementor-widget.proc-step__t{margin-block-end:.45rem}

/* Ziffer: der Kreis ist der Widget-Wrapper, die Zahl steckt darin.
   Breite/Höhe stehen absichtlich in der hoch spezifischen Regel oben —
   Elementor gibt Widgets in Containern eine Breite (mindestens
   `.elementor-widget{width:100%}`, je nach Version auch als
   Kind-Selektor `.e-con>.elementor-widget`). Auf gleicher Stufe würde
   die spätere Datei gewinnen und aus dem Kreis eine Pille über die
   volle Kartenbreite machen. */
/* `color:#fff` steht hier und nicht nur im Grundzug weiter oben. Muss es
   auch: Die Grundzug-Regel `.proc-step__n{background:navy;color:#fff}` liegt
   bei (0,1,0), und der Widget-Grundwert
   `:is(.theme-label,.theme-assesi) [class*="elementor-widget-"]{color:var(--text-body)}`
   liegt bei (0,2,0) — er gewinnt und faerbte die Ziffer navy. Auf navyem
   Grund. Gemessen 1:1, also unsichtbar; auf der Startseite betraf das die
   vier Prozessschritte. Der Hintergrund kam durch, die Schriftfarbe nicht —
   deshalb faellt so etwas beim Draufsehen nicht auf, sondern nur beim
   Nachmessen.

   `.elementor-widget.proc-step__n` und nicht nur `.proc-step__n`: Beide
   laegen sonst bei (0,2,0), und dann entschiede die Reihenfolge in der
   Datei — der Widget-Grundwert steht weiter unten und gewaenne. Zwei
   Klassen heben die Regel auf (0,3,0). */
:is(.theme-label,.theme-assesi) .elementor-widget.proc-step__n{flex:none;
  font-variant-numeric:tabular-nums;color:#fff}
:is(.theme-label,.theme-assesi) .proc-step__n .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1rem;line-height:1;color:inherit;font-variant-numeric:tabular-nums;margin:0}

/* Titel. margin:0 überall, weil die Browser-Default-Margin der
   Überschrift sonst die Zentrierung bzw. den Abstand verschiebt —
   Elementor setzt sie zwar selbst zurück, verlassen wollen wir uns
   darauf nicht. */
:is(.theme-label,.theme-assesi) .proc-step__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1.02rem;line-height:1.35;color:var(--text-strong);margin:0}

/* Beschreibung: der Text-Editor liefert <p> im .elementor-widget-container. */
:is(.theme-label,.theme-assesi) .proc-step__d p{margin:0;font-size:.88rem;line-height:1.6;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .proc-step__d p+p{margin-top:.6rem}

/* Icon je Schritt. Der Modifier sitzt am Ziffern-WIDGET, nicht am
   Karten-Container: Klassen auf Containern überleben den Import in
   Elementor 4.2.1 nicht (siehe Block „Inhaltsbasierte Selektoren"),
   Klassen auf Widgets schon.
   Das ::before wird absolut positioniert und verlässt damit den
   Ziffernkreis; Bezug ist die Karte, weil sie position:relative trägt.
   Obere rechte Ecke, damit es die Ziffer nicht verdrängt. Die Farbe
   kommt über currentColor aus der Basisregel des Icon-Blocks. */
/* position:static hebt Elementors `position:relative` am Widget auf. Sonst
   waere der 40px-Kreis der Bezugspunkt und das Icon landete unter ihm statt
   in der Kartenecke — so geschehen im ersten Import-Durchgang. */
:is(.theme-label,.theme-assesi) .proc-step__n[class*="--ico-"]{position:static}
/* Auf Mitte des Ziffernfelds statt auf dessen Oberkante, und leiser.
   Vorher stand das Symbol als gleichwertiges Element rechts neben dem
   gefuellten Ziffernfeld — die Karte hatte zwei Blickfaenger. */
:is(.theme-label,.theme-assesi) .proc-step__n[class*="--ico-"]::before{position:absolute;top:2.3rem;right:1.5rem;
  width:22px;height:22px;color:var(--accent-ink);opacity:.7}

/* ---- Button-Reihe ---- */
/* Abstand und Umbruch kommen aus den nativen Flex-Settings des Containers
   (Muster aus elementor-15). Diese Regeln setzen dasselbe noch einmal als
   Absicherung: der Elementor-Grundabstand zwischen Widgets stört in einer
   Reihe, und ohne width:auto zieht Elementor die Buttons auf volle Breite. */
:is(.theme-label,.theme-assesi) .btn-row{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}
:is(.theme-label,.theme-assesi) .btn-row .elementor-widget{margin-block-end:0;width:auto}
/* [DOM-PROBE] Bei "boxed" liegt die Reihe eine Ebene tiefer — ohne das
   stapeln die Buttons untereinander. */
:is(.theme-label,.theme-assesi) .btn-row:has(>.e-con-inner){display:block}
:is(.theme-label,.theme-assesi) .btn-row:has(>.e-con-inner)>.e-con-inner{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}

/* ---- Sektionskopf in nativen Widgets ---- */
/* Elementors Kit-Regel setzt eine font-family auf .elementor-heading-title und
   schlaegt damit die Vererbung vom Wrapper. Jede gestylte Ueberschrift braucht
   die Familie deshalb ausdruecklich — sonst haengt sie am Elementor-Kit. */
:is(.theme-label,.theme-assesi) .eyebrow .elementor-heading-title{font-family:var(--font-display)}
/* .eyebrow braucht nichts: der Wrapper trägt inline-flex und den
   ✓-Marker, die Typografie kommt aus den Widget-Settings (Handoff §2).
   Titel und Lede dagegen müssen ihre Werte an das innere Tag
   weiterreichen, sonst gewinnt Elementors Kit-Typografie. */
:is(.theme-label,.theme-assesi) .sec-title .elementor-heading-title{font:inherit;color:inherit;letter-spacing:inherit;margin:0}
:is(.theme-label,.theme-assesi) .sec-lede p{margin:0;font:inherit;color:inherit}
:is(.theme-label,.theme-assesi) .sec-lede p+p{margin-top:.9rem}

/* ============================================================
   INHALTSBASIERTE SELEKTOREN — Container ohne eigene Klassen

   Befund aus dem Pilot-Import (Elementor 4.2.1, Juli 2026):
   `_css_classes` auf CONTAINERN überlebt den Weg
   JSON → Bibliotheks-Vorlage → Seite nicht. Im Export der Vorlage
   stehen die Werte noch (`section`, `sec-head`, `proc`, `proc-step`,
   `btn-row`), im gerenderten HTML fehlen sie vollständig. Von Hand im
   Editor eingetragene Klassen erscheinen dagegen — der Verlust liegt
   also am Einfüge-Weg, nicht am Schlüsselnamen.
   Auf WIDGETS funktionieren Klassen zuverlässig; alle sechs
   Widget-Klassen der Sektion kamen unverändert an.

   Konsequenz: die Container werden über ihren INHALT angesprochen
   statt über eine eigene Klasse. Die Karte ist „der Container, der
   eine .proc-step__n enthält". Das ist strukturell statt sprechend,
   dafür unabhängig davon, ob Container-Klassen ankommen.

   Diese Regeln sind additiv zu den klassenbasierten oben. Kommen die
   Container-Klassen doch an, setzen beide Wege dieselben Werte — kein
   Konflikt. Fallen sie weg, trägt dieser Block allein.

   Zwei Voraussetzungen, beide in der Zielinstallation geprüft:

   - :has() wird unterstützt. Fehlt es, fallen die Regeln weg, ohne
     etwas zu beschädigen — dann trägt der klassenbasierte Weg oben,
     soweit die Klassen ankommen.
   - Die Layout-Container laufen mit content_width:"full" und haben
     damit KEIN .e-con-inner. Die Probe an der Installation hat das
     bestätigt: von 17 Containern trugen nur die drei "boxed"-Container
     aus Kopf- und Fußzeile ein inneres Element.
     Die Selektoren unten nutzen deshalb den direkten Kind-Kombinator.
     Bekäme ein Layout-Container doch "boxed", griffen sie nicht mehr —
     der Generator setzt für diese Container aber immer "full".
   ============================================================ */

/* Prozessschritt-Karte = Container, der die Ziffer direkt enthält */
:is(.theme-label,.theme-assesi) .e-con:has(>.proc-step__n){position:relative;gap:0;
  background:#fff;border:var(--card-border);border-radius:var(--r-card);
  box-shadow:var(--card-shadow);padding:1.7rem 1.5rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.proc-step__n) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .e-con:has(>.proc-step__n) .elementor-widget.proc-step__n{margin-block-end:1.1rem;width:40px;height:40px}
:is(.theme-label,.theme-assesi) .e-con:has(>.proc-step__n) .elementor-widget.proc-step__t{margin-block-end:.45rem}

/* Prozess-Raster = Container, dessen Kinder solche Karten sind */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.proc-step__n){--proc-cols:repeat(4,1fr);
  display:grid;grid-template-columns:var(--proc-cols);gap:18px}
@media(max-width:860px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.proc-step__n){--proc-cols:1fr 1fr}}
@media(max-width:480px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.proc-step__n){--proc-cols:1fr}}

/* Button-Reihe = Container, dessen Kinder Button-Widgets sind */
/* Auch hier `.e-con-inner` mit aufgenommen: Die Reihe kommt im Kopfband und in
   der Fusszeile vor, und dort sind die Container boxed. Ohne das behielten die
   Widgets Elementors Grundabstand von 20px — im Konsultationsband war das eine
   um 9px zu hohe Zeile. */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.elementor-widget-button){display:flex;flex-direction:row;
  flex-wrap:wrap;align-items:center;gap:12px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.elementor-widget-button)>.elementor-widget{margin-block-end:0;width:auto}

/* Sektionskopf = Container, der den Eyebrow direkt enthält */
/* Der Abstand ist zweimal geschrumpft: 56px rissen ein Loch zwischen
   Ueberschrift und Inhalt, und auch 2.2rem lasen sich mit dem Container-Gap
   darunter noch als Bruch — Kundenbefund vom 07.08.2026 (Startseite,
   Vorspann → normative Grundlage bzw. → Versicherer-Kacheln). Der Rest
   des Abstands kommt aus dem Gap des Sektionsrahmens. */
/* `60ch` stand hier bis 0.33.0 und war zu breit: im Browser 679px, also rund
   95 Zeichen je Zeile statt der gemeinten 60. Siehe --kopfbreite in tokens.css. */
:is(.theme-label,.theme-assesi) .e-con:has(>.eyebrow){max-width:var(--kopfbreite);
  margin-bottom:clamp(1rem,2vw,1.4rem)}

/* Sektionsrahmen über die technische ID `sek-NN`. Inhaltsbasiert wäre er nicht
   eindeutig — der Hero trägt einen anderen Kicker als die übrigen Sektionen,
   und ein `:has(>.e-con>.eyebrow)` finge je nach Tiefe auch das umgebende
   Band. `_element_id` kommt beim Import nachweislich an. */
/* width:100% ist nicht redundant. Der Rahmen ist Flex-Kind eines Bandes;
   `margin-left/right:auto` schaltet dort das Strecken ab, und ohne eigene
   Breite schrumpft er auf seinen Inhalt. Sichtbar wird das erst bei schmalem
   Inhalt — im Browser gemessen, nicht vermutet. */
:is(.theme-label,.theme-assesi) [id^="sek-"]{width:100%;max-width:1240px;margin-left:auto;margin-right:auto;
  padding:var(--section-y) var(--section-x)}


/* ============================================================
   KOMPONENTEN DER STARTSEITE — inhaltsbasiert

   Alle Container werden ueber ihren INHALT angesprochen, nie ueber
   eine eigene Klasse: `_css_classes` auf Containern ueberlebt den
   Import in Elementor 4.2.1 nicht (siehe Block darueber).

   Vertrag: das ERSTE Widget einer Komponente traegt die Marker-Klasse.
   Der Container ist dann `.e-con:has(>.marker)`, das Raster
   `.e-con:has(>.e-con>.marker)`. Zustaende und Varianten sitzen als
   zweite Klasse am selben Widget — ebenfalls, weil Container sie
   verlieren wuerden.

   Zweispaltige Abschnitte: das erste Widget der linken Spalte traegt
   `split__a`. Damit ist die Reihe `.e-con:has(>.e-con>.split__a)`.
   ============================================================ */

/* ---- Zweispalter (Hero, Kosten, Aktuelles, Association) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.split__a),
:is(.theme-label,.theme-assesi) .e-con-inner:has(>.e-con>.e-con-inner>.split__a){display:grid;grid-template-columns:1.1fr .9fr;
  gap:clamp(2rem,5vw,4rem);align-items:start}
@media(max-width:900px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.split__a),
:is(.theme-label,.theme-assesi) .e-con-inner:has(>.e-con>.e-con-inner>.split__a){grid-template-columns:1fr;gap:2.5rem}}

/* ---- Karten-Grundform (alle Kartentypen teilen sie) ---- */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.trust-card__label),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.num-card__n),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.principle-card__n),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.v-card__title),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.blog-card__tag),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.actor-card__mark),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.compare-box__t),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.showcase__seal){position:relative;gap:0;background:#fff;
  border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:1.7rem 1.5rem}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.trust-card__label) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.num-card__n) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.principle-card__n) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.v-card__title) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.blog-card__tag) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.actor-card__mark) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.compare-box__t) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.showcase__seal) .elementor-widget:not(:last-child){margin-block-end:.55rem}
/* Dieselbe Neutralisierung fuer die Komponenten ohne Kartenflaeche. Ohne sie
   traegt Elementors Grundabstand zwischen Widgets (20px) die Abstaende, nicht
   unsere Margins — in der Timeline faellt das als lockere Zeile auf. */
:is(.theme-label,.theme-assesi) .e-con:has(>.tl-item__date) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox__label) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) .e-con:has(>.norm-box__label) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) .e-con:has(>.pilot-cta__t) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) .e-con:has(>.newsletter-cta__t) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) .e-con:has(>.assoc-visual__name) .elementor-widget:not(:last-child){margin-block-end:0}

/* ---- Sektion 1: Hero ---- */

/* Hintergrundbild. Es haengt an der ID des AEUSSEREN Bandes, nicht an einer
   Klasse: Container-Klassen ueberleben den Import nicht, `_element_id` schon
   (Pilot-Befund). Und es haengt am Band, nicht am Rahmen `[id="sek-01"]` —
   der ist auf 1240px begrenzt, das Bild soll randlos laufen.

   Warum nicht ueber Elementors `background_image` im Seiten-JSON: Der Key
   steht in allen Referenz-Exporten leer (`{url:"",id:"",size:""}`). Die Form
   ist damit belegt, ein gefuellter Fall nicht — und ob Elementor eine blosse
   URL ohne Media-ID ausspielt, waere geraten. Ueber CSS ist es belegbar,
   in der Werkstatt aenderbar und beim naechsten Import nicht in Gefahr.

   `isolation:isolate` haelt den Schleier im eigenen Stapel; ohne ihn legt
   sich `z-index:-1` der Lime-Unterstreichung in der H1 unter den Schleier
   und verschwindet. */
:is(.theme-label,.theme-assesi) [id="hero-bild"]{
  position:relative;isolation:isolate;
  background-color:var(--hero-grund);
  background-image:var(--hero-bild);
  background-size:cover;
  background-position:var(--hero-bildlage);
  background-repeat:no-repeat}

/* Der Schleier. Links deckend genug fuer navyfarbenen Text auf einem
   beliebigen Bildpunkt, rechts durchsichtig — dort steht nur die weisse
   Musterzertifikat-Karte, und die ist selbst undurchsichtig.

   Die Prozentwerte sind Anteile des BANDES, nicht der Textspalte: Das Band
   laeuft randlos, der Inhalt liegt mittig in 1240px. Auf 1920px Breite
   beginnt der Rahmen bei 18 % und die Textspalte endet bei 55 %; auf 2560px
   endet sie bei 54 %. Deckend bis 58 % traegt beide Faelle. */
:is(.theme-label,.theme-assesi) [id="hero-bild"]::before{
  content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(100deg,
    rgb(255 255 255 / calc(var(--hero-schleier) + .12)) 0%,
    rgb(255 255 255 / var(--hero-schleier))             58%,
    rgb(255 255 255 / calc(var(--hero-schleier) * .42)) 78%,
    rgb(255 255 255 / calc(var(--hero-schleier) * .26)) 100%)}
:is(.theme-label,.theme-assesi) [id="hero-bild"]>*{position:relative;z-index:1}

/* Unter 900px faellt der Zweispalter in eine Spalte (siehe split__a). Der
   Text steht dann ueber der GANZEN Breite, also auch ueber dem Teil, der
   oben durchsichtig sein darf. Der Schleier wird deshalb gleichmaessig —
   und zwar auf genau dem Wert, der nachgerechnet und im Browser gemessen
   ist. Ein hoeherer Wert bringt keine Sicherheit dazu, sondern loescht nur
   das Bild aus: Bei .86 war auf schmalen Breiten nichts mehr davon zu sehen. */
@media(max-width:900px){
  :is(.theme-label,.theme-assesi) [id="hero-bild"]::before{
    background:rgb(255 255 255 / var(--hero-schleier))}
  :is(.theme-label,.theme-assesi) [id="hero-bild"]{background-position:72% 46%}}

:is(.theme-label,.theme-assesi) .hero__eyebrow .elementor-heading-title{font:inherit;color:inherit;letter-spacing:inherit;margin:0}
:is(.theme-label,.theme-assesi) .hero__h1 .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  letter-spacing:-.03em;line-height:1.05;font-size:var(--fs-display);color:var(--text-strong);margin:0}
.theme-label .hero__h1 em{font-style:normal;position:relative;z-index:0;color:var(--text-strong)}
.theme-assesi .hero__h1 em{font-style:normal;color:var(--accent)}
.theme-label .hero__h1 em::after{content:'';position:absolute;left:0;right:0;bottom:.08em;height:.32em;
  background:var(--ci-lime);opacity:.4;z-index:-1;border-radius:3px}
:is(.theme-label,.theme-assesi) .hero__lede p{margin:0;font-size:1.12rem;line-height:1.75;color:var(--text-soft);max-width:48ch}

/* Trust-Karten: dreispaltige Reihe unter dem Hero-Text */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.trust-card__label),
:is(.theme-label,.theme-assesi) .e-con-inner:has(>.e-con>.e-con-inner>.trust-card__label){display:grid;grid-template-columns:repeat(3,1fr);
  gap:12px;margin-top:2.2rem}
@media(max-width:620px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.trust-card__label),
:is(.theme-label,.theme-assesi) .e-con-inner:has(>.e-con>.e-con-inner>.trust-card__label){grid-template-columns:1fr}}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.trust-card__label){padding:1rem 1.1rem;box-shadow:none;background:#fff}
:is(.theme-label,.theme-assesi) .trust-card__label[class*="--ico-"]{display:flex;align-items:center;gap:8px}
:is(.theme-label,.theme-assesi) .trust-card__label[class*="--ico-"]::before{width:18px;height:18px;color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .trust-card__label .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.86rem;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .trust-card__d p{margin:0;font-size:.76rem;line-height:1.5;color:var(--text-soft)}

/* Showcase (Musterzertifikat) */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.showcase__seal){padding:2.4rem 2rem;text-align:center}
/* Kopfzeile und Status tragen ihr Symbol neben dem Text, nicht darueber —
   der generische --ico-Grundzug rendert das ::before sonst als Block. */
:is(.theme-label,.theme-assesi) .showcase__kopf{display:flex;align-items:center;justify-content:center;gap:8px}
:is(.theme-label,.theme-assesi) .showcase__kopf::before{width:16px;height:16px;color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .showcase__kopf .elementor-heading-title{font-family:var(--font-body);
  font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-soft);margin:0}
:is(.theme-label,.theme-assesi) .showcase__status{display:flex;align-items:flex-start;gap:8px}
:is(.theme-label,.theme-assesi) .showcase__status::before{width:18px;height:18px;margin-top:1px;
  color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .showcase__seal .elementor-heading-title{font-family:var(--font-display);font-size:.58rem;
  font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#fff;margin:0}
/* Die feste Größe steht in der hoch spezifischen Regel: Elementor gibt Widgets
   in Containern eine Breite, und auf gleicher Stufe gewinnt die spätere Datei —
   aus dem Kreis würde sonst eine Ellipse. */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.showcase__seal)>.elementor-widget.showcase__seal{width:128px;height:128px;
  border-radius:50%;margin:0 auto 1.7rem;background:var(--ci-navy);display:grid;place-items:center;
  position:static;box-shadow:0 0 0 4px #fff,0 0 0 7px var(--cta-bg),0 14px 30px rgba(2,0,68,.20)}
:is(.theme-label,.theme-assesi) .showcase__pname .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.08rem;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .showcase__issuer p{margin:0;font-size:.8rem;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .showcase__issuer b{color:var(--accent-ink);font-weight:600}
:is(.theme-label,.theme-assesi) .showcase__status p{margin:0;text-align:left;padding:12px 15px;border-radius:13px;
  background:var(--surface-soft);font-size:.84rem;line-height:1.55;color:var(--text-body)}
:is(.theme-label,.theme-assesi) .showcase__foot p{margin:0;font-size:.7rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-faint)}

/* ---- Sektion 2: Vorteile (num-card, 2x2) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.num-card__n){display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:760px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.num-card__n){grid-template-columns:1fr}}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.num-card__n){padding:2rem 1.9rem}
:is(.theme-label,.theme-assesi) .num-card__n{position:static}
:is(.theme-label,.theme-assesi) .num-card__n[class*="--ico-"]::before{position:absolute;top:2rem;right:1.9rem;
  width:24px;height:24px;color:var(--accent-ink);opacity:.7}
:is(.theme-label,.theme-assesi) .num-card__n .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.6rem;line-height:1;color:var(--accent-ink);font-variant-numeric:tabular-nums;margin:0 0 .8rem}
:is(.theme-label,.theme-assesi) .num-card__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1.1rem;line-height:1.3;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .num-card__d p{margin:0;font-size:.92rem;line-height:1.65;color:var(--text-soft)}

/* ---- Sektion 3: Kriterien (principle-card + norm-box) ---- */
/* 300px statt 240px Mindestbreite: Bei 1240px Inhaltsbreite passten
   vorher vier Karten in die Reihe, die fuenfte stand allein darunter.
   Mit 300px sind es drei — fuenf Prinzipien stehen dann 3+2. */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.principle-card__n){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.principle-card__n){padding:1.5rem 1.4rem}
:is(.theme-label,.theme-assesi) .principle-card__n{position:static}
:is(.theme-label,.theme-assesi) .principle-card__n[class*="--ico-"]::before{position:absolute;top:1.5rem;right:1.4rem;
  width:20px;height:20px;color:var(--accent-ink);opacity:.7}
:is(.theme-label,.theme-assesi) .principle-card__n .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:.78rem;letter-spacing:.1em;color:var(--accent-ink);margin:0 0 .5rem}
:is(.theme-label,.theme-assesi) .principle-card__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.98rem;line-height:1.35;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .principle-card__d p{margin:0;font-size:.86rem;line-height:1.6;color:var(--text-soft)}

:is(.theme-label,.theme-assesi) .e-con:has(>.norm-box__label){gap:0;background:var(--surface-soft);
  border-left:3px solid var(--cta-bg);border-radius:var(--r-card);padding:1.3rem 1.5rem;margin-top:0}
:is(.theme-label,.theme-assesi) .norm-box__label .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 .5rem}
:is(.theme-label,.theme-assesi) .norm-box__d p{margin:0;font-size:.9rem;line-height:1.65;
  color:var(--text-soft);max-width:var(--lesebreite)}

/* ---- Sektion 5: Platzhalter-Versicherer + pilot-cta ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.v-card__title){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.v-card__title){padding:1.6rem 1.5rem}
:is(.theme-label,.theme-assesi) .v-card__title{position:static}
:is(.theme-label,.theme-assesi) .v-card__title[class*="--ico-"]::before{position:relative;width:26px;height:26px;
  color:var(--accent-ink);opacity:.6;margin-bottom:.9rem}
:is(.theme-label,.theme-assesi) .v-card__title .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .v-card__d p{margin:0;font-size:.84rem;line-height:1.55;color:var(--text-soft)}

/* Der Kasten war gestrichelt und ohne Knopf — er las sich wie ein
   deaktivierter Platzhalter, nicht wie eine Einladung. Jetzt eine
   Flaeche mit Akzentkante und einem echten Knopf. */
/* flex-direction:column ist hier zwingend: Die Button-Reihen-Regel weiter
   oben (.e-con:has(>.elementor-widget-button)) setzt row fuer JEDEN
   Container mit direktem Button-Kind — auch fuer diese Karte. Beide Regeln
   stehen bei (0,3,0); diese hier gewinnt nur, weil sie spaeter kommt.
   Gemessen: vorher standen Titel, Text und Knopf in einer Zeile ohne
   Zwischenraum („Ihr Unternehmen hier?Versicherungsunternehmen…"). */
:is(.theme-label,.theme-assesi) .e-con:has(>.pilot-cta__t){flex-direction:column;align-items:flex-start;gap:0;background:var(--surface-soft);
  border:1px solid var(--border);border-left:4px solid var(--cta-bg);
  border-radius:var(--r-card);padding:1.8rem 1.7rem;margin-top:16px}
:is(.theme-label,.theme-assesi) .pilot-cta__t .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.05rem;color:var(--text-strong);margin:0 0 .5rem}
:is(.theme-label,.theme-assesi) .pilot-cta__d p{margin:0;font-size:.9rem;line-height:1.65;color:var(--text-soft)}

/* ---- Sektion 6: Kosten (kbox navy/lime) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox__label){gap:0;border-radius:var(--r-card);padding:1.8rem 1.7rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox__label):not(:last-child){margin-bottom:16px}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--navy){background:var(--ci-navy)}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--lime){background:#fff;border:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .kbox__label .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin:0 0 1rem}
:is(.theme-label,.theme-assesi) .kbox--navy .elementor-heading-title{color:var(--cta-bg)}
:is(.theme-label,.theme-assesi) .kbox--lime .elementor-heading-title{color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .kbox__list ul{list-style:none;margin:0;padding:0}
:is(.theme-label,.theme-assesi) .kbox__list li{display:flex;align-items:flex-start;gap:10px;padding:7px 0;
  font-size:.9rem;line-height:1.55}
:is(.theme-label,.theme-assesi) .kbox__list li::before{content:'';flex:none;width:16px;height:16px;margin-top:3px;
  background-color:var(--cta-bg);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5l10 -10'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5l10 -10'/%3E%3C/svg%3E") center/contain no-repeat}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--navy) .kbox__list li{color:rgba(255,255,255,.86)}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--lime) .kbox__list li{color:var(--text-body)}
:is(.theme-label,.theme-assesi) .kbox__note p{margin:1rem 0 0;padding-top:.9rem;font-size:.78rem;line-height:1.5}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--navy) .kbox__note p{border-top:1px solid var(--border-on-dark);color:rgba(255,255,255,.6)}
:is(.theme-label,.theme-assesi) .e-con:has(>.kbox--lime) .kbox__note p{border-top:1px solid var(--border);color:var(--text-faint)}
:is(.theme-label,.theme-assesi) .kosten__text p{margin:0 0 1rem;font-size:.98rem;line-height:1.75;color:var(--text-soft)}

/* ---- Sektion 7: Timeline + Blog + Newsletter ---- */
:is(.theme-label,.theme-assesi) .tl-head .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 1rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.tl-item__date){display:flex;flex-direction:column;gap:0;
  border-top:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .e-con:has(>.tl-item__date){gap:0;display:grid;grid-template-columns:36px 1fr;
  column-gap:16px;padding:18px 4px;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .tl-item__date{grid-column:2;position:static}
:is(.theme-label,.theme-assesi) .tl-item__date::after{content:'';position:absolute;left:4px;top:20px;width:36px;height:36px;
  border-radius:50%;display:block}
:is(.theme-label,.theme-assesi) .tl-done::after{background:var(--cta-bg)}
:is(.theme-label,.theme-assesi) .tl-active::after{background:var(--ci-gold);box-shadow:0 0 0 5px rgba(245,197,3,.2)}
:is(.theme-label,.theme-assesi) .tl-future::after{background:#fff;border:2px solid var(--border-strong)}
:is(.theme-label,.theme-assesi) .tl-item__date .elementor-heading-title{font-family:var(--font-body);
  font-size:.68rem;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--accent-ink);margin:0 0 2px}
:is(.theme-label,.theme-assesi) .tl-item__t{grid-column:2}
:is(.theme-label,.theme-assesi) .tl-item__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;color:var(--text-strong);margin:0 0 .3rem}
:is(.theme-label,.theme-assesi) .tl-item__d{grid-column:2}
:is(.theme-label,.theme-assesi) .tl-item__d p{margin:0;font-size:.88rem;line-height:1.6;color:var(--text-soft)}

:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.blog-card__tag){display:flex;flex-direction:column;gap:12px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.blog-card__tag){padding:1.3rem 1.4rem}
:is(.theme-label,.theme-assesi) .blog-card__tag .elementor-heading-title{display:inline-block;font-family:var(--font-display);
  font-weight:700;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--cta-fg);
  background:var(--cta-bg);border-radius:var(--r-chip);padding:4px 10px;margin:0}
:is(.theme-label,.theme-assesi) .blog-card__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.98rem;line-height:1.4;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .blog-card__meta p{margin:0;font-size:.76rem;color:var(--text-faint)}

:is(.theme-label,.theme-assesi) .e-con:has(>.newsletter-cta__t){gap:0;background:var(--ci-navy);border-radius:var(--r-card);
  padding:1.7rem 1.6rem;margin-top:4px}
:is(.theme-label,.theme-assesi) .newsletter-cta__t{position:static}
:is(.theme-label,.theme-assesi) .newsletter-cta__t[class*="--ico-"]::before{position:relative;width:26px;height:26px;
  color:var(--cta-bg);margin-bottom:.8rem}
:is(.theme-label,.theme-assesi) .newsletter-cta__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;line-height:1.4;color:#fff;margin:0 0 1rem}

/* ---- Sektion 8: Akteure ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.actor-card__mark){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.actor-card__mark){padding:1.9rem 1.8rem}
:is(.theme-label,.theme-assesi) .actor-card__mark{position:static}
:is(.theme-label,.theme-assesi) .actor-card__mark[class*="--ico-"]::before{position:relative;width:26px;height:26px;
  color:var(--accent-ink);opacity:.7;margin-bottom:1rem}
:is(.theme-label,.theme-assesi) .actor-card__mark .elementor-heading-title{display:inline-grid;place-items:center;
  min-width:52px;height:52px;padding:0 12px;border-radius:14px;background:var(--ci-navy);color:#fff;
  font-family:var(--font-display);font-weight:800;font-size:.95rem;letter-spacing:.04em;margin:0 0 1rem}
:is(.theme-label,.theme-assesi) .actor-card__mark[class*="--ico-"] .elementor-heading-title{display:none}
:is(.theme-label,.theme-assesi) .actor-card__name .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.05rem;color:var(--text-strong);margin:0 0 .2rem}
:is(.theme-label,.theme-assesi) .actor-card__role .elementor-heading-title{font-family:var(--font-body);
  font-size:.72rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent-ink);margin:0 0 .7rem}
:is(.theme-label,.theme-assesi) .actor-card__d p{margin:0;font-size:.9rem;line-height:1.65;color:var(--text-soft)}

/* ---- Sektion 9: Association-Teaser ---- */
:is(.theme-label,.theme-assesi) .assoc__text p{margin:0 0 1rem;font-size:.98rem;line-height:1.75;color:var(--text-soft)}
/* flex-direction:column aus demselben Grund wie bei pilot-cta: Die
   Button-Reihen-Regel (.e-con:has(>.elementor-widget-button)) setzt row fuer
   JEDEN Container mit direktem Button-Kind — also auch fuer diesen Kasten.
   Ohne Gegenregel stehen Name, Text und Knopf nebeneinander, und der Kasten
   laeuft mit Leerflaeche voll (Kundenbefund 07.08.2026). Beide Regeln stehen
   bei (0,3,0); diese gewinnt nur, weil sie spaeter kommt. */
:is(.theme-label,.theme-assesi) .e-con:has(>.assoc-visual__name){flex-direction:column;align-items:flex-start;
  gap:0;background:var(--ci-navy);border-radius:var(--r-card);
  padding:1.9rem 1.8rem;position:relative;overflow:hidden}
:is(.theme-label,.theme-assesi) .e-con:has(>.assoc-visual__name)>.elementor-widget{width:100%}
:is(.theme-label,.theme-assesi) .e-con:has(>.assoc-visual__name)>.elementor-widget-button{width:auto}
:is(.theme-label,.theme-assesi) .e-con:has(>.assoc-visual__name)::before{content:'';position:absolute;top:-40%;right:-25%;
  width:70%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(48,85,160,.55),transparent 70%)}
:is(.theme-label,.theme-assesi) .assoc-visual__name .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.1rem;line-height:1.35;color:#fff;margin:0 0 .9rem;position:relative}
:is(.theme-label,.theme-assesi) .assoc-visual__d p{margin:0 0 1.2rem;font-size:.9rem;line-height:1.7;
  color:rgba(255,255,255,.78);position:relative}

/* ---- Sektion 10: DIN-Norm ---- */
:is(.theme-label,.theme-assesi) .din__text{max-width:var(--lesebreite)}
:is(.theme-label,.theme-assesi) .din__text p{margin:0 0 1rem;font-size:.98rem;line-height:1.75;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.compare-box__t){display:grid;grid-template-columns:1fr 1fr;gap:14px;
  margin-top:1.4rem}
@media(max-width:760px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.compare-box__t){grid-template-columns:1fr}}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.compare-box__t){padding:1.7rem 1.6rem;background:#fff;box-shadow:none}
:is(.theme-label,.theme-assesi) .compare-box__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;line-height:1.35;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .compare-box__d p{margin:0;font-size:.88rem;line-height:1.65;color:var(--text-soft)}

/* ---- Baender ---- */
:is(.theme-label,.theme-assesi) .e-con.band-warm,:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.e-con>.band-warm__mark){background:var(--surface-soft)}

/* ---- Sektion 11: Abschluss-CTA (Navy-Band) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.schluss-cta__t){background:var(--ci-navy);border-radius:var(--r-card);
  padding:clamp(2.4rem,5vw,3.4rem) clamp(1.6rem,4vw,3rem)}
:is(.theme-label,.theme-assesi) .e-con:has(>.schluss-cta__t){gap:0;max-width:56ch;position:relative;z-index:1}
/* Die rechte Haelfte blieb leer, weil die Textspalte auf 56ch begrenzt
   ist. Ein grosses, leises Siegel fuellt sie — rein dekorativ, deshalb
   als ::after und nicht als Widget. Unter 900px faellt es weg, dort
   waere es nur Gedraenge.
   Im Kreis liegt cta-upload.svg als PLATZHALTER (Kundenwunsch 07.08.2026):
   ein Bildmotiv soll hier hin. Sobald eines da ist, ersetzt es die Datei
   unter assets/img/ — der Pfad bleibt derselbe. */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.schluss-cta__t)::after{content:'';position:absolute;
  right:4%;top:50%;transform:translateY(-50%);width:min(260px,30%);aspect-ratio:1;
  border-radius:999px;pointer-events:none;
  background:url("../img/cta-upload.svg") center/50% no-repeat;
  border:2px solid color-mix(in srgb,var(--cta-bg) 55%,transparent);
  box-shadow:inset 0 0 0 14px rgba(255,255,255,.04),
             inset 0 0 0 16px color-mix(in srgb,var(--cta-bg) 28%,transparent)}
@media(max-width:900px){:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.schluss-cta__t)::after{display:none}}
:is(.theme-label,.theme-assesi) .e-con:has(>.schluss-cta__t) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .schluss-cta__t .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  letter-spacing:-.025em;line-height:1.15;font-size:clamp(1.6rem,1.2rem + 1.6vw,2.1rem);
  color:#fff;margin:0 0 .9rem}
:is(.theme-label,.theme-assesi) .schluss-cta__t em{font-style:normal;color:var(--cta-bg)}
:is(.theme-label,.theme-assesi) .schluss-cta__d p{margin:0;font-size:1.02rem;line-height:1.75;color:rgba(255,255,255,.78)}

/* ============================================================
   UNTERSEITEN — /kriterien, /kosten, /din-norm, /kontakt

   Derselbe Klassen-Vertrag wie auf der Startseite: Marker am ersten
   Widget, Container ueber :has(>.marker). Die Unterseiten setzen
   ueberwiegend die bestehenden Komponenten wieder ein; neu sind nur
   Seitenkopf, Hinweisbox und die beiden Kontakt-Bausteine.
   ============================================================ */

/* Seitenkopf: wie sec-title, aber als H1 und eine Stufe groesser */
/* KEIN hyphens:auto am Rechner: Chrome trennt sonst, sobald das letzte Wort
   nicht mehr in die Zeile passt — „Herunterla-den" stand so im Kundenabzug
   vom 07.08.2026. overflow-wrap:break-word bleibt als Netz fuer Woerter, die
   laenger sind als die ganze Zeile. Auf schmalen Breiten kommt hyphens:auto
   zurueck (Media-Regel unten): „Kompositversicherungen" lief bei 390px als
   einziger Ueberlauf im 59-Seiten-Abzug ueber den Rahmen (427 > 390). */
:is(.theme-label,.theme-assesi) .page-title .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  overflow-wrap:break-word;
  letter-spacing:-.03em;line-height:1.08;font-size:clamp(2.1rem,1.5rem + 2.4vw,3rem);
  color:var(--text-strong);margin:0}
@media(max-width:600px){
  :is(.theme-label,.theme-assesi) :is(.page-title,.sec-title) .elementor-heading-title,
  .sec-title{hyphens:auto}
}
.theme-label .page-title em{font-style:normal;position:relative;z-index:0;color:var(--text-strong)}
.theme-assesi .page-title em{font-style:normal;color:var(--accent)}
.theme-label .page-title em::after{content:'';position:absolute;left:0;right:0;bottom:.07em;height:.3em;
  background:var(--ci-lime);opacity:.4;z-index:-1;border-radius:3px}
/* Der Vorspann ist Fliesstext und laeuft auf Lesebreite — auch dann, wenn
   die Ueberschrift darueber die groessere --kopfbreite ausnutzen darf. */
:is(.theme-label,.theme-assesi) .page-lede,
:is(.theme-label,.theme-assesi) .sec-lede{max-width:var(--lesebreite)}
:is(.theme-label,.theme-assesi) .page-lede p{margin:0 0 .9rem;font-size:1.08rem;line-height:1.75;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .page-lede p:last-child{margin-bottom:0}

/* Hinweisbox: markiert den Entwurfsstand. Gold nur als Flaeche und Rand,
   nie als Textfarbe — der Text steht in Navy (Kontrastregel CI). */
:is(.theme-label,.theme-assesi) .e-con:has(>.hinweis__label){gap:0;background:#FDF7DE;
  border:1px solid rgba(245,197,3,.55);border-left:4px solid var(--ci-gold);
  border-radius:var(--r-card);padding:1.1rem 1.3rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.hinweis__label) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .hinweis__label .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ci-navy);margin:0 0 .45rem}
/* Der Kasten darf ueber die volle Breite laufen — er ist ein Band, das
   auffallen soll. Sein TEXT nicht: gemessen bis 139 Zeichen je Zeile.

   Hier steht `em` statt --lesebreite, und das ist kein Schoenheitsfehler.
   --lesebreite ist ein rem-Mass, also fest; dieser Text setzt aber
   kleiner als der Fliesstext. In dieselbe Breite passen dann mehr
   Zeichen — mit --lesebreite waren es noch 92 je Zeile. `em` bezieht
   sich auf die Schriftgroesse des Absatzes selbst und haelt die
   ZEICHENZAHL konstant, statt die Breite. Fuer Kleingedrucktes ist das
   die richtige Einheit. */
:is(.theme-label,.theme-assesi) .hinweis__d p{margin:0 0 .45rem;font-size:.86rem;line-height:1.6;
  color:var(--text-body);max-width:34em}
:is(.theme-label,.theme-assesi) .hinweis__d p:last-child{margin-bottom:0}

/* Fliesstext der Unterseiten */
/* Zeilenlaenge begrenzen: ueber die volle Rahmenbreite kaeme der Fliesstext
   auf rund 150 Zeichen je Zeile und waere kaum noch lesbar. */
:is(.theme-label,.theme-assesi) .seite__text{max-width:var(--lesebreite)}
:is(.theme-label,.theme-assesi) .seite__text p{margin:0 0 1rem;font-size:.98rem;line-height:1.75;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .seite__text p:last-child{margin-bottom:0}

/* Kontakt: Kanal-Karten */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.kanal-card__t){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}
:is(.theme-label,.theme-assesi) .e-con:has(>.kanal-card__t){position:relative;gap:0;background:#fff;
  border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:1.8rem 1.7rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.kanal-card__t) .elementor-widget:not(:last-child){margin-block-end:.55rem}
:is(.theme-label,.theme-assesi) .kanal-card__t{position:static}
:is(.theme-label,.theme-assesi) .kanal-card__t[class*="--ico-"]::before{position:relative;width:26px;height:26px;
  color:var(--accent-ink);opacity:.7;margin-bottom:.9rem}
:is(.theme-label,.theme-assesi) .kanal-card__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1.02rem;line-height:1.35;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .kanal-card__d p{margin:0 0 .5rem;font-size:.9rem;line-height:1.65;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .kanal-card__d p:last-child{margin-bottom:0}

/* Kontakt: Datenblock (Anschrift, Erreichbarkeit) */
:is(.theme-label,.theme-assesi) .e-con:has(>.daten__label){gap:0;background:#fff;
  border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:1.8rem 1.7rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.daten__label) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .daten__label .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 1rem}
:is(.theme-label,.theme-assesi) .daten__d p{margin:0 0 .7rem;font-size:.94rem;line-height:1.7;
  color:var(--text-body);max-width:var(--lesebreite)}
:is(.theme-label,.theme-assesi) .daten__d p:last-child{margin-bottom:0}
:is(.theme-label,.theme-assesi) .daten__d a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}

/* ============================================================
   KOPF- UND FUSSZEILE — inhaltsbasiert

   Die Blockregeln weiter oben (.nav, .footer, .brand …) gehoeren zum
   One-Pager-Entwurf und haengen an Container-Klassen. Im Theme-Builder
   gilt derselbe Befund wie auf den Seiten: Container-Klassen sind nicht
   verlaesslich, Widget-Klassen schon. Deshalb hier dieselbe Bauweise —
   Marker am ersten Widget, Container ueber :has(>.marker).

   Kopf:  Band > Reihe > Marke > .kz__mark
   Fuss:  Band > Raster > Spalte > .fz__name / .fz__col-h
   ============================================================ */

/* ---- Kopfzeile ---- */
/*
   BOXED-CONTAINER: DIE EBENE, DIE ALLES KIPPEN LIESS
   ---------------------------------------------------
   Ein Container mit content_width "boxed" traegt ein zusaetzliches
   `.e-con-inner` zwischen sich und seinem Inhalt. Auf Seiten kommt das nicht
   vor (der Generator setzt ueberall "full"), im THEME BUILDER schon — der
   Pilot-Abzug hat es festgehalten: von 17 Containern trugen genau die drei
   aus Kopf- und Fusszeile ein inneres Element.
   Diese Ebene bricht jede Regel, die mit `>` auf einen Marker zielt: Aus
   `Reihe > Marke > .kz__mark` wird `Reihe > .e-con-inner > Marke >
   .e-con-inner > .kz__mark`. Die Widget-Regeln greifen weiter — deshalb sah
   der Kopf auf assesi.eu nach richtiger Marke und richtigem Knopf aus, ohne
   jedes Layout: keine Reihe, kein Raster, kein 1240er-Rahmen, das Menue
   untereinander. Nachgestellt in der Vorschau: 348px statt 69px Kopfhoehe.

   Zwei Konsequenzen, beide unten angewandt:
   1. Baender haengen an ihrer `_element_id` (`kopf`, `fuss`) statt an einer
      Kette aus drei Ebenen. IDs ueberleben den Import nachweislich.
   2. Jede Container-Regel nennt `:is(.e-con,.e-con-inner)` als Traeger und,
      wo eine Ebene dazwischenliegt, beide Formen des Kindes. Getroffen wird
      dann immer das Element, das den Inhalt TATSAECHLICH haelt — ob boxed
      oder nicht. `:is()` zaehlt sein spezifischstes Argument, die
      Spezifitaet bleibt also dieselbe wie bei `.e-con` allein.

   `width:100%` ist nicht redundant — dieselbe Falle wie beim Sektionsrahmen.
   Das Band ist Flex-Kind seiner Umgebung; ohne eigene Breite schrumpft es auf
   seinen Inhalt. Auf assesi.eu endete die Navy-Flaeche dadurch mitten auf der
   Seite, waehrend die Schaltflaeche rechts daneben ausserhalb davon stand. */
/* Zwei unabhaengige Wege zum Band, weil keiner allein alles abdeckt: die
   technische ID (ueberlebt den Import, haengt an keiner Tiefe) und
   „der aeusserste Container, der die Marke enthaelt" — `:not(.e-con .e-con)`
   schliesst Reihe und Markenblock aus, die sie ebenfalls enthalten.
   Dasselbe `:not()` haengt auch an der ID: Auf assesi-label.eu steckt `#kopf`
   in einem aeusseren Container, weil darueber noch das Konsultationsband
   liegt. Ohne die Einschraenkung traegt der Kopf dort zwei Baender
   uebereinander — sichtbar als doppelte Trennlinie. */
:is(.theme-label,.theme-assesi) [id="kopf"]:not(.e-con .e-con),
:is(.theme-label,.theme-assesi) .e-con:has(.kz__mark):not(.e-con .e-con),
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.e-con>.kz__mark):not(.e-con .e-con){position:sticky;top:0;z-index:50;
  width:100%;background:var(--nav-bg);color:var(--nav-fg);
  border-bottom:1px solid color-mix(in srgb,var(--nav-fg) 16%,transparent)}
/* flex-wrap:nowrap ist nicht kosmetisch. `.e-con` bringt von Elementor
   `flex-wrap:wrap` mit; sobald Marke, Menue und die beiden Schaltflaechen
   zusammen breiter werden als die Zeile, bricht der Kopf in zwei Zeilen um
   — auf assesi.eu war genau das zu sehen. Statt umzubrechen soll die
   Zeile eng werden; die Abstufungen dafuer stehen weiter unten. */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.kz__mark),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.kz__mark){width:100%;max-width:1240px;margin-left:auto;
  margin-right:auto;padding:0 var(--section-x);min-height:68px;
  display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:14px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.kz__mark)>.elementor-widget,
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.kz__mark)>.elementor-widget{width:auto;margin-block-end:0}

/* Marke: Zeichen, Wortmarke, Zusatz */
/* gap in EINER Angabe: ein nachfolgendes `gap:0` wuerde das column-gap
   wieder auf null setzen — Zeichen und Wortmarke klebten aneinander. */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.kz__mark){display:grid;
  grid-template-columns:auto auto;grid-template-rows:auto auto;
  align-items:center;gap:0 11px;margin-right:auto;flex:none}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.kz__mark)>.elementor-widget{width:auto;margin-block-end:0}

/* Logoplatz. Ohne gesetztes Bild rendert Elementor im Widget nichts — dann
   nimmt es auch keine Rasterzelle ein und die Textmarke traegt den Kopf.
   Mit Bild belegt es beide Zeilen, und Zeichen, Wortmarke und Zusatz
   treten zurueck: Die Marke soll nicht zweimal im Kopf stehen. */
:is(.theme-label,.theme-assesi) .kz__logo:not(:has(img)){display:none}
:is(.theme-label,.theme-assesi) .kz__logo{grid-area:1 / 1 / 3 / 3;display:flex;align-items:center}
:is(.theme-label,.theme-assesi) .kz__logo img{display:block;height:38px;width:auto;max-width:220px;
  object-fit:contain}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.kz__logo img)>:is(.kz__mark,.kz__name,.kz__tag){display:none}

/* Zweiter Weg zum Logo: Design → Customizer → Website-Informationen → Logo.
   Den setzt functions.php als eigene Regel im <head> um — dort ist die
   Bildadresse bekannt und das Seitenverhaeltnis ausgerechnet. Hier steht
   deshalb nur der Zustand OHNE Logo. */
:is(.theme-label,.theme-assesi) .kz__mark{grid-row:1 / span 2}
:is(.theme-label,.theme-assesi) .kz__mark .elementor-heading-title{display:grid;place-items:center;
  width:34px;height:34px;border-radius:7px;
  background:linear-gradient(135deg,var(--ci-blue),var(--ci-navy));
  border:1px solid rgba(255,255,255,.25);
  font-family:var(--font-display);font-weight:800;font-size:.95rem;color:#fff;margin:0}
:is(.theme-label,.theme-assesi) .kz__name{grid-column:2}
:is(.theme-label,.theme-assesi) .kz__name .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.12rem;letter-spacing:.02em;line-height:1.05;color:var(--nav-fg);margin:0}
:is(.theme-label,.theme-assesi) .kz__tag{grid-column:2}
:is(.theme-label,.theme-assesi) .kz__tag .elementor-heading-title{font-family:var(--font-body);font-size:.56rem;
  font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:color-mix(in srgb,var(--nav-fg) 60%,transparent);margin:4px 0 0}

/* Navigation.
   `.kz__nav ul` war zu weit gefasst. Elementor Pro rendert im Menue-Widget
   MEHRERE Listen: das Hauptmenue und daneben das Klappmenue fuer schmale
   Breiten. Beide waagerecht zu setzen ist falsch — das Klappmenue soll
   untereinander stehen und auf breiten Fenstern gar nicht erscheinen.
   Deshalb liegt die waagerechte Reihe jetzt am Hauptmenue, und das
   Klappmenue behaelt seine eigene Darstellung.

   `min-width:0` daneben: Die Kopfzeile laeuft mit flex-wrap:nowrap. Ohne
   diese Angabe kann ein Flex-Kind nicht unter seine Inhaltsbreite
   schrumpfen und schiebt stattdessen alles Nachfolgende aus der Zeile
   heraus, statt selbst enger zu werden. */
:is(.theme-label,.theme-assesi) .kz__nav{flex:0 1 auto;min-width:0}
:is(.theme-label,.theme-assesi) .kz__nav .elementor-nav-menu--main>ul,
:is(.theme-label,.theme-assesi) .kz__nav .elementor-nav-menu--main ul.elementor-nav-menu{
  list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;padding:0}
/* Fallback fuer den Fall, dass die Hauptmenue-Huelle fehlt: dann greift
   die Reihe an der ersten Liste des Widgets, aber nur an dieser. */
:is(.theme-label,.theme-assesi) .kz__nav>ul:first-of-type{
  list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;padding:0}
:is(.theme-label,.theme-assesi) .kz__nav li{margin:0;list-style:none}
:is(.theme-label,.theme-assesi) .kz__nav a{font-family:var(--font-body);font-size:.9rem;font-weight:500;
  color:color-mix(in srgb,var(--nav-fg) 82%,transparent);transition:color var(--dur-base)}
:is(.theme-label,.theme-assesi) .kz__nav a:hover,:is(.theme-label,.theme-assesi) .kz__nav a[aria-current]{color:var(--nav-fg)}

/* Die beiden Kopf-Buttons sind kleiner als die der Seiten. */
:is(.theme-label,.theme-assesi) .kz__quer .elementor-button,
:is(.theme-label,.theme-assesi) .kz__cta .elementor-button{font-family:var(--font-body);font-size:.82rem;
  font-weight:700;padding:9px 16px;line-height:1.2}
:is(.theme-label,.theme-assesi) .kz__quer .elementor-button{font-weight:600}
:is(.theme-label,.theme-assesi) .kz__quer .elementor-button:hover{background:color-mix(in srgb,var(--accent-2) 12%,transparent)}

/* Zwischenstufe, damit `nowrap` oben nicht zum Ueberlauf wird: Bevor
   etwas verschwindet, ruecken erst die Menuepunkte zusammen. */
@media(max-width:1180px){
  :is(.theme-label,.theme-assesi) .kz__nav ul{gap:18px}
  :is(.theme-label,.theme-assesi) .kz__nav a{font-size:.85rem}
}
@media(max-width:900px){
  /* Auf schmalen Breiten traegt Elementors Burger die Navigation; der
     Querverweis wandert dorthin mit und wird hier ausgeblendet. */
  :is(.theme-label,.theme-assesi) .kz__quer{display:none}
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.kz__mark),
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.kz__mark){gap:10px}
}
@media(max-width:560px){
  /* Nicht mehr die CTA ausblenden — sie ist die primaere Handlung der
     Seite und war mobil ersatzlos weg (der Burger traegt nur das
     WordPress-Menue). Stattdessen treten Wortmarke und Zusatz zurueck;
     das Zeichen (bzw. Logo) genuegt als Marke. Gemessen: Zeichen 34px +
     CTA + Burger passen in 390px. */
  :is(.theme-label,.theme-assesi) :is(.kz__name,.kz__tag){display:none}
  :is(.theme-label,.theme-assesi) .kz__cta .elementor-button{font-size:.76rem;padding:8px 12px}
}

/* ---- Fusszeile ---- */
/* width:100% aus demselben Grund wie beim Kopfband — sonst schrumpft die
   Navy-Flaeche auf den Inhalt statt ueber die volle Breite zu laufen. */
:is(.theme-label,.theme-assesi) [id="fuss"]:not(.e-con .e-con),
:is(.theme-label,.theme-assesi) .e-con:has(.fz__name):not(.e-con .e-con),
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.e-con>.fz__name):not(.e-con .e-con){width:100%;
  background:var(--ci-navy);color:rgba(255,255,255,.75)}
/* Das Raster zaehlt seine Spalten NICHT ab. Vorher standen hier vier feste
   Spalten — das passte fuer assesi-label.eu (Marke + drei Linkspalten),
   aber assesi.eu hat vier Linkspalten, und die fuenfte Kachel „Kontakt"
   fiel in eine zweite Zeile unter die Marke. Zwischen beiden Zeilen klaffte
   dann eine leere Flaeche von der Hoehe der laengsten Spalte.
   Jetzt ist nur die Markenspalte gesetzt; jede weitere Spalte entsteht als
   implizite Spalte gleicher Breite. Drei, vier oder fuenf Linkspalten
   bleiben damit immer in einer Zeile. */
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.fz__name),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.fz__name){width:100%;max-width:1240px;
  margin-left:auto;margin-right:auto;
  padding:clamp(3rem,6vw,4.5rem) var(--section-x) 2.5rem;
  display:grid;grid-template-columns:minmax(0,1.4fr);
  grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);
  gap:clamp(1.5rem,2.6vw,2.5rem)}
@media(max-width:900px){
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.fz__name),
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.fz__name){
  grid-auto-flow:row;grid-template-columns:1fr 1fr;grid-auto-columns:auto;row-gap:2.5rem}}
@media(max-width:560px){
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.fz__name),
  :is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.e-con>.e-con-inner>.fz__name){
  grid-template-columns:1fr}}

:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__name),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__col-h){gap:0;align-content:start}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__name) .elementor-widget:not(:last-child),
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__col-h) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .fz__name .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.12rem;letter-spacing:.02em;color:#fff;margin:0}
:is(.theme-label,.theme-assesi) .fz__tag p{font-size:.9rem;line-height:1.7;color:rgba(255,255,255,.6);
  margin:1rem 0 0;max-width:34ch}
:is(.theme-label,.theme-assesi) .fz__cross{width:auto}
:is(.theme-label,.theme-assesi) .fz__cross .elementor-button{margin-top:1.3rem;font-family:var(--font-body);
  font-size:.82rem;font-weight:600;padding:8px 14px}
:is(.theme-label,.theme-assesi) .fz__cross .elementor-button:hover{background:rgba(180,205,0,.14)}

:is(.theme-label,.theme-assesi) .fz__col-h .elementor-heading-title{font-family:var(--font-display);font-size:.72rem;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.5);margin:0 0 1.1rem}
:is(.theme-label,.theme-assesi) .fz__links a{display:block;font-size:.92rem;color:rgba(255,255,255,.8);
  padding:6px 0;transition:color var(--dur-base)}
:is(.theme-label,.theme-assesi) .fz__links a:hover{color:#fff}
:is(.theme-label,.theme-assesi) .fz__note p{margin:.9rem 0 0;font-size:.76rem;line-height:1.5;
  color:rgba(255,255,255,.5)}

:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__bar-l){width:100%;max-width:1240px;margin-left:auto;
  margin-right:auto;padding:1.5rem var(--section-x);
  border-top:1px solid var(--border-on-dark);
  display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;
  align-items:center;gap:14px}
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.fz__bar-l)>.elementor-widget{width:auto;margin-block-end:0}
:is(.theme-label,.theme-assesi) .fz__bar-l p{margin:0;font-size:.8rem;color:rgba(255,255,255,.55)}
/* Der Flex-Kontext muss dort sitzen, wo die Links tatsaechlich stehen.
   Das ist je nach Einstellung eine andere Ebene: Mit Elementors
   optimierter DOM-Ausgabe (in der Zielinstallation aktiv, belegt im
   DOM-Abzug vom 4.8.2026) entfaellt .elementor-widget-container, und
   die Links haengen direkt am .elementor-element. Deshalb beide. */
:is(.theme-label,.theme-assesi) .fz__bar-r,
:is(.theme-label,.theme-assesi) .fz__bar-r > .elementor-widget-container{display:flex;flex-wrap:wrap;gap:18px}
:is(.theme-label,.theme-assesi) .fz__bar-r a{font-size:.8rem;color:rgba(255,255,255,.7)}
:is(.theme-label,.theme-assesi) .fz__bar-r a:hover{color:#fff}

/* ============================================================
   KOMPONENTEN VON assesi.eu

   Derselbe Klassen-Vertrag wie beim Siegel-Auftritt. Die meisten
   Bausteine sind geteilt — kanal-card traegt hier die Vorteils- und
   Vision-Kacheln, actor-card die Traeger, blog-card die Beitraege.
   Neu sind nur die sechs Komponenten, fuer die es dort keine
   Entsprechung gab.
   ============================================================ */

/* ---- Stat-Kachel (Was ist ASSESI) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.stat-card__n){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}
:is(.theme-label,.theme-assesi) .e-con:has(>.stat-card__n){gap:0;background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:1.6rem 1.5rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.stat-card__n) .elementor-widget:not(:last-child){margin-block-end:.5rem}
:is(.theme-label,.theme-assesi) .stat-card__n .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.45rem;line-height:1.1;color:var(--accent-ink);margin:0}
:is(.theme-label,.theme-assesi) .stat-card__d p{margin:0;font-size:.86rem;line-height:1.6;color:var(--text-soft)}

/* ---- Veranstaltungszeile ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.event-row__meta){display:flex;flex-direction:column;gap:0;
  border-top:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .e-con:has(>.event-row__meta){gap:0;padding:18px 4px;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .e-con:has(>.event-row__meta) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .event-row__meta .elementor-heading-title{font-family:var(--font-body);font-size:.68rem;
  font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 5px}
:is(.theme-label,.theme-assesi) .event-row__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;line-height:1.35;color:var(--text-strong);margin:0 0 .35rem}
:is(.theme-label,.theme-assesi) .event-row__ort{position:static}
/* Ohne das steht das Symbol in einer eigenen Zeile: das ::before haengt am
   .elementor-element, der Absatz eine Ebene tiefer — und beide Ebenen
   sind Bloecke. Welche es gibt, haengt an Elementors optimierter
   DOM-Ausgabe; in der Zielinstallation entfaellt der Widget-Container
   (DOM-Abzug vom 4.8.2026). Deshalb beide. */
:is(.theme-label,.theme-assesi) .event-row__ort > .elementor-widget-container{display:inline}
:is(.theme-label,.theme-assesi) .event-row__ort > p{display:inline}
:is(.theme-label,.theme-assesi) .event-row__ort[class*="--ico-"]::before{display:inline-block;vertical-align:-3px;
  width:15px;height:15px;margin-right:6px;color:var(--accent-ink);opacity:.7}
:is(.theme-label,.theme-assesi) .event-row__ort p{display:inline;margin:0;font-size:.84rem;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .event-row__ort a{color:var(--accent-ink);font-weight:600;
  text-decoration:underline;text-underline-offset:3px}

/* ---- Logo-Platzhalter (Unterstuetzer) ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.logo-slot__t){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
:is(.theme-label,.theme-assesi) .e-con:has(>.logo-slot__t){gap:0;display:grid;place-items:center;min-height:104px;
  padding:1.2rem 1rem;border:2px dashed rgba(2,0,68,.16);border-radius:var(--r-card);
  background:transparent;text-align:center}
:is(.theme-label,.theme-assesi) .e-con:has(>.logo-slot__t) .elementor-widget{margin-block-end:0;width:auto}
:is(.theme-label,.theme-assesi) .logo-slot__t{position:static;display:grid;justify-items:center}
:is(.theme-label,.theme-assesi) .logo-slot__t[class*="--ico-"]::before{width:24px;height:24px;
  color:var(--text-faint);margin-bottom:.5rem}
:is(.theme-label,.theme-assesi) .logo-slot__t .elementor-heading-title{font-family:var(--font-body);font-size:.78rem;
  font-weight:600;color:var(--text-faint);margin:0}

/* ---- Traegerzeile (Supported by) ---- */
:is(.theme-label,.theme-assesi) .traeger p{margin:1.8rem 0 0;font-size:.72rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-faint)}

/* ---- Badge (Verweis auf die Schwesterseite) ---- */
:is(.theme-label,.theme-assesi) .badge__t{position:static;width:auto}
:is(.theme-label,.theme-assesi) .badge__t .elementor-heading-title{display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-body);font-size:.8rem;font-weight:700;color:var(--ci-navy);
  background:var(--cta-bg);border-radius:var(--r-chip);padding:7px 14px;margin:1.2rem 0 0}
:is(.theme-label,.theme-assesi) .badge__t[class*="--ico-"]::before{position:absolute;width:0;height:0;overflow:hidden}

/* ---- Fragen und Antworten (natives accordion-Widget) ---- */
/* 60rem (960px) Deckel: Ueber die volle Rahmenbreite (1240px) wirkten die
   Klappzeilen wie Balken, und der Text darin stand gestaucht am linken
   Rand — Kundenbefund vom 07.08.2026. */
:is(.theme-label,.theme-assesi) .faq{width:100%;max-width:60rem}
:is(.theme-label,.theme-assesi) .faq .elementor-accordion-item{border:var(--card-border);border-radius:var(--r-card);
  background:#fff;box-shadow:var(--card-shadow);margin-bottom:12px;overflow:hidden}
/* Auf/Zu-Signal per CSS: Icon-Keys sind im Widget verboten (Handoff §6.7),
   ein Akkordeon ohne Indikator ist aber als Bedienelement nicht erkennbar —
   gerade hier, wo die Vertiefung bewusst hinter den Klappen liegt. */
:is(.theme-label,.theme-assesi) .faq .elementor-tab-title{position:relative;
  font-family:var(--font-display);font-weight:700;
  font-size:1rem;line-height:1.4;padding:1.15rem 3rem 1.15rem 1.7rem;cursor:pointer}
:is(.theme-label,.theme-assesi) .faq .elementor-tab-title a{color:var(--text-strong)}
:is(.theme-label,.theme-assesi) .faq .elementor-tab-title::after{content:'+';position:absolute;
  right:1.4rem;top:50%;transform:translateY(-50%);font-family:var(--font-body);font-weight:400;
  font-size:1.35rem;line-height:1;color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .faq .elementor-tab-title.elementor-active::after{content:'−'}
/* Lesebreite auch hier. Ohne sie lief die Antwort ueber die volle
   Rahmenbreite — im Abzug bis 156 Zeichen je Zeile, der hoechste Wert im
   ganzen Bestand. Ein Akkordeon verleitet dazu, das zu uebersehen: Man
   sieht die Zeilenlaenge erst nach dem Aufklappen. */
:is(.theme-label,.theme-assesi) .faq .elementor-tab-content{padding:0 1.7rem 1.4rem;font-size:.92rem;
  line-height:1.7;color:var(--text-soft);max-width:var(--lesebreite)}
:is(.theme-label,.theme-assesi) .faq .elementor-tab-content p{margin:0 0 .7rem}
:is(.theme-label,.theme-assesi) .faq .elementor-tab-content p:last-child{margin-bottom:0}

/* ---- Pflichtseiten: durchnummerierter Fliesstext ---- */
:is(.theme-label,.theme-assesi) .recht__h .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:1.05rem;line-height:1.35;color:var(--text-strong);margin:2.4rem 0 .7rem}
:is(.theme-label,.theme-assesi) .recht__t p{margin:0 0 .8rem;font-size:.94rem;line-height:1.75;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .recht__t p:last-child{margin-bottom:0}
:is(.theme-label,.theme-assesi) .recht__t a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
:is(.theme-label,.theme-assesi) .recht__t code{font-size:.86em;background:var(--surface-soft);border-radius:5px;padding:1px 5px}
/* Der Fliesstext bleibt lesbar schmal, die Ueberschriften ebenso. */
:is(.theme-label,.theme-assesi) .recht__h,:is(.theme-label,.theme-assesi) .recht__t{max-width:var(--lesebreite)}
/* Elementors Grundabstand zwischen Widgets (20px) legt sich sonst auf die
   Margins oben — der Abstand Ueberschrift/Text waere groesser als gedacht.
   `.elementor-widget` mit dazu, sonst gleiche Spezifitaet und die spaeter
   geladene Datei gewinnt. */
:is(.theme-label,.theme-assesi) .elementor-widget.recht__h,:is(.theme-label,.theme-assesi) .elementor-widget.recht__t{margin-block-end:0}

/* ============================================================
   THEMENSEITEN — Bausteine fuer laengere Inhaltsseiten

   Glossar, Presse, Newsletter, Netzwerk und die Themenseiten
   brauchen fuenf Formen, die es bisher nicht gab. Alles andere
   kommt aus dem vorhandenen Bestand.
   ============================================================ */

/* ---- Kennzahlen-Band auf Navy ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.e-con>.kpi__n){background:var(--ci-navy);border-radius:var(--r-card);
  padding:clamp(2rem,4vw,2.8rem) clamp(1.4rem,3vw,2.4rem)}
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.kpi__n){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:clamp(1.4rem,3vw,2.4rem)}
:is(.theme-label,.theme-assesi) .e-con:has(>.kpi__n){gap:0;text-align:center}
:is(.theme-label,.theme-assesi) .e-con:has(>.kpi__n) .elementor-widget:not(:last-child){margin-block-end:.35rem}
:is(.theme-label,.theme-assesi) .kpi__n .elementor-heading-title{font-family:var(--font-display);font-weight:600;
  letter-spacing:-.01em;line-height:1;font-size:clamp(1.7rem,1.3rem + 1.4vw,2.2rem);
  color:var(--cta-bg);margin:0}
:is(.theme-label,.theme-assesi) .kpi__d p{margin:0;font-size:.84rem;line-height:1.5;color:rgba(255,255,255,.72)}

/* ---- Zitatflaeche ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.zitat__t){gap:0;position:relative;background:#fff;
  border:var(--card-border);border-left:4px solid var(--cta-bg);border-radius:var(--r-card);
  box-shadow:var(--card-shadow);
  padding:clamp(1.6rem,3vw,2.2rem) clamp(1.6rem,3vw,2.4rem)}
:is(.theme-label,.theme-assesi) .e-con:has(>.zitat__t) .elementor-widget:not(:last-child){margin-block-end:0}
:is(.theme-label,.theme-assesi) .zitat__t{position:static}
:is(.theme-label,.theme-assesi) .zitat__t[class*="--ico-"]::before{width:26px;height:26px;color:var(--cta-bg);
  margin-bottom:.9rem}
:is(.theme-label,.theme-assesi) .zitat__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:clamp(1.05rem,.95rem + .5vw,1.28rem);line-height:1.5;letter-spacing:-.01em;
  color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .zitat__q p{margin:1rem 0 0;font-size:.82rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--accent-ink)}

/* ---- Glossar: Sprungleiste und Eintraege ---- */
/* Wie bei .fz__bar-r: mit optimierter DOM-Ausgabe fehlt der
   Widget-Container, die Links haengen direkt am Element. */
:is(.theme-label,.theme-assesi) .az-bar,
:is(.theme-label,.theme-assesi) .az-bar > .elementor-widget-container{display:flex;flex-wrap:wrap;gap:6px}
:is(.theme-label,.theme-assesi) .az-bar a{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 6px;
  border:1px solid var(--border);border-radius:var(--r-chip);background:#fff;
  font-family:var(--font-display);font-weight:700;font-size:.82rem;color:var(--accent-ink);
  transition:background var(--dur-base),color var(--dur-base)}
:is(.theme-label,.theme-assesi) .az-bar a:hover{background:var(--accent-ink);color:#fff}

:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.def-item__t){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
:is(.theme-label,.theme-assesi) .e-con:has(>.def-item__t){gap:0;background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:1.5rem 1.5rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.def-item__t) .elementor-widget:not(:last-child){margin-block-end:.5rem}
:is(.theme-label,.theme-assesi) .def-item__t .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1rem;line-height:1.3;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .def-item__d p{margin:0 0 .55rem;font-size:.88rem;line-height:1.65;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .def-item__d p:last-child{margin-bottom:0}
:is(.theme-label,.theme-assesi) .def-item__d a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}

/* ---- Material zum Herunterladen ---- */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.dl-item__t){display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
:is(.theme-label,.theme-assesi) .e-con:has(>.dl-item__t){gap:0;display:grid;grid-template-columns:auto 1fr;
  column-gap:16px;align-items:start;background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:1.4rem 1.5rem}
:is(.theme-label,.theme-assesi) .e-con:has(>.dl-item__t) .elementor-widget{margin-block-end:0}
:is(.theme-label,.theme-assesi) .dl-item__t{grid-column:2;position:static}
:is(.theme-label,.theme-assesi) .dl-item__t[class*="--ico-"]::before{position:absolute;left:1.5rem;top:1.5rem;
  width:22px;height:22px;color:var(--accent-ink);opacity:.75}
:is(.theme-label,.theme-assesi) .e-con:has(>.dl-item__t){position:relative;padding-left:calc(1.5rem + 22px + 16px)}
:is(.theme-label,.theme-assesi) .dl-item__t .elementor-heading-title{font-family:var(--font-display);font-weight:700;
  font-size:.98rem;line-height:1.35;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .dl-item__d{grid-column:2}
:is(.theme-label,.theme-assesi) .dl-item__d p{margin:.35rem 0 0;font-size:.8rem;line-height:1.5;color:var(--text-faint)}
:is(.theme-label,.theme-assesi) .dl-item__d a{color:var(--accent-ink);font-weight:600;
  text-decoration:underline;text-underline-offset:3px}

/* ---- Aufruf-Kasten fuer einen laufenden Prozess ----
   Steht in Sektion 7 der Startseite und weist auf die laufende
   Konsultation hin. Navy, weil die Sektion hell ist: ein weiterer
   heller Kasten ginge zwischen Zeitstrahl und Blog-Karten unter.

   Der Button traegt die Akzentvariante — Lime beim Siegel, Gold bei
   der Association. Beide sind auf Navy als FLAECHE zulaessig; die
   Schrift darauf ist Navy, nicht umgekehrt. */
:is(.theme-label,.theme-assesi) .e-con:has(>.aktion-box__label){display:block;
  background:var(--surface-invert);border-radius:var(--r-card);
  padding:clamp(1.5rem,3vw,2.1rem);margin-bottom:clamp(2rem,4vw,2.8rem)}
:is(.theme-label,.theme-assesi) .aktion-box__label{margin-block-end:0}
:is(.theme-label,.theme-assesi) .aktion-box__label .elementor-heading-title{font-family:var(--font-body);
  font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);margin:0}
:is(.theme-label,.theme-assesi) .aktion-box__label[class*="--ico-"]::before{display:inline-block;
  vertical-align:-3px;width:15px;height:15px;margin-right:7px;color:var(--accent)}
:is(.theme-label,.theme-assesi) .aktion-box__label > .elementor-widget-container{display:inline}
:is(.theme-label,.theme-assesi) .aktion-box__label > h6{display:inline}
:is(.theme-label,.theme-assesi) .aktion-box__t{margin-block-end:0}
:is(.theme-label,.theme-assesi) .aktion-box__t .elementor-heading-title{font-family:var(--font-display);
  font-weight:800;letter-spacing:-.02em;line-height:1.2;
  font-size:clamp(1.2rem,1rem + .9vw,1.55rem);color:var(--text-on-dark);margin:.55rem 0 0}
:is(.theme-label,.theme-assesi) .aktion-box__d p{margin:.5rem 0 0;font-size:.96rem;line-height:1.65;
  color:rgba(255,255,255,.8);max-width:68ch}

/* ============================================================
   KONSULTATIONSSEITE — /konsultation

   Derselbe Klassen-Vertrag wie ueberall: Marker am ERSTEN Widget der
   Komponente, Container ueber `:has(>.marker)`.

   Drei Bausteine kommen hier dazu. Sie sind bewusst nicht auf die
   Konsultation beschraenkt — eine Frist, eine Position und ein
   aufklappbarer Themenblock werden im Konsultationsprozess wieder
   gebraucht, und der Prozess laeuft in Runden.
   ============================================================ */

/* ---- Fristkasten ----
   Auffaellig, aber nicht alarmierend: Akzentkante und heller Grund
   statt Signalfarbe. Die Frist ist eine Einladung, keine Drohung. */
:is(.theme-label,.theme-assesi) .e-con:has(>.deadline__label){display:block;
  background:var(--surface-soft);border:1px solid var(--border);
  border-left:4px solid var(--accent-2);border-radius:var(--r-card);
  padding:1.2rem 1.5rem;margin-top:1.8rem}
:is(.theme-label,.theme-assesi) .deadline__label{margin-block-end:0}
:is(.theme-label,.theme-assesi) .deadline__label .elementor-heading-title{font-family:var(--font-body);
  font-size:.76rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-soft);margin:0}
:is(.theme-label,.theme-assesi) .deadline__d p{margin:.4rem 0 0;font-family:var(--font-display);
  font-weight:700;font-size:1.05rem;line-height:1.45;color:var(--text-strong)}

/* ---- Themenblock ----
   Nummer, Titel, Kurzfassung, optional die Position, dann das
   Akkordeon. Die Karte traegt den Rahmen; das Akkordeon darin nicht
   noch einmal, sonst stehen zwei Rahmen ineinander. */
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.topic__n){display:grid;gap:20px}
:is(.theme-label,.theme-assesi) .e-con:has(>.topic__n){display:block;background:#fff;
  border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:clamp(1.5rem,3vw,2.1rem)}
:is(.theme-label,.theme-assesi) .topic__n{margin-block-end:0}
:is(.theme-label,.theme-assesi) .topic__n .elementor-heading-title{display:inline-grid;place-items:center;
  min-width:34px;height:34px;border-radius:var(--r-chip);background:var(--surface-soft);
  border:1px solid var(--border);font-family:var(--font-display);font-weight:800;
  font-size:.8rem;color:var(--accent-ink);margin:0}
:is(.theme-label,.theme-assesi) .topic__h{margin-block-end:0}
:is(.theme-label,.theme-assesi) .topic__h .elementor-heading-title{font-family:var(--font-display);
  font-weight:800;letter-spacing:-.015em;font-size:1.15rem;line-height:1.3;
  color:var(--text-strong);margin:.7rem 0 0}
:is(.theme-label,.theme-assesi) .topic__kurz p{margin:.7rem 0 0;font-size:.98rem;line-height:1.7;
  color:var(--text-soft);max-width:var(--lesebreite)}
/* Das Akkordeon im Themenblock steht ohne eigene Karte — der Block ist
   schon eine. Nur die Trennlinie bleibt, damit die Klappzeile als
   Bedienelement lesbar ist.
   box-shadow, margin-bottom und max-width muessen hier AUSDRUECKLICH
   zurueck: das Widget traegt `faq topic__acc`, und der .faq-Grundzug gibt
   jedem Eintrag Karte, Schatten und 12px Abstand. Ohne die Gegenregeln
   schwebten in der Themenkarte rahmenlose Schattenkaesten uebereinander —
   Kundenbefund vom 07.08.2026 („Mehrfachschatten, schwer einzuordnen"). */
:is(.theme-label,.theme-assesi) .topic__acc{margin-top:1.3rem;max-width:none}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-accordion-item{background:transparent;border:0;
  border-top:1px solid var(--border);border-radius:0;box-shadow:none;margin-bottom:0;overflow:visible}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-accordion-item + .elementor-accordion-item{margin-top:0}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-title{position:relative;padding:.9rem 2.2rem .9rem 0;font-size:.94rem;
  color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-title a{color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-title.elementor-active{background:transparent}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-title::after{content:'+';position:absolute;
  right:.2rem;top:50%;transform:translateY(-50%);font-family:var(--font-body);font-weight:400;
  font-size:1.2rem;line-height:1;color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-title.elementor-active::after{content:'−'}
/* 34em statt --lesebreite: Der Klapptext setzt kleiner als der Fliesstext,
   und das rem-Mass ergaebe zu viele Zeichen je Zeile (gemessen 87 in der
   Literaturliste). em haelt die Zeichenzahl konstant — Regel siehe
   CLAUDE.md, „Lesebreite haengt an der Schriftgroesse". */
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-content{padding:0 0 1.2rem;max-width:34em}
:is(.theme-label,.theme-assesi) .topic__acc .elementor-tab-content li{font-size:.9rem;line-height:1.6;
  margin-bottom:.6rem}
:is(.theme-label,.theme-assesi) .topic__einladung p{margin:1.2rem 0 0;padding-top:1.1rem;
  border-top:1px solid var(--border);font-size:.94rem;line-height:1.65;
  color:var(--text-strong);max-width:var(--lesebreite)}

/* ---- Konsultationsformular ----
   Das Formular steht in einem warmen Band und braucht deshalb keine
   zweite helle Flaeche darunter — der weisse Grund genuegt, um es vom
   Band abzusetzen. Alles Uebrige (Felder, Beschriftungen,
   Pflichtmarkierung, Absendeknopf) traegt der Block
   „ELEMENTOR-WIDGETS IM CI" weiter unten; hier steht nur, was diesem
   einen Formular eigen ist. */
/* Das Formular nimmt die volle Rahmenbreite. Der 60rem-Deckel aus 0.42.0 ist
   wieder weg: Er stammte aus der Uebertragung der Akkordeon-Regel, und bei
   einem Fragebogen stimmt die Analogie nicht. Ein Akkordeon ist Lesestoff,
   ein Formular ist Bedienflaeche — dort schadet Breite nicht, sie gibt den
   Antwortknoepfen Platz. Kundenbefund vom 07.08.2026: „zu klein und winzig". */
:is(.theme-label,.theme-assesi) .konsult-form{margin-top:1.6rem}
/* Der Abstand zwischen den Feldgruppen kommt sonst aus Elementors eigenem
   Stylesheet und haengt an dessen Spaltenraster. Hier steht er ausdruecklich:
   Die Felder dieses Formulars laufen alle ueber die volle Breite, ein Raster
   mit einer Spalte trifft also genau zu — und der Abstand ist damit unser
   Wert, nicht Elementors. */
:is(.theme-label,.theme-assesi) .konsult-form .elementor-form-fields-wrapper{
  display:grid;grid-template-columns:1fr;gap:1.7rem 0}

/* Die Beschriftung traegt seit 0.42.0 die Entscheidung selbst — ein bis zwei
   Saetze statt drei Woertern. Sie ist damit die eigentliche Frage und setzt
   wie eine: groesser als eine Feldbeschriftung, in Navy, auf Lesebreite.
   40em statt 34em, und weiterhin em statt rem — die Zeichenzahl soll konstant
   bleiben, nicht die Breite (Regel siehe CLAUDE.md). */
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-label{
  font-family:var(--font-display);font-size:1.05rem;font-weight:700;line-height:1.45;
  color:var(--text-strong);max-width:40em;margin-bottom:.9rem}

/* Eingabefelder eine Stufe groesser als im Grundzug: Ein Fragebogen wird
   ausgefuellt, nicht ueberflogen. */
:is(.theme-label,.theme-assesi) .konsult-form :is(.elementor-field-textual,textarea,select){
  font-size:1rem;padding:13px 16px}
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-textarea textarea{min-height:10rem}

/* ---- Skalenfrage als Knopfreihe ----
   Fuenf nackte Radioknoepfe mit Kleinschrift daneben sind auf einer
   Konsultationsseite die schwaechste Form der Wahl: winzige Trefferflaeche,
   kein Zustand auf einen Blick. Stattdessen fuenf gleich breite Knoepfe, die
   die Zeile fuellen; der gewaehlte ist ausgefuellt.

   ZUM MARKUP: `div.elementor-field-group.elementor-field-type-<typ>` ist aus
   dem DOM-Abzug belegt (siehe Block „Formular" weiter unten). Was DARIN
   steht, ist es nicht — Elementor Pro rendert die Optionen ueblicherweise als
   `div.elementor-field-subgroup > span.elementor-field-option > input +
   label`. Diese Regeln haengen deshalb an keiner der inneren Klassen, sondern
   an der Struktur: der einzige Kind-Container der Gruppe, das `input` und das
   `label` daneben. Traegt eine Fassung das Label um das Input herum statt
   daneben, greift der zweite Selektor. Faellt beides aus, stehen wieder die
   Standard-Radioknoepfe da — sichtbar, bedienbar, nur unschoen. */
:is(.theme-label,.theme-assesi) .konsult-form :is(.elementor-field-type-radio,.elementor-field-type-checkbox) > div{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:10px;align-items:stretch}
:is(.theme-label,.theme-assesi) .konsult-form :is(.elementor-field-type-radio,.elementor-field-type-checkbox) > div > *{
  display:block;margin:0}
:is(.theme-label,.theme-assesi) .konsult-form :is(.elementor-field-type-radio,.elementor-field-type-checkbox) :is(input[type="radio"],input[type="checkbox"]){
  position:absolute;width:1px;height:1px;opacity:0;margin:0;pointer-events:none}
/* Variante A: Beschriftung NEBEN dem Eingabefeld (Elementors Regelfall). */
:is(.theme-label,.theme-assesi) .konsult-form :is(input[type="radio"],input[type="checkbox"]) + label,
/* Variante B: Beschriftung UM das Eingabefeld herum. */
:is(.theme-label,.theme-assesi) .konsult-form label:has(> :is(input[type="radio"],input[type="checkbox"])){
  display:flex;align-items:center;justify-content:center;text-align:center;height:100%;
  cursor:pointer;font-family:var(--font-body);font-size:.95rem;font-weight:600;
  color:var(--text-strong);background:#fff;border:1.5px solid var(--border-strong);
  border-radius:var(--r-btn);padding:14px 16px;
  transition:background var(--dur-base),border-color var(--dur-base),color var(--dur-base)}
:is(.theme-label,.theme-assesi) .konsult-form :is(input[type="radio"],input[type="checkbox"]) + label:hover,
:is(.theme-label,.theme-assesi) .konsult-form label:has(> :is(input[type="radio"],input[type="checkbox"])):hover{
  border-color:var(--accent-ink);background:var(--surface-soft)}
:is(.theme-label,.theme-assesi) .konsult-form :is(input[type="radio"],input[type="checkbox"]):checked + label,
:is(.theme-label,.theme-assesi) .konsult-form label:has(> :is(input[type="radio"],input[type="checkbox"]):checked){
  background:var(--ci-navy);border-color:var(--ci-navy);color:#fff}
:is(.theme-label,.theme-assesi) .konsult-form :is(input[type="radio"],input[type="checkbox"]):focus-visible + label,
:is(.theme-label,.theme-assesi) .konsult-form label:has(> :is(input[type="radio"],input[type="checkbox"]):focus-visible){
  outline:2px solid var(--focus-ring);outline-offset:2px}

/* Die Einwilligung ist KEINE Skalenfrage: eine einzelne Akzeptanzbox gehoert
   nicht als Knopf gesetzt, sondern als Kaestchen mit Text daneben. */
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance > div{display:block}
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance input[type="checkbox"]{
  position:static;width:1.1rem;height:1.1rem;opacity:1;pointer-events:auto;
  margin:.25rem .6rem 0 0;float:left}
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance input[type="checkbox"] + label,
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance label:has(> input[type="checkbox"]){
  display:block;text-align:left;height:auto;background:none;border:0;
  border-radius:0;padding:0;font-weight:400;font-size:.94rem;line-height:1.6;
  color:var(--text-body);overflow:hidden}
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance input[type="checkbox"]:checked + label,
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-type-acceptance label:has(> input[type="checkbox"]:checked){
  background:none;color:var(--text-body)}
:is(.theme-label,.theme-assesi) .konsult-form .elementor-form{background:#fff;
  border:var(--card-border);box-shadow:var(--card-shadow)}
/* Radio- und Auswahlgruppen: Elementor legt die Optionen als Liste ab.
   Die Klassennamen darunter sind noch nicht abgezogen — sobald das
   Formular importiert und ein Abzug gelaufen ist, laesst sich hier
   genauer werden. Bis dahin nur der Abstand, ueber Element-Selektoren. */
:is(.theme-label,.theme-assesi) .konsult-form .elementor-field-group label{line-height:1.5}

/* ---- Konsultationsband ueber der Kopfzeile ----
   Navy, damit es sich von der weissen Navigation darunter absetzt und
   nicht mit ihr verschwimmt. Befristet — der Schalter steht in
   scripts/build-kopf-fuss.mjs.

   Inhaltsbasiert wie alles andere: Container-Klassen ueberleben den
   Import nicht, der Marker sitzt am ersten Widget. */
/* Beide Wege: die Klasse fuer den Fall, dass sie doch ankommt, und
   inhaltsbasiert fuer den Regelfall, dass sie es nicht tut. Sie setzen
   dieselben Werte — kein Konflikt. */
:is(.theme-label,.theme-assesi) .kband,
:is(.theme-label,.theme-assesi) :is(.e-con,.e-con-inner):has(>.kband__t){background:var(--surface-invert);
  display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:8px 18px;padding:.7rem clamp(1rem,4vw,2.5rem)}
:is(.theme-label,.theme-assesi) .kband__t{margin-block-end:0;width:auto}
:is(.theme-label,.theme-assesi) .kband__t p{margin:0;font-size:.88rem;line-height:1.5;
  color:rgba(255,255,255,.86)}
:is(.theme-label,.theme-assesi) .kband__cta{margin-block-end:0;width:auto}
:is(.theme-label,.theme-assesi) .kband__cta .elementor-button{padding:7px 16px;font-size:.82rem;
  font-weight:700}

/* ---- Kontakt- und Newsletter-Formular ----
   Beide stehen auf hellem Grund und brauchen deshalb eine eigene
   Flaeche, um sich abzusetzen. Alles Uebrige — Felder, Beschriftungen,
   Pflichtmarkierung, Absendeknopf — traegt der Block
   „ELEMENTOR-WIDGETS IM CI" weiter unten.

   Das Newsletter-Formular ist schmaler: drei Felder brauchen keine
   volle Spaltenbreite, und ein kurzes Formular wirkt kuerzer, wenn es
   auch schmal ist. */
:is(.theme-label,.theme-assesi) :is(.kontakt-form,.newsletter-form){margin-top:1.6rem}
:is(.theme-label,.theme-assesi) :is(.kontakt-form,.newsletter-form) .elementor-form{background:#fff;
  border:var(--card-border);box-shadow:var(--card-shadow)}
:is(.theme-label,.theme-assesi) .newsletter-form{max-width:34rem}

/* ---- Positionskasten ----
   Nimmt das Ergebnis der Begruendung vorweg. Wer nur ueberfliegt, soll
   die Position trotzdem mitnehmen — deshalb steht er VOR dem Akkordeon
   und nicht darin. */
:is(.theme-label,.theme-assesi) .e-con:has(>.stance__label){display:block;background:var(--surface-soft);
  border-left:3px solid var(--accent-ink);border-radius:var(--r-card);
  padding:1rem 1.2rem;margin-top:1.2rem}
:is(.theme-label,.theme-assesi) .stance__label{margin-block-end:0}
:is(.theme-label,.theme-assesi) .stance__label .elementor-heading-title{font-family:var(--font-body);
  font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent-ink);margin:0}
:is(.theme-label,.theme-assesi) .stance__d p{margin:.35rem 0 0;font-size:.95rem;line-height:1.6;
  color:var(--text-strong)}

/* ============================================================
   ELEMENTOR-WIDGETS IM CI

   Diese Regeln gelten fuer Elementors eigene Widgets — ueberall,
   nicht nur im Katalog. Damit sehen price-table, alert, form und
   Verwandte nach ASSESI aus, wo immer sie eingesetzt werden.

   WOHER DIE KLASSENNAMEN STAMMEN
   Aus dem DOM-Abzug vom 4. August 2026: scripts/dom-widgets.js auf
   der Elementbibliothek in test.assesi-label.eu, 399 Widgets, 45
   Typen. Jeder Selektor unten steht so im Abzug. Nichts ist geraten.

   Die erste Fassung dieses Blocks arbeitete nur mit dem aeusseren
   Aufhaenger `.elementor-widget-<typ>` und Element-Selektoren, weil
   die inneren Klassen nicht belegt waren. Der Abzug hat davon fuenf
   Annahmen widerlegt:

     - `.elementor-widget-price-table >*` traf auch `.elementor-ribbon`
       und gab dem Eckband Kartenrahmen und Schatten.
     - `.elementor-widget-table-of-contents >*` traf Kopf UND Koerper
       und zeichnete zwei Kaesten uebereinander.
     - Die Meldung hat keine Ueberschrift, sondern
       `span.elementor-alert-title`. Die Kicker-Regel lief ins Leere.
     - Die Stimme hat kein `blockquote`, sondern
       `div.elementor-testimonial-content`. Sie blieb ungestaltet.
     - `.elementor-widget-nested-carousel` gibt es nicht; der Typ
       heisst `n-carousel`.

   SPEZIFITAET
   Die Regeln haengen an der INNEREN Klasse, nicht am Widget-Typ:
   `:is(.theme-label,.theme-assesi) .elementor-tab-title` ergibt (0,2,0).
   Unsere eigenen Komponenten stehen bei (0,3,0) — `.faq
   .elementor-tab-title` gewinnt also weiter, obwohl es weiter oben
   steht. Der Widget-Typ kommt nur dazu, wo die innere Klasse allein
   nicht eindeutig ist.

   KONTRASTREGEL
   Lime und Gold sind Flaechenfarben. Als Schrift- oder Symbolfarbe
   steht ueberall `--accent-ink` (in beiden Marken EU-Blau).
   ============================================================ */

/* ---- Grundzug: Schrift und Farbe erben ----
   Der Element-Teil steht in `:where()`, damit er NICHTS zur
   Spezifitaet beitraegt: die Regeln bleiben bei (0,2,0). Sonst
   stuenden sie bei (0,2,1) und schlaegen jede benannte Regel weiter
   unten — im Test war `.elementor-price-table__heading` deshalb 700
   statt 800 fett, und dasselbe galt fuer die Titel von CTA,
   Bildkachel, Inhaltsverzeichnis, Sitemap und animierter
   Ueberschrift. Mit `:where()` gewinnt die spaetere, genauere Regel;
   unsere eigenen Komponenten bei (0,3,0) gewinnen weiterhin. */
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"]{font-family:var(--font-body);color:var(--text-body)}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :where(h1,h2,h3,h4,h5,h6){font-family:var(--font-display);
  font-weight:700;letter-spacing:-.015em;line-height:1.3;color:var(--text-strong)}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :where(a){color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :where(p,li){line-height:1.7}

/* ---- Bedienelemente: Eingaben und Knoepfe ----
   Die vier nackten `input` direkt unter `form.elementor-form` sind
   Elementors versteckte Felder (Formular-ID, Referrer). Die
   Typ-Aufzaehlung schliesst sie aus, `input[type=hidden]` faellt
   nicht darunter. */
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :is(input[type="text"],input[type="email"],
  input[type="tel"],input[type="url"],input[type="search"],input[type="password"],
  input[type="number"],input[type="date"],textarea,select){
  font-family:var(--font-body);font-size:.94rem;line-height:1.5;color:var(--text-strong);
  background:#fff;border:1px solid var(--border-strong);border-radius:var(--r-field);
  padding:11px 14px;width:100%}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :is(input,textarea,select):focus-visible{
  outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] ::placeholder{color:var(--text-faint);opacity:1}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] :is(button,input[type="submit"]):not(.elementor-button):not(.elementor-alert-dismiss):not(.e-n-tab-title):not(.e-n-menu-toggle){
  font-family:var(--font-body);font-weight:700;font-size:.9rem;
  background:var(--ci-navy);color:#fff;border:0;border-radius:var(--r-btn);
  padding:12px 22px;cursor:pointer}
:is(.theme-label,.theme-assesi) [class*="elementor-widget-"] label{font-family:var(--font-body);font-size:.82rem;
  font-weight:600;color:var(--text-soft)}

/* ---- Meldung (alert) ----
   Abzug: `div.elementor-alert` > `span.elementor-alert-title` +
   `span.elementor-alert-description` + `button.elementor-alert-dismiss`.
   Der Widget-Wrapper traegt den Typ, hier `elementor-alert-info`.
   Die drei uebrigen Typen (success, warning, danger) standen nicht im
   Abzug und bekommen deshalb keine eigene Regel — sie erben die
   neutrale Fassung. Sobald eine Meldung dieses Typs auf einer Seite
   steht, gehoert die Variante hier ergaenzt. */
:is(.theme-label,.theme-assesi) .elementor-alert{position:relative;
  background:var(--surface-soft);border:1px solid var(--border);
  border-left:4px solid var(--accent-2);border-radius:var(--r-card);
  padding:1.05rem 3rem 1.05rem 1.3rem;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-alert-title{display:block;font-family:var(--font-display);
  font-weight:800;font-size:.97rem;line-height:1.35;color:var(--text-strong);margin-bottom:.3rem}
:is(.theme-label,.theme-assesi) .elementor-alert-description{display:block;font-size:.9rem;line-height:1.65;
  color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-alert-dismiss{position:absolute;top:.55rem;right:.7rem;
  background:none;border:0;padding:.25rem .45rem;line-height:1;cursor:pointer;
  font-size:1.15rem;color:var(--text-faint)}
:is(.theme-label,.theme-assesi) .elementor-alert-dismiss:hover{color:var(--text-strong)}

/* ---- Zitat (blockquote) ----
   Abzug: `blockquote.elementor-blockquote` > `p.elementor-blockquote__content`
   + `div.e-q-footer` > `cite.elementor-blockquote__author`
   + `a.elementor-blockquote__tweet-button`. */
:is(.theme-label,.theme-assesi) .elementor-blockquote{background:var(--surface-soft);
  border-left:4px solid var(--cta-bg);border-radius:var(--r-card);
  padding:clamp(1.4rem,3vw,2rem);margin:0}
:is(.theme-label,.theme-assesi) .elementor-blockquote__content{font-family:var(--font-display);font-weight:700;
  font-size:1.08rem;line-height:1.55;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .e-q-footer{display:flex;align-items:center;justify-content:space-between;
  gap:1rem;margin-top:1rem}
:is(.theme-label,.theme-assesi) .elementor-blockquote__author{font-family:var(--font-body);font-style:normal;
  font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .elementor-blockquote__tweet-button{border-radius:var(--r-btn)}

/* ---- Stimme (testimonial) ----
   Abzug: `div.elementor-testimonial-wrapper` > `div.elementor-testimonial-content`
   + `div.elementor-testimonial-meta` > `div.elementor-testimonial-meta-inner`.
   Kein `blockquote`, kein `cite` — die erste Fassung ging ins Leere. */
:is(.theme-label,.theme-assesi) .elementor-testimonial-wrapper{background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);padding:clamp(1.4rem,3vw,1.9rem)}
:is(.theme-label,.theme-assesi) .elementor-testimonial-content{font-family:var(--font-display);font-weight:700;
  font-size:1.02rem;line-height:1.55;color:var(--text-strong)}
:is(.theme-label,.theme-assesi) .elementor-testimonial-meta{margin-top:1.1rem;padding-top:1rem;
  border-top:1px solid var(--border)}
/* Abzug (Tiefe 5): `__meta-inner` > `__image` (mit `img`) und
   `__details` > `__name` + `__job`. Das Bild wird rund — dieselbe
   Behandlung wie bei den Personen auf /team. */
:is(.theme-label,.theme-assesi) .elementor-testimonial-meta-inner{display:flex;align-items:center;gap:12px}
:is(.theme-label,.theme-assesi) .elementor-testimonial-image img{display:block;width:44px;height:44px;
  border-radius:999px;object-fit:cover}
:is(.theme-label,.theme-assesi) .elementor-testimonial-name{font-family:var(--font-body);font-style:normal;
  font-size:.86rem;font-weight:700;line-height:1.35;color:var(--text-strong)}
:is(.theme-label,.theme-assesi) .elementor-testimonial-job{font-family:var(--font-body);font-size:.78rem;
  letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink)}

/* ---- Aufruf (call-to-action) ----
   Abzug: `div.elementor-cta` > `__bg-wrapper` (mit `__bg` und
   `__bg-overlay`) + `__content` (mit `__title`, `__description`,
   `__button-wrapper`). `__content` bleibt bewusst ohne flex/grid:
   Elementor legt dort ein leeres `span.elementor-menu-anchor` ab,
   das als Flex-Kind eine Luecke erzeugen wuerde. */
:is(.theme-label,.theme-assesi) .elementor-cta{border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-cta__content{padding:clamp(1.6rem,4vw,2.6rem)}
:is(.theme-label,.theme-assesi) .elementor-cta__title{font-family:var(--font-display);font-weight:800;
  letter-spacing:-.02em;font-size:clamp(1.2rem,1rem + 1vw,1.6rem);line-height:1.2;margin:0}
:is(.theme-label,.theme-assesi) .elementor-cta__description{margin-top:.6rem;font-size:.95rem;line-height:1.65;
  color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-cta__button-wrapper{margin-top:1.2rem}

/* ---- Wendekachel (flip-box) ----
   Abzug (Tiefe 5): `div.elementor-flip-box` > zwei `__layer`
   (`__front`, `__back`) > `__layer__overlay` > `__layer__inner` >
   Symbol, `h3.__layer__title`, `div.__layer__description` und auf
   der Rueckseite `a.__layer__button`. Das Polster gehoert auf
   `__inner`, nicht auf `__overlay` — dort liegt der Inhalt. */
:is(.theme-label,.theme-assesi) .elementor-flip-box__layer{border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-flip-box__layer__inner{padding:clamp(1.3rem,3vw,1.9rem)}
:is(.theme-label,.theme-assesi) .elementor-flip-box__layer__title{font-family:var(--font-display);font-weight:800;
  font-size:1.05rem;line-height:1.3;margin:.6rem 0 0}
:is(.theme-label,.theme-assesi) .elementor-flip-box__layer__description{margin-top:.45rem;font-size:.92rem;
  line-height:1.6}
:is(.theme-label,.theme-assesi) .elementor-flip-box__button{margin-top:1.1rem;border-radius:var(--r-btn)}

/* ---- Symbolkachel und Bildkachel ----
   Abzug: `__wrapper` > `__icon`/`__img` + `__content` > `__title`
   + `__description`. Schriftgroessen fuer icon-box stehen weiter
   oben im Block „Elementor-Widget-Defaults". */
:is(.theme-label,.theme-assesi) :is(.elementor-icon-box-wrapper,.elementor-image-box-wrapper){background:#fff;
  border:var(--card-border);border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:1.7rem 1.6rem;overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-image-box-wrapper{padding:0}
:is(.theme-label,.theme-assesi) .elementor-image-box-img img{display:block;width:100%;height:auto}
:is(.theme-label,.theme-assesi) .elementor-image-box-content{padding:1.5rem 1.6rem 1.7rem}
:is(.theme-label,.theme-assesi) .elementor-image-box-title{font-family:var(--font-display);font-weight:700;
  font-size:1rem;line-height:1.3;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .elementor-image-box-description{margin:.5rem 0 0;font-size:.9rem;line-height:1.6;
  color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-icon-box-icon .elementor-icon{color:var(--accent-ink)}

/* ---- Symbolliste ----
   Abzug: `ul.elementor-icon-list-items` > `li.elementor-icon-list-item`
   > `span.elementor-icon-list-icon` + `span.elementor-icon-list-text`. */
:is(.theme-label,.theme-assesi) .elementor-icon-list-items{list-style:none;margin:0;padding:0}
:is(.theme-label,.theme-assesi) .elementor-icon-list-item{padding:7px 0;font-size:.92rem;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-icon-list-icon{color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .elementor-icon-list-text{color:var(--text-soft)}

/* ---- Zaehler ----
   Abzug: `div.elementor-counter` > `__title` + `__number-wrapper`
   mit `__number-prefix`, `__number`, `__number-suffix`. Die drei
   Zahlenteile stehen nebeneinander, deshalb Flex auf dem Wrapper. */
:is(.theme-label,.theme-assesi) .elementor-counter-title{font-family:var(--font-body);font-size:.78rem;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-counter-number-wrapper{display:flex;align-items:baseline;
  gap:.1rem;font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;
  font-size:clamp(2rem,1.6rem + 1.6vw,2.8rem);line-height:1.05;color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) :is(.elementor-counter-number-prefix,.elementor-counter-number-suffix){
  font-size:.55em}

/* ---- Fortschritt ----
   Abzug: `span.elementor-title` + `div.elementor-progress-wrapper`
   > `div.elementor-progress-bar` > `span.elementor-progress-text`
   + `span.elementor-progress-percentage`. */
:is(.theme-label,.theme-assesi) .elementor-widget-progress .elementor-title{display:block;margin-bottom:.5rem;
  font-family:var(--font-body);font-size:.78rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-progress-wrapper{background:var(--surface-soft);
  border:1px solid var(--border);border-radius:var(--r-chip);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-progress-bar{background:var(--accent-ink);border-radius:var(--r-chip)}
:is(.theme-label,.theme-assesi) :is(.elementor-progress-text,.elementor-progress-percentage){
  font-family:var(--font-body);font-size:.8rem;font-weight:700;color:#fff}

/* ---- Bewertung ----
   Abzug: `div.e-rating` > zwei `meta` + `div.e-rating-wrapper`
   > fuenf `div.e-icon`. Blau statt Gold: die Sterne sind Symbole,
   und fuer Symbole gilt dieselbe Wahl wie ueberall im Projekt. */
:is(.theme-label,.theme-assesi) .e-rating-wrapper{color:var(--accent-ink)}

/* ---- Preistabelle ----
   Abzug: `div.elementor-price-table` mit `__header` (`__heading`,
   `__subheading`), `__price` (`__currency`, `__integer-part`,
   `__period`), `ul.__features-list` mit `li.elementor-repeater-item-*`,
   `__footer` (`a.__button`, `__additional_info`).
   `div.elementor-ribbon` ist ein GESCHWISTER der Tabelle, kein Kind —
   die alte Regel `>*` hat es mit Kartenrahmen und Schatten belegt. */
:is(.theme-label,.theme-assesi) .elementor-price-table{background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-price-table__header{background:var(--surface-soft);
  padding:1.5rem 1.6rem 1.2rem;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .elementor-price-table__heading{font-family:var(--font-display);font-weight:800;
  font-size:1.1rem;line-height:1.3;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .elementor-price-table__subheading{display:block;margin-top:.35rem;
  font-size:.86rem;line-height:1.5;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-price-table__price{display:flex;flex-wrap:wrap;align-items:baseline;
  justify-content:center;gap:.12rem;padding:1.6rem 1.6rem 1.1rem;
  font-family:var(--font-display);color:var(--text-strong)}
:is(.theme-label,.theme-assesi) .elementor-price-table__currency{font-size:1.15rem;font-weight:700;
  color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-price-table__integer-part{font-size:2.4rem;font-weight:800;
  letter-spacing:-.03em;line-height:1}
:is(.theme-label,.theme-assesi) .elementor-price-table__period{flex:0 0 100%;text-align:center;margin-top:.4rem;
  font-family:var(--font-body);font-size:.76rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .elementor-price-table__features-list{list-style:none;margin:0;padding:0 1.6rem}
:is(.theme-label,.theme-assesi) .elementor-price-table__features-list li{padding:.62rem 0;font-size:.92rem;
  line-height:1.55;color:var(--text-soft);border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .elementor-price-table__features-list li:last-child{border-bottom:0}
/* Abzug (Tiefe 5): der Text steckt in `div.__feature-inner > span`. */
:is(.theme-label,.theme-assesi) .elementor-price-table__feature-inner{display:block}
:is(.theme-label,.theme-assesi) .elementor-price-table__footer{padding:1.3rem 1.6rem 1.6rem}
:is(.theme-label,.theme-assesi) .elementor-price-table__button{background:var(--cta-bg);color:var(--ci-navy);
  border-radius:var(--r-btn);font-family:var(--font-body);font-weight:700}
:is(.theme-label,.theme-assesi) .elementor-price-table__additional_info{margin-top:.9rem;font-size:.8rem;
  line-height:1.6;color:var(--text-faint)}
:is(.theme-label,.theme-assesi) .elementor-ribbon-inner{background:var(--cta-bg);color:var(--ci-navy);
  font-family:var(--font-body);font-weight:700;font-size:.7rem;letter-spacing:.09em;
  text-transform:uppercase}

/* ---- Preisliste ----
   Abzug: `ul.elementor-price-list` > `li` > `a.elementor-price-list-item`. */
:is(.theme-label,.theme-assesi) .elementor-price-list{list-style:none;margin:0;padding:0}
:is(.theme-label,.theme-assesi) .elementor-price-list > li{border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .elementor-price-list > li:last-child{border-bottom:0}
:is(.theme-label,.theme-assesi) .elementor-price-list-item{display:block;padding:1.1rem 0;
  color:var(--text-strong);text-decoration:none}

/* ---- Akkordeon, klassisch ----
   Abzug: `div.elementor-accordion` > `div.elementor-accordion-item`
   > `div.elementor-tab-title` (offen zusaetzlich `.elementor-active`)
   + `div.elementor-tab-content.elementor-clearfix`.
   Bewusst bei (0,2,0): `.faq …` weiter oben steht bei (0,3,0) und
   behaelt damit die Oberhand. */
:is(.theme-label,.theme-assesi) .elementor-accordion-item{background:#fff;border:var(--card-border);
  border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-accordion-item + .elementor-accordion-item{margin-top:10px}
:is(.theme-label,.theme-assesi) .elementor-tab-title{padding:1rem 1.4rem;font-family:var(--font-display);
  font-weight:700;font-size:1rem;line-height:1.4;color:var(--text-strong);cursor:pointer}
:is(.theme-label,.theme-assesi) .elementor-tab-title.elementor-active{background:var(--surface-soft)}
:is(.theme-label,.theme-assesi) .elementor-tab-content{padding:0 1.4rem 1.3rem;font-size:.94rem;line-height:1.65;
  color:var(--text-soft)}

/* ---- Akkordeon, verschachtelt (n-accordion) ----
   Abzug: `div.e-n-accordion` > `details.e-n-accordion-item`
   > `summary.e-n-accordion-item-title` + Container `.e-con`.
   Natives `details`/`summary` — der Marker muss weg, sonst steht
   das Browser-Dreieck neben unserem Symbol. */
:is(.theme-label,.theme-assesi) .e-n-accordion-item{background:#fff;border:var(--card-border);
  border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .e-n-accordion-item + .e-n-accordion-item{margin-top:10px}
:is(.theme-label,.theme-assesi) .e-n-accordion-item-title{padding:1rem 1.4rem;font-family:var(--font-display);
  font-weight:700;font-size:1rem;line-height:1.4;color:var(--text-strong);cursor:pointer;
  list-style:none}
:is(.theme-label,.theme-assesi) .e-n-accordion-item-title::-webkit-details-marker{display:none}
:is(.theme-label,.theme-assesi) .e-n-accordion-item[open] .e-n-accordion-item-title{background:var(--surface-soft)}

/* ---- Reiter, verschachtelt (n-tabs) ----
   Abzug: `div.e-n-tabs` > `div.e-n-tabs-heading` mit
   `button.e-n-tab-title` + `div.e-n-tabs-content`. Der aktive
   Reiter traegt `aria-selected="true"` — das ist der belastbare
   Zustandsanker, Elementor setzt keine eigene Klasse darauf. */
:is(.theme-label,.theme-assesi) .e-n-tabs-heading{gap:6px;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .e-n-tab-title{padding:.7rem 1.1rem;background:none;border:0;cursor:pointer;
  font-family:var(--font-body);font-size:.9rem;font-weight:700;color:var(--text-soft);
  border-bottom:2px solid transparent}
:is(.theme-label,.theme-assesi) .e-n-tab-title[aria-selected="true"]{color:var(--text-strong);
  border-bottom-color:var(--accent-2)}
:is(.theme-label,.theme-assesi) .e-n-tabs-content{padding-top:1.2rem}

/* ---- Inhaltsverzeichnis ----
   Abzug: `div.elementor-toc__header` (mit `__header-title` und zwei
   `__toggle-button`) und `div.elementor-toc__body` sind GESCHWISTER.
   Die alte Regel `>*` hat beide einzeln gerahmt — zwei Kaesten
   uebereinander. Jetzt rahmt der Widget-Wrapper. */
:is(.theme-label,.theme-assesi) .elementor-widget-table-of-contents{
  background:var(--surface-soft);border:1px solid var(--border);
  border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .elementor-toc__header{display:flex;align-items:center;justify-content:space-between;
  gap:1rem;padding:.95rem 1.4rem;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .elementor-toc__header-title{font-family:var(--font-body);font-size:.78rem;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);margin:0}
:is(.theme-label,.theme-assesi) .elementor-toc__toggle-button{color:var(--accent-ink);cursor:pointer}
:is(.theme-label,.theme-assesi) .elementor-toc__body{padding:1rem 1.4rem 1.2rem}
:is(.theme-label,.theme-assesi) .elementor-toc__list-wrapper{padding-left:1.1rem;margin:0}
:is(.theme-label,.theme-assesi) .elementor-toc__list-item{font-size:.9rem;padding:3px 0}
/* Abzug (Tiefe 5): `li.__list-item` > `div.__list-item-text-wrapper`
   > `a.__list-item-text`, oberste Ebene zusaetzlich `__top-level`,
   der gerade sichtbare Abschnitt `.elementor-item-active`. */
:is(.theme-label,.theme-assesi) .elementor-toc__list-item-text{color:var(--text-soft);text-decoration:none}
:is(.theme-label,.theme-assesi) .elementor-toc__list-item-text:hover{color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .elementor-toc__top-level{font-weight:600}
:is(.theme-label,.theme-assesi) .elementor-toc__list-item-text.elementor-item-active{color:var(--text-strong);
  font-weight:700}

/* ---- Schieber: gemeinsame Bedienelemente ----
   Vier Widgets teilen sich dieselbe Swiper-Struktur — slides,
   n-carousel, testimonial-carousel, reviews. Der Abzug zeigt bei
   allen vieren `div.elementor-swiper-button-prev/-next` und
   `span.swiper-pagination-bullet(.swiper-pagination-bullet-active)`.
   Eine Regelgruppe genuegt. */
:is(.theme-label,.theme-assesi) .elementor-swiper-button{display:grid;place-items:center;width:38px;height:38px;
  border-radius:999px;background:rgba(255,255,255,.92);color:var(--ci-navy);
  box-shadow:var(--shadow-md);cursor:pointer}
:is(.theme-label,.theme-assesi) .swiper-pagination-bullet{width:8px;height:8px;background:var(--border-strong);
  opacity:1}
:is(.theme-label,.theme-assesi) .swiper-pagination-bullet-active{background:var(--accent-ink);width:20px;
  border-radius:999px}
:is(.theme-label,.theme-assesi) .elementor-slides-wrapper{border-radius:var(--r-card);overflow:hidden}

/* ---- Formular ----
   Abzug: `form.elementor-form` > vier versteckte `input` +
   `div.elementor-form-fields-wrapper.elementor-labels-above` mit je
   `div.elementor-field-group.elementor-field-type-<typ>` (Pflichtfeld
   zusaetzlich `.elementor-field-required`) und
   `div.e-form__buttons` fuer den Absenden-Knopf. */
:is(.theme-label,.theme-assesi) .elementor-form{background:var(--surface-soft);border:1px solid var(--border);
  border-radius:var(--r-card);padding:clamp(1.4rem,3vw,2rem)}
:is(.theme-label,.theme-assesi) .elementor-form-fields-wrapper{gap:1rem 0}
/* Abzug (Tiefe 5): `label.elementor-field-label` und
   `input|textarea.elementor-field.elementor-field-textual`. Damit
   greift eine Regel statt der Typaufzaehlung — auch fuer `select`. */
:is(.theme-label,.theme-assesi) .elementor-field-label{display:block;margin-bottom:.35rem}
:is(.theme-label,.theme-assesi) .elementor-field-textual{font-family:var(--font-body);font-size:.94rem;
  line-height:1.5;color:var(--text-strong);background:#fff;
  border:1px solid var(--border-strong);border-radius:var(--r-field);
  padding:11px 14px;width:100%}
:is(.theme-label,.theme-assesi) .elementor-field-required > label::after{content:" *";color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .elementor-field-type-textarea textarea{min-height:8rem;resize:vertical}
:is(.theme-label,.theme-assesi) .e-form__buttons{margin-top:.4rem}
/* Der Absendeknopf nimmt sonst Elementors Kit-Akzent — und der ist in
   beiden Marken Gold, weil das Theme die CI-Farben in den Kit schreibt.
   Auf assesi-label.eu muss er aber Lime sein. Belegt am Abzug:
   `div.e-form__buttons > button.elementor-button`. */
:is(.theme-label,.theme-assesi) .e-form__buttons .elementor-button{background:var(--cta-bg);
  color:var(--ci-navy);border:0;border-radius:var(--r-btn);font-family:var(--font-body);
  font-weight:700}

/* ---- Anmeldung und Suche ----
   Abzug: `div.elementor-login` (angemeldet zusaetzlich
   `.elementor-login__logged-in-message`) und
   `search.e-search` > `form.e-search-form` > `label.e-search-label`
   + `div.e-search-input-wrapper` + `button.e-search-submit`. */
:is(.theme-label,.theme-assesi) .elementor-login{background:var(--surface-soft);border:1px solid var(--border);
  border-radius:var(--r-card);padding:clamp(1.4rem,3vw,2rem)}
:is(.theme-label,.theme-assesi) .e-search-form{display:flex;align-items:center;gap:8px}
:is(.theme-label,.theme-assesi) .e-search-input-wrapper{flex:1 1 auto}
:is(.theme-label,.theme-assesi) .e-search-input-wrapper input{border-radius:var(--r-btn)}
:is(.theme-label,.theme-assesi) .e-search-submit{flex:none;border-radius:var(--r-btn)}

/* ---- Soziale Symbole und Teilen ----
   Abzug: `div.elementor-social-icons-wrapper.elementor-grid` >
   `span.elementor-grid-item` > `a.elementor-icon.elementor-social-icon`.
   Beim Teilen: `div.elementor-grid-item` > `div.elementor-share-btn`. */
:is(.theme-label,.theme-assesi) .elementor-social-icon{border-radius:var(--r-chip)}
:is(.theme-label,.theme-assesi) .elementor-share-btn{border-radius:var(--r-chip);font-family:var(--font-body);
  font-weight:600}

/* ---- Trenner und Abstandhalter ----
   Abzug: `div.elementor-divider` > `span.elementor-divider-separator`
   und `div.elementor-spacer` > `div.elementor-spacer-inner`. */
:is(.theme-label,.theme-assesi) .elementor-divider-separator{border-top-color:var(--border)}

/* ---- Code ----
   Abzug: `div.prismjs-default.copy-to-clipboard` > `div.code-toolbar`
   > `pre.highlight-height.line-numbers.language-*` + `div.toolbar`.
   Nur Rahmen und Groesse — die Farben gehoeren Prism. */
:is(.theme-label,.theme-assesi) .code-toolbar pre{font-size:.84rem;line-height:1.6;border-radius:var(--r-card)}

/* ---- Sitemap ----
   Abzug: `div.elementor-sitemap-wrap` > `div.elementor-sitemap-section`
   > `h2.elementor-sitemap-title` + `ul.elementor-sitemap-list`. */
:is(.theme-label,.theme-assesi) .elementor-sitemap-title{font-family:var(--font-body);font-size:.78rem;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);
  margin:0 0 .5rem}
:is(.theme-label,.theme-assesi) .elementor-sitemap-list{list-style:none;margin:0;padding:0}
:is(.theme-label,.theme-assesi) .elementor-sitemap-list li{padding:3px 0;font-size:.92rem}
:is(.theme-label,.theme-assesi) .elementor-sitemap-section + .elementor-sitemap-section{margin-top:1.5rem}

/* ---- Lesefortschritt ----
   Abzug: `div.elementor-scrolling-tracker` > `div.current-progress`
   > `div.current-progress-percentage`. */
:is(.theme-label,.theme-assesi) .elementor-scrolling-tracker{background:var(--surface-soft)}
:is(.theme-label,.theme-assesi) .current-progress{background:var(--accent-2)}

/* ---- Animierte Ueberschrift ----
   Abzug: `h3.elementor-headline` > `span.elementor-headline-plain-text`
   + `span.elementor-headline-dynamic-wrapper` >
   `span.elementor-headline-dynamic-text.elementor-headline-text-active`.
   Der Wrapper traegt die Stilvariante, hier `--style-highlight`. */
:is(.theme-label,.theme-assesi) .elementor-headline{font-family:var(--font-display);font-weight:800;
  letter-spacing:-.02em;line-height:1.2;color:var(--text-strong)}
:is(.theme-label,.theme-assesi) .elementor-headline-dynamic-text{color:var(--accent-ink)}

/* ---- Textpfad ----
   Abzug: `div.e-text-path`. Das SVG darunter faerbt sich ueber
   `currentColor`. */
:is(.theme-label,.theme-assesi) .e-text-path{font-family:var(--font-display);color:var(--accent-ink)}

/* ---- Menue, verschachtelt (n-menu) ----
   Abzug: `nav.e-n-menu` > `button.e-n-menu-toggle` (mit `.e-open`
   und `.e-close`) + `div.e-n-menu-wrapper` > `ul.e-n-menu-heading`. */
:is(.theme-label,.theme-assesi) .e-n-menu-heading{font-family:var(--font-body);font-weight:600;font-size:.92rem}
:is(.theme-label,.theme-assesi) .e-n-menu-toggle{background:none;border:0;color:var(--text-strong);cursor:pointer}

/* ---- Link in Bio ----
   Abzug: `div.e-link-in-bio` > `__content` (`__identity`, `__bio`,
   `__icons`, `__ctas`) + `__bg` (`__bg-overlay`). */
:is(.theme-label,.theme-assesi) .e-link-in-bio{border-radius:var(--r-card);overflow:hidden}
:is(.theme-label,.theme-assesi) .e-link-in-bio__bio{font-size:.94rem;line-height:1.65}

/* ---- Eingebettete Medien ----
   Abzug: Video `div.elementor-wrapper.elementor-open-inline`,
   Karte `div.elementor-custom-embed`, beide mit iframe darunter.
   Beide laden Drittanbieter beim Seitenaufbau — vor dem Live-Gang
   gehoeren sie hinter die Einwilligung. */
:is(.theme-label,.theme-assesi) :is(.elementor-wrapper,.elementor-custom-embed) iframe{
  display:block;width:100%;aspect-ratio:16/9;height:auto;border:0;
  border-radius:var(--r-card)}
:is(.theme-label,.theme-assesi) .elementor-custom-embed{border-radius:var(--r-card);overflow:hidden}

/* ---- Video-Wiedergabeliste ----
   Abzug: `div.e-tabs` > `div.e-tabs-main-area` (`e-tabs-wrapper`,
   `e-tabs-content-wrapper`) + `div.e-tabs-inner-tabs`. */
:is(.theme-label,.theme-assesi) .e-tabs{border:var(--card-border);border-radius:var(--r-card);overflow:hidden}

/* ---- Titel-Widgets ----
   Abzug: theme-page-title und theme-post-title tragen beide den
   Wrapper `elementor-page-title` mit `h1.elementor-heading-title`;
   theme-site-title liefert `h2` mit einem `a` darin. */
:is(.theme-label,.theme-assesi) .elementor-page-title .elementor-heading-title{font-family:var(--font-display);
  font-weight:800;letter-spacing:-.025em;line-height:1.1;
  font-size:clamp(1.875rem,1.4rem + 2vw,2.5rem);color:var(--text-strong)}

/* ============================================================
   FEINSTRUKTUR — aus dem zweiten Abzug (Tiefe 5)

   Der erste Abzug reichte bis Ebene 3 und endete damit genau dort,
   wo die Fremd-Widgets ihren Inhalt ablegen. Der zweite reicht bis 5
   und zeigt die Innenteile: Beschriftungen, Symbolhuellen, Zustaende.
   Auch hier steht jeder Selektor so im Abzug.
   ============================================================ */

/* ---- Aufruf: der Knopf traegt eine eigene Klasse ---- */
:is(.theme-label,.theme-assesi) .elementor-cta__button{border-radius:var(--r-btn)}

/* ---- Zitat: die Beschriftung des Teilen-Knopfs ---- */
:is(.theme-label,.theme-assesi) .elementor-blockquote__tweet-label{font-family:var(--font-body);font-size:.78rem;
  font-weight:700}

/* ---- Bewertung: gefuellte und leere Sterne trennen ----
   Abzug: `div.e-icon` > `.e-icon-wrapper.e-icon-marked` und
   `.e-icon-wrapper.e-icon-unmarked` liegen uebereinander. */
:is(.theme-label,.theme-assesi) .e-icon-marked{color:var(--accent-ink)}
:is(.theme-label,.theme-assesi) .e-icon-unmarked{color:var(--border-strong)}

/* ---- Reiter: die Beschriftung liegt in einem eigenen span ---- */
:is(.theme-label,.theme-assesi) .e-n-tab-title-text{font-family:var(--font-body);font-weight:700;font-size:.9rem}

/* ---- Teilen: Symbol und Beschriftung ---- */
:is(.theme-label,.theme-assesi) .elementor-share-btn__title{font-family:var(--font-body);font-weight:600;
  font-size:.84rem}

/* ---- Suche: Eingabe, Knopf und Ergebnisliste ----
   Abzug: `input.e-search-input` in `.e-search-input-wrapper`, dazu
   `output.e-search-results-container` fuer die Vorschlaege. Der
   Wrapper wird Bezugspunkt, damit die Liste darunter haengt. */
:is(.theme-label,.theme-assesi) .e-search-input-wrapper{position:relative}
:is(.theme-label,.theme-assesi) .e-search-input{border-radius:var(--r-btn)}
:is(.theme-label,.theme-assesi) .e-search-results-container{background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow)}
:is(.theme-label,.theme-assesi) .e-search-results{padding:.5rem}

/* ---- Code: der Kopieren-Knopf ----
   Abzug: `div.toolbar` > `div.toolbar-item` > `button`. Die Farben
   im Code selbst gehoeren Prism und bleiben unberuehrt. */
:is(.theme-label,.theme-assesi) .toolbar-item button{font-family:var(--font-body);font-size:.72rem;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;background:var(--surface-soft);
  color:var(--text-soft);border:1px solid var(--border);border-radius:var(--r-chip);
  padding:4px 10px;cursor:pointer}

/* ---- Link in Bio: Kopf, Titel, Text und die Schaltflaechen ----
   Abzug: `__identity` > `__identity-image` (`has-style-circle`) mit
   `img.__identity-image-element`; `__bio` > `h2.__heading`,
   `h3.__title`, `p.__description`; `__icons` > `__icon` >
   `a.__icon-link`; `__ctas` > `a.__cta` > `span.__cta-text`. */
:is(.theme-label,.theme-assesi) .e-link-in-bio__identity-image-element{display:block;object-fit:cover}
:is(.theme-label,.theme-assesi) .e-link-in-bio__heading{font-family:var(--font-display);font-weight:800;
  letter-spacing:-.02em;line-height:1.15;margin:0}
:is(.theme-label,.theme-assesi) .e-link-in-bio__title{font-family:var(--font-body);font-weight:600;font-size:.92rem;
  line-height:1.4;margin:.3rem 0 0;color:var(--text-soft)}
:is(.theme-label,.theme-assesi) .e-link-in-bio__description{margin:.6rem 0 0}
:is(.theme-label,.theme-assesi) .e-link-in-bio__cta{border-radius:var(--r-btn)}
:is(.theme-label,.theme-assesi) .e-link-in-bio__cta-text{font-family:var(--font-body);font-weight:700;
  font-size:.88rem}

/* ============================================================
   KATALOG-RAHMEN — nur auf der Elementbibliothek
   ============================================================ */

:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.e-con>.wdg__n){display:grid;gap:18px}
:is(.theme-label,.theme-assesi) .e-con:has(>.e-con>.wdg__n){gap:0;background:#fff;border:var(--card-border);
  border-radius:var(--r-card);box-shadow:var(--card-shadow);
  padding:1.5rem 1.6rem;overflow:hidden}
:is(.theme-label,.theme-assesi) .e-con:has(>.wdg__n){gap:0;display:grid;grid-template-columns:auto 1fr;
  column-gap:14px;align-items:start;margin-bottom:1.2rem;
  padding-bottom:1rem;border-bottom:1px solid var(--border)}
:is(.theme-label,.theme-assesi) .e-con:has(>.wdg__n) .elementor-widget{margin-block-end:0}
:is(.theme-label,.theme-assesi) .wdg__n{grid-row:1 / span 3}
:is(.theme-label,.theme-assesi) .wdg__n .elementor-heading-title{display:grid;place-items:center;
  min-width:34px;height:34px;border-radius:var(--r-chip);
  background:var(--surface-soft);border:1px solid var(--border);
  font-family:var(--font-display);font-weight:800;font-size:.8rem;
  color:var(--accent-ink);margin:0}
:is(.theme-label,.theme-assesi) .wdg__name{grid-column:2}
:is(.theme-label,.theme-assesi) .wdg__name .elementor-heading-title{font-family:var(--font-display);font-weight:800;
  font-size:1.02rem;line-height:1.3;color:var(--text-strong);margin:0}
:is(.theme-label,.theme-assesi) .wdg__typ{grid-column:2}
:is(.theme-label,.theme-assesi) .wdg__typ p{margin:2px 0 0}
:is(.theme-label,.theme-assesi) .wdg__typ code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.74rem;color:var(--accent-ink);background:var(--surface-soft);
  border-radius:5px;padding:2px 7px}
:is(.theme-label,.theme-assesi) .wdg__note{grid-column:2}
/* `em` aus demselben Grund wie bei .hinweis__d — der Text setzt kleiner
   als der Fliesstext, und ein festes rem-Mass ergaebe zu viele Zeichen. */
:is(.theme-label,.theme-assesi) .wdg__note p{margin:.6rem 0 0;font-size:.86rem;line-height:1.6;
  color:var(--text-soft);max-width:34em}
/* Die Buehne traegt das Widget selbst — ohne eigene Gestaltung, damit
   sichtbar bleibt, wie das Widget von sich aus aussieht. */
:is(.theme-label,.theme-assesi) .wdg__buehne{display:block}
/* Die Liste der Steckbriefe. Eine Spalte: Die Widgets sind zu
   unterschiedlich hoch fuer ein Raster. */
:is(.theme-label,.theme-assesi) .wdg-liste{display:grid;gap:18px}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* === BEGIN GENERATED: icon-masks — scripts/build-icons.mjs, nicht von Hand ändern === */
/* Tabler Icons 3.31.0 (MIT), Outline-Set — 38 Symbole.
   Erzeugt aus scripts/build-icons.mjs. Icons erscheinen nie im Seiten-JSON;
   dort steht nur die Modifier-Klasse, z. B. _css_classes: "proc-step --ico-zoom". */
:is(.theme-label,.theme-assesi) [class*="--ico-"]::before{
  content:""; display:block; width:24px; height:24px; flex:none;
  background-color: currentColor;
  -webkit-mask: var(--ico) center/contain no-repeat;
          mask: var(--ico) center/contain no-repeat;
}
:is(.theme-label,.theme-assesi) .--ico-arrow-right{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l14 0'/%3E%3Cpath d='M13 18l6 -6'/%3E%3Cpath d='M13 6l6 6'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-award{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 9m-6 0a6 6 0 1 0 12 0a6 6 0 1 0 -12 0'/%3E%3Cpath d='M12 15l3.4 5.89l1.598 -3.233l3.598 .232l-3.4 -5.889'/%3E%3Cpath d='M6.802 12l-3.4 5.89l3.598 -.233l1.598 3.232l3.4 -5.889'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-bolt{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 3l0 7l6 0l-8 11l0 -7l-6 0l8 -11'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-building-bank{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21l18 0'/%3E%3Cpath d='M3 10l18 0'/%3E%3Cpath d='M5 6l7 -3l7 3'/%3E%3Cpath d='M4 10l0 11'/%3E%3Cpath d='M20 10l0 11'/%3E%3Cpath d='M8 14l0 3'/%3E%3Cpath d='M12 14l0 3'/%3E%3Cpath d='M16 14l0 3'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-book{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 19a9 9 0 0 1 9 0a9 9 0 0 1 9 0'/%3E%3Cpath d='M3 6a9 9 0 0 1 9 0a9 9 0 0 1 9 0'/%3E%3Cpath d='M3 6l0 13'/%3E%3Cpath d='M12 6l0 13'/%3E%3Cpath d='M21 6l0 13'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-building-community{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 9l5 5v7h-5v-4m0 4h-5v-7l5 -5m1 1v-6a1 1 0 0 1 1 -1h10a1 1 0 0 1 1 1v17h-8'/%3E%3Cpath d='M13 7l0 .01'/%3E%3Cpath d='M17 7l0 .01'/%3E%3Cpath d='M17 11l0 .01'/%3E%3Cpath d='M17 15l0 .01'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-calendar{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z'/%3E%3Cpath d='M16 3v4'/%3E%3Cpath d='M8 3v4'/%3E%3Cpath d='M4 11h16'/%3E%3Cpath d='M11 15h1'/%3E%3Cpath d='M12 15v3'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-certificate{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 15m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0'/%3E%3Cpath d='M13 17.5v4.5l2 -1.5l2 1.5v-4.5'/%3E%3Cpath d='M10 19h-5a2 2 0 0 1 -2 -2v-10c0 -1.1 .9 -2 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -1 1.73'/%3E%3Cpath d='M6 9l12 0'/%3E%3Cpath d='M6 12l3 0'/%3E%3Cpath d='M6 15l2 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-chart-bar{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z'/%3E%3Cpath d='M15 9a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z'/%3E%3Cpath d='M9 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z'/%3E%3Cpath d='M4 20h14'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-check{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5l10 -10'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-circle-check{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'/%3E%3Cpath d='M9 12l2 2l4 -4'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-clipboard-list{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2'/%3E%3Cpath d='M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z'/%3E%3Cpath d='M9 12l.01 0'/%3E%3Cpath d='M13 12l2 0'/%3E%3Cpath d='M9 16l.01 0'/%3E%3Cpath d='M13 16l2 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-download{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2'/%3E%3Cpath d='M7 11l5 5l5 -5'/%3E%3Cpath d='M12 4l0 12'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-coins{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 14c0 1.657 2.686 3 6 3s6 -1.343 6 -3s-2.686 -3 -6 -3s-6 1.343 -6 3z'/%3E%3Cpath d='M9 14v4c0 1.656 2.686 3 6 3s6 -1.344 6 -3v-4'/%3E%3Cpath d='M3 6c0 1.072 1.144 2.062 3 2.598s4.144 .536 6 0c1.856 -.536 3 -1.526 3 -2.598c0 -1.072 -1.144 -2.062 -3 -2.598s-4.144 -.536 -6 0c-1.856 .536 -3 1.526 -3 2.598z'/%3E%3Cpath d='M3 6v10c0 .888 .772 1.45 2 2'/%3E%3Cpath d='M3 11c0 .888 .772 1.45 2 2'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-compass{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 16l2 -6l6 -2l-2 6l-6 2'/%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'/%3E%3Cpath d='M12 3l0 2'/%3E%3Cpath d='M12 19l0 2'/%3E%3Cpath d='M3 12l2 0'/%3E%3Cpath d='M19 12l2 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-file-text{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'/%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z'/%3E%3Cpath d='M9 9l1 0'/%3E%3Cpath d='M9 13l6 0'/%3E%3Cpath d='M9 17l6 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-home{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l-2 0l9 -9l9 9l-2 0'/%3E%3Cpath d='M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7'/%3E%3Cpath d='M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-id-badge{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3m0 3a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-8a3 3 0 0 1 -3 -3z'/%3E%3Cpath d='M12 13m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0'/%3E%3Cpath d='M10 6h4'/%3E%3Cpath d='M9 18h6'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-leaf{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 21c.5 -4.5 2.5 -8 7 -10'/%3E%3Cpath d='M9 18c6.218 0 10.5 -3.288 11 -12v-2h-4.014c-9 0 -11.986 4 -12 9c0 1 0 3 2 5h3z'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-mail{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z'/%3E%3Cpath d='M3 7l9 6l9 -6'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-map-pin{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0'/%3E%3Cpath d='M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-microphone{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 2m0 3a3 3 0 0 1 3 -3h0a3 3 0 0 1 3 3v5a3 3 0 0 1 -3 3h0a3 3 0 0 1 -3 -3z'/%3E%3Cpath d='M5 10a7 7 0 0 0 14 0'/%3E%3Cpath d='M8 21l8 0'/%3E%3Cpath d='M12 17l0 4'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-news{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 6h3a1 1 0 0 1 1 1v11a2 2 0 0 1 -4 0v-13a1 1 0 0 0 -1 -1h-10a1 1 0 0 0 -1 1v12a3 3 0 0 0 3 3h11'/%3E%3Cpath d='M8 8l4 0'/%3E%3Cpath d='M8 12l4 0'/%3E%3Cpath d='M8 16l4 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-photo{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 8h.01'/%3E%3Cpath d='M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z'/%3E%3Cpath d='M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5'/%3E%3Cpath d='M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-presentation{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4l18 0'/%3E%3Cpath d='M4 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-10'/%3E%3Cpath d='M12 16l0 4'/%3E%3Cpath d='M9 20l6 0'/%3E%3Cpath d='M8 12l3 -3l2 2l3 -3'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-puzzle{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h3a1 1 0 0 0 1 -1v-1a2 2 0 0 1 4 0v1a1 1 0 0 0 1 1h3a1 1 0 0 1 1 1v3a1 1 0 0 0 1 1h1a2 2 0 0 1 0 4h-1a1 1 0 0 0 -1 1v3a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1v-1a2 2 0 0 0 -4 0v1a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h1a2 2 0 0 0 0 -4h-1a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-quote{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'/%3E%3Cpath d='M19 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-rss{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'/%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'/%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-refresh{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4'/%3E%3Cpath d='M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-scale{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 20l10 0'/%3E%3Cpath d='M6 6l6 -1l6 1'/%3E%3Cpath d='M12 3l0 17'/%3E%3Cpath d='M9 12l-3 -6l-3 6a3 3 0 0 0 6 0'/%3E%3Cpath d='M21 12l-3 -6l-3 6a3 3 0 0 0 6 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-shield{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a12 12 0 0 0 8.5 3a12 12 0 0 1 -8.5 15a12 12 0 0 1 -8.5 -15a12 12 0 0 0 8.5 -3'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-sparkles{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-speakerphone{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 8a3 3 0 0 1 0 6'/%3E%3Cpath d='M10 8v11a1 1 0 0 1 -1 1h-1a1 1 0 0 1 -1 -1v-5'/%3E%3Cpath d='M12 8h0l4.524 -3.77a.9 .9 0 0 1 1.476 .692v12.156a.9 .9 0 0 1 -1.476 .692l-4.524 -3.77h-8a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h8'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-target{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'/%3E%3Cpath d='M12 12m-5 0a5 5 0 1 0 10 0a5 5 0 1 0 -10 0'/%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-tool{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-users{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0'/%3E%3Cpath d='M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3Cpath d='M21 21v-2a4 4 0 0 0 -3 -3.85'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-world{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0'/%3E%3Cpath d='M3.6 9h16.8'/%3E%3Cpath d='M3.6 15h16.8'/%3E%3Cpath d='M11.5 3a17 17 0 0 0 0 18'/%3E%3Cpath d='M12.5 3a17 17 0 0 1 0 18'/%3E%3C/svg%3E")}
:is(.theme-label,.theme-assesi) .--ico-zoom{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0'/%3E%3Cpath d='M21 21l-6 -6'/%3E%3C/svg%3E")}
/* === END GENERATED: icon-masks === */
