body,form,figure{margin:0;padding:0}img{border:0}header,footer,nav,section,aside,article,figure,figcaption{display:block}body{font-size:100.01%}select,input,textarea{font-size:99%}#container,.inside{position:relative}#main,#left,#right{float:left;position:relative}#main{width:100%}#left{margin-left:-100%}#right{margin-right:-100%}#footer{clear:both}#main .inside{min-height:1px}.ce_gallery>ul,.content-gallery>ul{margin:0;padding:0;overflow:hidden;list-style:none}.ce_gallery>ul li,.content-gallery>ul li{float:left}.ce_gallery>ul li.col_first,.content-gallery>ul li.col_first{clear:left}.float_left,.media--left>figure{float:left}.float_right,.media--right>figure{float:right}.block{overflow:hidden}.media{display:flow-root}.clear,#clear{height:.1px;font-size:.1px;line-height:.1px;clear:both}.invisible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.custom{display:block}#container:after,.custom:after{content:"";display:table;clear:both}
@media (max-width:767px){#wrapper{margin:0;width:auto}#container{padding-left:0;padding-right:0}#main,#left,#right{float:none;width:auto}#left{right:0;margin-left:0}#right{margin-right:0}}img{max-width:100%;height:auto}.audio_container audio{max-width:100%}.video_container video{max-width:100%;height:auto}.aspect,.responsive{position:relative;height:0}.aspect iframe,.responsive iframe{position:absolute;top:0;left:0;width:100%;height:100%}.aspect--16\:9,.responsive.ratio-169{padding-bottom:56.25%}.aspect--16\:10,.responsive.ratio-1610{padding-bottom:62.5%}.aspect--21\:9,.responsive.ratio-219{padding-bottom:42.8571%}.aspect--4\:3,.responsive.ratio-43{padding-bottom:75%}.aspect--3\:2,.responsive.ratio-32{padding-bottom:66.6666%}
/**
 * KCMinishop — public Storefront-Styles (Kunden-CI via --shop-* Custom Properties)
 *
 * BEWUSST OHNE --cbk-*-Tokens: der Shop traegt das CI des Kunden, nicht den
 * CBK-Look (Spec §10 + §14 R8; das CBK-Design-System ist zudem login-gated).
 * Farbwerte kommen aus tl_KCMinishop_shops.ci_* (injiziert in :root).
 *
 * Beads: cbk-ht1w.11, Epic: cbk-ht1w
 */

.msh-shop {
    font-family: var(--shop-font, system-ui, sans-serif);
    color: #26292e;
    background: #fff;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    line-height: 1.5;
    font-size: 16px;
}
.msh-shop *, .msh-shop *::before, .msh-shop *::after { box-sizing: border-box; }
.msh-shop img { max-width: 100%; height: auto; }
/* A11y-Fix (Design-Gate Blocker): --shop-primary roh als TEXTfarbe auf weissem Grund
   ist gegen eine helle Kunden-CI ungeschuetzt (sanitizeHex prueft nur das Format, nicht
   die Helligkeit) — --shop-primary-text faellt bei zu geringem Kontrast auf eine dunkle
   Ersatzfarbe zurueck (KCMinishopColor::textFor). */
.msh-shop a { color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }

/* ---------- Header ---------- */
.msh-header {
    background: var(--shop-primary, #1f3a5f);
    color: #fff;
}
.msh-header-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 14px 20px;
    display: flex;
    align-items: center;
    gap: 20px;
}
.msh-brand { display: flex; align-items: center; text-decoration: none; color: inherit; }
/* A11y-Fix (B2): ".msh-shop a" (0-0-1-1) schlug bisher "color: inherit" oben und
   faerbte den logo-losen Markentitel (.msh-brand-title) in --shop-primary ein — auf
   Header-Hintergrund background: --shop-primary war der Text damit UNSICHTBAR
   (Text == Hintergrund) fuer jeden Shop ohne Logo. Erzwingt die kontrastsichere
   --shop-primary-ink-Farbe. */
.msh-shop a.msh-brand { color: var(--shop-primary-ink, #fff); }
.msh-logo { max-height: 48px; width: auto; }
.msh-brand-title { font-size: 1.4rem; font-weight: 700; letter-spacing: .02em; }
.msh-header-text { font-size: .85rem; opacity: .85; flex: 1; }
/* MA-5: Katalog-Nav-Link -- nur gerendert wenn ein aktiver Blaetterkatalog mit Seiten
   existiert (ModuleKCMinishopPublic::setCommonTemplateVars). Sitzt links vom Warenkorb-
   Link, dessen "margin-left: auto" schiebt beide gemeinsam an den rechten Rand. */
.msh-catalog-link {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    color: var(--shop-primary-ink, #fff);
    text-decoration: none;
    padding: 8px 12px;
    border-radius: 6px;
    font-size: .9rem;
}
.msh-catalog-link:hover { background: rgba(255,255,255,.12); }
.msh-shop a.msh-catalog-link { color: var(--shop-primary-ink, #fff); }
.msh-catalog-link + .msh-cart-link { margin-left: 0; }
.msh-cart-link {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--shop-primary-ink, #fff);
    text-decoration: none;
    padding: 8px 12px;
    border-radius: 6px;
    background: rgba(255,255,255,.12);
}
/* A11y-Fix: ".msh-shop a" (0-0-1-1) schlug bisher die Basisregel oben (0-0-1-0) und
   faerbte den Header-Warenkorb-Link (inkl. SVG-Icon via stroke=currentColor) in
   --shop-primary statt weiss/dunkel-sicher ein. Hoehere Spezifitaet erzwingt den Sieg
   der kontrastsicheren --shop-primary-ink-Farbe unabhaengig von der Kunden-CI. */
.msh-shop a.msh-cart-link { color: var(--shop-primary-ink, #fff); }
.msh-cart-link:hover { background: rgba(255,255,255,.22); }
.msh-cart-count {
    background: var(--shop-accent, #c93a30);
    /* A11y-Fix (W2): fest weisser Text auf --shop-accent kann je Kunden-CI kollabieren
       — an die kontrastgeprüfte --shop-accent-ink-Variable anschliessen. */
    color: var(--shop-accent-ink, #fff);
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 700;
    min-width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 6px;
}

/* ---------- Layout ---------- */
.msh-main {
    max-width: 1100px;
    width: 100%;
    margin: 0 auto;
    padding: 24px 20px 48px;
    flex: 1;
}
/* A11y-Fix (Design-Gate Blocker): --shop-primary als TEXTfarbe -> --shop-primary-text
   (Kaskade Kommentar bei ".msh-shop a" oben). */
.msh-main h1 { font-size: 1.6rem; margin: 0 0 18px; color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }

.msh-list { display: grid; grid-template-columns: 230px 1fr; gap: 28px; }
@media (max-width: 760px) { .msh-list { grid-template-columns: 1fr; } }

/* ---------- Sidebar / Rubriken ---------- */
/* A11y-Fix (Design-Gate Blocker): --shop-primary als TEXTfarbe -> --shop-primary-text. */
.msh-sidebar-title { font-size: 1rem; margin: 0 0 10px; color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }
.msh-rubrics { list-style: none; margin: 0; padding: 0; font-size: .95rem; }
.msh-rubrics a {
    display: block;
    padding: 7px 10px;
    text-decoration: none;
    border-radius: 6px;
    color: #26292e;
}
.msh-rubrics a:hover { background: var(--shop-secondary, #f5f6f8); }
.msh-rubrics li.active > a {
    background: var(--shop-primary, #1f3a5f);
    /* A11y-Fix (W2): fest weisser Text auf --shop-primary kann je Kunden-CI kollabieren
       — an die kontrastgeprüfte --shop-primary-ink-Variable anschliessen. */
    color: var(--shop-primary-ink, #fff);
    font-weight: 600;
}
.msh-rubrics ul { list-style: none; margin: 0 0 0 12px; padding: 0; }

/* ---------- Artikel-Grid ---------- */
.msh-list-meta { font-size: .85rem; color: #6b7280; margin-bottom: 12px; }
.msh-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 18px;
}
.msh-card {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: #fff;
    transition: box-shadow .15s ease;
}
.msh-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.msh-card-imagelink {
    display: block;
    aspect-ratio: 4 / 3;
    background: var(--shop-secondary, #f5f6f8);
    overflow: hidden;
}
.msh-card-imagelink img { width: 100%; height: 100%; object-fit: contain; }
.msh-noimage {
    width: 100%; height: 100%;
    min-height: 120px;
    display: flex; align-items: center; justify-content: center;
    /* A11y-Fix (B3): #6b7280 auf --shop-secondary faellt bei heller Kunden-CI unter
       WCAG-AA (4.5:1), wie beim bereits gefixten Footer. #565c66 haelt sicher darueber. */
    color: #565c66; font-size: .85rem;
    background: var(--shop-secondary, #f5f6f8);
}
.msh-card-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.msh-card-title { font-size: .95rem; margin: 0; line-height: 1.35; }
.msh-card-title a { text-decoration: none; color: #26292e; }
/* A11y-Fix (Design-Gate Blocker): --shop-primary als TEXTfarbe -> --shop-primary-text. */
.msh-card-title a:hover { color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }
.msh-artnr { font-size: .78rem; color: #6b7280; margin: 0; }
.msh-card-price { margin-top: auto; display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
/* A11y-Fix (Design-Gate Blocker, KRITISCH): Preisanzeige nutzte --shop-primary roh als
   Textfarbe auf weissem Grund — bei heller Kunden-CI (z.B. #ffd23f, 1,44:1 gegen Weiss)
   war der Preis unlesbar. --shop-primary-text schuetzt via KCMinishopColor::textFor. */
.msh-price { font-weight: 700; color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); font-size: 1.05rem; }
.msh-price small { font-weight: 400; color: #6b7280; font-size: .72rem; }
.msh-price--gross { font-size: .9rem; }
.msh-price--onrequest { color: #6b7280; font-weight: 500; font-size: .9rem; }
.msh-vpe { font-size: .78rem; color: #6b7280; }

/* ---------- Buttons ---------- */
.msh-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border: 1px solid transparent;
    border-radius: 7px;
    padding: 9px 16px;
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    font-family: inherit;
    transition: filter .12s ease;
}
.msh-btn--primary { background: var(--shop-accent, #c93a30); color: var(--shop-accent-ink, #fff); }
/* A11y-Fix: ".msh-shop a" (0-0-1-1) schlug bisher die Basisregel oben (0-0-1-0) und
   faerbte "In den Warenkorb"/"Zur Reservierung" (jeweils <a>) in --shop-primary statt
   Weiss ein — bei brauner Kunden-CI kollabierte der Kontrast auf 1,67:1. Hoehere
   Spezifitaet erzwingt den Sieg der kontrastsicheren --shop-accent-ink-Farbe, egal
   welche Kunden-CI-Farbe konfiguriert ist. */
.msh-shop a.msh-btn--primary { color: var(--shop-accent-ink, #fff); }
.msh-btn--primary:hover { filter: brightness(.92); }
.msh-btn--ghost {
    background: transparent;
    /* --shop-primary-text: primary selbst, ausser die Farbe waere auf weiss zu hell
       lesbar (dann faellt der PHP-Helfer auf einen dunklen Text zurueck) — schuetzt
       den Ghost-Button ohne fuer jede Kunden-CI-Kombination extra Regeln zu bauen. */
    border-color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
    color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
}
/* A11y-Fix (B1): ".msh-shop a" (0-0-1-1) schlug bisher die Basisregel oben (0-0-1-0)
   und faerbte Ghost-Buttons/Links ("Weiter einkaufen"/"Details"/"Zur Artikeluebersicht",
   jeweils <a class="msh-btn msh-btn--ghost">) fest in --shop-primary statt in die
   kontrastgeprüfte --shop-primary-text-Variante. Analog zu .msh-btn--primary/.msh-cart-link
   erzwingt hoehere Spezifitaet den Sieg der sicheren Farbe. */
.msh-shop a.msh-btn--ghost { color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }
.msh-btn--ghost:hover { background: var(--shop-secondary, #f5f6f8); }
.msh-btn--sm { padding: 7px 12px; font-size: .82rem; }
.msh-btn--lg { padding: 12px 22px; font-size: 1rem; width: 100%; }

/* ---------- Pagination ---------- */
.msh-pagination { margin-top: 24px; display: flex; gap: 6px; flex-wrap: wrap; }
.msh-pagination a, .msh-pagination .current {
    padding: 6px 12px;
    border-radius: 6px;
    text-decoration: none;
    border: 1px solid #e5e7eb;
    font-size: .9rem;
}
/* A11y-Fix (W2): fest weisser Text auf --shop-primary kann je Kunden-CI kollabieren
   — an die kontrastgeprüfte --shop-primary-ink-Variable anschliessen. */
.msh-pagination .current { background: var(--shop-primary, #1f3a5f); color: var(--shop-primary-ink, #fff); border-color: var(--shop-primary, #1f3a5f); }

/* ---------- Detail ---------- */
.msh-breadcrumb { font-size: .85rem; margin-bottom: 16px; color: #6b7280; }
.msh-detail-grid { display: grid; grid-template-columns: minmax(280px, 460px) 1fr; gap: 32px; }
@media (max-width: 760px) { .msh-detail-grid { grid-template-columns: 1fr; } }
.msh-detail-image {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: var(--shop-secondary, #f5f6f8);
    display: flex; align-items: center; justify-content: center;
    min-height: 280px;
    padding: 12px;
}
.msh-detail-image img { max-height: 420px; object-fit: contain; }
.msh-detail-info h1 { margin-top: 0; }
.msh-description { color: #4b5563; }
.msh-extras { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; font-size: .9rem; margin: 14px 0; }
.msh-extras dt { color: #6b7280; }
.msh-extras dd { margin: 0; }
.msh-price-block { display: flex; flex-direction: column; gap: 4px; margin: 16px 0; }
.msh-price-block .msh-price { font-size: 1.5rem; }
.msh-price-block .msh-price--gross { font-size: 1.05rem; }
.msh-delivery { font-size: .85rem; color: #15803d; }
.msh-addtocart { display: flex; gap: 10px; margin-top: 12px; }
.msh-qty {
    width: 76px;
    padding: 8px 10px;
    border: 1px solid #d1d5db;
    border-radius: 7px;
    font-size: .95rem;
    font-family: inherit;
}

/* ---------- Cart ---------- */
.msh-cart-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.msh-cart-table th, .msh-cart-table td { padding: 10px 8px; border-bottom: 1px solid #e5e7eb; text-align: left; vertical-align: middle; }
.msh-cart-table th.num, .msh-cart-table td.num { text-align: right; }
.msh-cart-img img { width: 56px; height: 56px; object-fit: contain; background: var(--shop-secondary, #f5f6f8); border-radius: 6px; }
.msh-remove {
    border: none; background: transparent; color: #6b7280;
    font-size: 1.3rem; cursor: pointer; line-height: 1; padding: 4px 8px;
}
/* A11y-Fix (Design-Gate Warnung 1): --shop-accent als TEXTfarbe -> --shop-accent-text
   (dieselbe Fehlerklasse wie --shop-primary oben, hier auf den Accent-Ton bezogen). */
.msh-remove:hover { color: var(--shop-accent-text, var(--shop-accent, #c93a30)); }
.msh-totals { margin: 18px 0 0 auto; max-width: 340px; font-size: .95rem; }
.msh-totals > div { display: flex; justify-content: space-between; padding: 4px 0; }
.msh-totals-gross { border-top: 2px solid var(--shop-primary, #1f3a5f); font-size: 1.05rem; margin-top: 6px; padding-top: 8px !important; }
.msh-cart-actions { display: flex; justify-content: space-between; gap: 12px; margin-top: 24px; flex-wrap: wrap; }
.msh-cart-hint { font-size: .82rem; color: #6b7280; margin-top: 14px; }

/* ---------- Checkout ---------- */
.msh-checkout-grid { display: grid; grid-template-columns: 1fr 320px; gap: 32px; align-items: start; }
@media (max-width: 860px) { .msh-checkout-grid { grid-template-columns: 1fr; } }
/* A11y-Fix (Design-Gate Blocker): --shop-primary als TEXTfarbe -> --shop-primary-text. */
.msh-form h2 { font-size: 1.1rem; color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }
.msh-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.msh-form-row--zip { grid-template-columns: 130px 1fr; }
@media (max-width: 560px) { .msh-form-row { grid-template-columns: 1fr; } }
.msh-field { margin-bottom: 14px; }
.msh-field label { display: block; font-size: .85rem; font-weight: 600; margin-bottom: 4px; }
.msh-field input[type="text"], .msh-field input[type="email"], .msh-field textarea {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid #d1d5db;
    border-radius: 7px;
    font-size: .95rem;
    font-family: inherit;
}
/* A11y-Fix (Design-Gate Warnung 2, WCAG 1.4.11): Ring/Rand hier sitzt auf hellem/weissem
   Grund (Formularfelder) — --shop-primary als roher Ring-/Randton ist gegen eine helle
   Kunden-CI ungeschuetzt, --shop-primary-text sichert >=3:1 gegen Weiss. */
.msh-field input:focus, .msh-field textarea:focus, .msh-qty:focus {
    outline: 2px solid var(--shop-primary-text, var(--shop-primary, #1f3a5f));
    outline-offset: 1px;
    border-color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
}
/* ---------- Fokus (Tastatur-Bedienung, WCAG 2.4.7) ---------- */
/* Bisher nur der duenne Browser-Default-Outline auf Buttons/Links — ein deutlicher,
   CI-farbiger Ring fuer alle interaktiven Storefront-Elemente. */
/* A11y-Fix (Design-Gate Warnung 2, WCAG 1.4.11): diese Elemente sitzen auf hellem/
   weissem Seitenhintergrund — der Ring liegt AUSSERHALB des Elements auf diesem hellen
   Grund, --shop-primary roh ist daher derselbe Blocker wie oben; --shop-primary-text
   sichert >=3:1 gegen Weiss. */
.msh-btn:focus-visible,
.msh-card-title a:focus-visible,
.msh-rubrics a:focus-visible,
.msh-pagination a:focus-visible,
.msh-remove:focus-visible,
.msh-link:focus-visible,
.msh-footer-nav a:focus-visible {
    outline: 3px solid var(--shop-primary-text, var(--shop-primary, #1f3a5f));
    outline-offset: 2px;
}
/* .msh-cart-link sitzt auf dunklem Header-Hintergrund (background: --shop-primary) —
   ein Ring in derselben Farbe waere dort unsichtbar; heller, kontrastsicherer Ring. */
.msh-shop a.msh-cart-link:focus-visible,
.msh-shop a.msh-catalog-link:focus-visible {
    outline: 3px solid var(--shop-primary-ink, #fff);
    outline-offset: 2px;
}
/* A11y-Fix (W3): .msh-brand (Logo-/Markentitel-Link) fehlte bisher komplett in der
   Fokus-Liste — sitzt wie .msh-cart-link auf dunklem Header-Hintergrund, daher derselbe
   kontrastsichere Ring statt --shop-primary. */
.msh-shop a.msh-brand:focus-visible {
    outline: 3px solid var(--shop-primary-ink, #fff);
    outline-offset: 2px;
}

.msh-field--error input, .msh-field--error textarea { border-color: #dc2626; }
.msh-field-error { color: #dc2626; font-size: .8rem; }
.msh-field--consent label { font-weight: 400; font-size: .85rem; display: flex; gap: 8px; align-items: flex-start; }
.msh-field--consent input { margin-top: 3px; }
.msh-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.msh-summary {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 18px;
    background: var(--shop-secondary, #f5f6f8);
}
.msh-summary h2 { margin-top: 0; font-size: 1.05rem; }
.msh-summary-list { list-style: none; margin: 0 0 12px; padding: 0; font-size: .88rem; }
.msh-summary-list li { display: flex; gap: 8px; padding: 4px 0; border-bottom: 1px dashed #e5e7eb; }
/* A11y-Fix (B3): #6b7280 auf --shop-secondary faellt bei heller Kunden-CI unter
   WCAG-AA (4.5:1), wie beim bereits gefixten Footer. #565c66 haelt sicher darueber. */
.msh-summary-list .qty { color: #565c66; min-width: 34px; }
.msh-summary-list .name { flex: 1; }
.msh-summary-list .sum { white-space: nowrap; }
.msh-summary .msh-totals { max-width: none; }
.msh-link { font-size: .85rem; }
.msh-confirmation { max-width: 620px; margin: 40px auto; text-align: center; }

/* ---------- Sonstiges ---------- */
.msh-notice { padding: 12px 16px; border-radius: 8px; margin-bottom: 16px; font-size: .9rem; }
.msh-notice--warn { background: #fef3c7; color: #92400e; }
.msh-notice--error { background: #fee2e2; color: #991b1b; }
.msh-empty { text-align: center; padding: 48px 20px; color: #6b7280; }
.msh-offline { text-align: center; padding: 80px 20px; color: #6b7280; font-family: system-ui, sans-serif; }
.msh-legal-text { max-width: 760px; white-space: normal; }

/* ---------- Footer ---------- */
.msh-footer {
    background: var(--shop-secondary, #f5f6f8);
    border-top: 1px solid #e5e7eb;
    padding: 20px;
    text-align: center;
    font-size: .85rem;
    /* A11y-Fix (Lighthouse-Diagnose): #6b7280 auf --shop-secondary rendert bei heller
       Kunden-CI (Beispiel #f4f1ea) nur 4,28:1 (< WCAG-AA 4.5:1 fuer Fliesstext) und
       liegt selbst gegen den CSS-Default-Fallback #f5f6f8 knapp DARUNTER (4,47:1,
       ebenfalls < 4,5:1 — kein Grenzfall, sondern derselbe Verstoss).
       #565c66 haelt gegen beide Hintergruende sicher ueber 5:1. */
    color: #565c66;
}
.msh-footer-nav { display: flex; gap: 18px; justify-content: center; margin-top: 6px; }
.msh-footer-nav a { color: #565c66; text-decoration: none; }
/* A11y-Fix (Design-Gate Blocker): --shop-primary als TEXTfarbe -> --shop-primary-text. */
.msh-footer-nav a:hover { color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }

/* ---------- Toast ---------- */
.msh-toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--shop-primary, #1f3a5f);
    /* A11y-Fix (W2): fest weisser Text auf --shop-primary kann je Kunden-CI kollabieren
       — an die kontrastgeprüfte --shop-primary-ink-Variable anschliessen. */
    color: var(--shop-primary-ink, #fff);
    padding: 10px 20px;
    border-radius: 8px;
    font-size: .9rem;
    box-shadow: 0 6px 20px rgba(0,0,0,.25);
    z-index: 9999;
}

/**
 * KCMinishop — Blätterkatalog-Styles (MA-5, 3D-Flipbook via self-hosted StPageFlip)
 *
 * BEWUSST OHNE --cbk-*-Tokens (wie KCMinishopShop.css): der Shop trägt Kunden-CI, nicht
 * den CBK-Look (Spec docs/specs/minishop.md §10/§14 R8). Nur auf der Katalog-Seite
 * geladen (ModuleKCMinishopCatalog::compileShop() — schlanke restliche Shop-Seiten).
 * Bedienleisten-/Zoom-Icons sind Font Awesome 5 ("fas", CBK-Standard, self-hosted --
 * NICHT FA6) statt Inline-SVG/Unicode (Owner-Korrektur 2026-07-10).
 *
 * page-flip.browser.js injiziert selbst ein <style> für .stf__parent/.stf__wrapper/
 * .stf__canvas/.stf__outerShadow etc. (Positionierung/Perspektive) — hier NUR das
 * Drumherum (Rahmen/Schatten/Bedienleiste/Leer-Zustand/Vollbild), nichts davon überschreiben.
 *
 * P2-3 (cbk-7a02) Zoom/Lupe -- INLINE seit Owner-Nachbesserung 2026-07-10 (kein separates
 * Lightbox-Overlay mehr): .msh-flipbook-viewport ist der NEUE, unskaliert bleibende
 * "Fensterrahmen" (Hintergrund/Rahmen/Schatten -- vormals auf .msh-flipbook-stage, jetzt
 * hier, s. dortiger Kommentar) um die eigentliche .msh-flipbook-stage, die
 * KCMinishopCatalog.js (createInlineZoom()) per transform:scale()+translate()
 * vergroessert/verschiebt. Eigener Block "P2-3 Inline-Zoom" weiter unten (schwebende
 * +/-/Reset-Mini-Steuerung, NUR sichtbar solange gezoomt).
 *
 * OPTIK-KORREKTUR (cbk-um41, Owner-Feedback 2026-07-10): "overflow:hidden" sass vormals
 * UNBEDINGT auf .msh-flipbook-viewport -- ausserhalb des Zooms (reguläres Blaettern) schnitt
 * das die Umblaetter-Animation (Buchschatten/Seitenschwung, page-flip.browser.js) sichtbar am
 * Bereichsrahmen ab. Jetzt NUR noch waehrend des Inline-Zooms geklemmt (".is-zoomed", s. dort
 * -- "durch die Fensterscheibe schauen" bleibt beim Zoomen unveraendert bestehen), im
 * Ruhezustand/waehrend des Blaetterns overflow:visible. Ausserdem: KEIN border-radius mehr
 * (Katalogseiten rechteckig wie echtes Papier, Owner-Vorgabe -- vormals 10px).
 *
 * OPTIK-KORREKTUR RUNDE 2 (cbk-um41, Owner-Befund + Vendor-Analyse, ZURUECKGENOMMEN in
 * Runde 3 s.u.): das obige "overflow:visible" WAR NOTWENDIG, aber NICHT AUSREICHEND --
 * StPageFlip zeichnet ausschliesslich in sein <canvas>, dessen Pixel-Flaeche IMMER exakt der
 * Groesse von .msh-flipbook-stage entspricht -- ein CSS-"overflow" auf einem VORFAHREN kann
 * niemals ueber den Canvas-Rand hinaus zeichnen (technisch unmoeglich). Runde 2 loeste das,
 * indem sie das BUCH (StPageFlips `maxWidth`-Einstellung) etwas UNTER die Stage-/Canvas-
 * Groesse schrumpfte -- Owner-Befund Runde 3: das liess das Buch im GLEICH GROSS bleibenden
 * weissen Rahmen zu klein wirken (toter Leerraum), UND die Animation blieb weiterhin
 * INNERHALB des Rahmens (der Canvas-Rand lag ja nach wie vor GENAU auf dem Rahmenrand).
 *
 * OPTIK-KORREKTUR RUNDE 3 (cbk-um41, Owner-Befund Runde 3 -- AKTUELLER STAND): umgekehrtes
 * Prinzip -- .msh-flipbook-stage (der Canvas-Host) wird jetzt SELBST groesser als
 * .msh-flipbook-viewport gemacht (absolut positioniert, ueberstehend, s.
 * ".msh-flipbook-stage"-Regel unten) UND das Buch ueber KCMinishopCatalog.js
 * (applySizing() "CANVAS-UEBERSTAND") wieder auf seine URSPRUENGLICHE (Vor-cbk-um41)
 * Zielgroesse geklemmt -- StPageFlip zentriert es dabei automatisch im jetzt groesseren
 * Canvas, der Buch-Rand faellt dadurch wieder EXAKT auf den weissen Rahmen (Buch fuellt ihn
 * wieder VOLL aus), waehrend der ueberschiessende, TRANSPARENTE Canvas-Rand SICHTBAR ueber
 * den Rahmen hinausragt -- genau dafuer ist "overflow:visible" oben gedacht (kommt jetzt
 * endlich zum Tragen). Bewusst NUR ab 900px CSS-Breite (Media Query unten) -- unterhalb bleibt
 * .msh-flipbook-stage exakt bei width/height:100% (kein Ueberstand), um auf schmalen
 * Viewports kein horizontales Scrollen zu erzeugen (Owner-Pruefpunkt "Mobile").
 *
 * P2-4 (cbk-lf7x) Seitenübersicht-Overlay: eigener Block am Dateiende, selbe Backdrop-/
 * Panel-Grundmechanik wie P2-2 (.msh-overlay-close DIREKT mitverwendet).
 *
 * P2-5 (cbk-b7zy) Teilen-Popover: eigener Block am Dateiende -- ANDERS als P2-2/P2-4
 * bewusst KEIN Backdrop+Panel-"Dialog" (kein abdeckendes Backdrop, bleibt Rest der Seite
 * normal interaktiv), sondern ein klassisches, an den Trigger-Button angeheftetes
 * position:absolute-Dropdown-Menü (s. KCMinishopCatalog.js createShareMenu()-Funktions-Doc).
 *
 * Beads: cbk-b43p (MA-5), cbk-0dad (P2-1), cbk-r9mo (P2-2), cbk-7a02 (P2-3), cbk-lf7x (P2-4), cbk-b7zy (P2-5), Epic: cbk-ur8h / cbk-0qn7
 */

/* cbk-um41 Runde 5 (Owner-Befund, Robustheits-Schicht -- s. ".msh-flipbook-controls"
   weiter unten fuer die volle Herleitung): dieselbe defensive z-index-Anhebung ueber den
   Flipbook-Stack, hier fuer die Katalog-Ueberschrift. Analytisch ist die H1 vom AKTUELL
   diagnostizierten Wrapper-Hoehen-Bug NICHT betroffen (der Ueberstand NACH OBEN kommt von
   stageEls eigenem "top:-11%", NICHT vom (nur nach UNTEN wachsenden) padding-bottom-Trick,
   und ist exakt durch viewportEls reserviertes margin-top gedeckt) -- rein vorsorglich
   gehaertet, falls ein Browser-Gegentest (elementFromPoint) dennoch etwas anderes zeigt. */
.msh-catalog h1 { position: relative; z-index: 3; text-align: center; }

/* P2-6 Phase 5 (cbk-kz0l): Katalog-Auswahl bei MEHREREN oeffentlich sichtbaren Katalogen --
   schlanke Karten-Liste VOR dem Flipbook (kein Flipbook-Vendor-CSS/JS auf dieser
   Unteransicht noetig, s. ModuleKCMinishopCatalog::renderCatalogPicker()). Bewusst eigene,
   kleine Klassen statt .msh-grid/.msh-card (Artikel-Karten aus KCMinishopShop.css)
   wiederzuverwenden -- eine Katalog-Karte hat kein Bild/keinen Preis, nur Titel+Gueltigkeit,
   ein schmaleres eigenes Layout passt besser als das 4:3-Bild-Karten-Raster der Artikelliste. */
.msh-catalog-picker {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px;
    max-width: 900px;
    margin: 0 auto;
}
.msh-catalog-picker-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 18px 20px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: #26292e;
    transition: box-shadow .15s ease, border-color .15s ease;
}
.msh-catalog-picker-card:hover,
.msh-catalog-picker-card:focus-visible {
    box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
    /* A11y (Design-Gate B1): --shop-primary-text (kontrastgeprueft) statt rohem
       --shop-primary -- der Fokus-Ring muss auch bei heller Kunden-CI WCAG 1.4.11
       (3:1) bestehen; gleiches Muster wie .msh-field:focus (KCMinishopShop.css). */
    border-color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
}
/* A11y: dieselbe --shop-primary-text-Absicherung wie .msh-card-title a (KCMinishopShop.css)
   -- --shop-primary roh als Textfarbe kann bei heller Kunden-CI unter WCAG-AA fallen. */
.msh-catalog-picker-title {
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
}
.msh-catalog-picker-validity { font-size: .82rem; color: #6b7280; }
/* "Wird noch erstellt": dezenter grauer Grund statt Blanket-opacity (Design-Gate W1) --
   opacity haette auch Titel/Badge verwaessert und deren hart kalibrierte WCAG-Kontraste
   (--shop-primary-text) unterlaufen; der graue Grund signalisiert den Zustand kontrast-neutral. */
.msh-catalog-picker-card.is-pending { background: var(--shop-secondary, #f5f6f8); }
/* Kleiner Inline-BADGE (bewusst NICHT die Block-Komponente .msh-notice--warn, die padding
   12/16 + margin-bottom mitbraechte) -- gleiche Warn-Palette (#fef3c7/#92400e) wie
   .msh-notice--warn, hier als Badge-Variante. */
.msh-catalog-picker-note {
    align-self: flex-start;
    margin-top: 4px;
    padding: 2px 8px;
    border-radius: 6px;
    background: #fef3c7;
    color: #92400e;
    font-size: .78rem;
}

/* --msh-flip-maxw wird von KCMinishopCatalog.js (applySizing()) gesetzt: Design-
   Maximalbreite GEMEINSAM mit einem aus der Viewport-Höhe abgeleiteten Wert gedeckelt
   (min() beider Constraints -- Owner-Vorgabe 2026-07-09: mehr Breite nutzen, aber die
   aufgeschlagene Doppelseite darf nicht über den Bildschirm hinausragen). 1280px unten
   ist NUR der statische Fallback für den allerersten Paint/kein JS -- danach übernimmt
   die Custom Property (deckt auch den Vollbild-Fall NICHT ab, dafür bleibt die
   spezifischere .msh-flipbook:fullscreen-Regel unten unverändert zuständig). */
.msh-flipbook {
    max-width: var(--msh-flip-maxw, 1280px);
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

/* Das Seitenverhältnis wird von KCMinishopCatalog.js (applySizing()) LAUFEND inline auf
   dieses Element gesetzt -- Einzelseite (Cover/Mobil < 520px) hochformatig im Verhältnis
   EINER Seite, aufgeschlagene Doppelseite (Desktop) im Verhältnis der VOLLEN Buchbreite.
   Grund: StPageFlip setzt bei autoSize=true nur "width:100%" + min-/max-Grenzen inline,
   NIE eine explizite Höhe -- sein eigenes .stf__wrapper skaliert sich selbst ausschließlich
   BREITENBASIERT (padding-bottom-Prozent-Technik). Ein falsches/statisches
   Seitenverhältnis hier ließ das (korrekt, aber kleiner gerenderte) Buch bislang in einer
   viel zu hohen Box klein wirken, umgeben von Leerraum (Owner-Fund 2026-07-09). Der Wert
   unten ist NUR der Fallback für den allerersten Server-Paint/kein JS -- dort die
   Einzelseiten-Form als sichere Grundannahme.

   P2-3 (cbk-7a02) INLINE-ZOOM-NACHBESSERUNG 2026-07-10: dieses Element ist jetzt der
   UNSKALIERTE "Fensterrahmen" -- Hintergrund/Rahmen/Schatten (+ overflow NUR waehrend des
   Zooms, s. cbk-um41-Kommentar am Dateikopf) sitzen bewusst HIER (statt auf der darin
   liegenden .msh-flipbook-stage, die
   KCMinishopCatalog.js beim Zoomen per CSS transform:scale()+translate() vergrößert):
   würden Hintergrund/Rahmen/Schatten stattdessen auf der SKALIERTEN Stage sitzen, würden
   Ecken/Schatten beim Zoomen sichtbar mitwachsen/verzerren -- overflow HIER (NUR während
   des Zooms geklemmt, s. cbk-um41-Kommentar am Dateikopf + ".is-zoomed"-Regel unten)
   begrenzt den vergrößerten Bildausschnitt exakt auf die Buchfläche ("durch die
   Fensterscheibe schauen" statt frei über den Rand hinaus zu ragen). */
.msh-flipbook-viewport {
    position: relative; /* Bezugsrahmen fuer die absolut positionierte Zoom-Mini-Steuerung unten */
    width: 100%;
    aspect-ratio: .7 / 1;
    background: var(--shop-secondary, #f5f6f8);
    /* cbk-um41: Katalogseiten rechteckig wie echtes Papier (vormals 10px). */
    border-radius: 0;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .15);
    /* cbk-um41: NICHT laenger unbedingt geklemmt -- die Umblaetter-Animation (Buchschatten/
       Seitenschwung) darf im Ruhezustand ueber die exakte Buchbox hinausragen (s. Dateikopf-
       Kommentar "OPTIK-KORREKTUR"). Waehrend des Inline-Zooms klemmt ".is-zoomed" unten
       wieder auf overflow:hidden. */
    overflow: visible;
}
/* cbk-um41 Runde 3 (Owner-Befund, Pruefpunkt d "Nachbar-UI"): reserviert im Flex-Layout
   (.msh-flipbook, gap:16px) zusaetzlichen Abstand zu Ueberschrift/Bedienleiste, DAMIT der
   ab 900px CSS-Breite ueber den weissen Rahmen hinausragende Canvas (s. ".msh-flipbook-stage"
   @media-Regel unten) sie nicht optisch/klicktechnisch ueberdeckt -- --msh-flip-overhang-y
   wird von KCMinishopCatalog.js (applySizing() "CANVAS-UEBERSTAND") aus der tatsaechlichen
   Buchhoehe abgeleitet. NUR innerhalb derselben Media Query wie der Ueberstand selbst aktiv
   (sonst wuerde unterhalb 900px unnoetig Platz reserviert, obwohl dort GAR KEIN Ueberstand
   existiert). margin statt padding: bleibt TRANSPARENT (kein Mitwachsen des sichtbaren
   Rahmen-Hintergrunds), nur zusaetzlicher Leerraum AUSSERHALB des Rahmens. */
@media (min-width: 900px) {
    .msh-flipbook-viewport {
        margin-top: var(--msh-flip-overhang-y, 0px);
        margin-bottom: var(--msh-flip-overhang-y, 0px);
    }
}
/* Zoom-Cursor-Feedback -- "is-zoomed"/"is-dragging" werden von KCMinishopCatalog.js
   (createInlineZoom()) auf DIESEM (unskalierten) Element getoggelt, nicht auf der
   skalierten Stage selbst (Cursor-Icons werden ohnehin unabhängig vom transform
   gerendert, die Klasse sitzt hier nur aus Konsistenzgründen mit den übrigen
   viewport-bezogenen Regeln). Dieselbe Regel klemmt (cbk-um41) den vergrößerten
   Bildausschnitt WAEHREND des Zooms wieder exakt auf die Buchflaeche (overflow:hidden) --
   die Basisregel oben ist dafuer bewusst NICHT mehr zustaendig (Blaetter-Animations-Fix). */
.msh-flipbook-viewport.is-zoomed { cursor: grab; overflow: hidden; }
.msh-flipbook-viewport.is-zoomed.is-dragging { cursor: grabbing; }

/* Die eigentliche, per JS transformierte Buehne. page-flip fügt DIESEM Element selbst die
   Klasse ".stf__parent" hinzu und erzeugt darin Canvas/Schatten-Layer
   (assets/js/vendor/page-flip.browser.js, eigenes injiziertes <style> für Positionierung/
   Perspektive -- hier bewusst NICHT angefasst). Ein CSS-transform auf dieser Ebene ändert
   NICHT ihre eigene Layout-Größe (offsetWidth/-Height, NUR die visuelle Malgröße) --
   page-flips eigene, darauf basierende autoSize-/Geometrie-Berechnungen bleiben dadurch
   unbeeinflusst vom Zoom (s. renderHotspots() "Design-Gate W2" fürs analoge Prinzip bei den
   Hotspot-Overlays). Der statische Bindungsschatten in der Mitte (drawBookShadow(),
   Canvas-gezeichnet, KEIN eigenes DOM-Element) wird instanzweise per JS unterdrückt, s.
   patchBookShadow() in KCMinishopCatalog.js -- ein CSS-Override ist für in <canvas>
   gezeichnete Pixel nicht möglich.

   BASISREGEL (< 900px, mobil/schmal, Owner-Pruefpunkt "Mobile"): exakt 100% des unskalierten
   .msh-flipbook-viewport-Rahmens bei scale=1, transform-origin 0 0 (deckt sich mit
   viewportEls eigenem Ursprung, da beide Boxen hier IDENTISCH sind) -- Vor-cbk-um41-
   Runde-3-Verhalten, bewusst OHNE Canvas-Ueberstand (s. @media-Regel unten), damit auf
   schmalen Viewports KEIN horizontales Scrollen entsteht. */
.msh-flipbook-stage {
    width: 100%;
    height: 100%;
    transform-origin: 0 0;
    will-change: transform;
}
/* cbk-um41 RUNDE 3 (Owner-Befund Runde 3, s. Dateikopf-Kommentar "OPTIK-KORREKTUR RUNDE 3" +
   KCMinishopCatalog.js applySizing() "CANVAS-UEBERSTAND"): ab 900px CSS-Breite wird die Stage
   (= Canvas-Host) SELBST groesser als viewportEl UND absolut ueber sie hinaus zentriert --
   seitlich (X) je 15%, oben/unten (Y) je 11% der Buch-/Viewport-Groesse (Single Source der
   Prozentwerte: KCMinishopCatalog.js CANVAS_OVERHANG_X_RATIO/-Y_RATIO -- rein statische,
   responsive CSS-Prozentrechnung, KEINE JS-Neuberechnung bei jedem Resize noetig).
   KCMinishopCatalog.js klemmt das Buch selbst (StPageFlips `maxWidth`-Setting) im GLEICHEN
   Zug wieder auf die urspruengliche (Vor-cbk-um41) Zielgroesse -- StPageFlip zentriert dieses
   kleinere Buch automatisch im jetzt groesseren Canvas, der Buch-Rand faellt dadurch wieder
   EXAKT auf viewportEls eigenen Rand (Buch fuellt den weissen Rahmen wieder VOLL aus), der
   ueberschiessende, TRANSPARENTE Canvas-Rand ragt (dank overflow:visible oben) SICHTBAR ueber
   den Rahmen hinaus.

   TRANSFORM-ORIGIN (kritisch fuer den Zoom, s. KCMinishopCatalog.js createInlineZoom()-
   Funktions-Doc "ZOOM/PAN-MATHEMATIK"): die gesamte Zoom-/Pan-Mathematik dort geht davon aus,
   dass "Content-Punkt (0,0)" bei scale=1 GENAU viewportEls eigenem Ursprung entspricht. Mit
   dem obigen Ueberstand liegt viewportEls Ursprung NICHT mehr bei stageEls eigenem (0,0)
   (stageEl beginnt jetzt 15%/11% VOR ihm) -- transform-origin wird daher auf genau den Punkt
   INNERHALB von stageEls eigener Box gesetzt, der viewportEls Ursprung entspricht:
   x = 15/(100+2*15) = 15/130 = 11,5385%, y = 11/(100+2*11) = 11/122 = 9,0164% (rechnerisch
   verifiziert, s. Git-Historie). Damit bleibt clampPan()/zoomAtPoint() in KCMinishopCatalog.js
   UNVERAENDERT korrekt -- keine JS-Anpassung der Zoom-Mathematik noetig.

   SPEZIFITAETS-FALLE: page-flip.browser.js injiziert selbst ein <style>-Tag mit
   ".stf__parent { position: relative; ... }" (eigener Blick 2026-07-1x) -- DIESELBE Klasse
   (page-flip fügt "stf__parent" per classList.add() zu GENAU diesem Element hinzu, s.
   Dateikopf-Kommentar) mit GLEICHER Spezifitaet (0,1,0) wie unser ".msh-flipbook-stage"
   waere je nach Lade-/Injektions-Reihenfolge der beiden Stylesheets ein Muenzwurf, WESSEN
   "position" gewinnt. Der Verbund-Selektor unten (BEIDE Klassen, die dieses Element ohnehin
   TRAEGT -- 0,2,0) gewinnt GARANTIERT unabhaengig von der Reihenfolge (identisches Prinzip
   wie die "[hidden]"-Spezifitaets-Fixes weiter unten in dieser Datei).

   NACHFIX (Owner-Befund, browser-computed verifiziert): page-flip setzt beim Mounten UND bei
   JEDEM update()/updateOrientation() zusaetzlich INLINE-Styles auf GENAU dieses Element
   (UI-Basisklasse, autoSize-Zweig, eigener Blick 2026-07-1x: "i.autoSize&&(t.style.width=
   \"100%\",t.style.maxWidth=2*i.maxWidth+\"px\")") -- "width:100%" + "max-width:<2×
   settings.maxWidth>px". Inline-Styles schlagen JEDE Stylesheet-Regel, UNABHAENGIG von deren
   Spezifitaet (der Verbund-Selektor-Fix oben wirkt daher nur fuer position/left/top/height --
   dafuer setzt page-flip inline NICHTS, s. dortiger Code -- NICHT fuer width/max-width).
   Ergebnis ohne diesen Nachfix: die Stage bleibt bei "width:100%" (= viewportEl-Breite)
   VERSCHOBEN statt VERGROESSERT -- das (weiterhin korrekt zentrierte) Buch sitzt dadurch
   sichtbar zu weit links, rechts klafft leerer Rahmen. "!important" ist hier das einzige
   Mittel, das zuverlaessig auch gegen SPAETER (bei jedem update()) neu geschriebene Inline-
   Styles gewinnt. Die Buch-Klemme selbst (settings.maxWidth, s. applySizing()
   "CANVAS-UEBERSTAND") ist davon NICHT betroffen -- sie wirkt ausschliesslich ueber
   calculateBoundsRect(), nicht ueber dieses inline-max-width. */
@media (min-width: 900px) {
    .msh-flipbook-stage.stf__parent {
        position: absolute;
        left: -15%;
        top: -11%;
        width: 130% !important;
        max-width: none !important;
        height: 122%;
        transform-origin: 11.5385% 9.0164%;
    }
    /* cbk-um41 Runde 5 (Owner-Befund, Hit-Test-verifiziert): page-flip haengt an
       .stf__wrapper (Kind von .stf__parent/stageEl) einen "padding-bottom:X%"-Trick
       (setOrientationStyle(), eigener Blick 2026-07-1x: "this.wrapper.style.paddingBottom=
       settings.height/(2*settings.width)*100+'%'") -- Top/Bottom-Padding-Prozente loesen
       IMMER gegen die BREITE des Elements SELBST auf (CSS-Spezifikation, unabhaengig von
       "top" oder "bottom"). .stf__wrapper hat aber KEIN eigenes width (der einzige
       Vendor-Versuch dafuer ist ein TYPO -- ".sft__wrapper" statt ".stf__wrapper", eigener
       Blick 2026-07-1x -- diese Regel greift NIE), fuellt daher per Default-Blockverhalten
       100% von stageEl (seit Runde 3 die VERBREITERTE 130%-Stage, NICHT die Buchbreite) --
       der Prozentsatz loest folglich gegen die FALSCHE (zu grosse) Breite auf und macht
       .stf__wrapper dadurch hoeher als stageEl selbst (Owner-Messung: 974px Wrapper vs.
       914px Stage) -- der Wrapper ragt unten ueber die Stage hinaus UND ueberlagert (obwohl
       selbst unsichtbar/hintergrundlos) die Bedienleiste im Hit-Test (elementFromPoint trifft
       den transparenten Wrapper statt der Buttons darunter -- guardOverhangClicks() auf
       stageEl schluckt den Klick dann faelschlich als "ausserhalb des Buchs").

       FIX (analog zum width-!important-Nachfix oben): explizite Hoehe deckelt den Wrapper
       auf GENAU stageEls eigene Hoehe (100% -- .msh-shop-weite box-sizing:border-box macht
       "height" zur GESAMTEN Border-Box-Hoehe, das inline paddingBottom "frisst" sich danach
       nur noch INNERHALB dieses fixen Rahmens, traegt NICHT mehr zusaetzlich auf). Betrifft
       AUSSCHLIESSLICH .stf__wrapper (rein layouttechnisches, unsichtbares Huellelement --
       s. Datei-Header "HOTSPOT-GEOMETRIE") -- der eigentliche Canvas ist bereits ein
       SEPARATES, per Vendor-CSS absolut zu stageEl (NICHT zum Wrapper) positioniertes
       Element (".stf__parent canvas{position:absolute;width:100%;height:100%;left:0;top:0}"
       -- der Wrapper ist static/unpositioniert, das Containing Block fuer die
       Canvas-Positionierung ueberspringt ihn also ohnehin) -- diese Aenderung hat daher
       KEINEN Einfluss auf die Buch-Zeichnung/-Zentrierung im Canvas selbst.
       pointer-events:none zusaetzlich als Sicherheitsnetz -- verifiziert UNSCHAEDLICH:
       page-flips eigene Maus-/Touch-Handler haengen NACHWEISLICH am Canvas
       ("this.distElement=this.canvas", setHandlers() bindet mousedown/touchstart auf
       this.distElement), NICHT am Wrapper -- Klick-zum-Blaettern/Drag bleiben dadurch
       unangetastet funktionsfaehig. !important aus Konsistenz mit der width-Regel oben
       (kein inline-height von page-flip bekannt, aber defensiv gegen kuenftige
       Vendor-Aenderungen). */
    .msh-flipbook-stage.stf__parent .stf__wrapper {
        height: 100% !important;
        pointer-events: none;
    }
    /* KORREKTUR zum pointer-events:none oben (Owner-Befund: Drag-Blaettern brach ab,
       "Seite geht beim Ziehen verloren"): pointer-events VERERBT sich an Kinder -- und
       der Canvas ist zwar POSITIONAL unabhaengig vom Wrapper (s.o.), aber sein DOM-KIND.
       Ohne explizites auto war der Canvas event-tot und page-flips mousedown/touchstart
       (this.distElement=this.canvas) kamen nie an. Kind-Override stellt exakt den
       Vorzustand fuer die Buchflaeche wieder her; der Wrapper-Rand AUSSERHALB des Canvas
       bleibt durchlaessig (das war das Ziel der none-Regel). */
    .msh-flipbook-stage.stf__parent .stf__canvas {
        pointer-events: auto;
    }
}

/* cbk-um41 Runde 5 (Owner-Befund, Robustheits-Schicht UNABHAENGIG vom Wrapper-Hoehen-Fix
   oben): hebt die Bedienleiste explizit ueber den Flipbook-Stack (Stage/Wrapper/Canvas
   haben KEIN eigenes z-index, stapeln also auf der "auto"-Ebene) -- gewinnt dadurch JEDE
   raeumliche Ueberlappung im Hit-Test, auch bei kuenftigen, hier noch nicht bekannten
   Vendor-Eigenheiten. position:relative ist Voraussetzung fuer z-index (ohne "position"
   greift z-index nicht) -- KEIN top/left gesetzt, daher keine visuelle Verschiebung. */
.msh-flipbook-controls {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    flex-wrap: wrap;
}
.msh-flipbook-pageinfo {
    font-size: .9rem;
    color: #565c66;
    min-width: 90px;
    text-align: center;
}

/* Vollbild: page-flip berechnet die Größe aus dem Container (autoSize) -- im Vollbild-
   Zustand darf die Stage die volle Höhe des Bildschirms nutzen. */
.msh-flipbook:fullscreen,
.msh-flipbook:-webkit-full-screen {
    max-width: none;
    width: 100vw;
    height: 100vh;
    justify-content: center;
    background: #1c1e22;
    padding: 24px;
}
.msh-flipbook:fullscreen .msh-flipbook-viewport,
.msh-flipbook:-webkit-full-screen .msh-flipbook-viewport {
    height: calc(100vh - 120px);
    max-width: 1400px;
    background: transparent;
    box-shadow: none;
}
.msh-flipbook:fullscreen .msh-flipbook-pageinfo,
.msh-flipbook:-webkit-full-screen .msh-flipbook-pageinfo {
    color: #d7d9dd;
}

/* Design-Gate-Blocker: die Bedien-Buttons erben --shop-primary-text (KCMinishopColor::
   textFor, gegen WEISS kalibriert) -- auf dem fast-schwarzen Vollbild-Grund (#1c1e22)
   unsichtbar (Kontrast 1,45:1). Feste helle CI-unabhaengige Farbe, analog .msh-flipbook-
   pageinfo oben -- KEINE --shop-*-Tokens, die kollabieren bei heller Kunden-CI erneut. */
.msh-flipbook:fullscreen .msh-flipbook-controls .msh-btn,
.msh-flipbook:-webkit-full-screen .msh-flipbook-controls .msh-btn {
    border-color: rgba(255, 255, 255, .7);
    color: #fff;
}
.msh-flipbook:fullscreen .msh-flipbook-controls .msh-btn:hover,
.msh-flipbook:-webkit-full-screen .msh-flipbook-controls .msh-btn:hover {
    background: rgba(255, 255, 255, .12);
}
.msh-flipbook:fullscreen .msh-flipbook-controls .msh-btn:focus-visible,
.msh-flipbook:-webkit-full-screen .msh-flipbook-controls .msh-btn:focus-visible {
    outline-color: #fff;
}

/* P2-3 (cbk-7a02) Inline-Zoom -- aktiver Zoom-Modus-Zustand des Lupe-Buttons
   (aria-pressed wird von KCMinishopCatalog.js/createInlineZoom() bei JEDEM
   Zoom-/Reset-Schritt aktuell gehalten, s. dortige apply()). Attribut-Selektor statt
   neuer Klasse -- der a11y-Zustand IST bereits die einzige Quelle der Wahrheit, keine
   zweite, potentiell aus dem Tritt geratende "is-active"-Klasse noetig. Dieselbe
   kontrastsichere Token-Paarung wie .msh-btn--primary (KCMinishopShop.css) --
   gewinnt bewusst AUCH innerhalb der Vollbild-Sonderregel oben: beide Selektoren haben
   dieselbe Spezifitaet (0,3,0 -- 3 Klassen/Attribute), die Kaskade entscheidet daher per
   QUELLREIHENFOLGE -- diese Regel steht im Stylesheet SPAETER als die generische
   ".msh-btn"-Farbregel und gewinnt dadurch fuer die betroffenen Eigenschaften
   (background/border-color/color), auch im Vollbild. */
.msh-flipbook-controls [data-msh-flip-zoom][aria-pressed="true"] {
    background: var(--shop-accent, #c93a30);
    border-color: transparent;
    color: var(--shop-accent-ink, #fff);
}
.msh-flipbook-controls [data-msh-flip-zoom][aria-pressed="true"]:hover {
    filter: brightness(.92);
}

@media (max-width: 640px) {
    .msh-flipbook-controls { gap: 8px; }
    .msh-flipbook-pageinfo { min-width: 70px; font-size: .82rem; }
}

/* P2-3 Fast-Follow (cbk-gxr2, Owner-Befund Runde 2) HD-ZOOM-OVERLAY: natives <img>-Overlay
   je sichtbarer Seite, NUR waehrend des Inline-Zooms aufgebaut (KCMinishopCatalog.js
   createInlineZoom()#buildZoomOverlay(), s. dortige Funktions-Doc) -- ersetzt den vormaligen,
   browser-vermessen wirkungslosen Canvas-Bildtausch (StPageFlip rendert IMMER in ein <canvas>
   mit CSS-Groessen-Backing-Store, ein <img> dagegen IMMER aus seiner vollen intrinsischen
   Aufloesung). Positionierung ausschliesslich in % relativ zu .msh-flipbook-stage (dieselbe
   transform-invariante Bezugsgroesse wie .msh-flip-hotspots unten -- Design-Gate W2 dort).
   Container UND Kinder komplett pointer-events:none (rein dekorativ/schaerfend, blockiert
   weder den Zoom-Pan-Handler auf stageEl noch die Hotspot-Links) -- z-index UNTER den
   Hotspots (2), aber UEBER dem Canvas (kein eigenes z-index dort). */
.msh-flip-zoom-images {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
}
.msh-flip-zoom-img {
    position: absolute;
    display: block;
    pointer-events: none;
}

/* P2-1 (cbk-0dad): Artikel-Hotspots -- klickbare Overlays UEBER den aktuell sichtbaren
   Flipbook-Seite(n). Positionierung ausschliesslich in % relativ zu .msh-flipbook-stage
   (KCMinishopCatalog.js#renderHotspots() -- deckt sich exakt mit dem StPageFlip-Canvas, der
   per Vendor-CSS "position:absolute;width:100%;height:100%;left:0;top:0" die Stage komplett
   ausfuellt). Container selbst NICHT klickbar (pointer-events:none) -- nur die einzelnen
   Hotspot-Links (pointer-events:auto), damit Klicks daneben normal ans Canvas/StPageFlip
   durchgereicht werden (Blaettern per Klick auf die Seite bleibt unangetastet). */
.msh-flip-hotspots {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 2;
}
.msh-flip-hotspot {
    position: absolute;
    display: block;
    cursor: pointer;
    border-radius: 6px;
    pointer-events: auto;
    transition: background-color .12s ease, box-shadow .12s ease, opacity .15s ease;
}
/* Design-Gate BLOCKER B1: --shop-accent ist dekorativ (NICHT kontrastgeprueft) -- als
   Rahmenfarbe auf beliebigem Foto-/PDF-Untergrund kann der Ring unsichtbar werden.
   --shop-accent-text (KCMinishopColor::textFor, injiziert in ModuleKCMinishopPublic::
   injectAssets()) ist gegen WEISS kalibriert; kombiniert mit einem weissen Innenring als
   Halo/Doppelring statt Einzel-Outline besteht der Fokus-/Hover-Indikator WCAG 1.4.11 auch
   gegen einen unbekannten (dunklen ODER hellen) Bildhintergrund. outline explizit aus, damit
   der native Browser-Fokusring den Halo nicht doppelt. */
.msh-flip-hotspot:hover,
.msh-flip-hotspot:focus-visible {
    background: rgba(255, 255, 255, .35);
    outline: none;
    box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--shop-accent-text, var(--shop-accent, #c93a30));
}
/* Waehrend der Blaetter-Animation (user_fold/flipping, s. 'changeState'-Handler in
   KCMinishopCatalog.js) unsichtbar + nicht klickbar -- nur auf ruhenden Seiten interaktiv
   (Spec-Vorgabe). Der kurze "Ecke anheben"-Hover-Vorschau-Zustand (fold_corner) bleibt davon
   bewusst UNBERUEHRT (kein Seitenwechsel, nur ein optischer Hinweis) -- ein Ausblenden dort
   wuerde bei jeder Mausbewegung nahe einer Seitenecke flackern.) */
.msh-flip-hotspots.is-flipping .msh-flip-hotspot {
    opacity: 0;
    pointer-events: none;
}

/* P2-2 (cbk-r9mo): Produkt-Overlay bei Hotspot-Klick -- Backdrop+Panel sitzen als Kind von
   .msh-flipbook (NICHT document.body, s. KCMinishopCatalog.js-Datei-Header "PRODUKT-OVERLAY":
   im nativen Vollbild werden nur Nachfahren des fullscreen-Elements gerendert). position:fixed
   deckt sowohl den normalen als auch den Vollbild-Zustand ab (die fullscreen-Element-Box IST
   der Viewport). z-index ueber den Hotspots (2, s.o.) und der Bedienleiste.
   Die meisten Innen-Elemente (.msh-price-block, .msh-price, .msh-vpe, .msh-artnr, .msh-addtocart,
   .msh-qty, .msh-btn, .msh-notice, .msh-noimage) sind bewusst KEINE neuen Klassen, sondern
   dieselben globalen Storefront-Klassen wie auf der Detailseite (KCMinishopShop.css) --
   gleiche Optik, keine Duplikate, inkl. dortiger Fokus-Ring-Regeln (.msh-btn:focus-visible
   etc. sind unscoped und greifen daher automatisch auch hier). */
.msh-overlay-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(15, 17, 21, .55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 50;
}
/* KRITISCHER FIX (im Zuge von P2-3, cbk-7a02, entdeckt -- gilt fuer BEIDE Overlays, s. die
   gleichlautende Regel im P2-3-Block unten): das Browser-UA-Stylesheet setzt "[hidden] {
   display:none}" OHNE !important -- eine Author-Regel, die "display" auf demselben Element
   unconditional festlegt (hier: "display:flex" oben), gewinnt die Kaskade TROTZDEM (Autor-
   Herkunft schlaegt UA-Herkunft, unabhaengig von Selektor-Spezifitaet/Quellreihenfolge,
   s. CSS Cascading Level 4 §6.1). Ohne diese Regel bleibt backdrop.hidden=true WIRKUNGSLOS
   -- production-verifiziert auf demoshop.creativbaukasten.de/katalog.html: das leere Panel
   deckte dauerhaft die gesamte Katalogseite ab UND blockierte (pointer-events:auto) jede
   Interaktion (Blaettern/Hotspots), s. Ruecksprache-Notiz zu cbk-7a02. Kompensiert per
   author-eigener [hidden]-Regel mit HOEHERER Spezifitaet (0,2,0 statt 0,1,0) als die
   "display:flex"-Regel oben -- gewinnt daher unabhaengig von der Quellreihenfolge. */
.msh-overlay-backdrop[hidden] {
    display: none;
}
.msh-overlay-panel {
    position: relative;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .35);
    max-width: 520px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    padding: 20px;
}
/* Design-Gate W3: das Panel selbst bekommt per JS tabIndex=-1 + .focus() (A11y-Fokus-
   Einstieg beim Oeffnen), soll aber KEINEN sichtbaren Ring ums GESAMTE Panel zeigen -- die
   Kind-Fokusringe (Close-Button/Buttons/Links, s.u. bzw. KCMinishopShop.css) bleiben davon
   unberuehrt und sind die eigentlich sichtbaren Fokus-Indikatoren im Overlay. */
.msh-overlay-panel:focus {
    outline: none;
}
.msh-overlay-close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #6b7280;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
}
.msh-overlay-close:hover { background: var(--shop-secondary, #f5f6f8); }
.msh-overlay-close:focus-visible {
    outline: 3px solid var(--shop-primary-text, var(--shop-primary, #1f3a5f));
    outline-offset: 2px;
}
.msh-overlay-body { margin-top: 8px; }
.msh-overlay-loading { text-align: center; color: #6b7280; padding: 34px 10px; }

.msh-overlay-article { display: flex; flex-direction: column; gap: 16px; }
@media (min-width: 460px) {
    .msh-overlay-article { flex-direction: row; align-items: flex-start; }
}
.msh-overlay-image {
    flex: 0 0 auto;
    width: 100%;
    max-width: 190px;
    aspect-ratio: 4 / 3;
    background: var(--shop-secondary, #f5f6f8);
    border-radius: 8px;
    overflow: hidden;
    margin: 0 auto;
}
.msh-overlay-image img { width: 100%; height: 100%; object-fit: contain; }
.msh-overlay-info { flex: 1 1 auto; min-width: 0; }
/* A11y (dieselbe Kaskaden-Regel wie .msh-main h1/.msh-sidebar-title in KCMinishopShop.css):
   --shop-primary als TEXTfarbe -> die kontrastsichere --shop-primary-text-Variante. */
.msh-overlay-info h2 { margin: 0 0 4px; font-size: 1.1rem; color: var(--shop-primary-text, var(--shop-primary, #1f3a5f)); }
.msh-overlay-incart { font-size: .82rem; color: #565c66; margin: 8px 0 0; }
.msh-overlay-detaillink { margin-top: 12px; }

@media (max-width: 480px) {
    .msh-overlay-panel { padding: 16px; max-height: 94vh; }
    .msh-overlay-image { max-width: 140px; }
}

/* P2-3 (cbk-7a02) Inline-Zoom -- schwebende +/-/Reset-Mini-Steuerung INNERHALB von
   .msh-flipbook-viewport (unskaliert, s. dortiger Kommentar), NUR sichtbar solange
   gezoomt ist (KCMinishopCatalog.js#createInlineZoom() togglet [hidden]). Bewusst KEIN
   Backdrop/Dialog wie Produkt-/Uebersicht-Overlay -- der Zoom ist inline auf der Seite,
   kein separates Fenster (Owner-Vorgabe 2026-07-10), die Mini-Steuerung ist nur eine
   dezente Ergaenzung zu Mausrad/Doppelklick/+/-/0-Tastatur/Hauptleisten-Zoom-Button. */
.msh-flip-zoom-controls {
    position: absolute;
    right: 10px;
    bottom: 10px;
    z-index: 5; /* ueber Canvas (kein eigenes z-index) und Hotspots (2), unter allen Backdrop-Overlays (50+) */
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 6px;
    border-radius: 20px;
    background: rgba(15, 17, 21, .68);
    backdrop-filter: blur(2px);
}
/* KRITISCHER FIX -- s. ausfuehrliche Herleitung bei ".msh-overlay-backdrop[hidden]" (P2-2-
   Block): ohne diese author-eigene, hoeher-spezifische [hidden]-Regel bleibt
   controls.hidden=true wirkungslos gegen das direkt darueber gesetzte "display:flex"
   (Autor-Kaskade schlaegt UA-Kaskade unabhaengig von Spezifitaet/Reihenfolge). */
.msh-flip-zoom-controls[hidden] {
    display: none;
}
.msh-flip-zoom-mini-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #fff; /* auf dem dunklen, CI-unabhaengigen Steuerungs-Hintergrund oben -- analog Vollbild-Buttons */
    font-size: .78rem;
    cursor: pointer;
}
.msh-flip-zoom-mini-btn:hover { background: rgba(255, 255, 255, .18); }
.msh-flip-zoom-mini-btn:disabled { opacity: .4; cursor: not-allowed; }
.msh-flip-zoom-mini-btn:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.msh-flip-zoom-level {
    min-width: 40px;
    text-align: center;
    font-size: .72rem;
    color: #fff;
}

@media (max-width: 640px) {
    .msh-flip-zoom-controls { right: 6px; bottom: 6px; }
    .msh-flip-zoom-mini-btn { width: 24px; height: 24px; }
}

/* P2-4 (cbk-lf7x): Seitenübersicht -- selbe Backdrop-/Panel-Grundmechanik wie das Produkt-
   Overlay (P2-2, s. dortige Kommentare); Close-Button teilt sich .msh-overlay-close DIREKT
   (eine weitere optisch identische Instanz statt einer Kopie). z-index ueber dem
   Produkt-Overlay-Backdrop (50) -- kann sich mit ihm laut JS nie ueberschneiden (eigener
   Trigger-Button, kein gemeinsamer Oeffnungspfad), bleibt defensiv trotzdem obenauf. */
.msh-overview-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(15, 17, 21, .6);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 70;
}
/* KRITISCHER FIX -- s. ausfuehrliche Herleitung bei ".msh-overlay-backdrop[hidden]" (P2-2-
   Block) bzw. ".msh-flip-zoom-controls[hidden]" (P2-3-Block): OHNE diese author-eigene,
   hoeher-spezifische [hidden]-Regel bleibt backdrop.hidden=true wirkungslos gegen das direkt
   darueber gesetzte "display:flex" (Autor-Kaskade schlaegt UA-Kaskade unabhaengig von
   Spezifitaet/Reihenfolge). Beim DRITTEN [hidden]-getoggelten Element von Anfang an mitgezogen.
   Nebeneffekt (s. KCMinishopCatalog.js#createOverviewOverlay() "THUMBNAILS/LAZY-LOADING"):
   solange dieses Backdrop [hidden] ist, besitzen seine <img loading="lazy">-Thumbnails
   dank "display:none" KEINE Layout-Box, gegen die der Browser eine Sichtbarkeits-Pruefung
   vornehmen koennte -- kein Request-Sturm beim Seitenaufbau. */
.msh-overview-backdrop[hidden] {
    display: none;
}
.msh-overview-panel {
    position: relative;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .4);
    width: 100%;
    max-width: min(94vw, 1100px);
    max-height: 92vh;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.msh-overview-panel:focus { outline: none; } /* Design-Gate W3 (Produkt-Overlay) gilt identisch, s. dort */
.msh-overview-title {
    margin: 0;
    padding-right: 40px; /* Platz fuer den absolut positionierten Close-Button oben rechts */
    font-size: 1.05rem;
    color: var(--shop-primary-text, var(--shop-primary, #1f3a5f));
}
.msh-overview-body {
    overflow-y: auto;
    flex: 1 1 auto;
}
.msh-overview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
}
/* --msh-overview-ratio wird von KCMinishopCatalog.js (createOverviewOverlay()) einmalig aus
   der echten Seitenbreite/-höhe gesetzt -- Fallback .7/1 nur für den (praktisch nie
   eintretenden) Fall eines fehlenden Custom-Property-Supports. */
.msh-overview-thumb {
    position: relative;
    display: block;
    padding: 0;
    border: 2px solid transparent;
    border-radius: 6px;
    background: var(--shop-secondary, #f5f6f8);
    cursor: pointer;
    overflow: hidden;
    aspect-ratio: var(--msh-overview-ratio, .7 / 1);
    transition: border-color .12s ease, box-shadow .12s ease;
}
.msh-overview-thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
/* Design-Gate BLOCKER B1 (Hotspot-Fokus-Ring, s. oben) gilt identisch: --shop-accent ist
   rein dekorativ/nicht kontrastgeprueft -- --shop-accent-text (gegen WEISS kalibriert) ist
   auf dem neutralen --shop-secondary-Thumbnail-Hintergrund hinreichend kontrastsicher. */
.msh-overview-thumb:hover,
.msh-overview-thumb:focus-visible {
    outline: none;
    border-color: var(--shop-accent-text, var(--shop-accent, #c93a30));
}
/* Aktuell geöffnete Seite -- bewusst NUR Rahmen/Ring, KEIN Füllton (Spec-Vorgabe
   "kontrastsicher/nur Rahmen"), dieselbe Token-Wahl wie :hover/:focus-visible oben. */
.msh-overview-thumb.is-current {
    border-color: var(--shop-accent-text, var(--shop-accent, #c93a30));
    box-shadow: 0 0 0 1px var(--shop-accent-text, var(--shop-accent, #c93a30));
}
.msh-overview-num {
    position: absolute;
    left: 4px;
    bottom: 4px;
    padding: 1px 6px;
    border-radius: 4px;
    background: rgba(15, 17, 21, .65);
    color: #fff;
    font-size: .72rem;
    line-height: 1.4;
    pointer-events: none;
}

@media (max-width: 640px) {
    .msh-overview-panel { padding: 14px; gap: 8px; }
    .msh-overview-grid { grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; }
}

/* P2-5 (cbk-b7zy): Teilen-Popover -- der Trigger-Button (data-msh-flip-share) sitzt WEITERHIN
   direkt in .msh-flipbook-controls (KCMinishopCatalog.js "wrap"-Technik fügt nur einen
   zusätzlichen span-Wrapper ein, verändert die sichtbare Position nicht) -- die bestehende
   Vollbild-Regel ".msh-flipbook:fullscreen .msh-flipbook-controls .msh-btn" (weiter oben)
   greift daher unverändert auch hier (Nachfahren-Selektor, unabhängig von der Verschachtelungs-
   tiefe): der Button bleibt im Vollbild hell/lesbar. Das Popover-PANEL selbst braucht dafür
   KEINE eigene Vollbild-Sonderregel -- es sitzt (wie die Backdrop-Panels von P2-2/P2-4)
   auf einem WEISSEN Hintergrund, unabhängig vom dunklen Vollbild-Grund dahinter. */
.msh-share-menu-wrap {
    position: relative;
    display: inline-flex;
}
.msh-share-menu {
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 40; /* unter den Overlay-Backdrops (50 Produkt-/70 Uebersicht-Overlay) -- kann sich mit ihnen laut JS nie ueberschneiden */
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 190px;
    /* Design-Gate Warnung W2: "left:50%/translateX(-50%)" zentriert starr unter dem Trigger
       ohne Rand-Erkennung -- auf schmalen Viewports (<=480px, .msh-flipbook-controls
       flex-wrap) kann das Popover sonst ueber die Viewport-Kante ragen. max-width deckelt die
       Breite auf den sichtbaren Bereich (12px Luft je Seite); Inhalt bricht dank .msh-share-item
       "white-space:nowrap" NICHT um -- bei sehr schmalen Viewports genuegt der Puffer hier
       (min-width 170px ab 480px, s. Media-Query unten). */
    max-width: calc(100vw - 24px);
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 12px 34px rgba(0, 0, 0, .22);
    padding: 6px;
}
/* KRITISCHER FIX -- s. ausführliche Herleitung bei ".msh-overlay-backdrop[hidden]" (P2-2-
   Block, ganz oben in dieser Datei): OHNE diese author-eigene, höher-spezifische [hidden]-
   Regel bleibt menu.hidden=true wirkungslos gegen das direkt darüber gesetzte "display:flex"
   (Autor-Kaskade schlägt UA-Kaskade unabhängig von Spezifität/Reihenfolge). Beim VIERTEN
   hidden-getoggelten Element in dieser Datei von Anfang an mitgezogen. */
.msh-share-menu[hidden] {
    display: none;
}
.msh-share-item {
    display: block;
    width: 100%;
    padding: 8px 10px;
    border: none;
    border-radius: 6px;
    background: transparent;
    /* Design-Gate Warnung W3: #26292e ist die im Modul etablierte Shop-Neutraltextfarbe
       (s. KCMinishopShop.css .msh-card-title/.msh-rubrics u.a.) -- kein neuer Ton. */
    color: #26292e;
    font: inherit;
    font-size: .88rem;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    white-space: nowrap;
}
.msh-share-item:hover {
    background: var(--shop-secondary, #f5f6f8);
}
/* Design-Gate BLOCKER B1: :hover und :focus-visible waren zusammengefasst und teilten sich
   "outline:none" -- der Fokus-Hintergrund (--shop-secondary/#f5f6f8) auf dem weissen
   Popover-Panel liegt bei ca. 1,08:1 Kontrast, es blieb also KEIN sichtbarer Fokusring
   (WCAG 2.4.7-Regression gegen das sonst im Modul etablierte Ring-Muster, s. z.B.
   .msh-overlay-close/.msh-overview-thumb:focus-visible oben). Getrennte Regel mit demselben
   kontrastsicheren Ring-Token wie ueberall sonst im Storefront (--shop-primary-text);
   negativer outline-offset haelt den Ring INNERHALB des Popover-Panels (das Panel hat selbst
   keinen Innenabstand zum Rand des .msh-share-menu-Containers, ein positiver Offset wuerde den
   Ring am Panel-Rand abschneiden). */
.msh-share-item:focus-visible {
    outline: 3px solid var(--shop-primary-text, var(--shop-primary, #1f3a5f));
    outline-offset: -2px;
    background: var(--shop-secondary, #f5f6f8);
}
/* Kein [hidden]-Gegenregel-Bedarf: .msh-share-feedback bekommt bewusst KEIN eigenes
   "display" gesetzt (Standard-Blockelement <p>) -- die native UA-"[hidden]{display:none}"-
   Regel greift dadurch unangetastet, s. Kommentar-Herleitung oben. */
.msh-share-feedback {
    margin: 4px 6px 2px;
    font-size: .78rem;
    color: #565c66;
}

@media (max-width: 480px) {
    .msh-share-menu { min-width: 170px; }
}

/*!
 * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 */
.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.eot);src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.woff) format("woff"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.ttf) format("truetype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.eot);src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.woff) format("woff"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.ttf) format("truetype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.eot);src:url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.woff) format("woff"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.ttf) format("truetype"),url(../../files/cbk-theme/assets/fontawesome/webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
