/* /Components/Dashboard/DashboardWidget.razor.rz.scp.css */
/* Lade-Zustand der Dashboard-Kachel mittig darstellen.
   Keine Marken-Hex-Werte – Farben kommen über MudBlazor (Color.Primary)
   bzw. var(--std-*). */
.std-widget-loading[b-xqeshq1d7m] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 96px;
}
/* /Components/Hub/HubTile.razor.rz.scp.css */
/* Die Kachel-Optik (Rahmen, Hover-Anhebung, Sperr-/„Jetzt dran"-Zustand,
   Fokusrahmen) liegt bewusst GLOBAL in wwwroot/app.css unter der
   std-tile-hover-Familie – identisch zu den Dashboard-Kacheln.
   Grund: Scoped Component-CSS greift auf der MudPaper-Kind-Komponente nicht
   zuverlässig; ohne Rahmen wären die Kacheln auf weißem Grund unsichtbar. */
/* /Components/Layout/AreaBreadcrumb.razor.rz.scp.css */
/* #1193: Breadcrumb über dem Seiteninhalt. Bewusst klein und blass – sie ordnet ein und
   nimmt dem Inhalt darunter keine Aufmerksamkeit weg. Die Gestaltung übernimmt die frühere
   Breadcrumb-Zeile der Veranstalter-Kopfzeile (#1047), damit sich für den Veranstalter-
   Bereich optisch nichts ändert außer der weggefallenen Zurück-Schaltfläche. */
.std-breadcrumb[b-2fs0qg8prp] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 12px;
    font-size: 0.8rem;
    color: #555555;
}

.std-breadcrumb-link[b-2fs0qg8prp] {
    color: var(--std-secondary);
    text-decoration: none;
}

.std-breadcrumb-link:hover[b-2fs0qg8prp],
.std-breadcrumb-link:focus-visible[b-2fs0qg8prp] {
    text-decoration: underline;
}

/* Gruppen-Überschrift der Seitenleiste: sichtbar, aber ohne Ziel. */
.std-breadcrumb-step[b-2fs0qg8prp] {
    color: #555555;
}

/* Die aktuelle Ebene ist bewusst kein Link - sie führt nirgendwohin. */
.std-breadcrumb-current[b-2fs0qg8prp] {
    color: #555555;
    font-weight: 500;
}

.std-breadcrumb-separator[b-2fs0qg8prp] {
    color: var(--std-border);
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* ===== Haupt-App-Container =====
   Höhe = exakt Viewport. Header + Footer sind flex-shrink:0 (fixe Höhe),
   Content nimmt den Rest und scrollt intern (overflow-y: auto unten). */
.std-app[b-3bmf8x40bs] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    background-color: #FFFFFF;
    overflow: hidden;
}

/* ===== Header / Top-Menü ===== */
.std-header[b-3bmf8x40bs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 20px;
    height: 56px;
    background: linear-gradient(135deg, var(--std-primary) 0%, var(--std-secondary) 100%);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
    position: sticky;
    top: 0;
    z-index: 100;
    flex-shrink: 0;
}

/* Linker Header-Bereich: Logo + ggf. Verwaltung-Link */
.std-header-left[b-3bmf8x40bs] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

/* ===== Marken-Logo (Icon links) ===== */
/* Brand-Button: gleiches Aussehen wie .std-btn-auth (Rahmen + Hintergrund),
   trägt nur das Logo-Icon. Größe = Icon-Größe der übrigen Header-Buttons
   (1.1rem, siehe font-size von .std-btn-auth), sonst ist der Home-Button
   größer als seine Nachbarn (Bug #287). */
.std-brand-icon[b-3bmf8x40bs] {
    width: 1.1rem;
    height: 1.1rem;
    display: block;
}

/* ===== Rechter Header-Bereich (Support / Profil / An-/Abmelden) ===== */
.std-header-right[b-3bmf8x40bs] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

/* ===== Auth-Button (icon-only, einheitlich für An-/Abmelden, Support, Profil, Verwaltung) ===== */
.std-btn-auth[b-3bmf8x40bs] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.15);
    border: 1px solid #FFFFFF;
    color: #FFFFFF;
    padding: 8px 10px;
    /* Feste Höhe statt inhaltsgetriebener Höhe: die bi-Glyphen (Font-Metrik)
       und das Logo-IMG würden sonst unterschiedlich hohe Buttons ergeben (Bug #287). */
    height: 37px;
    box-sizing: border-box;
    border-radius: 6px;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    text-decoration: none;
    transition: background-color 0.15s ease;
}

.std-btn-auth:hover[b-3bmf8x40bs] {
    background-color: rgba(255, 255, 255, 0.3);
    color: #FFFFFF;
    text-decoration: none;
}

/* ===== #1048: Beschriftung neben dem Icon ab Desktop-Breite =====
   Unterhalb von 992 px bleiben die Header-Buttons icon-only mit Tooltip – auf
   schmalen Viewports ist der Platz nicht da. Ab 992 px steht die Bedeutung
   daneben, weil der Header dort ohnehin Luft hat und Icons allein nicht
   selbsterklärend sind (Veranstalter-Rückmeldung).

   Das Label trägt aria-hidden: Der Zugangsname steht bereits im aria-label des
   Buttons, sonst läse ein Screenreader die Beschriftung doppelt vor. Tooltip
   (title) und aria-label bleiben in beiden Zuständen erhalten. */
.std-btn-label[b-3bmf8x40bs] {
    display: none;
}

@media (min-width: 992px) {
    .std-btn-label[b-3bmf8x40bs] {
        display: inline;
        margin-left: 6px;
        font-size: 0.9rem;
        /* Die Glyphen sind 1.1rem – ohne eigene Zeilenhöhe säße der Text
           gegenüber dem Icon leicht versetzt. */
        line-height: 1;
    }

    /* Der Profil-Button trägt den Anzeigenamen. Lange Namen dürfen den Header
       nicht auseinanderziehen, deshalb Kürzung mit Ellipsis – der vollständige
       Name steht im title-Attribut. */
    .std-btn-label-user[b-3bmf8x40bs] {
        display: inline-block;
        max-width: 14ch;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        vertical-align: bottom;
    }
}

/* Verwaltung-Link im Header: aktiv = volle Deckung (kennzeichnet aktuellen /admin-Zustand) */
.std-btn-admin.active[b-3bmf8x40bs] {
    background-color: rgba(255, 255, 255, 0.35);
    border-color: rgba(255, 255, 255, 0.9);
}

