/*
 * Cheshire - Theme "Support" (Supportforum-Redesign, Peter-Freigabe 22.09.2026)
 * Basis: Kopie von modern.css (Card-Optik), Palette auf den Redesign-
 * Handoff umgestellt (Blau #0042ab statt Cheshire-Violett, IBM Plex statt
 * sans-serif, 12px statt 6px Radius). TP1 von 6: Theme-Registrierung +
 * Design-Tokens. Struktur-Aenderungen der Thread-Ansicht folgen in TP2-5.
 * @see docs/Cheshire_Session_canPostLink.md, Theme.php, DesignTrait.php
 */

/* Bugfix 22.09.2026 (Peter-Meldung, F12/CSP): Google-Fonts-@import verletzte
   "style-src 'self'" (.htaccess-CSP) und wurde vom Browser blockiert -- genau
   das Problem, das das Redesign-Handoff selbst schon vorwegnahm ("im Forum
   bitte self-hosted unter assets/fonts/, damit font-src 'self' unveraendert
   bleiben kann"). Statt Font-Dateien nachzuziehen (Download aus dem Sandbox-
   Kontext, neue Abhaengigkeit) jetzt ein sauberer System-Font-Stack ohne
   externen Request -- optisch sehr nah an IBM Plex (neutrale Sans/Serif-
   Grotesk), CSP bleibt unveraendert, kein Font-Ladevorgang/Flackern. */
:root{
    --cheshire-primary:#0042ab;--cheshire-accent:#3d6b8c;--cheshire-content-width:1280px;
    --cheshire-radius:12px;
    --cheshire-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    --cheshire-font-serif:Georgia,"Times New Roman",Times,serif;
}