/* ===== Standard-Content (Nicht-Admin-Seiten) =====
   Outer/Inner-Pattern (siehe CLAUDE.md Pattern 6, Layout-Patterns):
   Outer ist full-width und scrollt — Scrollbar sitzt damit am rechten
   Viewport-Rand, nicht am rechten Rand eines zentrierten Containers.
   min-height:0 ist in Flex-Containern Pflicht, sonst überrennt der
   Content seinen flex-Anteil und der Footer wandert raus. */
.std-content[b-3bmf8x40bs] {
    flex: 1;
    width: 100%;
    overflow-y: auto;
    min-height: 0;
}

/* Inner-Container begrenzt + zentriert den eigentlichen Content auf
   max. 1400 px. */
.std-content-inner[b-3bmf8x40bs] {
    padding: 24px;
    max-width: 1400px;
    width: 100%;
    margin: 0 auto;
    box-sizing: border-box;
}

/* ===== Admin-Layout (2-Spaltig: Sidebar + Content) ===== */
.std-admin-layout[b-3bmf8x40bs] {
    flex: 1;
    display: flex;
    min-height: 0;
}

/* #1043: Breite als CSS-Variable, damit der Anfasser sie zur Laufzeit setzen kann.
   Der Fallback 280px gilt, solange nichts gemerkt ist – vorher waren es 240px, bei
   denen lange Gruppentitel wie „Veranstaltungsmanagement" abgeschnitten wurden. */
.std-admin-sidebar[b-3bmf8x40bs] {
    width: var(--std-sidebar-width, 280px);
    flex-shrink: 0;
    background-color: var(--std-light);
    border-right: 1px solid var(--std-border);
    overflow-y: auto;
    padding: 16px 0;
    display: flex;
    flex-direction: column;
}

/* #1043: Anfasser zwischen Navigation und Inhalt. Schmaler Streifen mit großzügiger
   Trefferfläche; die sichtbare Linie erscheint erst bei Hover oder Fokus, damit die
   Oberfläche ruhig bleibt. */
.std-sidebar-resizer[b-3bmf8x40bs] {
    flex: 0 0 6px;
    cursor: col-resize;
    background-color: transparent;
    border: none;
    padding: 0;
    position: relative;
    touch-action: none;
}

.std-sidebar-resizer[b-3bmf8x40bs]::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 2px;
    width: 2px;
    background-color: transparent;
    transition: background-color 0.15s ease;
}

.std-sidebar-resizer:hover[b-3bmf8x40bs]::after,
.std-sidebar-resizer:focus-visible[b-3bmf8x40bs]::after,
body[data-std-sidebar-resizing] .std-sidebar-resizer[b-3bmf8x40bs]::after {
    background-color: var(--std-primary);
}

.std-sidebar-resizer:focus-visible[b-3bmf8x40bs] {
    outline: 2px solid var(--std-primary);
    outline-offset: -2px;
}

/* Während des Ziehens darf der Inhalt nicht markiert werden, sonst „klebt" Text
   am Mauszeiger. */
body[data-std-sidebar-resizing][b-3bmf8x40bs] {
    user-select: none;
    cursor: col-resize;
}

/* ===== #1168: Menüleiste ein- und ausklappen =====
   Der Zustand liegt als Attribut am <body> (gesetzt in std-sidebar.js) und gilt
   damit – wie schon die Breite aus #1043 – für alle drei Bereiche gemeinsam.
   Beide Schalter sind reine Icon-Buttons mit Tooltip. */
.std-sidebar-collapse[b-3bmf8x40bs],
.std-sidebar-expand[b-3bmf8x40bs] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: transparent;
    border: none;
    padding: 4px 6px;
    color: var(--std-primary);
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    border-radius: 4px;
}

.std-sidebar-collapse:hover[b-3bmf8x40bs],
.std-sidebar-expand:hover[b-3bmf8x40bs] {
    background-color: rgba(var(--std-primary-rgb), 0.12);
}

.std-sidebar-collapse:focus-visible[b-3bmf8x40bs],
.std-sidebar-expand:focus-visible[b-3bmf8x40bs] {
    outline: 2px solid var(--std-primary);
    outline-offset: -2px;
}

/* Der Einklapp-Pfeil sitzt am rechten Rand der Kopfzeile und schrumpft nicht mit,
   wenn der Bereichstitel umbricht. */
.std-sidebar-collapse[b-3bmf8x40bs] {
    margin-left: auto;
    flex-shrink: 0;
}

/* Der Aufklapp-Streifen existiert nur im eingeklappten Zustand; ausgeklappt
   übernimmt der Pfeil in der Kopfzeile. Er behält die Fläche der Navigation, damit
   der Schalter dort bleibt, wo eingeklappt wurde. */
.std-sidebar-expand[b-3bmf8x40bs] {
    display: none;
    flex: 0 0 24px;
    align-self: stretch;
    align-items: flex-start;
    padding: 16px 0 0 0;
    border-right: 1px solid var(--std-border);
    border-radius: 0;
    background-color: var(--std-light);
}

/* Eingeklappt: Navigation und Anfasser verschwinden, der Streifen erscheint.
   Bewusst erst ab 769 px – darunter ist die Navigation das Overlay aus #1043, das
   über den Hamburger bedient wird und vom Einklappen unberührt bleiben muss,
   sonst wäre sie dort über keinen Schalter mehr erreichbar. */
@media (min-width: 769px) {
    body[data-std-sidebar-collapsed] .std-admin-sidebar[b-3bmf8x40bs],
    body[data-std-sidebar-collapsed] .std-sidebar-resizer[b-3bmf8x40bs] {
        display: none;
    }

    body[data-std-sidebar-collapsed] .std-sidebar-expand[b-3bmf8x40bs] {
        display: flex;
    }
}

/* #1043: Lange Beschriftungen brechen um, statt abgeschnitten zu werden. */
.std-admin-sidebar-header[b-3bmf8x40bs],
.std-admin-nav-link[b-3bmf8x40bs],
.std-admin-nav-group-title[b-3bmf8x40bs] {
    overflow-wrap: anywhere;
    hyphens: auto;
}

.std-admin-nav-link[b-3bmf8x40bs] {
    align-items: flex-start;
}

/* Das Icon behält seine Zeile, auch wenn der Text zweizeilig wird. */
.std-admin-nav-link .bi[b-3bmf8x40bs] {
    flex-shrink: 0;
    line-height: 1.5;
}

/* #1247: Die Kopfzeile trägt nur noch den Einklapp-Schalter – die Bereichsüberschrift
   ist entfallen. Ohne Titel braucht es weder Trennlinie noch Titel-Typografie. */
.std-admin-sidebar-header[b-3bmf8x40bs] {
    padding: 0 14px 8px 20px;
    margin-bottom: 4px;
    color: var(--std-primary);
    font-size: 0.8rem;
    display: flex;
    align-items: center;
}

/* #1247: Beschriftung im Einklapp-Schalter. */
.std-sidebar-collapse-label[b-3bmf8x40bs] {
    white-space: nowrap;
}

.std-admin-nav-link[b-3bmf8x40bs] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 20px;
    color: #333333;
    text-decoration: none;
    font-size: 0.9rem;
    border-left: 3px solid transparent;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.std-admin-nav-link:hover[b-3bmf8x40bs] {
    background-color: rgba(var(--std-primary-rgb), 0.08);
    color: var(--std-primary);
    text-decoration: none;
}

.std-admin-nav-link.active[b-3bmf8x40bs] {
    background-color: rgba(var(--std-primary-rgb), 0.12);
    color: var(--std-primary);
    border-left-color: var(--std-primary);
    font-weight: 600;
}

.std-admin-nav-link .bi[b-3bmf8x40bs] {
    font-size: 1rem;
    width: 18px;
    text-align: center;
}

/* Zähler-Badge am Menüpunkt (z.B. offene Antrags-Eingänge, UC29) */
.std-nav-badge[b-3bmf8x40bs] {
    margin-left: auto;
    min-width: 20px;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: var(--std-primary);
    color: #ffffff;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.4;
    text-align: center;
}

/* ===== Aufgaben-Gruppen der Admin-Navigation (#230) ===== */
/* Jede Gruppe ist ein <details>; der <summary> ist der klickbare Gruppen-Header. */
.std-admin-nav-group[b-3bmf8x40bs] {
    border-bottom: 1px solid rgba(155, 175, 200, 0.4);
}

/* Gruppen-Header: optisch wie ein Nav-Link, aber als Sektions-Überschrift fett.
   Das native Aufklapp-Dreieck wird entfernt (eigener Chevron rechts). */
.std-admin-nav-group-header[b-3bmf8x40bs] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 20px;
    color: var(--std-primary);
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
    user-select: none;
    border-left: 3px solid transparent;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}

.std-admin-nav-group-header[b-3bmf8x40bs]::-webkit-details-marker {
    display: none;
}

.std-admin-nav-group-header:hover[b-3bmf8x40bs] {
    background-color: rgba(var(--std-primary-rgb), 0.08);
}

.std-admin-nav-group-header .bi[b-3bmf8x40bs] {
    font-size: 1rem;
    width: 18px;
    text-align: center;
}

.std-admin-nav-group-title[b-3bmf8x40bs] {
    flex: 1;
}

/* Chevron rechts; dreht sich beim Aufklappen. */
.std-admin-nav-group-chevron[b-3bmf8x40bs] {
    transition: transform 0.15s ease;
}

.std-admin-nav-group[open] .std-admin-nav-group-chevron[b-3bmf8x40bs] {
    transform: rotate(180deg);
}

/* Aktiver Bereich: Header hervorgehoben (linke Akzentlinie + leichter Hintergrund). */
.std-admin-nav-group.active > .std-admin-nav-group-header[b-3bmf8x40bs] {
    background-color: rgba(var(--std-primary-rgb), 0.06);
    border-left-color: var(--std-primary);
}

/* Items innerhalb einer Gruppe leicht eingerückt, damit die Hierarchie sichtbar ist. */
.std-admin-nav-group .std-admin-nav-link[b-3bmf8x40bs] {
    padding-left: 38px;
}

/* Menüpunkte, die als <button> statt <a> rendern (Hilfe/Kontakt in der Mandanten-Sidebar, #147):
   Button-Chrome zurücksetzen, damit sie exakt wie ein verlinkter Nav-Link aussehen. */
button.std-admin-nav-link[b-3bmf8x40bs] {
    width: 100%;
    background: none;
    border: none;
    border-left: 3px solid transparent;
    font-family: inherit;
    font-size: 0.9rem;
    cursor: pointer;
}

/* ===== Deaktivierte ("bald verfügbar") Menüpunkte der Schausteller-Navigation (#231) ===== */
/* Noch nicht umgesetzte Ziele (abhängige Work Items #159/#160/#161, FIM-geführtes Profil) werden
   als nicht-klickbarer Platzhalter gezeigt, damit die Gruppenstruktur vollständig sichtbar ist. */
.std-admin-nav-link.std-nav-disabled[b-3bmf8x40bs] {
    color: #8a93a0;
    cursor: default;
}

.std-admin-nav-link.std-nav-disabled:hover[b-3bmf8x40bs] {
    background-color: transparent;
    color: #8a93a0;
}

/* „bald verfügbar"-Hinweis rechts am Platzhalter. */
.std-nav-soon[b-3bmf8x40bs] {
    margin-left: auto;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: var(--std-light);
    color: var(--std-secondary);
    font-size: 0.68rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

.std-admin-content[b-3bmf8x40bs] {
    flex: 1;
    overflow-y: auto;
    padding: 24px;
    min-width: 0;
    box-sizing: border-box;
}

/* ===== Blazor Error-UI ===== */
#blazor-error-ui[b-3bmf8x40bs] {
    color-scheme: light only;
    background: var(--std-error);
    color: #FFFFFF;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-3bmf8x40bs] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

/* ===== Responsive ===== */
@media (max-width: 768px) {
    .std-header[b-3bmf8x40bs] {
        padding: 0 12px;
        height: 52px;
    }

    .std-content-inner[b-3bmf8x40bs] {
        padding: 16px;
    }

    /* ===== #1043: Overlay-Menü statt stummer Icon-Spalte =====
       Bis #1043 schrumpfte die Navigation hier auf 56 px und blendete alle
       Beschriftungen per font-size: 0 aus. Übrig blieben Icons ohne Text – für
       neue Nutzer nicht selbsterklärend und damit gegen das Leitprinzip des
       Systems. Jetzt ist die Navigation standardmäßig ausgeblendet und wird über
       den Hamburger im Header als vollständig beschriftetes Overlay eingeblendet. */
    .std-admin-sidebar[b-3bmf8x40bs] {
        position: fixed;
        top: 52px; /* Höhe des Headers auf dieser Breite */
        left: 0;
        bottom: 0;
        z-index: 1200;
        width: min(85vw, 320px);
        transform: translateX(-100%);
        transition: transform 0.2s ease;
        box-shadow: 2px 0 12px rgba(0, 0, 0, 0.25);
    }

    body[data-std-nav-open] .std-admin-sidebar[b-3bmf8x40bs] {
        transform: translateX(0);
    }

    /* Abdunklung hinter dem Overlay – macht sichtbar, dass der Inhalt dahinter
       liegt, und dient als Schließfläche (Klick wird in std-sidebar.js behandelt). */
    body[data-std-nav-open] .std-admin-layout[b-3bmf8x40bs]::before {
        content: "";
        position: fixed;
        top: 52px;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.4);
        z-index: 1100;
    }

    /* Der Anfasser ergibt auf Smartphone-Breite keinen Sinn – dort ist die
       Navigation ein Overlay fester Breite. */
    .std-sidebar-resizer[b-3bmf8x40bs] {
        display: none;
    }

    /* #1168: Gleiches gilt für den Einklapp-Pfeil – hier ist die Navigation
       ohnehin ausgeblendet und wird über den Hamburger geöffnet. */
    .std-sidebar-collapse[b-3bmf8x40bs] {
        display: none;
    }

    .std-admin-content[b-3bmf8x40bs] {
        padding: 16px;
    }
}