/* ── Reset & base ── */
.cheshire-wrap *{box-sizing:border-box}
.cheshire-wrap{font-family:var(--cheshire-font,sans-serif);line-height:1.5;color:var(--cheshire-text,#333);background:var(--cheshire-bg,transparent);max-width:var(--cheshire-content-width,960px);margin:0 auto;background-image:var(--cheshire-bg-image,none);background-size:var(--cheshire-bg-size,auto);background-repeat:var(--cheshire-bg-repeat,no-repeat);background-attachment:var(--cheshire-bg-attachment,scroll);background-position:center top}

/* #141 Hybrid-Betrieb: eigene Seiten-Huelle (_layout.htt) hat kein WBCE-Theme
   als Basis, daher minimaler eigener Reset — nur unter #cheshire-standalone
   (Body-ID nur im Hybrid-Modus vorhanden), Integriert-Modus bleibt unberuehrt. */
#cheshire-standalone{margin:0;font-family:var(--cheshire-font,sans-serif);line-height:1.5;color:var(--cheshire-text,#333);background:var(--cheshire-surface-alt,#f7f8fa)}
#cheshire-standalone *{box-sizing:border-box}
#cheshire-standalone-main{max-width:var(--cheshire-content-width,960px);margin:0 auto;padding:1rem}

/* ── Breadcrumb ── */
.cheshire-breadcrumb{font-size:.85rem;color:var(--cheshire-text-muted,#777);margin-bottom:1rem}
/* Zusammenstellung-Restpunkt TP4 (Peter-Feedback #408): eigene Farbe per
   --cheshire-breadcrumb statt reiner Ableitung, siehe Theme::cssVarsBlock() */
/* Nachbesserung 13.09.2026, siehe Kommentar in cheshire.css: kein Fallback
   mehr auf --cheshire-accent, eigener fester Theme-Default. */
.cheshire-breadcrumb a{color:var(--cheshire-breadcrumb,#3d6b8c);text-decoration:none}
.cheshire-breadcrumb a:hover{text-decoration:underline}
/* Peter-Wunsch: gleiche Navi auch am Seitenende, damit man nach dem
   Scrollen nicht orientierungslos dasteht (Forum-/Thread-Ansicht). */
.cheshire-breadcrumb-bottom{margin-top:1.5rem;margin-bottom:0;padding-top:.8rem;border-top:1px solid var(--cheshire-border-strong,#e2e6ea)}
.cheshire-back-to-top{float:right}

/* ── Editor ── */
.cheshire-editor-toolbar{display:flex;gap:.25rem;margin-bottom:.25rem}
.cheshire-editor-toolbar button{border:1px solid var(--cheshire-border-strong,#ccc);background:var(--cheshire-surface-alt,#f5f5f5);border-radius:3px;padding:.25rem .5rem;cursor:pointer}
.cheshire-editor-toolbar button:hover{background:var(--cheshire-surface-alt,#e8e8e8)}
.CodeMirror{border:1px solid var(--cheshire-border-strong,#ccc);border-radius:3px}
textarea.cheshire-editor{border:1px solid var(--cheshire-border-strong,#ccc);border-radius:3px;padding:.5rem;width:100%}

.cheshire-category{margin-bottom:1.5rem}
.cheshire-category-title{font-size:1.1rem;font-weight:700;padding:.5rem 0;border-bottom:2px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem}
.cheshire-category-toggle{background:none;border:none;color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));cursor:pointer;font-size:.85rem;padding:0 .2rem}
/* Weg 1 (Design & Layout, 31.08.2026): siehe ContentDisplay.php */
.cheshire-category-description{font-size:.82rem;color:var(--cheshire-text-muted,#777);margin:0 0 .5rem}
.cheshire-badge-thread-count{background:var(--cheshire-surface-alt,#f0f4f8);color:var(--cheshire-text-muted,#777);font-size:.72rem;padding:.1rem .4rem;border-radius:3px;margin-left:auto;font-weight:400}

/* ── Forum row ── */
/* Peter-Wunsch (18.09.2026): erste Spalte ist jetzt der Auf/Zu-Pfeil
   (.cheshire-forum-expand), analog zur Kategorie-Ebene -- siehe Markup-
   Reihenfolge in ForumController.php. */
.cheshire-forum-row{display:grid;grid-template-columns:auto 2rem 1fr auto auto;gap:.5rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--cheshire-border,#eee)}
/* Weg 1 (Design & Layout, 31.08.2026): "Kompakte Darstellung", siehe ContentDisplay.php */
.cheshire-forum-row-compact{padding:.3rem 0;font-size:.9em}
.cheshire-forum-row-compact .cheshire-forum-icon{font-size:.8em}
.cheshire-forum-row-compact .cheshire-forum-description{display:none}
.cheshire-forum-name{font-weight:600;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none}
.cheshire-forum-name:hover{text-decoration:underline}
.cheshire-forum-description{font-size:.82rem;color:var(--cheshire-text-muted,#777);margin:.1rem 0 0}
/* Design-Nachbesserung (Peter-Praezisierung 02.10.2026, 2. Klaerungsrunde):
   .cheshire-forum-meta buendelt die neu/gelöst-Badges (+➕-Icon) UND die
   Themen/Beiträge-Statistik in einer gemeinsamen Grid-Spalte (ersetzt die
   vorherige reine Stats-Spalte) -- siehe ForumController.php. Desktop:
   beide Gruppen nebeneinander, rechtsbuendig. Mobil (siehe Media Query
   unten): zwei Zeilen -- Badges links, Statistik rechts UNTEREINANDER. */
.cheshire-forum-meta{display:flex;gap:.6rem;justify-content:flex-end;align-items:center}
.cheshire-forum-status-badges{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}
.cheshire-forum-stats{display:flex;gap:.35rem;justify-content:flex-end;align-items:center}
/* Design-Runde 2, Thema 1 (Peter-Mockup-Feedback 01.09.2026): Themen-/
   Beitraege-Zahlen als Badges statt Fliesstext, gleiches Muster wie
   .cheshire-badge-thread-count auf der Kategorie-Ebene. */
.cheshire-forum-badge{font-size:.72rem;padding:.15rem .55rem;border-radius:10px;white-space:nowrap;font-weight:400}
.cheshire-forum-badge-threads{background:var(--cheshire-surface-alt,#f5f5f5);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-forum-badge-posts{background:var(--cheshire-surface-alt,#f5f5f5);color:var(--cheshire-text-muted,#777)}
/* Bugfix (Peter-Bugreport 13.09.2026, "Ich habe bei Modern naemlich noch
   Text!"): Backlog #491/#547 -- Posts/Views-Badges in der Themen-Liste
   existierten bisher nur in cheshire.css, hier komplett gefehlt (nicht die
   Vorschau, siehe cheshire.css-Kommentar). Gleiches Muster/Farbton wie
   .cheshire-forum-badge oben. */
.cheshire-thread-stats{display:flex;gap:.4rem;flex-wrap:nowrap}
.cheshire-thread-badge{font-size:.72rem;padding:.15rem .5rem;border-radius:10px;white-space:nowrap;font-weight:400;background:var(--cheshire-surface-alt,#f5f5f5);color:var(--cheshire-text-muted,#777)}
.cheshire-forum-lastpost{font-size:.78rem;color:var(--cheshire-text-faint,#999);text-align:right;white-space:nowrap;min-width:11rem}
.cheshire-forum-expand{text-align:left}
.cheshire-forum-toggle{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border-strong,#d5e2f6);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));cursor:pointer;font-size:.75rem;padding:.15rem .5rem;border-radius:4px}
.cheshire-forum-toggle:hover{background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-forum-mini-threads{padding:.3rem 0 .6rem 2.5rem;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-mini-thread-row{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;font-size:.85rem;padding:.25rem 0}
.cheshire-mini-thread-row a{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none;font-weight:600}
.cheshire-mini-thread-row a:hover{text-decoration:underline}
/* Design-Nachbesserung (Peter-Praezisierung 02.10.2026, 2. Klaerungsrunde):
   gleiches Muster wie .cheshire-forum-meta oben, fuer die aufklappbare
   Mini-Themenliste (Flex- statt Grid-Zeile). */
.cheshire-mini-thread-meta{display:flex;align-items:center;gap:.6rem}
.cheshire-mini-thread-stats{display:flex;gap:.3rem;flex-wrap:nowrap}
.cheshire-mini-thread-lastpost{margin-left:auto;font-size:.75rem;color:var(--cheshire-text-faint,#999);white-space:nowrap}
.cheshire-mini-thread-more{display:inline-block;margin-top:.3rem;font-size:.8rem;color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));text-decoration:none}
.cheshire-mini-thread-more:hover{text-decoration:underline}

/* ── Thread list ── */
.cheshire-thread-row{display:grid;grid-template-columns:1fr auto auto auto;gap:.5rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-thread-title{font-weight:600;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none}
.cheshire-thread-title:hover{text-decoration:underline}
/* Design-Nachbesserung (Peter-Praezisierung 02.10.2026, 2. Klaerungsrunde):
   gleiches Muster wie .cheshire-forum-meta oben, fuer die Themenlisten
   (Forum-/Tag-/Typ-Seiten). */
.cheshire-thread-meta{display:flex;gap:.6rem;justify-content:flex-end;align-items:center}
.cheshire-thread-status-badges{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}
.cheshire-badge-solved{background:#27AE60;color:#fff;font-size:.72rem;padding:.1rem .4rem;border-radius:3px;margin-left:.4rem}
.cheshire-badge-unread{background:#E67E22;color:#fff;font-size:.72rem;padding:.1rem .4rem;border-radius:3px;margin-left:.4rem}
/* Design-Runde 4 TP5 (Peter-Wunsch 19.09.2026): Neu/Gelöst-Zaehler im
   Kategorie-Kopf, per JS-Klasse (.cheshire-category-collapsed) nur
   sichtbar, solange die Kategorie eingeklappt ist. */
.cheshire-cat-status-badges{display:none;margin-left:.4rem}
.cheshire-category-collapsed .cheshire-cat-status-badges{display:inline-flex;gap:.3rem}
.cheshire-cat-status-badges .cheshire-badge-solved{margin-left:0}
/* Peter-Wunsch 20.09.2026: "+Neues Thema"-Icon-Link direkt in der Forum-
   Zeile, neben den neu/gelöst-Badges (siehe ForumController.php). Rund,
   kompakt, Primaerfarbe wie .cheshire-btn-new, aber als Icon statt Text. */
.cheshire-forum-new-icon{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;margin-left:.4rem;background:var(--cheshire-primary,#2E4057);color:#fff;border-radius:50%;font-size:.7rem;text-decoration:none;line-height:1;vertical-align:middle}
.cheshire-forum-new-icon:hover{background:var(--cheshire-accent,#3D6B8C);color:#fff}
.cheshire-badge-closed{background:#7f8c8d;color:#fff;font-size:.72rem;padding:.1rem .4rem;border-radius:3px;margin-left:.4rem}
/* Bugfix (im Zuge der Design-Nachbesserung 02.10.2026): die Badges wandern
   jetzt in einen eigenen linksbuendigen Wrapper (.cheshire-forum-status-
   badges/.cheshire-thread-status-badges) -- ihr bisheriges margin-left
   (gedacht als Abstand zum davorstehenden Titeltext/Icon) erzeugte dort
   einen unschoenen Leerraum VOR dem ersten Badge. gap auf dem Wrapper
   uebernimmt den Abstand zwischen den Badges bereits. */
.cheshire-forum-status-badges > :first-child,
.cheshire-thread-status-badges > :first-child{margin-left:0}

/* ── Verschieben/Massenbearbeitung (1.30) ── */
.cheshire-move-thread-form{display:inline-block;margin-left:.6rem;font-size:.85rem}
.cheshire-move-thread-form select{padding:.2rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px}
.cheshire-bulk-move-bar{position:sticky;bottom:0;background:var(--cheshire-warning-bg,#fff3cd);border:1px solid var(--cheshire-warning-border,#ffc107);border-radius:6px;padding:.6rem .9rem;margin:.8rem 0;font-size:.85rem;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.cheshire-bulk-move-bar input[type="number"],.cheshire-bulk-move-bar input[type="text"]{padding:.25rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px}
/* Chip-Design (Peter-Wunsch 20.09.2026): siehe cheshire.css fuer Erklaerung. */
.cheshire-tag{display:inline-flex;align-items:center;gap:.3rem;background:var(--cheshire-surface,#fff);border:2px solid var(--tag-color,var(--cheshire-accent,#3d6b8c));color:var(--tag-color,var(--cheshire-accent,#3d6b8c));font-size:.72rem;font-weight:600;padding:.15rem .55rem;border-radius:999px;margin:.1rem;text-decoration:none}
.cheshire-icon-sticky,.cheshire-icon-type{color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));margin-right:.15rem}
/* Gruppe 5 (18.09.2026: "Sticky-Umrandung"): siehe cheshire.css fuer Erklaerung. */
.cheshire-thread-row-sticky,.cheshire-mini-thread-row-sticky{border-left:3px solid var(--cheshire-accent,#3d6b8c);background:var(--cheshire-surface-alt,#f7f8fa);padding-left:.5rem;border-radius:4px}
.cheshire-thread-lastpost,.cheshire-lastpost,.cheshire-lastpost-empty{font-size:.78rem;color:var(--cheshire-text-faint,#999);text-align:right;white-space:nowrap}
.cheshire-lastpost a{color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));text-decoration:none}
.cheshire-lastpost a:hover{text-decoration:underline}
.cheshire-lastpost-jump{display:inline-block;margin-left:.3rem;text-decoration:none;opacity:.7;font-size:.95em}
.cheshire-lastpost-jump:hover{opacity:1;text-decoration:none}
/* Design-Nachbesserung (Peter-Praezisierung 02.10.2026, 2. Klaerungsrunde
   per Screenshot + Text: "1. Zeile Themen-Typ + Thread links, 2. Zeile
   darunter gelöst/neu links, gefolgt von Post/Views rechts, wobei Post und
   View dann gestapelt sind"): die erste CSS-only-Fassung (reiner display:
   block-Trick ohne Markup-Aenderung) stapelte Badges und Statistik jeweils
   als VOLLE eigene Zeilen untereinander -- nicht das gewuenschte 2-Spalten-
   Layout (Badges links, Statistik rechts daneben). Dafuer war ein kleiner
   PHP-Markup-Umbau noetig: Badges (.cheshire-forum-status-badges/
   .cheshire-thread-status-badges) und Statistik (.cheshire-forum-stats/
   .cheshire-thread-stats) stecken jetzt in einem gemeinsamen Wrapper
   (.cheshire-forum-meta/.cheshire-thread-meta/.cheshire-mini-thread-meta,
   siehe ForumController.php) -- auf dem Desktop weiterhin nebeneinander
   rechtsbuendig (siehe Grundregeln oben), hier auf dem Smartphone wird der
   Wrapper per grid-template-areas in eine ZWEITE Zeile unter Titel/Icon
   verschoben und intern mit justify-content:space-between aufgeteilt:
   Badges links (Zeile bleibt, falls mehrere, als Flow), Statistik rechts
   MIT flex-direction:column (Themen/Beiträge bzw. Posts/Views stehen dort
   also zusaetzlich UNTEREINANDER). Mini-Themenliste ist ein Flex- statt
   Grid-Container -- dort erzwingt flex-basis:100% auf Titel UND Meta-
   Wrapper je eine eigene volle Zeile, intern wieder space-between. */
@media (max-width:700px){
    .cheshire-forum-row{
        grid-template-columns:2rem 2rem 1fr;
        grid-template-areas:
            "expand icon info"
            ".      .    meta";
    }
    .cheshire-forum-expand{grid-area:expand}
    .cheshire-forum-icon{grid-area:icon}
    .cheshire-forum-info{grid-area:info}
    .cheshire-forum-meta{grid-area:meta;justify-content:space-between;align-items:flex-start;margin-top:.3rem}
    .cheshire-forum-stats{flex-direction:column;align-items:flex-end;gap:.2rem}
    .cheshire-forum-lastpost{display:none}

    .cheshire-forum-mini-threads{padding-left:.5rem}
    .cheshire-mini-thread-lastpost{display:none}
    .cheshire-mini-thread-row a{flex-basis:100%}
    .cheshire-mini-thread-meta{flex-basis:100%;justify-content:space-between;align-items:flex-start}
    .cheshire-mini-thread-stats{flex-direction:column;align-items:flex-end;gap:.2rem}

    .cheshire-thread-row{grid-template-columns:1fr}
    .cheshire-thread-meta{justify-content:space-between;align-items:flex-start;margin-top:.3rem}
    .cheshire-thread-stats{flex-direction:column;align-items:flex-end;gap:.2rem}
    .cheshire-thread-lastpost{display:none}
}

/* ── Pagination-Profil-Override (Peter-Reminder Juli 2026) ── */
.cheshire-pagination-pref{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;margin:.8rem 0 1.2rem;padding:.7rem 1rem;background:var(--cheshire-surface-alt,#f4f6f8);border-radius:6px}
.cheshire-pagination-pref select{padding:.3rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px}

/* ── Consent / legal checkboxes ──
   !important on layout props: WBCE Flat Theme's global form CSS applies
   its own label/input[checkbox] rules (block labels, full-width inputs)
   that otherwise break this layout. Used for registration consent and
   upload copyright confirmation. */
.cheshire-consent-box{margin:1rem 0;padding:.8rem 1rem;background:var(--cheshire-surface-alt,#f8f9fa);border:1px solid var(--cheshire-border-strong,#dee2e6);border-radius:6px}
.cheshire-consent-item{display:flex!important;align-items:flex-start;gap:.5rem;margin-bottom:.5rem;cursor:pointer;font-weight:400;line-height:1.4}
.cheshire-consent-item:last-child{margin-bottom:0}
.cheshire-consent-item input[type="checkbox"]{margin-top:.2rem;flex-shrink:0;width:auto!important;min-width:16px;height:16px}
.cheshire-consent-item span{flex:1 1 auto}
@media (max-width:480px){
    .cheshire-consent-item{gap:.4rem;font-size:.88rem}
}

/* ── Post ── */
.cheshire-post{border:1px solid var(--cheshire-border,#eee);border-radius:6px;margin-bottom:1rem;overflow:hidden}
.cheshire-post-author{background:var(--cheshire-surface-alt,#f5f5f5);padding:.5rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);display:flex;align-items:flex-start;gap:.5rem}
/* Design-Runde 4 TP2 (Peter-Wunsch 19.09.2026): Avatar-Spalte, siehe
   cheshire.css fuer ausfuehrlichen Kommentar -- identisches Muster in
   allen 3 Theme-Dateien, da diese CSS-Dateien nicht kaskadieren. */
.cheshire-post-avatar{flex:0 0 auto;display:block;line-height:0}
.cheshire-post-avatar img{width:40px;height:40px;border-radius:50%;object-fit:cover;display:block;border:1px solid var(--cheshire-border,#ddd)}
@media (max-width:480px){.cheshire-post-avatar img{width:28px;height:28px}}
/* Design-Runde 2, Thema 2: Name+Rolle vs. Zeit/Beitraege-Link getrennte
   Zeilen statt einer flachen Reihe (Peter-Mockup-Feedback 01.09.2026). */
.cheshire-post-author-block{display:flex;flex-direction:column;gap:.15rem}
.cheshire-post-author-name{font-size:.88rem;font-weight:600;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.cheshire-post-author-meta{font-size:.76rem;color:var(--cheshire-text-faint,#999);display:flex;align-items:center;gap:.35rem}
.cheshire-post-author-meta .cheshire-btn-userposts{color:inherit;text-decoration:none}
.cheshire-post-author-meta .cheshire-btn-userposts:hover{text-decoration:underline}
.cheshire-meta-dot{opacity:.6}
/* Design-Runde 2, Thema 5 (Peter-Mockup-Feedback 01.09.2026): verwaltende
   Aktionen (Bearbeiten/Loeschen/Loesung/Bearbeitet-Hinweis/Addon-Tools)
   rechtsbuendig in derselben Zeile wie Autor/Datum -- "oben rechts in die
   Zeile des Posts". Elementare Aktionen (Like/Zitieren/Antworten/Melden)
   bleiben in .cheshire-post-actions unten. */
.cheshire-post-actions-top{margin-left:auto;display:flex;align-items:center;flex-wrap:wrap;gap:.3rem;flex-shrink:0}
/* Design-Runde 4 TP3: siehe cheshire.css fuer Kommentar. */
.cheshire-post-body{padding:.8rem;background:var(--cheshire-surface,#fff)}
/* TP3 (22.09.2026): Sicherheitsnetz fuer direkt im Beitragstext eingefuegte
   Bilder (TipTap/Markdown/ITG) -- Anhaenge sind bereits ueber
   image_thumb_w/h gedeckelt, Inline-Bilder bisher nicht. */
.cheshire-post-body img{max-width:100%;height:auto}
/* Peter-Feedback 11.09.2026 (Quote-Redesign), nachgezogen aus cheshire.css --
   Bug (Peter-Feedback 11.09.2026, "merkwuerdig", hartes Reload half nicht):
   jedes Theme ist eine EIGENSTAENDIGE CSS-Datei (siehe Bootstrap::$themeCssFile),
   cheshire.css wird nur beim Default-Theme geladen -- bei aktivem Modern/
   Classic-Theme fehlten Blockquote-/Badge-Styles daher komplett, kein
   Cache-Problem. Siehe cheshire.css fuer ausfuehrliche Kommentare. */
.cheshire-post-body blockquote{border-left:3px solid var(--cheshire-accent,#3d6b8c);margin:.6rem 0;padding:.5rem .9rem;background:var(--cheshire-surface-alt,#eef3fb);color:var(--cheshire-text-muted,#555);border-radius:0 4px 4px 0}
.cheshire-post-body blockquote[data-author]::before{content:"Zitat von " attr(data-author) ":";display:block;font-weight:600;font-size:.82rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));margin-bottom:.3rem}
/* Peter-Feedback 12.09.2026: Badge muss wie das volle Zitat "gerahmt" sein.
   [replyref=ID:N] nutzt dieselben Klassen, eigener Rahmenfarbton via
   .cheshire-replyref-badge. Siehe cheshire.css fuer ausfuehrliche Kommentare. */
.cheshire-quoteref-badge{position:relative;display:block;margin:.6rem 0;padding:.5rem .9rem;background:var(--cheshire-surface-alt,#eef3fb);border-left:3px solid var(--cheshire-accent,#3d6b8c);border-radius:0 4px 4px 0}
.cheshire-replyref-badge{border-left-color:var(--cheshire-primary,#0042ab)}
.cheshire-quoteref-jump{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;font-weight:600;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none}
.cheshire-quoteref-jump:hover{text-decoration:underline}
.cheshire-quoteref-author-deleted{font-style:italic;color:var(--cheshire-text-muted,#777)}
.cheshire-quoteref-unavailable{display:block;margin:.6rem 0;padding:.5rem .9rem;font-size:.82rem;font-style:italic;color:var(--cheshire-text-muted,#888);background:var(--cheshire-surface-alt,#f0f0f0);border-left:3px dashed var(--cheshire-border-strong,#d5e2f6);border-radius:0 4px 4px 0}
.cheshire-quoteref-popup{visibility:hidden;opacity:0;position:absolute;left:0;bottom:calc(100% + .4rem);z-index:20;width:280px;max-width:80vw;background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#d5e2f6);border-radius:6px;box-shadow:var(--cheshire-shadow-sm,0 4px 16px rgba(0,0,0,.15));padding:.6rem .8rem;font-size:.82rem;line-height:1.4;color:var(--cheshire-text,#333);transition:opacity .12s ease}
.cheshire-quoteref-badge:hover .cheshire-quoteref-popup,.cheshire-quoteref-badge:focus-within .cheshire-quoteref-popup{visibility:visible;opacity:1}
.cheshire-post-actions{padding:.4rem .8rem;border-top:1px solid var(--cheshire-border,#eee);font-size:.82rem}
.cheshire-btn-like,.cheshire-btn-quote,.cheshire-btn-reply,.cheshire-btn-copy{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border-strong,#d5e2f6);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.2rem .6rem;border-radius:4px;cursor:pointer;font-size:.82rem;margin-right:.3rem}
.cheshire-btn-like:hover,.cheshire-btn-quote:hover,.cheshire-btn-reply:hover,.cheshire-btn-copy:hover{background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-like-count-static{display:inline-block;color:var(--cheshire-text-muted,#667);padding:.2rem .6rem;font-size:.82rem;margin-right:.3rem}
/* Gruppe 7 (18.09.2026, "Post-Export/Speichern-Symbol"): Export-Button + Dropdown-Menue (TXT/Markdown/PDF) */
.cheshire-export-wrap{position:relative;display:inline-block}
.cheshire-btn-export{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border-strong,#d5e2f6);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.2rem .6rem;border-radius:4px;cursor:pointer;font-size:.82rem;margin-right:.3rem}
.cheshire-btn-export:hover{background:var(--cheshire-surface-alt,#eef3fb)}
/* oeffnet nach OBEN (bottom statt top) -- .cheshire-post hat overflow:hidden
   (abgerundete Ecken), die Aktionsleiste sitzt direkt am unteren Rand, ein
   nach unten oeffnendes Menu wuerde dort abgeschnitten (gleiche Logik wie
   .cheshire-quoteref-popup weiter oben in dieser Datei) */
.cheshire-export-menu{display:none;position:absolute;left:0;bottom:calc(100% + .3rem);z-index:20;min-width:160px;background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#d5e2f6);border-radius:6px;box-shadow:var(--cheshire-shadow-sm,0 4px 16px rgba(0,0,0,.15));padding:.3rem 0}
.cheshire-export-menu.cheshire-export-open{display:block}
.cheshire-export-menu a{display:block;padding:.35rem .8rem;font-size:.82rem;color:var(--cheshire-text,#333);text-decoration:none}
.cheshire-export-menu a:hover{background:var(--cheshire-surface-alt,#eef3fb)}

/* ── Quick reply ── */
.cheshire-quick-reply{margin-top:1.5rem}
.cheshire-quick-reply textarea{width:100%;padding:.6rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:6px;min-height:80px;font-family:inherit}
.cheshire-quick-reply button{margin-top:.4rem;padding:.5rem 1rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}

/* TP5 (Support-Theme, Peter-Freigabe 22.09.2026): Antwortformular als Karte,
   passend zu den Beitrags-/Seitenspalten-Karten. Reines CSS-Overlay -- das
   Formular (.cheshire-quick-reply, Felder, Dropzone/TipTap, JS) steht bereits
   automatisch in .cheshire-support-thread-main (Template-Override TP4),
   keine PHP-Aenderung noetig. @see ThreadController.php ($reply_html) */
.cheshire-support-thread-main .cheshire-quick-reply{
    background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#e3e7ec);
    border-radius:var(--cheshire-radius,12px);padding:1.1rem 1.2rem;margin-top:1.5rem
}
.cheshire-support-thread-main .cheshire-quick-reply h3{margin:0 0 .8rem;font-size:.95rem;font-weight:600}
.cheshire-support-thread-main .cheshire-quick-reply textarea{border-radius:8px}
.cheshire-support-thread-main .cheshire-quick-reply button{border-radius:8px;font-weight:500}
.cheshire-support-thread-main .cheshire-reply-actions{display:flex;align-items:center;gap:.6rem;margin-top:.6rem}
.cheshire-support-thread-main .cheshire-reply-actions .cheshire-btn-cancel{
    color:var(--cheshire-text-muted,#4a5563);text-decoration:none;font-size:.85rem
}
.cheshire-support-thread-main .cheshire-reply-actions .cheshire-btn-cancel:hover{color:var(--cheshire-text,#12161c)}

/* ── Guest notice ── */
.cheshire-guest-notice{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border-strong,#a9c3e8);border-radius:5px;padding:.7rem;margin-top:.5rem;font-size:.88rem}
.cheshire-guest-notice a{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-weight:600}

/* ── Auth forms ── */
.cheshire-auth-form{max-width:400px;margin:2rem auto}
.cheshire-form-wide{max-width:700px}
.cheshire-auth-form h1{margin-bottom:1rem}
.cheshire-auth-form label{display:block;margin:.6rem 0 .2rem;font-size:.88rem;font-weight:600}
.cheshire-auth-form input{width:100%;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:5px}
.cheshire-auth-form button{margin-top:.8rem;padding:.6rem 1.2rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer;font-weight:600}
#cheshire-pw-strength{display:none !important;margin:.4rem 0 .6rem;padding:.5rem .7rem;background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#ddd);border-radius:4px;font-size:.88rem;line-height:1.5}
#cheshire-pw-strength.active{display:block !important}
.cheshire-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:1rem 0}
.cheshire-settings-box{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border,#eef3fb);border-radius:8px;padding:1rem 1.2rem}
.cheshire-settings-box h2{margin:0 0 .6rem;font-size:1.05rem}
.cheshire-settings-box label{display:block;margin:.5rem 0 .2rem;font-size:.9rem}
.cheshire-settings-box button{margin-top:.6rem;padding:.4rem 1rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer;font-weight:600}
.cheshire-error{background:var(--cheshire-danger-bg,#FDEDEC);border:1px solid var(--cheshire-danger-border,#C0392B);border-radius:5px;padding:.6rem;margin:.6rem 0;font-size:.88rem;color:var(--cheshire-danger-text,#7B241C)}
/* DMCA-Formular (Peter-Wunsch) */
.cheshire-dmca-intro{color:var(--cheshire-text-muted,#555);font-size:.9rem;max-width:600px;margin-bottom:1rem}
.cheshire-dmca-success{background:var(--cheshire-success-bg,#EAFAF1);border:1px solid var(--cheshire-success-border,#27AE60);border-radius:5px;padding:.8rem 1rem;color:var(--cheshire-success-text,#1E8449)}

/* ── Pagination ── */
.cheshire-pagination{margin:1rem 0;display:flex;gap:.4rem;flex-wrap:wrap}
.cheshire-pagination a{padding:.3rem .7rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:4px;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none;font-size:.88rem}
.cheshire-pagination a.active,.cheshire-pagination a:hover{background:var(--cheshire-primary,#0042ab);color:#fff;border-color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}

/* ── Tag cloud (Backlog #616 Wolken-Design, Peter-Wunsch 15.09.2026) ──
   Tier-Klassen t1..t5 kommen aus TagCloud::withTiers() (Services/TagCloud.php),
   ersetzt die alte hardcodierte Inline-font-size-Berechnung im Logik-Code. */
.cheshire-tag-cloud{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.4rem;line-height:1.6;padding:.7rem 0}
.cheshire-tag-count{font-size:.75em;color:inherit;opacity:.75}
.cheshire-tag{transition:transform .12s ease,opacity .12s ease}
.cheshire-tag:hover{transform:scale(1.08);opacity:.92}
.cheshire-tag-t1{font-size:.68rem;opacity:.7}
.cheshire-tag-t2{font-size:.8rem;opacity:.8}
.cheshire-tag-t3{font-size:.95rem;opacity:.9;font-weight:600}
.cheshire-tag-t4{font-size:1.12rem;opacity:.96;font-weight:600}
.cheshire-tag-t5{font-size:1.35rem;opacity:1;font-weight:700}

/* ── Delete Button ── */
.cheshire-btn-delete{background:none;border:1px solid var(--cheshire-danger-border,#C0392B);color:var(--cheshire-danger-text,#C0392B);border-radius:4px;padding:.2rem .5rem;cursor:pointer;font-size:.8rem}
.cheshire-btn-delete:hover{background:#C0392B;color:#fff}
.cheshire-thread-actions{display:inline-block}

/* ── Search ── */
.cheshire-search-form{display:flex;gap:.5rem;margin:1rem 0}
.cheshire-search-form input{flex:1;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:5px}
.cheshire-search-form button{padding:.5rem 1rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}
.cheshire-search-result{padding:.7rem 0;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-search-type{background:var(--cheshire-accent,#3d6b8c);color:#fff;font-size:.72rem;padding:.1rem .4rem;border-radius:3px;margin-right:.4rem}
.cheshire-search-forum{font-size:.82rem;color:var(--cheshire-text-muted,#777)}
.cheshire-search-excerpt{font-size:.85rem;color:var(--cheshire-text-muted,#666);margin:.3rem 0 0}

/* ── Edit button + timestamp ── */
.cheshire-btn-edit{background:none;border:1px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));border-radius:4px;padding:.2rem .5rem;cursor:pointer;font-size:.8rem;text-decoration:none;margin-right:.3rem}
.cheshire-btn-edit:hover{background:var(--cheshire-accent,#3d6b8c);color:#fff}
.cheshire-edited{font-size:.75rem;color:var(--cheshire-text-faint,#aaa);margin-left:.5rem;font-style:italic}
/* Peter-Wunsch 20.09.2026: bearbeitet-Hinweis als eigene Zeile unter dem
   Autoren-Meta-Block statt zwischen den Aktions-Buttons -- kein Einzug. */
.cheshire-post-edited-line{margin-top:.15rem}
.cheshire-post-edited-line .cheshire-edited{margin-left:0}
/* Weg 1 (Design & Layout, 31.08.2026): siehe ContentDisplay.php */
.cheshire-post-date{font-size:.78rem;color:var(--cheshire-text-faint,#999);font-weight:400}
.cheshire-post-rank-badge{color:#fff;font-size:.68rem;font-weight:700;padding:.05rem .4rem;border-radius:3px;white-space:nowrap}

/* ── Post subject ── */
.cheshire-post-subject{font-weight:600;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.3rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);font-size:.9rem}
.cheshire-reply-subject{width:100%;padding:.4rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:5px;margin-bottom:.4rem;box-sizing:border-box}

/* ── Report button ── */
.cheshire-btn-report{background:none;border:1px solid var(--cheshire-warning-border,#E67E22);color:#E67E22;border-radius:4px;padding:.2rem .5rem;font-size:.8rem;text-decoration:none;margin-left:.3rem}
.cheshire-btn-report:hover{background:#E67E22;color:#fff}

/* ── Solution marking (T04) ── */
.cheshire-btn-solve{background:none;border:1px solid var(--cheshire-success-border,#27AE60);color:var(--cheshire-success-text,#27AE60);border-radius:4px;padding:.2rem .5rem;cursor:pointer;font-size:.8rem;margin-left:.3rem}
.cheshire-btn-solve:hover{background:#27AE60;color:#fff}
.cheshire-badge-solution{background:#27AE60;color:#fff;font-size:.78rem;padding:.2rem .5rem;border-radius:4px;margin-left:.3rem}

/* ── Signature (SIG01-SIG03) ── */
/* Design-Runde 3 TP1: eigener Rahmen/Abstand entfernt -- steckt jetzt in
   <details class="cheshire-content-block">, siehe Signature::render(). */
.cheshire-signature{font-size:.85rem;color:var(--cheshire-text-muted,#666)}
.cheshire-signature img{max-height:80px;max-width:100%;vertical-align:middle}

/* Zusammenstellung-Restpunkt TP5 (Peter-Feedback #408): siehe cheshire.css
   fuer die volle Begruendung -- echtes Button-Muster statt Textlink/Chip. */
.cheshire-btn-new{display:inline-block;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;padding:.4rem 1rem;font-size:.85rem;text-decoration:none;cursor:pointer}
.cheshire-btn-new:hover{background:var(--cheshire-accent,#3d6b8c);color:#fff}

/* ── Social-media profile links (SM01) ── */
.cheshire-social-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}
.cheshire-social-item{background:var(--cheshire-primary,#0042ab);border-radius:5px;font-size:.85rem;overflow:hidden}
.cheshire-social-item a{color:#fff;text-decoration:none;display:block;padding:.3rem .7rem}
.cheshire-social-item a:hover{background:var(--cheshire-accent,#3d6b8c)}

/* ── Support-Links: Spenden/Wunschlisten/Gutscheine (3.13, SW01-SW07) ──
   Fehlte bisher in diesem Theme (nur in cheshire.css vorhanden) -- im
   Zuge von Design-Runde 3 TP1 nachgezogen, siehe cheshire.css. ── */
.cheshire-support-group{margin:.6rem 0}
.cheshire-support-group-title{margin:0 0 .3rem;font-size:.9rem;color:var(--cheshire-text-muted,#555)}
.cheshire-support-links{display:flex;flex-wrap:wrap;gap:.5rem}
.cheshire-support-item{background:var(--cheshire-primary,#0042ab);color:#fff;padding:.3rem .7rem;border-radius:5px;font-size:.85rem;text-decoration:none;display:inline-block}
.cheshire-support-item:hover{background:var(--cheshire-accent,#3d6b8c)}

/* ── Community-Visitenkarte (CS01) ── */
.cheshire-card{display:flex;gap:1rem;align-items:flex-start;margin:1rem 0}
.cheshire-avatar-placeholder{flex-shrink:0;width:72px;height:72px;border-radius:50%;background:var(--cheshire-primary,#0042ab);color:#fff;
    display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:700}
.cheshire-card-main h1{margin:0 0 .2rem}
.cheshire-card-meta{margin:.15rem 0;color:var(--cheshire-text-muted,#555);font-size:.9rem}
.cheshire-card-score{font-weight:700;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-rating{margin-top:.4rem;font-size:.9rem}
.cheshire-rating-emoji{font-size:1.3rem;vertical-align:middle}
.cheshire-rate-form{display:flex;align-items:center;gap:.4rem;margin-top:.4rem;flex-wrap:wrap}
.cheshire-rate-form label{display:inline-flex;align-items:center;gap:.15rem;font-size:.85rem}
.cheshire-rating-choice{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;border:2px solid transparent;border-radius:50%;cursor:pointer}
.cheshire-rating-choice:hover{background:var(--cheshire-surface-alt,#f5f5f5)}
.cheshire-rating-radio{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}
.cheshire-rating-emoji-pick{font-size:1.3rem;line-height:1}
.cheshire-rating-choice:has(.cheshire-rating-radio:checked){border-color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-rating-radio:focus-visible ~ .cheshire-rating-emoji-pick{outline:2px solid var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));outline-offset:2px;border-radius:50%}
.cheshire-rate-submit{display:none}
.cheshire-bio{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:6px;padding:.6rem .9rem;margin:.6rem 0;font-size:.9rem}
.cheshire-card-edit{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:6px;padding:.8rem 1rem;margin:.6rem 0}
.cheshire-card-edit textarea{width:100%;max-width:600px;padding:.4rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px}
.cheshire-avatar-edit-form{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:.6rem 0;font-size:.85rem}
.cheshire-avatar-rules-confirm{display:flex!important;align-items:flex-start;gap:.5rem;flex-basis:100%;cursor:pointer;font-weight:400;line-height:1.4;font-size:.85rem}
.cheshire-avatar-rules-confirm input[type="checkbox"]{margin-top:.2rem;flex-shrink:0;width:auto!important;min-width:16px;height:16px}
.cheshire-help-text{font-size:.78rem;color:var(--cheshire-text-faint,#888);margin:.3rem 0 .8rem}
.cheshire-tab-toggles{display:flex;flex-direction:column;gap:.2rem;margin:.5rem 0;font-size:.85rem}
/* Weg 1 (Design & Layout, 31.08.2026): Profil-Block-Reihenfolge per CSS
   "order", siehe ContentDisplay::profileBlockOrder() + user_profile.htt.
   Design-Runde 2, Thema 4 (01.09.2026): 2-spaltiges Grid statt 1 Spalte fuer
   bessere Flaechennutzung -- Grid respektiert "order" wie Flexbox, die
   Drag&Drop-Reihenfolge bleibt dadurch unveraendert nutzbar. Tabs/Gaestebuch
   spannen per .cheshire-profile-block-full ueber beide Spalten. */
.cheshire-profile-blocks{display:grid;grid-template-columns:1.3fr 1fr;gap:1.2rem;align-items:start}
.cheshire-profile-block-full{grid-column:1/-1}
@media (max-width:768px){
    .cheshire-profile-blocks{grid-template-columns:1fr}
}
/* Design-Runde 2, Thema 3 (Peter-Mockup-Feedback 01.09.2026): gleichmaessige
   Schaltflaechen statt einzelner Text-Links -- .cheshire-profile-link-btn
   ist die gemeinsame Klasse fuer <a>, <button> (in Formularen) und
   Addon-Buttons aus dem Hook "user.profile_links". */
.cheshire-card-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}
.cheshire-profile-link-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .8rem;border-radius:8px;background:var(--cheshire-surface,#fff);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.82rem;line-height:1.3;text-decoration:none;cursor:pointer;box-shadow:var(--cheshire-shadow-sm,0 1px 2px rgba(0,66,171,.1))}
.cheshire-profile-link-btn:hover{background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-demo-link{opacity:.55;cursor:not-allowed}
.cheshire-demo-link:hover{background:var(--cheshire-surface,#fff)}
.cheshire-expertise{margin:1rem 0}
.cheshire-expertise-row{display:grid;grid-template-columns:120px 1fr 40px;align-items:center;gap:.6rem;margin:.3rem 0;font-size:.85rem}
.cheshire-expertise-bar{background:#eee;border-radius:4px;height:8px;overflow:hidden}
.cheshire-expertise-bar div{background:var(--cheshire-primary,#0042ab);height:100%}
.cheshire-profile-tabs{margin-top:1.5rem}
.cheshire-tab-nav{display:flex;flex-wrap:wrap;gap:.4rem;border-bottom:1px solid var(--cheshire-border-strong,#e2e2e2);margin-bottom:.8rem;padding-bottom:.4rem}
.cheshire-tab-btn{background:var(--cheshire-surface-alt,#f0f0f0);border:none;padding:.45rem .9rem;border-radius:5px 5px 0 0;cursor:pointer;font-size:.88rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-tab-btn.active{background:var(--cheshire-primary,#0042ab);color:#fff}
.cheshire-tab-panel{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.8rem 1rem}
.cheshire-tab-panel h4{margin:.2rem 0 .3rem;font-size:.88rem;color:var(--cheshire-text-muted,#555)}
.cheshire-subtab-nav{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.6rem}
.cheshire-subtab-btn{background:var(--cheshire-surface-alt,#eef1f4);border:none;padding:.3rem .7rem;border-radius:4px;cursor:pointer;font-size:.8rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-subtab-btn.active{background:var(--cheshire-accent,#3d6b8c);color:#fff}
.cheshire-more-note{color:var(--cheshire-text-faint,#999);font-size:.78rem;margin:.4rem 0 0}
.cheshire-activity-list{list-style:none;margin:0;padding:0}
.cheshire-activity-list li{padding:.2rem 0;font-size:.87rem;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-activity-list li:last-child{border-bottom:none}
.cheshire-status-badge{background:var(--cheshire-surface-alt,#eef3fb);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.05rem .5rem;border-radius:3px;font-size:.75rem;margin-left:.3rem}
.cheshire-empty{color:var(--cheshire-text-faint,#999);font-size:.85rem}

/* ── TOP-Listen ── */
.cheshire-top-periods{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0}
.cheshire-top-period{padding:.35rem .8rem;border-radius:5px;background:var(--cheshire-surface-alt,#f0f0f0);text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.85rem}
.cheshire-top-period.active{background:var(--cheshire-primary,#0042ab);color:#fff}
.cheshire-top-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:1rem}
.cheshire-top-section{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.8rem 1rem}
.cheshire-top-section h3{margin:0 0 .5rem;font-size:1rem}
.cheshire-top-list{list-style:none;margin:0;padding:0}
.cheshire-top-list li{display:flex;justify-content:space-between;padding:.25rem 0;font-size:.88rem;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-top-list li:last-child{border-bottom:none}
.cheshire-top-rank{color:var(--cheshire-text-faint,#999);margin-right:.3rem}
.cheshire-top-count{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-weight:600}

/* ── Statistiken & WIO (TP7, Zusammenstellung-Restpunkt #408): war
   urspruenglich nur in cheshire.css -- gleicher "Theme-Dateien schliessen
   sich gegenseitig aus"-Fehler wie bei .cheshire-top-list/Portal (siehe
   Kommentar unten), Statistik-Seite fiel bei aktivem Modern-Theme auf
   unformatierten Fliesstext zurueck. ── */
.cheshire-stats-section{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border,#d5e2f6);border-radius:10px;padding:.8rem 1rem;margin:1rem 0}
.cheshire-stats-section h3{margin:0 0 .5rem;font-size:1rem}
.cheshire-stats-totals{display:flex;flex-wrap:wrap;gap:.8rem}
.cheshire-stats-badge{display:flex;flex-direction:column;align-items:center;min-width:90px;padding:.5rem .8rem;background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border,#d5e2f6);border-radius:8px}
.cheshire-stats-badge strong{font-size:1.3rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-stats-badge span{font-size:.78rem;color:var(--cheshire-text-faint,#999)}
.cheshire-stats-newest{margin:.7rem 0 0;font-size:.88rem}
.cheshire-stats-record{margin:0;font-size:.9rem}
.cheshire-wio-group{margin-bottom:.9rem}
.cheshire-wio-group:last-child{margin-bottom:0}
.cheshire-wio-group h4{margin:0 0 .3rem;font-size:.9rem;color:var(--cheshire-text-faint,#999)}
.cheshire-wio-list{list-style:none;margin:0;padding:0}
.cheshire-wio-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.3rem 0;font-size:.85rem;border-bottom:1px solid var(--cheshire-border,#d5e2f6)}
.cheshire-wio-list li:last-child{border-bottom:none}
.cheshire-wio-location{color:var(--cheshire-text-faint,#999);font-size:.78rem}
.cheshire-wio-ip{margin-left:auto;font-family:monospace;font-size:.78rem;color:var(--cheshire-text-faint,#999)}
/* Backlog #642 (14.09.2026): Ping-Button/Checkbox/Gruppen-Start-CSS entfernt --
   Anpingen laeuft jetzt ueber das "Wer ist online"-Widget auf der Support-
   Chat-Staff-Seite (supportchat.css .sc-online-*), WIO zeigt nur Anwesenheit. */

/* ── Portal (3-Zonen-Grid), Peter-Vorgabe 07.09.2026: Links schmal/Mitte
   breit/Rechts schmal, analog klassischem Portal-Layout. Etappe 3: pro-User
   Drag&Drop + Pfeil-Buttons zwischen/innerhalb der Zonen (cheshire.js).
   Nachtrag 07.09.2026 (Peter-Meldung "nur Links, kein Umbruch"): war
   urspruenglich nur in cheshire.css, aber Theme-CSS-Dateien sind komplette,
   sich gegenseitig ausschliessende Stylesheets -- ohne Duplikat hier fehlte
   bei aktivem Modern-Theme das komplette Grid/Toolbar-CSS, Widgets fielen
   auf blockweises Stapeln zurueck. Gleicher Fehler wurde bei
   .cheshire-top-list (oben) rechtzeitig vermieden, bei Portal zunaechst
   uebersehen. ── */
.cheshire-portal-grid{display:grid;grid-template-columns:1fr 2fr 1fr;gap:1rem;margin-top:1rem;align-items:start}
.cheshire-portal-col{display:flex;flex-direction:column;gap:1rem;min-width:0}
/* Bugfix (Zusammenstellung-Restpunkt, Peter-Mockup-Feedback #408): siehe
   cheshire.css fuer die volle Begruendung -- staerkere Kontur. */
.cheshire-portal-widget{background:var(--cheshire-surface-alt,#f7f8fa);border:1px solid var(--cheshire-border-strong,#ddd);border-radius:8px;padding:.8rem 1rem;cursor:grab}
.cheshire-portal-widget h3{margin:0 0 .5rem;font-size:1rem}
.cheshire-portal-placeholder{color:var(--cheshire-text-faint,#999);font-size:.85rem;margin:0}
.cheshire-portal-list{list-style:none;margin:0;padding:0}
.cheshire-portal-list li{padding:.25rem 0;font-size:.88rem;border-bottom:1px solid var(--cheshire-border,#eee)}
.cheshire-portal-list li:last-child{border-bottom:none}
.cheshire-portal-list-type{color:var(--cheshire-text-faint,#999);font-size:.78rem;margin-right:.3rem}
.cheshire-portal-more{display:inline-block;margin-top:.6rem;font-size:.82rem}
/* Bugfix (0.1.202-dev, Peter-Testplan): Backlog #494 "Neueste Beitraege"-Widget
   fehlte hier komplett -- war nur in cheshire.css gepflegt worden, Klassisch/
   Modern zeigten das Widget seither ungestylt an. Nachgezogen aus cheshire.css. */
.cheshire-portal-widget-scroll{max-height:360px;overflow-y:auto}
.cheshire-portal-list-posts li{border-bottom:1px solid var(--cheshire-border,#eee);padding:.5rem 0}
.cheshire-portal-list-posts li:last-child{border-bottom:none}
.cheshire-portal-post-title{font-weight:600;font-size:.88rem}
.cheshire-portal-post-meta{color:var(--cheshire-text-faint,#999);font-size:.76rem;margin:.15rem 0}
.cheshire-portal-post-excerpt{font-size:.84rem;color:var(--cheshire-text-muted,#555);line-height:1.4}
/* Backlog: WIO-Portal-Widget (Peter-Idee 0.1.198-dev) -- Zaehler-Zeile ueber
   der Mitglieder-Liste, gleiche Tonalitaet wie die uebrigen Portal-Meta-Zeilen. */
.cheshire-portal-wio-counts{font-size:.82rem;color:var(--cheshire-text-faint,#999);margin:0 0 .4rem}
.cheshire-portal-score{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.cheshire-portal-score-rank{font-weight:600}
.cheshire-portal-score-value{font-size:1.3rem;font-weight:700;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-portal-score-units{margin-top:.3rem;color:var(--cheshire-text-faint,#999);font-size:.8rem}
.cheshire-portal-widget-toolbar{display:flex;align-items:center;gap:.15rem;margin:-.3rem -.3rem .4rem;opacity:.55}
.cheshire-portal-widget-toolbar:hover{opacity:1}
.cheshire-drag-handle{cursor:grab;color:var(--cheshire-text-faint,#999);padding:.1rem .3rem;font-size:.85rem}
.cheshire-portal-btn{background:none;border:none;cursor:pointer;color:var(--cheshire-text-faint,#999);font-size:.78rem;padding:.15rem .35rem;border-radius:4px;line-height:1}
.cheshire-portal-btn:hover{background:var(--cheshire-border,#eee);color:var(--cheshire-text,#333)}
.cheshire-portal-btn-hide{margin-left:auto}
.cheshire-portal-col-left .cheshire-portal-btn[data-action="left"],
.cheshire-portal-col-right .cheshire-portal-btn[data-action="right"]{display:none}
.cheshire-portal-widget:first-child .cheshire-portal-btn[data-action="up"],
.cheshire-portal-widget:last-child .cheshire-portal-btn[data-action="down"]{display:none}
.cheshire-portal-status{min-height:1.2em;font-size:.8rem;color:var(--cheshire-text-faint,#999);margin:.5rem 0 0}
.cheshire-portal-hidden{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--cheshire-border,#eee)}
.cheshire-portal-hidden h3{margin:0 0 .5rem;font-size:.9rem;color:var(--cheshire-text-faint,#999)}
.cheshire-portal-hidden-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.cheshire-portal-hidden-list li{display:flex;align-items:center;gap:.5rem;background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:6px;padding:.3rem .6rem;font-size:.82rem}
.cheshire-portal-hidden-list .cheshire-portal-btn{background:var(--cheshire-border,#eee)}
/* Etappe 4: Zeitraum-Tabs im Trending-Widget (Peter-Entscheidung 07.09.2026,
   Bedienkonzept wie .cheshire-top-periods/-period beim Top-System). */
.cheshire-portal-tabs{display:flex;flex-wrap:wrap;gap:.3rem;margin:0 0 .6rem}
.cheshire-portal-tab{padding:.2rem .6rem;border-radius:5px;background:var(--cheshire-surface-alt,#f0f0f0);text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.78rem}
.cheshire-portal-tab.active{background:var(--cheshire-primary,#0042ab);color:#fff}
@media (max-width:700px){.cheshire-portal-grid{grid-template-columns:1fr}}

/* ── Private Nachrichten (PM) ── */
.cheshire-pm-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.8rem 0}
.cheshire-pm-tab{padding:.35rem .8rem;border-radius:5px;background:var(--cheshire-surface-alt,#f0f0f0);text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.85rem}
.cheshire-pm-tab.active{background:var(--cheshire-primary,#0042ab);color:#fff}
.cheshire-pm-new{margin-left:auto;padding:.35rem .8rem;border-radius:5px;background:var(--cheshire-accent,#3d6b8c);color:#fff;text-decoration:none;font-size:.85rem}
.cheshire-pm-list{display:flex;flex-direction:column;border:1px solid var(--cheshire-border,#eee);border-radius:6px;overflow:hidden}
.cheshire-pm-row{display:grid;grid-template-columns:1fr 1fr 2fr auto;gap:.6rem;align-items:center;padding:.55rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);text-decoration:none;color:inherit;font-size:.87rem}
.cheshire-pm-row:last-child{border-bottom:none}
a.cheshire-pm-row:hover{background:var(--cheshire-surface-alt,#f9fafb)}
.cheshire-pm-unread{background:var(--cheshire-surface-alt,#eef3fb);font-weight:600}
.cheshire-pm-partner{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-pm-badge{background:#E67E22;color:#fff;border-radius:10px;padding:.05rem .45rem;font-size:.72rem;margin-left:.3rem}
.cheshire-pm-excerpt{color:var(--cheshire-text-muted,#777);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cheshire-pm-date{color:var(--cheshire-text-faint,#999);font-size:.78rem;text-align:right}
.cheshire-pm-thread{display:flex;flex-direction:column;gap:.6rem;margin:1rem 0}
.cheshire-pm-msg{background:var(--cheshire-surface-alt,#f9fafb);border-radius:8px;padding:.6rem .9rem;max-width:80%}
.cheshire-pm-mine{align-self:flex-end;background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-pm-msg-meta{color:var(--cheshire-text-faint,#999);font-size:.75rem;margin-bottom:.2rem}
/* #1032: Betreff-Trennzeile im PN-Verlauf */
.cheshire-pm-subject-divider{display:flex;align-items:center;gap:.6rem;margin:1rem 0 .5rem;color:var(--cheshire-text-faint,#999);font-size:.8rem}
.cheshire-pm-subject-divider::before,.cheshire-pm-subject-divider::after{content:"";flex:1;border-top:1px solid var(--cheshire-border,#ddd)}
.cheshire-pm-subject-divider span{font-weight:600}
.cheshire-pm-msg-body{white-space:pre-wrap;font-size:.9rem}
.cheshire-pm-reply,.cheshire-pm-compose{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}
.cheshire-pm-reply textarea{width:100%;box-sizing:border-box;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px}
.cheshire-pm-compose label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-pm-compose input,.cheshire-pm-compose textarea{padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;font-family:inherit;box-sizing:border-box}
.cheshire-pm-compose button,.cheshire-pm-reply button{align-self:flex-start;padding:.4rem 1.2rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}
.cheshire-pm-actions{margin-top:1rem;font-size:.85rem}
.cheshire-pm-badge-topbar{background:#E67E22;color:#fff;border-radius:10px;padding:.05rem .45rem;font-size:.72rem;margin-left:.2rem}

/* PM-Erweiterungen (Backlog #29): Suche, Anhaenge, Blockieren/Kontakte, Melden, Broadcast */
.cheshire-pm-search{display:flex;gap:.3rem;margin-left:auto}
.cheshire-pm-search input{padding:.35rem .6rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;font-size:.85rem}
.cheshire-pm-search button{padding:.35rem .7rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;background:var(--cheshire-surface,#fff);cursor:pointer}
.cheshire-pm-partner-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.4rem 0 1rem}
.cheshire-pm-partner-btn{padding:.3rem .7rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;background:var(--cheshire-surface,#fff);font-size:.8rem;cursor:pointer}
.cheshire-pm-report-link{margin-left:.5rem;color:var(--cheshire-danger-text,#C0392B);text-decoration:none;font-size:.8rem}
.cheshire-pm-att-input{flex-direction:row !important;align-items:center;gap:.5rem !important;font-size:.85rem;color:var(--cheshire-text-muted,#555)}
.cheshire-pm-att-list{margin-top:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}
.cheshire-pm-att-img{max-width:180px;max-height:140px;border-radius:6px;display:block}
.cheshire-pm-att-file{display:inline-block;padding:.3rem .7rem;background:var(--cheshire-surface-alt,#eef3fb);border-radius:5px;font-size:.82rem;text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-pm-contact-add{display:flex;gap:.5rem;margin:.6rem 0 1rem}
.cheshire-pm-contact-add input{flex:1;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px}
.cheshire-pm-contact-add button{padding:.5rem 1rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}
.cheshire-pm-contact-list{display:flex;flex-direction:column;border:1px solid var(--cheshire-border,#eee);border-radius:6px;overflow:hidden;margin-bottom:1.2rem}
.cheshire-pm-contact-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);font-size:.88rem}
.cheshire-pm-contact-row:last-child{border-bottom:none}
.cheshire-pm-contact-row button{padding:.2rem .6rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;background:var(--cheshire-surface,#fff);cursor:pointer;font-size:.8rem}
.cheshire-pm-hint{color:var(--cheshire-text-muted,#777);font-size:.88rem;margin:.3rem 0 1rem}
/* Bugfix (Peter/Florian-Meldung Teil 4, 18.09.2026: "Modern-Theme schlechter
   als Klassisch auf der PM-Seite"): gibt den PM-Seiten (Posteingang, Thread,
   Neu, Kontakte, Broadcast) die gleiche Karten-Optik wie andere Modern-
   Inhaltsbloecke (Hintergrund/Rahmen/Schatten) -- siehe .cheshire-pm-panel
   No-Op-Basis in cheshire.css. */
.cheshire-pm-panel{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border,#eee);border-radius:10px;padding:1.2rem 1.4rem;box-shadow:var(--cheshire-shadow-sm,0 2px 10px rgba(0,0,0,.06))}
.cheshire-pm-panel .cheshire-pm-list,.cheshire-pm-panel .cheshire-pm-contact-list{border:none}
.cheshire-mod-pm-hint{display:inline-block;color:var(--cheshire-text-muted,#777);font-size:.85rem;margin:0}
.cheshire-mod-warn-form{display:inline-flex;align-items:center;gap:.3rem;margin:.3rem .3rem 0 0}
.cheshire-mod-warn-done{color:var(--cheshire-success-text,#388e3c);font-size:.8rem;margin:.3rem 0 0}
/* Design-Runde 2, Thema 3: display:contents reicht das Grid-Layout des
   Eltern-.cheshire-card-links an den inneren Button durch. */
.cheshire-profile-buddy{display:contents}
.cheshire-success{background:var(--cheshire-success-bg,#EAFAF1);border:1px solid var(--cheshire-success-border,#27AE60);border-radius:5px;padding:.6rem;margin:.6rem 0;font-size:.88rem;color:var(--cheshire-success-text,#1E8449)}

/* ── Gästebuch & Avatar-Platzhalter (Peter-Reminder Runde 3) ── */
.cheshire-avatar-img{flex-shrink:0;width:72px;height:72px;border-radius:50%;object-fit:cover}
.cheshire-avatar-guest{width:40px;height:40px}
.cheshire-avatar-wrap{position:relative;display:inline-block;flex-shrink:0}
.cheshire-avatar-badge{position:absolute;color:#fff;font-size:.62rem;font-weight:700;line-height:1.3;padding:.1rem .4rem;border-radius:4px;white-space:nowrap;box-shadow:var(--cheshire-shadow-sm,0 1px 3px rgba(0,0,0,.35));pointer-events:none}
.cheshire-avatar-badge i{margin-right:.15rem}
.cheshire-avatar-badge-top-left{top:-4px;left:-6px}
.cheshire-avatar-badge-top-right{top:-4px;right:-6px}
.cheshire-avatar-badge-bottom-left{bottom:-4px;left:-6px}
.cheshire-avatar-badge-bottom-right{bottom:-4px;right:-6px}
.cheshire-avatar-badge-diagonal{top:10px;left:-30px;width:104px;text-align:center;border-radius:0;padding:.15rem 0;transform:rotate(-45deg)}
.cheshire-avatar-report-link{display:block;text-align:center;font-size:.7rem;color:var(--cheshire-text-faint,#999);margin-top:.2rem;text-decoration:none}
.cheshire-avatar-report-link:hover{color:var(--cheshire-danger-text,#C0392B);text-decoration:underline}
.cheshire-warnings{background:var(--cheshire-warning-bg,#fff8f0);border:1px solid var(--cheshire-warning-border,#f0d9b5);border-radius:6px;padding:.6rem 1rem;margin:.6rem 0;font-size:.85rem}
.cheshire-warning-entry{padding:.4rem 0;border-top:1px solid var(--cheshire-warning-border,#f0e0c5)}
.cheshire-warning-entry:first-of-type{border-top:none}
.cheshire-warning-disabled-note{color:var(--cheshire-warning-text,#8a6d3b);font-size:.8rem;margin:0 0 .4rem}
.cheshire-warning-meta{display:block;font-size:.75rem;color:var(--cheshire-text-faint,#888)}
.cheshire-warning-expired{opacity:.55}
.cheshire-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin:.4rem 0}
.cheshire-badge-chip{color:#fff;font-size:.75rem;font-weight:600;padding:.15rem .55rem;border-radius:12px;white-space:nowrap;cursor:default}
.cheshire-digest-freq{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:6px;padding:.8rem 1rem;margin:.6rem 0 1.2rem;display:flex;align-items:flex-end;gap:.6rem;flex-wrap:wrap}
.cheshire-digest-freq select{padding:.4rem;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px}
.cheshire-poll{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:6px;padding:.8rem 1rem;margin:.8rem 0}
.cheshire-poll h3{margin:0 0 .5rem}
.cheshire-poll-option{display:block;margin:.3rem 0;font-size:.9rem}
.cheshire-poll-closed{color:var(--cheshire-danger-text,#C0392B);font-size:.85rem;font-weight:600}
.cheshire-poll-results{margin-top:.6rem}
.cheshire-poll-result-row{display:flex;align-items:center;gap:.5rem;margin:.35rem 0;font-size:.85rem}
.cheshire-poll-result-label{flex:0 0 30%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cheshire-poll-bar-track{flex:1;background:var(--cheshire-surface-alt,#e5e9ed);border-radius:4px;height:10px;overflow:hidden}
.cheshire-poll-bar{background:var(--cheshire-accent,#3d6b8c);height:100%}
.cheshire-poll-result-pct{flex:0 0 auto;color:var(--cheshire-text-muted,#777);white-space:nowrap}
.cheshire-poll-total{color:var(--cheshire-text-faint,#999);font-size:.78rem;margin:.4rem 0 0}
.cheshire-poll-hint{color:var(--cheshire-text-muted,#777);font-size:.85rem}
.cheshire-poll-edit-toggle{margin-top:.6rem;background:none;border:1px solid var(--cheshire-border-strong,#ccc);border-radius:4px;padding:.25rem .6rem;font-size:.8rem;cursor:pointer}
.cheshire-poll-admin-form{margin-top:.5rem}
.cheshire-poll-admin-form label{font-size:.82rem;display:block;margin:.3rem 0}
.cheshire-poll-admin-form input[type=text]{width:100%;max-width:22rem}
.cheshire-demo-link{color:var(--cheshire-text-faint,#999);cursor:default;border-bottom:1px dashed var(--cheshire-border-strong,#ccc);user-select:none}
.cheshire-guestbook{margin-top:1.5rem}
.cheshire-guestbook h3{margin:0 0 .5rem;font-size:1rem}
.cheshire-guestbook-pending{background:var(--cheshire-warning-bg,#fff8e6);border:1px solid var(--cheshire-warning-border,#e8d8a0);border-radius:6px;padding:.6rem .8rem;margin-bottom:1rem;font-size:.88rem}
.cheshire-guestbook-pending-entry{border-top:1px solid var(--cheshire-warning-border,#e8d8a0);margin-top:.5rem;padding-top:.5rem}
.cheshire-guestbook-pending-entry button{margin-top:.3rem;padding:.25rem .6rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;background:var(--cheshire-surface,#fff);font-size:.8rem;cursor:pointer}
.cheshire-guestbook-list{display:flex;flex-direction:column;gap:.6rem}
.cheshire-guestbook-entry{display:flex;gap:.7rem;align-items:flex-start;background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.6rem .9rem}
.cheshire-guestbook-meta{color:var(--cheshire-text-faint,#999);font-size:.78rem;margin-bottom:.15rem}
.cheshire-guestbook-msg{font-size:.9rem;white-space:pre-wrap}
.cheshire-guestbook-form{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem;max-width:500px}
.cheshire-guestbook-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-guestbook-form input,.cheshire-guestbook-form textarea{padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;font-family:inherit;box-sizing:border-box}
.cheshire-guestbook-form button{align-self:flex-start;padding:.4rem 1.2rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}

/* ── Benachrichtigungen & Abonnements (N01) ── */
.cheshire-subscribe-form{display:inline-block;margin-left:.6rem}
.cheshire-btn-subscribe{padding:.35rem .8rem;border-radius:5px;background:var(--cheshire-surface-alt,#f0f0f0);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));border:1px solid var(--cheshire-border-strong,#ddd);cursor:pointer;font-size:.85rem}
.cheshire-btn-subscribe.active{background:var(--cheshire-accent,#3d6b8c);color:#fff;border-color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c))}
.cheshire-sub-list{display:flex;flex-direction:column;border:1px solid var(--cheshire-border,#eee);border-radius:6px;overflow:hidden}
.cheshire-sub-row{display:flex;align-items:center;gap:.7rem;padding:.55rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);font-size:.87rem}
.cheshire-sub-row:last-child{border-bottom:none}
.cheshire-sub-type{background:var(--cheshire-surface-alt,#eef3fb);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.05rem .5rem;border-radius:3px;font-size:.75rem}
.cheshire-sub-row a{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));flex:1}
.cheshire-sub-row a.cheshire-sub-category{flex:none;color:var(--cheshire-text-faint,#999);font-size:.78rem;background:var(--cheshire-surface-alt,#f5f5f5);padding:.05rem .5rem;border-radius:3px;text-decoration:none}
.cheshire-sub-row a.cheshire-sub-category:hover{text-decoration:underline}

/* ── Melde-Workflow / Moderation (2.9) ── */
.cheshire-mod-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0}
.cheshire-mod-tab{padding:.35rem .8rem;border-radius:5px;background:var(--cheshire-surface-alt,#f0f0f0);text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.85rem}
.cheshire-mod-tab.active{background:var(--cheshire-primary,#0042ab);color:#fff}
/* Phase 5.2/M06: gemeinsame Mod-CP-Kopfnavigation (Meldungen/Safe) */
.cheshire-modcp-nav{display:flex;gap:.6rem;margin:.6rem 0 1rem;border-bottom:1px solid var(--cheshire-border,#eee);padding-bottom:.6rem}
.cheshire-modcp-tab{padding:.4rem .9rem;border-radius:5px 5px 0 0;text-decoration:none;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));font-size:.9rem;font-weight:600}
.cheshire-modcp-tab.active{background:var(--cheshire-primary,#0042ab);color:#fff}
.cheshire-modcp-count{background:#777;color:#fff;border-radius:10px;padding:.05rem .45rem;font-size:.72rem;margin-left:.2rem}
.cheshire-mod-list{display:flex;flex-direction:column;border:1px solid var(--cheshire-border,#eee);border-radius:6px;overflow:hidden}
.cheshire-mod-row{display:grid;grid-template-columns:auto 2fr auto auto auto;gap:.6rem;align-items:center;padding:.55rem .8rem;border-bottom:1px solid var(--cheshire-border,#eee);text-decoration:none;color:inherit;font-size:.87rem}
.cheshire-mod-row:last-child{border-bottom:none}
a.cheshire-mod-row:hover{background:var(--cheshire-surface-alt,#f9fafb)}
.cheshire-mod-type{background:var(--cheshire-surface-alt,#eef3fb);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));padding:.05rem .5rem;border-radius:3px;font-size:.75rem}
.cheshire-mod-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cheshire-mod-content small{color:var(--cheshire-text-faint,#999)}
.cheshire-mod-reason{font-weight:600}
.cheshire-mod-reporter,.cheshire-mod-date{color:var(--cheshire-text-faint,#999);font-size:.8rem}
.cheshire-mod-report-meta{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.7rem 1rem;margin:.8rem 0;font-size:.9rem}
.cheshire-mod-report-meta p{margin:.2rem 0}
.cheshire-mod-spy{border:2px dashed var(--cheshire-danger-border,#C0392B);border-radius:8px;padding:1rem;margin:1rem 0;background:var(--cheshire-warning-bg,#fff9f8)}
.cheshire-mod-spy-notice{color:var(--cheshire-danger-text,#C0392B);font-weight:600;font-size:.85rem;margin:0 0 .6rem}
.cheshire-mod-author{color:var(--cheshire-text-muted,#777);font-size:.85rem}
.cheshire-mod-message{margin-top:.5rem}
.cheshire-mod-sig-gallery{display:flex;flex-wrap:wrap;gap:.8rem}
.cheshire-mod-sig-item{display:flex;flex-direction:column;align-items:center;gap:.3rem;background:var(--cheshire-surface-alt,#fafafa);border:1px solid var(--cheshire-border-strong,#ddd);border-radius:6px;padding:.5rem}
.cheshire-mod-actions{margin:1rem 0}
.cheshire-mod-action-group{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:.8rem}
.cheshire-mod-action-group:last-child{margin-bottom:0}
.cheshire-mod-action-group h4{width:100%;font-size:.8rem;color:var(--cheshire-text-muted,#777);margin:0 0 .2rem;text-transform:uppercase;letter-spacing:.03em}
.cheshire-mod-type-badge{background:var(--cheshire-primary,#0042ab);color:#fff;padding:.1rem .6rem;border-radius:12px;font-size:.7rem;font-weight:500;vertical-align:middle;margin-left:.5rem}
.cheshire-mod-comment-hint{color:var(--cheshire-text-faint,#999);font-size:.8rem}
.cheshire-mod-comments{display:flex;flex-direction:column;gap:.6rem;margin:.6rem 0}
.cheshire-mod-comment{background:var(--cheshire-surface-alt,#f9fafb);border-radius:6px;padding:.5rem .8rem}
.cheshire-mod-comment-meta{color:var(--cheshire-text-faint,#999);font-size:.75rem;display:block;margin-bottom:.2rem}
.cheshire-mod-comment-text{font-size:.88rem;white-space:pre-wrap}
.cheshire-mod-comment-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.6rem}
.cheshire-mod-comment-form textarea{width:100%;box-sizing:border-box;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px}
.cheshire-mod-comment-form button{align-self:flex-start;padding:.4rem 1.2rem;background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;cursor:pointer}
/* Phase 5.2/M07: einheitliches Styling fuer alle Melde-Formulare (Beitrag/PN/Profilbild/Signatur) */
.cheshire-report-form{max-width:480px}
.cheshire-report-form label{display:block;margin-bottom:.9rem;font-weight:600}
.cheshire-report-form select,.cheshire-report-form textarea{display:block;width:100%;box-sizing:border-box;margin-top:.3rem;padding:.5rem;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:5px;font-family:inherit;font-weight:400}
.cheshire-report-form textarea{resize:vertical}
.cheshire-mod-safe-list{display:flex;flex-direction:column;gap:.8rem}
.cheshire-mod-safe-row{border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.8rem 1rem;background:var(--cheshire-surface-alt,#f9fafb)}
.cheshire-mod-safe-row-deleted{border-color:var(--cheshire-success-border,#c7e6cf);background:var(--cheshire-success-bg,#f4fbf6)}
.cheshire-mod-safe-meta{font-size:.85rem;color:var(--cheshire-text-muted,#555);margin-bottom:.5rem}
.cheshire-mod-hard-deleted-badge{color:var(--cheshire-success-text,#2E7D32);font-weight:600;font-size:.85rem;margin:.6rem 0 0}
.cheshire-btn-mod{color:inherit;text-decoration:none}
.cheshire-post-reported-link{margin-left:.5rem;font-weight:600}

/* ── Reported post ── */
.cheshire-post-reported{border:1px dashed var(--cheshire-warning-border,#E67E22);border-radius:6px;margin-bottom:1rem}
.cheshire-post-reported-notice{padding:.6rem 1rem;color:#E67E22;font-size:.88rem;font-style:italic}

/* ── Site-Header (Logo/Titel) — Peter-Wunsch 12.08.2026, Vorlage forum.wbce.org ── */
/* Zusammenstellung-Restpunkt TP2 (Peter-Feedback #408): margin-top per
   --cheshire-header-padding-top ueberschreibbar (Nachbesserung 13.09.2026:
   padding-top vergroesserte nur die Box selbst statt Abstand zur Boxkante
   zu schaffen, siehe cheshire.css-Kommentar). Die spaetere Card-Optik-
   Override-Regel unten (Zeile ~818) hat denselben Fix. */
.cheshire-site-header{position:relative;display:flex;align-items:center;gap:.8rem;padding:1rem 0 .6rem;margin-top:var(--cheshire-header-padding-top,0)}
.cheshire-site-logo{font-size:2.3rem;text-decoration:none;line-height:1}
.cheshire-site-heading{display:flex;flex-direction:column}
.cheshire-site-title{font-size:1.5rem;font-weight:700;color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none}
.cheshire-site-title:hover{text-decoration:underline}
.cheshire-site-tagline{margin:.1rem 0 0;font-size:.85rem;color:var(--cheshire-text-muted,#777)}
/* Theme-Baukasten Etappe 2 (Peter-Freigabe 21.08.2026): Logo-Position +
   Sticky-Header, siehe Cheshire\Services\Theme::logoPosition()/config(). */
.cheshire-site-logo img{max-height:2.3rem;width:auto;display:block}
.cheshire-site-header--logo-center{justify-content:center;text-align:center;flex-wrap:wrap}
.cheshire-site-header--logo-center .cheshire-site-heading{align-items:center}
.cheshire-site-header--logo-right{flex-direction:row-reverse}
.cheshire-site-header--sticky{position:sticky;top:0;z-index:50;background:var(--cheshire-surface,#fff);box-shadow:var(--cheshire-shadow-sm,0 1px 4px rgba(0,0,0,.08))}
/* Theme-Baukasten Etappe 4 (Peter-Freigabe 21.08.2026): Eckdekoration, siehe
   Cheshire\Services\Theme::config()-Kommentar zum Scope (Header/Topbar/
   Buttons-Chrome, nicht jede Karte). Ohne Einstellung 0 = unveraendert. */
.cheshire-site-header{border-radius:var(--cheshire-radius,0)}
/* Peter-Wunsch 07.09.2026: Header ausserhalb von .cheshire-wrap gerendert,
   siehe cheshire.css-Kommentar (gleiches Muster, alle 3 Theme-Dateien). */
.cheshire-site-header--outside{max-width:var(--cheshire-content-width,960px);margin:0 auto;margin-top:var(--cheshire-header-padding-top,0);padding:1.2rem 1rem .8rem}

/* ── Topbar (login/logout bar) — als durchgehende Farbleiste statt duenner
   Trennlinie, naeher an der WBCE-Vorlage (Peter-Wunsch "mehr Konturen") ── */
.cheshire-topbar{display:flex;justify-content:flex-end;align-items:center;gap:.8rem;padding:.55rem 1rem;font-size:.85rem;background:var(--cheshire-header-bg,var(--cheshire-primary,#0042ab));color:#fff;border-radius:var(--cheshire-radius,6px);margin-bottom:1rem}
/* Bugfix-Vorschlag (Peter-Erklaerung 13.09.2026): Vorschau-Cookie-Hinweis,
   siehe cheshire.css fuer die volle Begruendung. */
.cheshire-preview-notice{background:#fff3cd;color:#664d03;border:1px solid #ffe69c;border-radius:6px;padding:.5rem .8rem;font-size:.82rem;margin-bottom:1rem}
.cheshire-preview-notice a{color:#664d03;text-decoration:underline;font-weight:600}
/* 2.44-Restpunkt 1 (24.08.2026): kompaktes Logo sitewide, siehe cheshire.css */
.cheshire-topbar-logo{margin-right:auto;display:inline-flex;align-items:center;font-size:1.2rem;line-height:1;text-decoration:none}
.cheshire-topbar-logo img{height:26px;width:auto;display:block;border-radius:4px}
/* 2.44-Restpunkt 1 Nachbesserung (Peter-Vorgabe 26.08.2026): Modus statt Seite
   entscheidet, was sichtbar ist -- Integriert zeigt das kompakte Logo immer
   (Grundregel oben), Hybrid/Standalone zeigt stattdessen sitewide den grossen
   Banner und blendet das kompakte Logo erst unterhalb des Breakpoints ein. */
.cheshire-wrap:not(.cheshire-integrated) .cheshire-topbar-logo{display:none}
@media (max-width:768px){
    .cheshire-wrap:not(.cheshire-integrated) .cheshire-site-header{display:none}
    .cheshire-site-header--outside{display:none}
    .cheshire-wrap:not(.cheshire-integrated) .cheshire-topbar-logo{display:inline-flex}
}
.cheshire-btn-login,.cheshire-btn-register,.cheshire-btn-logout,.cheshire-btn-pm,.cheshire-btn-mod{padding:.2rem .6rem;border-radius:var(--cheshire-radius,4px);text-decoration:none;font-size:.82rem;border-color:rgba(255,255,255,.6)!important;color:#fff!important}
.cheshire-btn-login{background:rgba(255,255,255,.18)}
/* Theme-Baukasten Etappe 3 (Peter-Freigabe 21.08.2026, Styling-only): Nav-
   Link-Farben + Burger-Menue. Burger-Button standardmaessig unsichtbar --
   erscheint nur innerhalb des dynamischen @media-Blocks aus
   Cheshire\Services\Theme::navCssBlock() (Breakpoint > 0 gesetzt). */
.cheshire-topbar a{color:var(--cheshire-nav-link,#fff)}
.cheshire-topbar a:hover{color:var(--cheshire-nav-hover,#fff);background:rgba(255,255,255,.18)}
.cheshire-topbar a.active{color:var(--cheshire-nav-active,#fff);text-decoration:underline;font-weight:600}
.cheshire-nav-links{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}
.cheshire-nav-burger{display:none;background:none;border:1px solid rgba(255,255,255,.5);color:inherit;border-radius:var(--cheshire-radius,4px);width:2rem;height:2rem;font-size:1.1rem;line-height:1;cursor:pointer;align-items:center;justify-content:center}
/* Theme-Baukasten Etappe 4 Teil 2 (Peter-Freigabe 21.08.2026): Navigations-
   Icons SVG-Modus, siehe NavIcons.php. */
.cheshire-nav-icon{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;margin-right:.35em;vertical-align:-0.125em}
.cheshire-nav-icon svg{width:1em;height:1em;display:block}
/* Theme-Baukasten Etappe 4 Teil 3 (Dark Mode, Peter-Freigabe 21.08.2026):
   Besucher-Umschalter Hell/Dunkel, siehe cheshire.js fuer die Klick-Logik. */
.cheshire-color-toggle{background:none;border:1px solid rgba(255,255,255,.5);color:inherit;border-radius:var(--cheshire-radius,4px);width:2rem;height:2rem;font-size:1rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-left:.5rem;flex:0 0 auto}
.cheshire-color-toggle:hover{background:rgba(255,255,255,.18)}

/* Freie Links (Backlog #392) fehlten bisher komplett in dieser Theme-Datei
   (gleiches "Theme-Dateien schliessen sich gegenseitig aus"-Muster wie schon
   mehrfach in dieser Session, zuletzt Statistik-Seite/TP7) -- Peter-Meldung
   13.09.2026: Footer-Link "kein Layout, ist nicht identisch wie das Design".
   Header-Variante (.cheshire-header-links) sitzt rechts oben im Site-Header,
   siehe Kommentar in cheshire.css fuer Details/bekannte Einschraenkung. */
.cheshire-custom-links{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;padding:.8rem 1rem;margin-top:1rem;font-size:var(--cheshire-custom-links-font-size,.82rem);color:var(--cheshire-text-muted,#777);border-top:1px solid var(--cheshire-border,#eee)}
.cheshire-custom-links a{color:inherit;text-decoration:none}
.cheshire-custom-links a:hover{text-decoration:underline}
.cheshire-topbar .cheshire-custom-links{padding:0;margin:0 0 0 .4rem;border-top:none;font-size:var(--cheshire-custom-links-font-size,.82rem);gap:.6rem;flex-wrap:nowrap}
/* Nachbesserung 13.09.2026 Teil 2 (Peter-Meldung: Logo-Position "Mittig"
   wurde durch die Header-Links ausgehebelt), siehe Kommentar in
   cheshire.css fuer Details -- jetzt echte "freistehende Containerbox"
   per position:absolute statt Flex-Kind. */
.cheshire-header-links{position:absolute;top:.15rem;right:0;border-top:none;padding:0;margin:0;flex-wrap:nowrap}

/* ── Hilfe/Handbuch (FAQ) ── */
.cheshire-help-intro{color:var(--cheshire-text-muted,#666);margin-bottom:1.2rem}
.cheshire-help-sections{display:flex;flex-direction:column;gap:1.2rem}
.cheshire-help-cat{background:var(--cheshire-surface-alt,#f9fafb);border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.9rem 1.2rem}
.cheshire-help-cat h2{margin:0 0 .5rem;font-size:1.05rem}
.cheshire-help-badge{font-size:.72rem;font-weight:400;color:#E67E22;border:1px solid var(--cheshire-warning-border,#E67E22);border-radius:4px;padding:.05rem .4rem;margin-left:.4rem}
.cheshire-help-list{margin:0;padding-left:1.2rem}
.cheshire-help-list li{margin:.25rem 0}
.cheshire-help-list a{color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));text-decoration:none}
.cheshire-help-list a:hover{text-decoration:underline}
.cheshire-help-empty{color:var(--cheshire-text-faint,#999)}
.cheshire-help-article table{border-collapse:collapse;margin:.8rem 0;width:100%}
.cheshire-help-article th,.cheshire-help-article td{border:1px solid var(--cheshire-border,#eee);padding:.4rem .6rem;text-align:left;font-size:.9rem}
.cheshire-help-article blockquote{border-left:3px solid var(--cheshire-border-strong,#ddd);margin:.6rem 0;padding:.2rem 1rem;color:var(--cheshire-text-muted,#555)}
.cheshire-help-article code{background:var(--cheshire-surface-alt,#f4f4f4);padding:.1rem .3rem;border-radius:3px;font-size:.88rem}
.cheshire-btn-login{background:var(--cheshire-primary,#0042ab);color:#fff}
.cheshire-btn-register{border:1px solid var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab))}
.cheshire-btn-logout{border:1px solid #aaa;color:var(--cheshire-text-muted,#666)}
.cheshire-btn-pm{padding:.2rem .6rem;border-radius:4px;text-decoration:none;font-size:.82rem;border:1px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c))}

/* ── Password strength bar ── */
.cheshire-pw-strength-wrap{margin:.4rem 0 .6rem}
.cheshire-pw-strength-wrap:not(:empty){background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#ddd);border-radius:4px;padding:.5rem .7rem}
#cheshire-pw-strength{position:relative;z-index:1}

/* ── MFA Instructions ── */
.cheshire-mfa-instructions{background:var(--cheshire-surface-alt,#eef3fb);border:1px solid var(--cheshire-border-strong,#a9c3e8);border-radius:6px;padding:1rem;margin:.8rem 0;font-size:.9rem}
.cheshire-mfa-instructions ol{margin:.5rem 0 0 1.2rem;padding:0}
.cheshire-mfa-instructions li{margin:.4rem 0}
.cheshire-backup-codes{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.5rem;margin:.8rem 0}
.cheshire-backup-codes li code{background:var(--cheshire-surface-alt,#f0f0f0);padding:.3rem .6rem;border-radius:4px;font-family:monospace;font-size:.9rem}

/* MD Inline Render */
[id^="cheshire-md-"] h1,[id^="cheshire-md-"] h2,[id^="cheshire-md-"] h3{color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));margin:.8rem 0 .3rem;line-height:1.3}
[id^="cheshire-md-"] h1{font-size:1.3rem;border-bottom:1px solid var(--cheshire-border-strong,#ddd);padding-bottom:.2rem}
[id^="cheshire-md-"] h2{font-size:1.1rem}
[id^="cheshire-md-"] pre{background:#1e1e1e;color:var(--cheshire-text-faint,#d4d4d4);padding:.7rem 1rem;border-radius:5px;overflow-x:auto;font-size:.83rem}
[id^="cheshire-md-"] code{background:var(--cheshire-surface-alt,#eef3fb);padding:.1rem .3rem;border-radius:3px;font-size:.85rem;color:var(--cheshire-danger-text,#c7254e)}
[id^="cheshire-md-"] pre code{background:none;padding:0;color:var(--cheshire-text-faint,#d4d4d4)}
[id^="cheshire-md-"] blockquote{border-left:3px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));margin:.5rem 0;padding:.3rem .7rem;background:var(--cheshire-surface-alt,#eef3fb);color:var(--cheshire-text-muted,#555);border-radius:0 4px 4px 0}
[id^="cheshire-md-"] table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.88rem}
[id^="cheshire-md-"] th{background:var(--cheshire-primary,#0042ab);color:#fff;padding:.35rem .6rem;text-align:left}
[id^="cheshire-md-"] td{border:1px solid var(--cheshire-border-strong,#ddd);padding:.3rem .6rem}
[id^="cheshire-md-"] tr:nth-child(even){background:var(--cheshire-surface-alt,#f8f9fa)}
[id^="cheshire-md-"] a{color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c))}
[id^="cheshire-md-"] hr{border:none;border-top:1px solid var(--cheshire-border-strong,#ddd);margin:1rem 0}

/* FSK-Bestaetigungsseite */
.cheshire-fsk-gate{max-width:600px;margin:2rem auto;text-align:center;background:var(--cheshire-warning-bg,#fff3cd);border:1px solid var(--cheshire-warning-border,#ffc107);border-radius:8px;padding:1.5rem}
.cheshire-fsk-gate h1{margin-top:0;font-size:1.3rem}
.cheshire-btn-primary{background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;padding:.6rem 1.4rem;font-size:1rem;cursor:pointer;margin:.8rem 0}
.cheshire-btn-primary:hover{background:var(--cheshire-accent,#3d6b8c)}

/* Bewerbungen-Ticker (1.28) */
.cheshire-applications-ticker{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;background:var(--cheshire-warning-bg,#fff3cd);border:1px solid var(--cheshire-warning-border,#ffc107);border-radius:6px;padding:.6rem 1rem;margin-bottom:.8rem;font-size:.9rem}
.cheshire-btn-apply{background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:5px;padding:.4rem .9rem;text-decoration:none;font-size:.85rem;white-space:nowrap}
.cheshire-btn-apply:hover{background:var(--cheshire-accent,#3d6b8c)}
.cheshire-app-position{border:1px solid var(--cheshire-border,#eee);border-radius:8px;padding:.8rem 1rem;margin-bottom:.8rem}
.cheshire-app-position h3{margin:0 0 .5rem}
.cheshire-app-status{display:inline-block;padding:.3rem .7rem;border-radius:5px;font-size:.85rem}
.cheshire-app-pending{background:var(--cheshire-warning-bg,#fff3cd);color:var(--cheshire-warning-text,#856404)}
.cheshire-app-approved{background:var(--cheshire-success-bg,#d4edda);color:var(--cheshire-success-text,#155724)}
.cheshire-app-rejected-note{color:var(--cheshire-danger-text,#C0392B);font-size:.85rem}
.cheshire-app-description{background:var(--cheshire-surface-alt,#f4f6f8);border-radius:5px;padding:.6rem .8rem;font-size:.88rem;color:var(--cheshire-text,#444);margin:.4rem 0}

/* Signatur-Bild-Galerie (Backlog #24) */
.cheshire-sig-gallery{margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--cheshire-border,#eee);max-width:600px}
.cheshire-sig-gallery-grid{display:flex;flex-wrap:wrap;gap:.6rem;margin:.6rem 0}
.cheshire-sig-gallery-item{position:relative;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:6px;padding:.3rem;background:var(--cheshire-surface-alt,#fafafa)}
.cheshire-sig-gallery-item img{display:block;max-width:100px;max-height:80px;border-radius:4px;cursor:pointer}
.cheshire-sig-gallery-item img:hover{outline:2px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c))}
.cheshire-sig-gallery-item form{position:absolute;top:-.5rem;right:-.5rem}
.cheshire-sig-gallery-item button{border:1px solid var(--cheshire-border-strong,#ddd);background:var(--cheshire-surface,#fff);border-radius:50%;width:22px;height:22px;line-height:1;cursor:pointer;font-size:.75rem}
.cheshire-sig-gallery-upload{margin-top:.4rem}
.cheshire-sig-rules-confirm{display:flex;align-items:center;gap:.4rem;font-size:.85rem;margin:.4rem 0}
.cheshire-sig-report-link{display:inline-block;margin-top:.3rem;font-size:.75rem;color:var(--cheshire-text-faint,#999);text-decoration:none}
.cheshire-sig-report-link:hover{color:var(--cheshire-danger-text,#C0392B);text-decoration:underline}
.cheshire-sig-gallery-item-locked{background:var(--cheshire-danger-bg,#fdf0ee)}
.cheshire-sig-gallery-locked-badge{display:block;font-size:.7rem;color:var(--cheshire-danger-text,#c0392b);text-align:center;margin-top:.2rem}

/* Video-Upload/-Embed (#91, donor_only) */
.cheshire-attachment-video video{display:block;border-radius:6px;background:#000}
.cheshire-video-embed{position:relative;max-width:560px;margin:.6rem 0;aspect-ratio:16/9}
.cheshire-video-embed iframe{width:100%;height:100%;border-radius:6px}
/* DSGVO Klick-zum-Laden-Platzhalter (Peter-Wunsch) statt Auto-Embed */
.cheshire-video-consent{display:flex;align-items:center;justify-content:center;background:var(--cheshire-surface-alt,#eef1f4);border:1px solid var(--cheshire-border-strong,#d5dce3);border-radius:6px}
.cheshire-video-load-btn{display:flex;flex-direction:column;align-items:center;gap:.3rem;background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));border-radius:6px;padding:.7rem 1.2rem;font-size:1rem;cursor:pointer}
.cheshire-video-load-btn:hover{background:var(--cheshire-accent,#3d6b8c);color:#fff}
.cheshire-video-load-btn small{font-size:.72rem;font-weight:normal;color:inherit;opacity:.8}

/* Design-Runde 3 TP1 (Peter-Freigabe 13.09.2026): gemeinsames Rahmen-Muster
   fuer Beitrags-Inhaltsbloecke (Anhaenge/Signatur/Support-Wunschliste,
   erweiterbar fuer kuenftige Bloecke) -- sichtbarer Kontrast, damit
   Beitragsende und Block-Anfang nicht "ineinander verschwimmen" (Peter).
   Details/Summary fuer native Klapplogik ohne JS-Pflicht; Bildschirmgroessen-
   abhaengiger Default (offen/zu) folgt in TP2 (cheshire.js + Breakpoint).
   @see src/Services/Signature.php, src/Services/Support.php,
        src/Controllers/ThreadController.php */
details.cheshire-content-block{margin:.5rem 0;border:1px solid var(--cheshire-border-strong,#ddd);border-radius:8px;padding:.5rem .8rem;background:var(--cheshire-surface-alt,#f7f8fa)}
details.cheshire-content-block summary{cursor:pointer;font-size:.82rem;color:var(--cheshire-text-muted,#555);font-weight:600;list-style:revert}
details.cheshire-content-block[open] summary{margin-bottom:.5rem}
/* Peter-Wunsch 20.09.2026: "Signatur melden" neben die Auf-/Zuklapp-
   Ueberschrift statt unterhalb des Inhalts -- siehe cheshire.css fuer
   die volle Begruendung. */
details.cheshire-content-block summary .cheshire-sig-report-link{display:inline;margin-top:0;margin-left:.6rem;font-weight:400}
details.cheshire-content-block:not([open]) summary .cheshire-sig-report-link{display:none}
/* Rueckbau TP2 (Peter-Wunsch 20.09.2026): die "kompakte Icon-Leiste" bei
   zugeklapptem Block (nur Icon, Labeltext ausgeblendet, siehe 13.09.2026)
   war zu knapp -- Label bleibt jetzt auch zugeklappt sichtbar (betrifft
   einheitlich Anhaenge/Signatur/Support-Wunschliste, gleiche Klasse). */

/* Bugfix (Peter 31.08.2026): Absicherungs-CSS fuer per fetch() nachgeladenen
   MD-Anhang-Inhalt (siehe ThreadController.php-Kommentar) -- ohne diese
   Regeln konnten breite Tabellen/Code-Zeilen die Seite aufreissen. */
.cheshire-md-inline{max-width:100%}
.cheshire-md-inline *{max-width:100%;box-sizing:border-box}
.cheshire-md-inline pre{background:#1e1e1e;color:#d4d4d4;padding:1rem 1.2rem;border-radius:6px;overflow-x:auto;font-size:.88rem;line-height:1.5}
.cheshire-md-inline code{background:var(--cheshire-surface-alt,#f0f4f8);padding:.1rem .35rem;border-radius:3px;font-size:.88rem;color:#c7254e}
.cheshire-md-inline pre code{background:none;padding:0;color:#d4d4d4}
.cheshire-md-inline table{border-collapse:collapse;width:100%;margin:.8rem 0;table-layout:fixed}
.cheshire-md-inline th{background:var(--cheshire-primary,#2E4057);color:#fff;padding:.5rem .8rem;text-align:left}
.cheshire-md-inline td{border:1px solid var(--cheshire-border,#ddd);padding:.4rem .8rem;word-break:break-word}
.cheshire-md-inline img{height:auto;border-radius:4px}
.cheshire-md-inline blockquote{border-left:4px solid var(--cheshire-accent,#3D6B8C);margin:.8rem 0;padding:.4rem .8rem .4rem 1rem;background:var(--cheshire-surface-alt,#f0f4f8);color:#555;border-radius:0 4px 4px 0}
.cheshire-md-inline p,.cheshire-md-inline li{overflow-wrap:anywhere}

/* #122 Peter-Wunsch: Bild-Anhänge als horizontale Swipe-Reihe statt
   untereinander mit sichtbarem Dateinamen — Name nur noch als Tooltip
   (title-Attribut) bzw. Alt-Text, Downloads-Zähler kurz & klein. */
.cheshire-att-img-row{display:flex;gap:.5rem;overflow-x:auto;padding:.2rem 0 .5rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.cheshire-att-thumb{position:relative;flex:0 0 auto;display:block;scroll-snap-align:start;border-radius:6px;overflow:hidden;line-height:0}
.cheshire-att-thumb img{display:block;border-radius:6px}
.cheshire-att-thumb-dl{position:absolute;right:.3rem;bottom:.3rem;background:rgba(0,0,0,.6);color:#fff;font-size:.68rem;padding:.05rem .35rem;border-radius:3px;line-height:1.4}

/* Signatur: Auflistung "Beiträge ohne Signatur" (Peter-Wunsch) */
details.cheshire-sig-off-list{margin:.8rem 0;font-size:.85rem}
details.cheshire-sig-off-list summary{cursor:pointer;color:var(--cheshire-text-muted,#555);font-weight:600}
details.cheshire-sig-off-list ul{margin:.4rem 0 0;padding-left:1.2rem}
details.cheshire-sig-off-list li{margin:.2rem 0}

/* ═══════════════════════════════════════════════════════════════
   MODERN-OVERRIDES — ab hier: Card-Optik statt dichter Tabellenzeilen.
   Ueberschreibt gezielt einzelne Eigenschaften der Basis-Selektoren
   oben (gleiche Klassen, keine neuen Templates noetig). Reihenfolge
   in der Datei wichtig: muss NACH den Basis-Regeln stehen.
   ═══════════════════════════════════════════════════════════════ */

/* Mehr Luft, sanfter Seitenhintergrund.
   Bugfix (Peter-Testplan 0.1.150-dev, "feste Breite wird bei Modern nicht
   uebernommen"): stand hier bisher hart 1040px, unabhaengig von AdminCP ->
   Design -> Theme -> Inhaltsbreite (--cheshire-content-width, siehe
   cheshire-wrap-Basisregel oben im Datei-Kopf). 1040px bleibt nur noch als
   CSS-Fallback erhalten, die var() gewinnt jetzt wie bei den anderen beiden
   Themes. Seiteneffekt: ohne eigene Breiten-Einstellung zeigt Modern damit
   ab sofort denselben 960px-Standardwert wie Klassisch/Standard statt der
   bisherigen 1040px -- die AdminCP-Einstellung war ja der Wunsch. */
.cheshire-wrap,#cheshire-standalone-main{max-width:var(--cheshire-content-width,1040px)}
#cheshire-standalone{background:var(--cheshire-surface-alt,#eef3fb)}

/* Site-Header + Topbar als schwebende Card statt flacher Vollton-Leiste
   (Unterscheidung zu Theme "Klassisch", das naeher an forum.wbce.org bleibt) */
/* margin-top (Abstand oben) kommt aus der Basisregel oben (Zeile ~605) --
   hier nur die Card-Optik selbst, padding-top nicht mehr ueberschrieben
   (Nachbesserung 13.09.2026, siehe Kommentar oben). */
.cheshire-site-header{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#eef3fb);border-radius:var(--cheshire-radius,14px);padding:1.2rem 1.4rem;margin-bottom:1rem;box-shadow:var(--cheshire-shadow-md,0 2px 10px rgba(0,66,171,.07))}
.cheshire-site-logo{font-size:2.6rem}
/* Theme-Baukasten Etappe 4: eigener Farbverlauf (--cheshire-header-bg) hat
   Vorrang vor Moderns eingebautem Gradient, der als Fallback erhalten bleibt. */
.cheshire-topbar{border-radius:var(--cheshire-radius,14px);background:var(--cheshire-header-bg,linear-gradient(135deg,var(--cheshire-primary,#0042ab),var(--cheshire-accent,#3d6b8c)));box-shadow:var(--cheshire-shadow-md,0 2px 10px rgba(0,66,171,.15))}

/* Kategorie- und Card-Bloecke: eigene Flaeche statt nahtlosem Fliesstext */
.cheshire-category{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#eef3fb);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--cheshire-shadow-sm,0 1px 3px rgba(0,66,171,.06));margin-bottom:1.2rem}
/* Bugfix (Peter-Testplan 0.1.150-dev, "Lila-Bleed noch bei Kategorien"):
   Verlauf stand hier fest auf #eef3fb -- keine Variable, surface_alt_color
   (2.60) konnte hier also gar nicht greifen. Jetzt an --cheshire-surface-alt
   angeschlossen wie die uebrigen Card-Flaechen (Post-Autor, Foren-/Themen-
   zeilen), alter Farbton bleibt Fallback = keine Aenderung ohne eigenen Wert. */
.cheshire-category-title{border-bottom:none;background:linear-gradient(90deg,var(--cheshire-surface-alt,#eef3fb),transparent);padding:.6rem .8rem;border-radius:8px;margin:-.2rem -.2rem .6rem}
/* Peter-Nachbesserung 29.09.2026: WIO-Footerzeile bekommt denselben
   Kasten-Look wie .cheshire-category oben (Rahmen/Radius/Schatten) statt
   der schlichten Rahmenlinie aus cheshire.css. */
.cheshire-wio-footer{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#eef3fb);border-top:1px solid var(--cheshire-border-strong,#eef3fb);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--cheshire-shadow-sm,0 1px 3px rgba(0,66,171,.06))}

/* Foren-/Themenzeilen als abgerundete Karten statt Tabellenzeilen mit Trennlinie */
.cheshire-forum-row,.cheshire-thread-row{border-bottom:none;border-radius:8px;padding:.8rem .9rem;margin-bottom:.4rem;background:var(--cheshire-surface-alt,#f7f9fc);transition:box-shadow .15s,transform .15s}
.cheshire-forum-row:hover,.cheshire-thread-row:hover{box-shadow:var(--cheshire-shadow-md,0 2px 8px rgba(0,66,171,.1));transform:translateY(-1px)}

/* Nachbesserung TP8 (Peter-Feedback 21.09.2026): Widget "Seit deinem letzten
   Besuch" war bisher nur in cheshire.css gestylt -- hier fehlte es komplett
   (Standard-Link/-Button ohne jede Optik). Card-Optik analog .cheshire-category. */
.cheshire-since-visit-widget{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#eef3fb);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--cheshire-shadow-sm,0 1px 3px rgba(0,66,171,.06));margin-bottom:1.2rem}
.cheshire-since-visit-title{font-weight:700;font-size:.95rem;color:var(--cheshire-text,#333);display:block;margin-bottom:.6rem}
.cheshire-since-visit-links{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}
.cheshire-since-visit-link{display:flex;align-items:center;justify-content:center;gap:.3rem;padding:.45rem .5rem;border-radius:8px;background:var(--cheshire-surface-alt,#f7f9fc);color:var(--cheshire-brand-text,var(--cheshire-primary,#0042ab));text-decoration:none;font-size:.85rem;text-align:center;transition:box-shadow .15s,transform .15s}
.cheshire-since-visit-link:hover{box-shadow:var(--cheshire-shadow-md,0 2px 8px rgba(0,66,171,.1));transform:translateY(-1px)}
.cheshire-since-visit-link--empty{opacity:.55;cursor:default}
.cheshire-since-visit-link--empty:hover{box-shadow:none;transform:none}
@media (max-width:640px){.cheshire-since-visit-links{grid-template-columns:repeat(2,1fr)}}
.cheshire-since-visit-markall{margin-top:.8rem}
.cheshire-since-visit-markall button{background:none;border:1px solid var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));color:var(--cheshire-brand-text,var(--cheshire-accent,#3d6b8c));border-radius:var(--cheshire-radius,14px);padding:.3rem .8rem;font-size:.8rem;cursor:pointer}
.cheshire-since-visit-markall button:hover{background:var(--cheshire-surface-alt,#eef3fb)}
/* Teil 3 (Peter-Wunsch 22.09.2026): Leerzustand -- Widget bleibt taeglich
   mindestens einmal sichtbar statt komplett zu verschwinden. */
.cheshire-since-visit-widget--empty{opacity:.85}
.cheshire-since-visit-empty-text{font-size:.85rem;color:var(--cheshire-text-muted,#777);margin:0 0 .4rem}

/* Post-Karten: Radius/Schatten UND sichtbarer Rahmen (Peter-Feedback
   22.09.2026: reiner Schatten mit 8% Deckkraft reichte nicht, Beitraege
   verschwammen ineinander -- Rahmen und Trennlinien auf #d5e2f6 verstaerkt,
   deutlich dunkler als das vorherige #eee/#eef3fb). */
.cheshire-post{border:1px solid #d5e2f6;border-radius:12px;box-shadow:var(--cheshire-shadow-sm,0 1px 4px rgba(0,66,171,.08));margin-bottom:1.2rem}
.cheshire-post-author{background:var(--cheshire-surface-alt,#eef3fb);border-radius:12px 12px 0 0;border-bottom:1px solid #d5e2f6}
.cheshire-post-actions{border-top:1px solid #d5e2f6}

/* Buttons: mehr Radius, dezenter Schatten statt kantiger Buttons */
.cheshire-btn-primary,.cheshire-quick-reply button,.cheshire-auth-form button,.cheshire-search-form button,.cheshire-pagination a.active,.cheshire-btn-apply{border-radius:8px;box-shadow:var(--cheshire-shadow-sm,0 1px 2px rgba(0,66,171,.15))}

/* TP2 (22.09.2026): Move-Checkbox als kleiner Chip statt nacktem Inline-
   Element -- ging im kontrastarmen Post-Header unter. @see ThreadController.php */
.cheshire-move-chip{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin-right:.5rem;border:1px solid #d5e2f6;border-radius:6px;background:var(--cheshire-surface,#fff);vertical-align:middle;cursor:pointer}
.cheshire-move-chip:hover{background:var(--cheshire-surface-alt,#eef3fb)}
.cheshire-move-checkbox{margin:0;cursor:pointer}

/* Auth-/Formularflaechen als schwebende Card */
.cheshire-auth-form{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#eef3fb);border-radius:14px;padding:1.6rem;box-shadow:var(--cheshire-shadow-md,0 2px 10px rgba(0,66,171,.08))}

/* Top-/PM-/Mod-Listen: gleiche Card-Behandlung wie Foren-/Themenzeilen */
.cheshire-pm-row,.cheshire-mod-row{border-bottom:none;border-radius:8px;margin-bottom:.35rem;background:var(--cheshire-surface-alt,#f7f9fc)}
.cheshire-pm-list,.cheshire-mod-list,.cheshire-sub-list{border:none;background:transparent}
.cheshire-top-section{box-shadow:var(--cheshire-shadow-sm,0 1px 3px rgba(0,66,171,.06));border-radius:12px}

/* Etwas grosszuegigere Grundschrift */
#cheshire-standalone,.cheshire-wrap{line-height:1.6}

/* ── Theme-/Designpack-Baukasten Etappe 4 (Teil 3): Dark Mode
   (Peter-Freigabe 21.08.2026, "ganze Seite" + AdminCP-Default + Besucher-
   Toggle) ── .cheshire-wrap.cheshire-dark ueberschreibt alle Token-
   Variablen mit der Dunkel-Palette (Lila-Welt, gleiche Werte wie
   classic.css, da beide Themes dieselbe Primaer-/Akzentfarbe teilen).
   Kontrastverhaeltnisse rechnerisch gegen WCAG 2.1 AA geprueft.
   @see cheshire.css fuer den ausfuehrlichen Kommentar. */
.cheshire-wrap.cheshire-dark,#cheshire-standalone.cheshire-dark{
  --cheshire-bg:#0c131f;
  --cheshire-surface:#101a2b;
  --cheshire-surface-alt:#131f33;
  --cheshire-text:#eef3fb;
  --cheshire-text-muted:#a3b0c4;
  --cheshire-text-faint:#7d8fa8;
  --cheshire-border:#16233a;
  --cheshire-border-strong:#66748a;
  --cheshire-brand-text:#a9c3e8;
  --cheshire-success-bg:#15301f;
  --cheshire-success-text:#74d18f;
  --cheshire-success-border:#2c5b3a;
  --cheshire-warning-bg:#3a2f10;
  --cheshire-warning-text:#e3c25e;
  --cheshire-warning-border:#5e4d1c;
  --cheshire-danger-bg:#3a1616;
  --cheshire-danger-text:#ef8b8b;
  --cheshire-danger-border:#5c2626;
  --cheshire-info-bg:#12293a;
  --cheshire-info-text:#82c6ea;
  --cheshire-info-border:#234a63;
  --cheshire-shadow-sm:0 1px 4px rgba(0,0,0,.5);
  --cheshire-shadow-md:0 2px 10px rgba(0,0,0,.6);
}

/* ── TP2 (Supportforum-Redesign): 2-zeiliger Header ──────────────────────
   Zeile 1 = Logo/Suchfeld/Icon-Aktionen (rein optisch, neu). Zeile 2
   nutzt den bestehenden .cheshire-nav-links/-burger-Mechanismus (siehe
   cheshire.js) unveraendert, nur neue Rahmen-Klasse .cheshire-support-
   header-row2 drumherum. @see Bootstrap.php ($theme === 'support') */
/* Bugfix 22.09.2026 (Peter-Meldung: Benutzermenue-Dropdown zeigt nur die
   ersten 2 Eintraege): overflow:hidden auf dem Header-Container schnitt das
   absolut positionierte .cheshire-support-usermenu-list-Dropdown (Kind von
   .cheshire-support-header-row1) an der Header-Unterkante ab. Row1/Row2
   haben keinen eigenen Hintergrund, der ueber die Ecken hinauslaufen
   koennte -- overflow:hidden war hier nicht noetig. */
.cheshire-support-header{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:var(--cheshire-radius,12px);margin-bottom:1rem}
.cheshire-support-header-row1{display:flex;align-items:center;gap:1rem;padding:.7rem 1rem;flex-wrap:wrap}
.cheshire-support-logo{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--cheshire-text,#12161c);font-weight:600;font-size:1rem;flex-shrink:0}
.cheshire-support-logo img{height:32px;width:auto}
.cheshire-support-search{flex:1 1 240px;max-width:420px;display:flex;align-items:center;gap:.4rem;background:var(--cheshire-surface-alt,#f4f6f8);border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:8px;padding:.4rem .7rem}
.cheshire-support-search input{border:none;background:none;outline:none;flex:1;font-size:.85rem;color:var(--cheshire-text,#12161c)}
.cheshire-support-header-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}
.cheshire-support-avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--cheshire-accent,#3d6b8c);color:#fff;font-size:.72rem;font-weight:600}
.cheshire-support-usermenu{position:relative}
.cheshire-support-usermenu summary{list-style:none;display:flex;align-items:center;gap:.4rem;border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:999px;padding:.2rem .6rem .2rem .2rem;cursor:pointer;font-size:.82rem;color:var(--cheshire-text,#12161c)}
.cheshire-support-usermenu summary::-webkit-details-marker{display:none}
.cheshire-support-usermenu-list{position:absolute;right:0;top:calc(100% + .3rem);background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:8px;box-shadow:var(--cheshire-shadow-md,0 6px 18px rgba(0,0,0,.14));padding:.3rem;min-width:170px;display:flex;flex-direction:column;z-index:40}
.cheshire-support-usermenu-list a{padding:.4rem .6rem;border-radius:5px;font-size:.82rem;color:var(--cheshire-text,#12161c);text-decoration:none}
.cheshire-support-usermenu-list a:hover{background:var(--cheshire-surface-alt,#f4f6f8)}
.cheshire-support-header-row2{border-top:1px solid var(--cheshire-border,#eef1f4);padding:.5rem 1rem;display:flex;align-items:center}
/* Bugfix #971 (Peter-Meldung 02.10.2026, Florian-Feedback: Hamburger-Button
   bewirkt nichts): Zeile 2 traegt jetzt zusaetzlich die generische Klasse
   .cheshire-topbar (siehe Bootstrap.php), damit cheshire.js' closest('.
   cheshire-topbar')-Suche greift. Die Basis-Regel .cheshire-topbar in
   cheshire.css bringt dafuer farbige Flaeche/Rahmenradius/Schatten/Abstand-
   unten/Rechtsbuendigkeit mit, die hier nicht gewollt sind -- gezielt auf
   das bisherige, unauffaellige Erscheinungsbild von Zeile 2 zurueckgesetzt. */
.cheshire-support-header-row2.cheshire-topbar{background:none;color:inherit;border-radius:0;box-shadow:none;margin-bottom:0;justify-content:flex-start}
/* Nachbesserung #971 (Peter-Screenshot 02.10.2026: aufgeklapptes Menue
   "schwebt" halbtransparent ueber dem Seiteninhalt darunter): die
   aufklappbare Liste erbt ihren Hintergrund von navBurgerRules()
   (background:inherit) -- durch den Reset oben (background:none auf
   Zeile 2) wurde daraus "durchsichtig" statt der sonst ueblichen deckenden
   Topbar-Farbe. Gleichzeitig hat die Liste bei vielen Links (lange
   Nav-Reihenfolge inkl. Addon-Links) keine Hoehenbegrenzung und ragt dann
   ueber den folgenden Seiteninhalt. Eigene, deckende Kartenoptik + Scroll-
   Begrenzung nur fuer diesen aufgeklappten Zustand -- der normale
   (eingeklappte) Zeile-2-Look bleibt unberuehrt. */
.cheshire-support-header-row2.cheshire-topbar.cheshire-nav-open .cheshire-nav-links{
  background:var(--cheshire-surface,#fff);
  border:1px solid var(--cheshire-border-strong,#e3e7ec);
  box-shadow:var(--cheshire-shadow-md,0 6px 18px rgba(0,0,0,.14));
  max-height:70vh;
  overflow-y:auto;
}
.cheshire-support-header-row2 .cheshire-nav-links{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
/* Peter-Meldung 22.09.2026 (Screenshot Live-Vorschau): .cheshire-btn-login/
   -register/-logout/-pm/-mod haben `color:#fff!important` fest einprogrammiert
   (gedacht fuer die farbige Original-Topbar) -- auf der hellen Support-Kopf-
   zeile dadurch unsichtbar (nur im Dark Mode zufaellig lesbar, weil dort die
   ganze Seite dunkel ist). Eigenes !important noetig, um das zu brechen;
   --cheshire-text passt sich ueber .cheshire-wrap.cheshire-dark automatisch
   an, siehe Block weiter unten in dieser Datei. */
.cheshire-support-header-row2 .cheshire-nav-links a,
.cheshire-support-header-row2 .cheshire-nav-links span{
  color:var(--cheshire-text,#12161c)!important;
  text-decoration:none;font-size:.8rem;font-weight:500;
  padding:.35rem .6rem;border:1px solid var(--cheshire-border-strong,#e3e7ec)!important;
  border-radius:999px;background:var(--cheshire-surface-alt,#f4f6f8);white-space:nowrap
}
.cheshire-support-header-row2 .cheshire-nav-links a:hover{color:var(--cheshire-primary,#0042ab)!important;border-color:var(--cheshire-primary,#0042ab)!important}
.cheshire-support-header-row2 .cheshire-nav-links span{border-color:transparent!important;background:none;padding-left:0}

/* ── TP3: Beitrags-Overflow-Menue (⋯) ─────────────────────────────────────
   Ersetzt die sichtbare .cheshire-post-actions-top-Zeile (Bearbeiten/
   Loeschen/Loesung/Addon-Mod-Buttons) durch ein Dropdown, gleiches
   <details>/<summary>-Muster wie das Benutzermenue in Zeile 1 des Headers
   (kein JS noetig). @see ThreadController.php ($actions_top_html) */
.cheshire-support-post-overflow{position:relative;margin-left:auto;flex-shrink:0}
.cheshire-support-post-overflow summary{list-style:none;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:8px;background:var(--cheshire-surface,#fff);color:var(--cheshire-text-muted,#4a5563);font-size:1.1rem}
.cheshire-support-post-overflow summary::-webkit-details-marker{display:none}
.cheshire-support-post-overflow summary:hover{background:var(--cheshire-surface-alt,#f4f6f8)}
.cheshire-support-post-overflow-list{position:absolute;right:0;top:calc(100% + .3rem);background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:8px;box-shadow:var(--cheshire-shadow-md,0 6px 18px rgba(0,0,0,.14));padding:.4rem;min-width:190px;display:flex;flex-direction:column;gap:.15rem;z-index:35}
.cheshire-support-post-overflow-list a,.cheshire-support-post-overflow-list button{display:block;width:100%;text-align:left;padding:.4rem .6rem;border-radius:5px;font-size:.82rem;color:var(--cheshire-text,#12161c);text-decoration:none;border:none;background:none;cursor:pointer}
.cheshire-support-post-overflow-list a:hover,.cheshire-support-post-overflow-list button:hover{background:var(--cheshire-surface-alt,#f4f6f8)}

/* ── TP4: Seitenspalte (Thema/Teilnehmer/Moderation) + Auswahlleiste ──────
   Grid nur im Support-Template vorhanden (thread_show.htt-Override), daher
   keine Kollision mit den 3 Bestandsthemes. Sidebar faellt unter 960px
   unter den Hauptinhalt (kein horizontales Scrollen auf Handy/Tablet).
   @see templates/themes/support/thread_show.htt, ThreadController.php ($sidebar_html) */
.cheshire-support-thread-grid{display:grid;grid-template-columns:1fr 280px;gap:1.2rem;align-items:start}
.cheshire-support-thread-main{min-width:0}
.cheshire-support-sidebar{display:flex;flex-direction:column;gap:1rem;position:sticky;top:1rem}
.cheshire-support-sidebar-card{background:var(--cheshire-surface,#fff);border:1px solid var(--cheshire-border-strong,#e3e7ec);border-radius:var(--cheshire-radius,12px);padding:.9rem 1rem}
.cheshire-support-sidebar-card h2{margin:0 0 .6rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--cheshire-text-muted,#4a5563)}
.cheshire-support-sidebar-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.3rem .6rem;font-size:.83rem}
.cheshire-support-sidebar-card dt{color:var(--cheshire-text-muted,#4a5563)}
.cheshire-support-sidebar-card dd{margin:0;text-align:right;color:var(--cheshire-text,#12161c)}
.cheshire-support-sidebar-action{margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--cheshire-border,#eef1f4)}
/* Peter-Wunsch (29.09.2026, D.1): Buttons in der Forum-Info-Karte gestapelt
   statt nebeneinander -- gleiches Muster wie .flb-sidebar-actions in
   Filebase (siehe addons/Filebase/assets/filebase.css), hier auf die
   bestehenden Kern-Klassen .cheshire-btn-new/.cheshire-subscribe-form
   angewendet statt neuer Filebase-eigener Buttons. Siehe ForumController::
   show(), $forum_actions. */
.cheshire-sidebar-actions-stacked{display:flex;flex-direction:column;gap:.5rem}
.cheshire-sidebar-actions-stacked .cheshire-btn-new{display:block;text-align:center}
.cheshire-sidebar-actions-stacked .cheshire-subscribe-form{display:block;margin-left:0}
.cheshire-sidebar-actions-stacked .cheshire-btn-subscribe{display:block;width:100%;text-align:center}
/* Backlog #925 TP2/TP3 (28.09.2026): Forum-Beschreibung innerhalb der
   Forum-Info-Karte (ForumController::show(), $forum_card) -- gleiches
   Kartenformat wie die Thema-Info-Karte oben, nur mit Fliesstext statt dl. */
.cheshire-support-sidebar-desc{margin:.5rem 0 0;font-size:.83rem;color:var(--cheshire-text-muted,#4a5563);line-height:1.4}
.cheshire-support-participant-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.cheshire-support-participant-list li{display:flex;justify-content:space-between;align-items:center;font-size:.83rem}
.cheshire-support-participant-list a{color:var(--cheshire-text,#12161c);text-decoration:none}
.cheshire-support-participant-list a:hover{color:var(--cheshire-primary,#0042ab)}
.cheshire-support-participant-list span{color:var(--cheshire-text-muted,#4a5563);font-size:.78rem}
.cheshire-support-sidebar-card .cheshire-move-thread-form{display:flex;flex-direction:column;gap:.4rem;font-size:.82rem}
@media (max-width:960px){
    .cheshire-support-thread-grid{grid-template-columns:1fr}
    .cheshire-support-sidebar{position:static}
}

/* Auswahlleiste (Massenbearbeitung): dunkler, sticky Balken statt der
   gelben Warnfarbe aus modern.css -- passt zum ruhigeren Support-Look,
   bleibt aber inhaltlich/funktional die gleiche Bar+Script aus
   ThreadController.php ($bulk_move_html), nur restyled. */
.cheshire-support-thread-grid ~ .cheshire-bulk-move-bar,
.cheshire-support-thread-main .cheshire-bulk-move-bar{
    background:var(--cheshire-text,#12161c);border-color:var(--cheshire-text,#12161c);
    color:#fff;border-radius:var(--cheshire-radius,12px)
}
.cheshire-support-thread-main .cheshire-bulk-move-bar select,
.cheshire-support-thread-main .cheshire-bulk-move-bar input[type="text"]{
    border:1px solid rgba(255,255,255,.3);border-radius:6px;background:rgba(255,255,255,.08);color:#fff
}
.cheshire-support-thread-main .cheshire-bulk-move-bar button{
    background:var(--cheshire-primary,#0042ab);color:#fff;border:none;border-radius:6px;padding:.35rem .8rem;cursor:pointer
}