/* Der Hamburger erscheint nur dort, wo die Navigation zum Overlay wird. */
.std-nav-toggle[b-3bmf8x40bs] {
    display: none;
}

@media (max-width: 768px) {
    .std-nav-toggle[b-3bmf8x40bs] {
        display: inline-flex;
    }
}
/* /Components/Layout/NotificationBell.razor.rz.scp.css */
/* UC29-Feinschliff: Glocken-Dropdown im Header.
   Farben über die Marken-CSS-Variablen aus app.css (:root). */

.std-bell-wrapper[b-evisekak64] {
    position: relative;
    display: inline-block;
}

.std-bell-badge[b-evisekak64] {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 8px;
    background: var(--std-error);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
}

.std-bell-overlay[b-evisekak64] {
    position: fixed;
    inset: 0;
    z-index: 1290;
    background: transparent;
}

.std-bell-dropdown[b-evisekak64] {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 1300;
    width: 340px;
    max-height: 420px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--std-border);
    border-radius: 6px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
}

.std-bell-header[b-evisekak64] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    border-bottom: 1px solid var(--std-light);
    color: var(--std-primary);
    font-weight: 600;
}

.std-bell-mark-all[b-evisekak64] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: var(--std-secondary);
    font-size: 1.1rem;
    padding: 4px 6px;
}

.std-bell-item[b-evisekak64] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    width: 100%;
    padding: 10px 12px;
    border: none;
    border-bottom: 1px solid var(--std-light);
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: #333;
}

.std-bell-item:hover[b-evisekak64] {
    background: var(--std-light);
}

.std-bell-item-error .std-bell-item-title[b-evisekak64] {
    color: var(--std-error);
}

.std-bell-item-title[b-evisekak64] {
    font-weight: 600;
    font-size: 0.9rem;
}

.std-bell-item-body[b-evisekak64] {
    font-size: 0.82rem;
    color: #555;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.std-bell-item-time[b-evisekak64] {
    font-size: 0.72rem;
    color: #888;
}

.std-bell-empty[b-evisekak64] {
    padding: 16px 12px;
    color: #666;
    font-size: 0.9rem;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-211mjnfyp3],
.components-reconnect-repeated-attempt-visible[b-211mjnfyp3],
.components-reconnect-failed-visible[b-211mjnfyp3],
.components-pause-visible[b-211mjnfyp3],
.components-resume-failed-visible[b-211mjnfyp3],
.components-rejoining-animation[b-211mjnfyp3] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-retrying[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-failed[b-211mjnfyp3],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-211mjnfyp3] {
    display: block;
}


#components-reconnect-modal[b-211mjnfyp3] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-211mjnfyp3 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-211mjnfyp3 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-211mjnfyp3 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-211mjnfyp3]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-211mjnfyp3 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-211mjnfyp3 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-211mjnfyp3 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-211mjnfyp3 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-211mjnfyp3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-211mjnfyp3] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-211mjnfyp3] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-211mjnfyp3] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-211mjnfyp3] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-211mjnfyp3] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-211mjnfyp3] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-211mjnfyp3 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-211mjnfyp3] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-211mjnfyp3 {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Layout/SidebarUserInfo.razor.rz.scp.css */
/* #1247: Fußzeile der Bereichs-Navigation – Konto und Rolle.
   Farben über die Marken-CSS-Variablen aus app.css (:root). */

/* margin-top: auto schiebt den Block ans untere Ende der Menüleiste
   (.std-admin-sidebar ist eine Flex-Spalte). */
.std-sidebar-user[b-5ec5dg82ob] {
    display: flex;
    flex-direction: column;
    margin-top: auto;
    padding: 12px 20px 4px 20px;
    border-top: 1px solid var(--std-border);
    color: var(--std-primary);
    font-size: 0.8rem;
    line-height: 1.35;
    /* Lange Adressen brechen um, statt die Menüleiste zu sprengen. Bevorzugt an den
       <wbr>-Fugen der Adresse (#1373, nach @ und vor Punkten); im Wort nur, wenn ein
       Abschnitt allein breiter als die Leiste ist. */
    overflow-wrap: anywhere;
}

.std-sidebar-user-label[b-5ec5dg82ob] {
    opacity: 0.75;
}

.std-sidebar-user-value[b-5ec5dg82ob] {
    font-weight: 600;
}

/* Abstand zwischen den beiden Angaben, ohne Rand vor der ersten Zeile. */
.std-sidebar-user-label + .std-sidebar-user-value[b-5ec5dg82ob] {
    margin-bottom: 6px;
}

.std-sidebar-user-value:last-child[b-5ec5dg82ob] {
    margin-bottom: 0;
}
/* /Components/Layout/TenantSwitcher.razor.rz.scp.css */
/* #1024: Mandantenumschalter im Header.
   Farben über die Marken-CSS-Variablen aus app.css (:root). */

.std-tenant-wrapper[b-xlotmra1ki] {
    position: relative;
    display: inline-block;
}

.std-tenant-static[b-xlotmra1ki],
.std-tenant-trigger[b-xlotmra1ki] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 240px;
}

.std-tenant-static[b-xlotmra1ki] {
    padding: 8px 10px;
    color: #fff;
    font-size: 0.9rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.std-tenant-name[b-xlotmra1ki] {
    font-size: 0.9rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.std-tenant-overlay[b-xlotmra1ki] {
    position: fixed;
    inset: 0;
    z-index: 1290;
    background: transparent;
}

.std-tenant-dropdown[b-xlotmra1ki] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1300;
    min-width: 280px;
    max-height: 420px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--std-border);
    border-radius: 6px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
}

.std-tenant-item[b-xlotmra1ki] {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--std-light);
}

.std-tenant-item:last-child[b-xlotmra1ki] {
    border-bottom: none;
}

.std-tenant-switch-form[b-xlotmra1ki] {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
}

.std-tenant-switch[b-xlotmra1ki] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    padding: 10px 12px;
    border: none;
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: #333;
    font-size: 0.9rem;
}

.std-tenant-switch:hover[b-xlotmra1ki] {
    background: var(--std-light);
}

.std-tenant-switch[aria-current="true"][b-xlotmra1ki] {
    color: var(--std-primary);
    font-weight: 600;
}

.std-tenant-item-name[b-xlotmra1ki] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.std-tenant-default[b-xlotmra1ki] {
    flex: 0 0 auto;
    padding: 4px 12px;
    border: none;
    background: transparent;
    cursor: pointer;
    color: var(--std-secondary);
    font-size: 1.1rem;
}

.std-tenant-default:hover:not(:disabled)[b-xlotmra1ki] {
    background: var(--std-light);
}

.std-tenant-default:disabled[b-xlotmra1ki] {
    cursor: default;
    color: var(--std-primary);
}
/* /Components/Mandant/ApplicationDetailView.razor.rz.scp.css */
/* #1092: Bewerbungs-Detailansicht.
   Der Akkordeon-Bereich scrollt in sich, statt die umgebende Seite zu verlängern.
   Das ist die Voraussetzung dafür, dass die Ansicht eingebettet auf der Ranking-Seite
   das Layout nicht sprengt (AK14) – dort greift zusätzlich die Compact-Variante.
   Bewusst ohne Farbwerte: Marken-Farben kommen aus dem MudBlazor-Theme bzw. den
   --std-*-Variablen in app.css, niemals als Hex an dieser Stelle. */

.std-fields-panels[b-bk646etgdn] {
    max-height: 60vh;
    overflow-y: auto;
}

.std-fields-panels--compact[b-bk646etgdn] {
    max-height: 32vh;
}
/* /Components/Mandant/EventContextHeader.razor.rz.scp.css */
/* #1052: Kopfzeile mit dem aktiven Veranstaltungs-Kontext.
   Bewusst zurückhaltend gestaltet - sie steht auf jeder Seite des Bereichs und darf
   dem eigentlichen Inhalt nicht die Aufmerksamkeit nehmen. Der Veranstaltungsname
   trägt die Betonung, das Label bleibt sekundär. */
.std-event-context-header[b-g91alf67l1] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 16px;
    margin-bottom: 16px;
    background-color: var(--std-light);
    border: 1px solid var(--std-border);
    border-radius: 6px;
}

.std-event-context-trailing[b-g91alf67l1] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}

.std-event-context-main[b-g91alf67l1] {
    flex: 1;
    min-width: 0;
}

.std-event-context-title[b-g91alf67l1] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
    min-width: 0;
}

.std-event-context-label[b-g91alf67l1] {
    font-size: 0.85rem;
    color: #555555;
}

.std-event-context-value[b-g91alf67l1] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--std-primary);
    overflow-wrap: anywhere;
}

/* Ohne gewählte Veranstaltung: neutraler Hinweis, keine Warn-Optik - eine noch nicht
   getroffene Auswahl ist kein Fehler (#1044 Teil 2). */
.std-event-context-empty[b-g91alf67l1] {
    font-size: 0.9rem;
    color: #555555;
    font-style: italic;
}

/* #1361: Von den zwei Hinweis-Fassungen ist immer genau eine im Dokument (display: none,
   damit Screenreader nicht beide vorlesen). Ausgeklappt gilt „in der Seitenleiste";
   eingeklappt (#1168, Body-Attribut aus std-sidebar.js) und auf Smartphone-Breite
   (#1043, Overlay-Menü – auch bei geöffnetem Overlay, das den Inhalt ohnehin verdeckt)
   gilt „Menü einblenden". Die Breitengrenze ist dieselbe wie in MainLayout.razor.css. */
.std-event-context-hint-menu[b-g91alf67l1] {
    display: none;
}

@media (min-width: 769px) {
    body[data-std-sidebar-collapsed] .std-event-context-hint-sidebar[b-g91alf67l1] {
        display: none;
    }

    body[data-std-sidebar-collapsed] .std-event-context-hint-menu[b-g91alf67l1] {
        display: inline;
    }
}

@media (max-width: 768px) {
    .std-event-context-header[b-g91alf67l1] {
        padding: 8px 12px;
        margin-bottom: 12px;
    }

    .std-event-context-value[b-g91alf67l1] {
        font-size: 0.95rem;
    }

    .std-event-context-hint-sidebar[b-g91alf67l1] {
        display: none;
    }

    .std-event-context-hint-menu[b-g91alf67l1] {
        display: inline;
    }
}
/* /Components/Mandant/MandantEventSwitcher.razor.rz.scp.css */
/*
    Styling des Veranstaltungs-Switchers im Kopf der Veranstalter-Sidebar (#148).

    #1037: Diese Regeln lagen zuvor in MainLayout.razor.css und griffen dort NICHT:
    Blazor versieht isoliertes CSS mit dem Scope-Attribut der Komponente, zu der die
    .razor.css gehört. Das Markup steht aber in MandantEventSwitcher.razor, dessen
    Elemente das Attribut von MainLayout nie erhalten. Deshalb liegen sie jetzt bei
    ihrer eigenen Komponente.
*/

.std-event-switcher[b-7drgvozxwi] {
    padding: 0 20px 12px 20px;
    margin-bottom: 8px;
    border-bottom: 1px solid var(--std-border);
}

.std-event-switcher-label[b-7drgvozxwi] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 4px;
    color: var(--std-primary);
    font-size: 0.8rem;
    font-weight: 600;
}

/* #1037: Markenlogo (Riesenrad) am Label. standplatz-logo.svg ist fest weiß gezeichnet
   (für den Marine-Header) und in der hellen Sidebar unsichtbar. Statt einer zweiten
   Logo-Datei wird die SVG als Maske verwendet und über die Marken-Farbe eingefärbt –
   so bleibt die SVG-Datei die einzige handgepflegte Quelle des Logos. */
.std-event-switcher-brand[b-7drgvozxwi] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    background-color: var(--std-primary);
    -webkit-mask-image: url('/standplatz-logo.svg');
    mask-image: url('/standplatz-logo.svg');
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}

/* #1037: Auswahlfeld und Stern-Schalter nebeneinander; das Feld nimmt den Rest der Breite. */
.std-event-switcher-row[b-7drgvozxwi] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.std-event-switcher-row > :first-child[b-7drgvozxwi] {
    flex: 1 1 auto;
    min-width: 0;
}
/* /Components/Pages/LandingPage.razor.rz.scp.css */
/* #1372: Zielgruppen-Kacheln der Startseite – native <button>, damit Tastaturbedienung
   und aria-expanded ohne Zusatzlogik funktionieren. Rahmen, Schatten, Hover und Fokusring
   kommen aus den globalen Kachel-Klassen (.std-tile-hover, .std-tile-clickable in app.css);
   hier nur der Button-Reset, die Breite und der aktive Zustand. */
.std-landing-audience[b-9t8eom0ylr] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    background: var(--mud-palette-surface);
    color: inherit;
    font: inherit;
}

/* Aktive Kachel: Marine-Rahmen und heller Marken-Hintergrund – zusätzlich zu
   aria-expanded, damit der Zustand nicht nur über Farbe erkennbar ist. */
.std-landing-audience-active[b-9t8eom0ylr] {
    border-color: var(--std-primary);
    background: var(--std-light);
}

/* Einleitung: lesbare Zeilenlänge, zentriert */
.std-landing-intro[b-9t8eom0ylr] {
    max-width: 48rem;
    margin-left: auto;
    margin-right: auto;
}

/* Schrittnummer der Nutzendenreise – Marine-Kreis */
.std-landing-step-number[b-9t8eom0ylr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: var(--std-primary);
    color: white;
    font-weight: 700;
}
/* /Components/Pages/Public/PublicEventDetail.razor.rz.scp.css */
/* #1230: Termine der Veranstaltung als zweispaltige Beschriftungs-/Wert-Liste.
   Eigene Regeln statt der Kachel-Variante aus OrganizerEventScheduleWidget:
   auf der Detailseite steht der Block für sich und wird in Fließtextgröße
   gesetzt, nicht in Kachel-Schriftgröße.
   Keine Marken-Hex-Werte – Farben kommen über MudBlazor (mud-text-secondary). */
.std-event-schedule[b-lidea9p0ef] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 24px;
    row-gap: 6px;
    margin: 0;
    font-size: 0.875rem;
    line-height: 1.5;
}

.std-event-schedule dt[b-lidea9p0ef] {
    white-space: nowrap;
}

.std-event-schedule dd[b-lidea9p0ef] {
    margin: 0;
}
/* /Components/Schausteller/ShowmanCalendar.razor.rz.scp.css */
/*
    #1231: Jahres-Zeitstrahl der Schausteller-Kalenderansicht.

    Alle Farben kommen aus den CSS-Variablen des :root-Blocks in wwwroot/app.css
    (--std-primary, --std-primary-rgb, --std-secondary) bzw. aus der MudBlazor-
    Palette. Bewusst kein hartkodierter Hex-Wert in dieser Datei.

    Der Zeitstrahl ist ein zweispaltiges CSS-Grid: links die Geschäftsnamen,
    rechts die Jahresachse. Balken werden prozentual absolut positioniert; der
    Prozentwert kommt aus der tagesproportionalen Umrechnung der Komponente.
*/

.std-cal-legend[b-102y3o1vso] {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 12px;
}

.std-cal-legend-item[b-102y3o1vso] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
}

.std-cal-swatch[b-102y3o1vso] {
    display: inline-block;
    width: 18px;
    height: 12px;
    border-radius: 3px;
}

.std-cal-loading[b-102y3o1vso] {
    display: flex;
    justify-content: center;
    padding: 32px 0;
}

/* Nur dieser Container scrollt waagerecht - die Seite selbst nie. */
.std-cal-scroll[b-102y3o1vso] {
    overflow-x: auto;
    overflow-y: hidden;
    max-width: 100%;
}

.std-cal-grid[b-102y3o1vso] {
    --std-cal-name-width: 180px;
    display: grid;
    grid-template-columns: var(--std-cal-name-width) 1fr;
    min-width: 900px;
    position: relative;
}

.std-cal-corner[b-102y3o1vso] {
    position: sticky;
    left: 0;
    z-index: 3;
    background: var(--mud-palette-surface);
    border-bottom: 1px solid var(--std-border);
}

.std-cal-axis[b-102y3o1vso] {
    position: relative;
    height: 28px;
    border-bottom: 1px solid var(--std-border);
}

.std-cal-month[b-102y3o1vso] {
    position: absolute;
    top: 0;
    height: 28px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-left: 1px solid var(--std-border);
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* Die Namensspalte bleibt beim waagerechten Scrollen stehen. */
.std-cal-name[b-102y3o1vso] {
    position: sticky;
    left: 0;
    z-index: 2;
    background: var(--mud-palette-surface);
    padding: 4px 8px 4px 0;
    border-bottom: 1px solid var(--std-border);
}

.std-cal-business[b-102y3o1vso] {
    font-size: 0.85rem;
    font-weight: 600;
}

.std-cal-number[b-102y3o1vso] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.std-cal-track[b-102y3o1vso] {
    position: relative;
    border-bottom: 1px solid var(--std-border);
}

.std-cal-empty[b-102y3o1vso] {
    position: absolute;
    left: 8px;
    top: 4px;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/*
    Der Balken sitzt in einem absolut positionierten Behälter, weil das
    MudTooltip zwischen Zeile und Balken ein eigenes Element einzieht.
    Dieser Wrapper (div.mud-tooltip-root.mud-tooltip-inline) ist von Haus aus
    display:inline-block/width:auto und würde die Breite des Behälters nicht
    durchreichen - width:100% am Balken liefe dann gegen 0 px. Deshalb trägt der
    Balken im Markup zusätzlich die MudBlazor-Klasse mud-width-full; darauf
    reagiert MudBlazors eigene Regel
    ".mud-tooltip-root.mud-tooltip-inline:has(> .mud-width-full)" mit
    display:block und width:100%. Kein Override fremder Komponenten nötig.
    min-width sorgt dafür, dass ein einzelner Markttag (0,27 % der Achse)
    sichtbar bleibt - unabhängig von der tatsächlichen Achsenbreite.
*/
.std-cal-bar-slot[b-102y3o1vso] {
    position: absolute;
    min-width: 6px;
}

.std-cal-bar[b-102y3o1vso] {
    display: block;
    width: 100%;
    height: 16px;
    border-radius: 3px;
}

.std-cal-bar[data-phase="Main"][b-102y3o1vso],
.std-cal-swatch[data-phase="Main"][b-102y3o1vso] {
    background: var(--std-primary);
}

.std-cal-bar[data-phase="Setup"][b-102y3o1vso],
.std-cal-bar[data-phase="Teardown"][b-102y3o1vso],
.std-cal-swatch[data-phase="Setup"][b-102y3o1vso],
.std-cal-swatch[data-phase="Teardown"][b-102y3o1vso] {
    background: rgba(var(--std-primary-rgb), 0.35);
}

.std-cal-bar[data-phase="MarketDay"][b-102y3o1vso],
.std-cal-swatch[data-phase="MarketDay"][b-102y3o1vso] {
    background: var(--std-secondary);
}

/*
    Heute-Markierung: liegt als absolut positioniertes Kind über allen Zeilen
    und nimmt damit keinen Platz im Raster ein. Die Komponente liefert nur den
    Anteil des Tages am Jahr; die Umrechnung auf die Achsenbreite passiert
    hier, weil die Achse erst hinter der Namensspalte beginnt.
*/
.std-cal-today[b-102y3o1vso] {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    pointer-events: none;
    background: var(--mud-palette-error);
    left: calc(var(--std-cal-name-width)
               + (100% - var(--std-cal-name-width)) * var(--std-cal-today-fraction));
}
/* /Components/Shared/AppFooter.razor.rz.scp.css */
/* Footer: Links Impressum/Datenschutz, rechts Copyright + Versionsnummer.
   Auf schmalen Viewports (Mobile) bleibt die Aufteilung links/rechts erhalten,
   die rechte Seite darf umbrechen und bleibt rechtsbündig. */
.std-footer[b-jy8unr52p2] {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.7);
    padding: 10px 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--std-primary) 0%, var(--std-secondary) 100%);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.std-footer a[b-jy8unr52p2] {
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    transition: color 0.15s ease;
}

.std-footer a:hover[b-jy8unr52p2] {
    color: #FFFFFF;
    text-decoration: underline;
}

/* Linker Block: bricht nicht um, schrumpft nicht */
.std-footer-links[b-jy8unr52p2] {
    display: flex;
    gap: 16px;
    flex-shrink: 0;
    white-space: nowrap;
}

/* Rechter Block: rechtsbündig, darf umbrechen */
.std-footer-copyright[b-jy8unr52p2] {
    color: rgba(255, 255, 255, 0.7);
    text-align: right;
    min-width: 0;
    line-height: 1.4;
}

.std-footer-copyright a[b-jy8unr52p2] {
    color: inherit;
}
/* /Components/Shared/ApplicationDocumentViewer.razor.rz.scp.css */
/* #1092: Anhang-Viewer der Bewerbungsansicht.
   Die Vorschau bekommt eine feste Höhenobergrenze, damit ein mehrseitiges PDF die
   umgebende Seite nicht in die Länge zieht – im eingebetteten Fall der Ranking-Seite
   (Compact) noch einmal deutlich knapper (AK14).
   Bewusst ohne Farbwerte: Farben kommen aus dem MudBlazor-Theme bzw. aus den
   --std-*-Variablen in app.css, niemals als Hex an dieser Stelle. */

.std-doc-preview-frame[b-8bdthvmfth] {
    width: 100%;
    height: 70vh;
    border: none;
}

.std-doc-preview-image[b-8bdthvmfth] {
    display: block;
    max-width: 100%;
    max-height: 70vh;
    margin: 0 auto;
}

.std-doc-viewer--compact .std-doc-preview-frame[b-8bdthvmfth] {
    height: 35vh;
}

.std-doc-viewer--compact .std-doc-preview-image[b-8bdthvmfth] {
    max-height: 35vh;
}
/* /Components/Shared/AttachmentPreviewList.razor.rz.scp.css */
/* #1246: Vorschau angefügter Dateien.
   Die Miniatur ist quadratisch beschnitten, damit die Zeilen unabhängig vom
   Seitenverhältnis der Datei gleich hoch bleiben. Die aufgeklappte Vorschau bekommt
   eine Höhenobergrenze, damit ein hohes Bild oder ein mehrseitiges PDF den Dialog
   nicht in die Länge zieht.
   Bewusst ohne Farbwerte: Farben kommen aus dem MudBlazor-Theme bzw. aus den
   --std-*-Variablen in app.css, niemals als Hex an dieser Stelle. */

.std-attachment-thumb[b-0uetd9mz7v] {
    width: 48px;
    height: 48px;
    object-fit: cover;
    border-radius: 4px;
    cursor: pointer;
    flex-shrink: 0;
}

.std-attachment-preview-image[b-0uetd9mz7v] {
    display: block;
    max-width: 100%;
    max-height: 50vh;
    margin: 0 auto;
}

.std-attachment-preview-frame[b-0uetd9mz7v] {
    width: 100%;
    height: 50vh;
    border: none;
}
/* /Components/Shared/FormPager.razor.rz.scp.css */
/* #353: Titelzeile des Seiten-Assistenten – Größe/Abstand wie ein Zwischen-Header,
   damit die rohe h2 (Fokusziel beim Seitenwechsel) sich ins Formular einfügt. */
.std-form-pager-title[b-lssw47y64n] {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0 0 1rem 0;
}

/* Dezenter Fokusrahmen, wenn der Seitenwechsel den Fokus auf die Titelzeile setzt. */
.std-form-pager-title:focus-visible[b-lssw47y64n] {
    outline: 2px solid var(--std-primary);
    outline-offset: 4px;
    border-radius: 4px;
}
/* /Components/Shared/StandplatzActionMenu.razor.rz.scp.css */
/* StandplatzActionMenu – Drop-in-Ersatz für MudMenu mit Drei-Punkte-Icon.
   Look-and-feel an MudMenu/MudPopover angelehnt (gleiche Schattierung,
   Border-Radius, Farben), aber technisch ein simples absolutes Panel
   ohne MudPopover-Cascading-Mechanik. */

.std-action-menu[b-pgndpp9u9y] {
    position: relative;
    display: inline-block;
}

.std-action-menu-trigger[b-pgndpp9u9y] {
    /* Erbt die MudBlazor-IconButton-Klassen aus dem Markup; hier nur
       Pflicht-Reset, damit native <button> wie ein MudIconButton aussieht. */
    background: transparent;
    border: 0;
    cursor: pointer;
    padding: 5px;
    border-radius: 50%;
    color: rgba(0, 0, 0, 0.54);
    transition: background-color 0.15s ease;
}

.std-action-menu-trigger:hover[b-pgndpp9u9y] {
    background-color: rgba(0, 0, 0, 0.08);
}

.std-action-menu-trigger:focus-visible[b-pgndpp9u9y] {
    outline: 2px solid var(--std-primary);
    outline-offset: 2px;
}

/* Backdrop fängt Außenklicks ab und schließt das Menü.
   Transparent + fixed-position bedeckt den gesamten Viewport. */
.std-action-menu-backdrop[b-pgndpp9u9y] {
    position: fixed;
    inset: 0;
    z-index: 1300;
    background: transparent;
    cursor: default;
}

/* Panel rechtsbündig zum Trigger – unten anhängend wie ein Dropdown. */
.std-action-menu-panel[b-pgndpp9u9y] {
    position: absolute;
    right: 0;
    top: calc(100% + 4px);
    background: #ffffff;
    border: 1px solid rgba(0, 0, 0, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    z-index: 1301;
    min-width: 240px;
    padding: 4px 0;
    /* Inhalte (StandplatzActionMenuItem) als vertikale Liste */
    display: flex;
    flex-direction: column;
}
/* /Components/Shared/StandplatzActionMenuItem.razor.rz.scp.css */
/* StandplatzActionMenuItem – einzelne Zeile in StandplatzActionMenu.
   Look-and-feel an MudMenuItem angelehnt. */

.std-action-menu-item[b-8y8ouxgse6] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 16px;
    background: transparent;
    border: 0;
    cursor: pointer;
    text-align: left;
    font-size: 0.875rem;
    line-height: 1.5;
    color: rgba(0, 0, 0, 0.87);
    transition: background-color 0.15s ease;
    white-space: nowrap;
}

.std-action-menu-item:hover[b-8y8ouxgse6] {
    background-color: rgba(0, 0, 0, 0.06);
}

.std-action-menu-item:focus-visible[b-8y8ouxgse6] {
    outline: none;
    background-color: rgba(0, 0, 0, 0.08);
}

.std-action-menu-item:disabled[b-8y8ouxgse6] {
    color: rgba(0, 0, 0, 0.38);
    cursor: not-allowed;
}

.std-action-menu-item:disabled:hover[b-8y8ouxgse6] {
    background-color: transparent;
}

.std-action-menu-item-icon[b-8y8ouxgse6] {
    color: rgba(0, 0, 0, 0.54);
    flex-shrink: 0;
}

.std-action-menu-item-label[b-8y8ouxgse6] {
    flex: 1;
}
/* /Components/Shared/TileHelpInfo.razor.rz.scp.css */
/* #1375: Info-Symbol einer Kachel mit Hilfetext. Scoped CSS greift hier, weil
   Wurzel, Text-Element und Backdrop native <div>s dieser Komponente sind (wie im
   StandplatzActionMenu). Das Symbol selbst ist ein ExtendedMudIconButton und
   braucht keine eigene Gestaltung. */

/* Wurzel steht in der Flex-Zeile der Kachel: oben ausgerichtet und rechts
   angeschlagen – so sitzt das Symbol oben rechts, ohne dass die Kachel selbst
   positioniert werden muss. Die negativen Ränder holen das Symbol näher an die
   Ecke, damit es die Innenabstände der Kachel (pa-4) nicht aufbläht. */
.std-tile-help[b-dh2f97uqd5] {
    position: relative;
    display: inline-flex;
    align-self: flex-start;
    margin: -6px -6px 0 auto;
}

/* Der Hilfetext – standardmäßig unsichtbar, eingeblendet entweder durch den
   Klick-Zustand (open) oder auf Zeigergeräten beim Überfahren/Fokussieren.
   Rechtsbündig unter dem Symbol, damit er am rechten Rand nicht aus dem
   Fenster läuft. Farben aus dem MudBlazor-Theme bzw. den :root-Variablen. */
.std-tile-help-panel[b-dh2f97uqd5] {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    width: 300px;
    max-width: calc(100vw - 32px);
    padding: 12px 14px;
    background: var(--mud-palette-surface);
    color: var(--mud-palette-text-primary);
    border: 1px solid var(--std-border);
    border-radius: 8px;
    box-shadow: var(--std-shadow-tile-hover);
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.45;
    text-align: left;
    white-space: normal;
    z-index: 1301;
    cursor: default;
}

.std-tile-help.open .std-tile-help-panel[b-dh2f97uqd5] {
    display: block;
}

/* Zeigergeräte: Überfahren des Symbols zeigt den Text. Bewusst die Eingabeart
   statt der Bildschirmbreite – ein Tablet mit Maus bekommt den Hover, ein
   Touch-Laptop im Touch-Betrieb nicht. Tastaturnutzer öffnen mit Enter/Leertaste
   (open) und schließen mit Escape; ein zusätzlicher :focus-within-Hover würde
   den Text nach Escape stehen lassen, solange das Symbol den Fokus hält. */
@media (hover: hover) and (pointer: fine) {
    .std-tile-help:hover .std-tile-help-panel[b-dh2f97uqd5] {
        display: block;
    }
}

/* Backdrop fängt Tipps/Klicks außerhalb ab und schließt den Text.
   Transparent + fixed-position bedeckt den gesamten Viewport. */
.std-tile-help-backdrop[b-dh2f97uqd5] {
    position: fixed;
    inset: 0;
    z-index: 1300;
    background: transparent;
    cursor: default;
}
/* /Components/Veranstalter/Widgets/OrganizerEventScheduleWidget.razor.rz.scp.css */
/* #1212: Termine einer Veranstaltung als zweispaltige Beschriftungs-/Wert-Liste.
   Die Wert-Spalte wächst nicht über ihren Inhalt hinaus, damit Datum und
   Beschriftung dicht beieinander stehen.
   Keine Marken-Hex-Werte – Farben kommen über MudBlazor (mud-text-secondary). */
.std-event-schedule[b-fmxsae0vn7] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 12px;
    row-gap: 2px;
    margin: 2px 0 0;
    font-size: 0.75rem;
    line-height: 1.4;
}

.std-event-schedule dt[b-fmxsae0vn7] {
    white-space: nowrap;
}

.std-event-schedule dd[b-fmxsae0vn7] {
    margin: 0;
    white-space: nowrap;
}
