/* /Components/Layout/AvatarMenu.razor.rz.scp.css */
.avatar-trigger[b-dmu8qmejg4] {
    cursor: pointer;
    padding: 0.25rem 0.5rem;
    border-radius: 8px;
}

.avatar-trigger:hover[b-dmu8qmejg4] {
    background: var(--rz-base-200);
}

.avatar-badge[b-dmu8qmejg4] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rz-primary-lighter);
    color: var(--rz-on-primary-lighter);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 600;
    flex-shrink: 0;
}

.avatar-name[b-dmu8qmejg4] {
    color: var(--rz-text-color);
}

@media (max-width: 640.98px) {
    .avatar-name[b-dmu8qmejg4] {
        display: none;
    }
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.app-shell[b-jjfkave4h2] {
    min-height: 100vh;
    background: var(--rz-body-background-color);
}

.app-bar[b-jjfkave4h2] {
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 3.5rem;
    padding: 0 1.5rem;
    background: var(--rz-base-background-color);
    border-bottom: var(--rz-border-normal);
}

.app-bar-left[b-jjfkave4h2] {
    display: flex;
    align-items: center;
    gap: 2rem;
    min-width: 0;
}

.app-brand[b-jjfkave4h2] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    text-decoration: none;
    flex-shrink: 0;
}

.app-logo[b-jjfkave4h2] {
    width: 28px;
    height: 28px;
}

.app-name[b-jjfkave4h2] {
    font-weight: 600;
    font-size: 1.1rem;
    color: var(--rz-text-title-color);
}

.app-bar-right[b-jjfkave4h2] {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

main[b-jjfkave4h2] {
    display: flex;
    flex-direction: column;
}

.content[b-jjfkave4h2] {
    padding-top: 1.5rem;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}

/* Bootstraps px-4-Utility (vorher hier via class="content px-4" eingebunden) gilt unconditional bei
   allen Breiten -> zusammen mit dem eigenen Padding der Seiten-Shells (z.B. .dashboard-shell) frisst
   das auf Phones spürbar Content-Breite. Jetzt selbst gesetzt, damit es auf kleinen Screens
   schrumpfen kann. */
@media (max-width: 480px) {
    .content[b-jjfkave4h2] {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }
}

#blazor-error-ui[b-jjfkave4h2] {
    color-scheme: light only;
    background: lightyellow;
    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-jjfkave4h2] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

@media (max-width: 640.98px) {
    .app-bar-left[b-jjfkave4h2] {
        gap: 1rem;
    }

    .app-name[b-jjfkave4h2] {
        display: none;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-30lhhrq962],
.components-reconnect-repeated-attempt-visible[b-30lhhrq962],
.components-reconnect-failed-visible[b-30lhhrq962],
.components-pause-visible[b-30lhhrq962],
.components-resume-failed-visible[b-30lhhrq962],
.components-rejoining-animation[b-30lhhrq962] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-retrying[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-failed[b-30lhhrq962],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-30lhhrq962] {
    display: block;
}


#components-reconnect-modal[b-30lhhrq962] {
    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-30lhhrq962 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-30lhhrq962 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-30lhhrq962 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-30lhhrq962]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-30lhhrq962 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-30lhhrq962 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-30lhhrq962 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-30lhhrq962 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-30lhhrq962] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-30lhhrq962] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-30lhhrq962] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-30lhhrq962] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-30lhhrq962] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-30lhhrq962] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-30lhhrq962] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-30lhhrq962 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-30lhhrq962] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-30lhhrq962 {
    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/Pages/CalendarPage.razor.rz.scp.css */
/* Kalender (CalendarPage.razor). Desktop/Tablet: Raster .cal-grid (Phasen-Streifen + 7 Tage +
   Wochenspalte). Handy (< 768px): .cal-agenda statt Raster — beide liegen im DOM, hier wird je nach
   Breite eine ausgeblendet. Radzen-Komponenten (Icons, Badges) tragen kein Scope-Attribut, deshalb
   ::deep unter einem eigenen Vorfahren (.cal-shell). Farben nur über --rz-*-Variablen, damit Light
   und Dark Mode automatisch passen. */

.cal-shell[b-rk8gj6btg9] {
    max-width: 1420px;
    margin: 0 auto;
    padding: 0 1.5rem 3rem;
    --cal-cols: 6px repeat(7, minmax(0, 1fr)) 190px;
}

/* Kopf + Wochentags-Zeile kleben unter der App-Bar (3.5rem, siehe MainLayout.razor.css). */
.cal-sticky[b-rk8gj6btg9] {
    position: sticky;
    top: 3.5rem;
    z-index: 5;
    background: var(--rz-body-background-color);
    padding-top: 0.75rem;
}

.cal-head[b-rk8gj6btg9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    padding-bottom: 0.6rem;
}

.cal-title[b-rk8gj6btg9] {
    min-width: 0;
}

.cal-weekdays[b-rk8gj6btg9] {
    display: grid;
    grid-template-columns: var(--cal-cols);
    gap: 4px;
    padding: 0.35rem 0;
    border-top: 1px solid var(--rz-base-300);
    border-bottom: 1px solid var(--rz-base-300);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rz-text-tertiary-color);
}

.cal-weekdays > div[b-rk8gj6btg9] {
    padding-left: 0.4rem;
}

.cal-month[b-rk8gj6btg9] {
    margin: 1.1rem 0 0.45rem;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--rz-text-title-color);
}

.cal-week[b-rk8gj6btg9] {
    margin-bottom: 4px;
}

.cal-grid[b-rk8gj6btg9] {
    display: grid;
    grid-template-columns: var(--cal-cols);
    gap: 4px;
}

.cal-phase[b-rk8gj6btg9] {
    border-radius: 3px;
}

/* ---------- Tag ---------- */

.cal-day[b-rk8gj6btg9] {
    min-width: 0;
    min-height: 96px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 0.35rem;
    border: 1px solid var(--rz-base-300);
    border-radius: 10px;
    background: var(--rz-base-200);
}

/* Woche ganz ohne Einträge (meist weit in der Zukunft): flacher, damit man schneller drüber scrollt. */
.cal-week-empty .cal-day[b-rk8gj6btg9] {
    min-height: 56px;
}

.cal-day-clickable[b-rk8gj6btg9] {
    cursor: pointer;
}

.cal-day-today[b-rk8gj6btg9] {
    border: 2px solid var(--rz-primary);
    padding: calc(0.35rem - 1px);
}

.cal-day-head[b-rk8gj6btg9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 1.1rem;
}

.cal-day-num[b-rk8gj6btg9] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--rz-text-color);
    padding-left: 0.15rem;
}

.cal-day-past .cal-day-num[b-rk8gj6btg9] {
    color: var(--rz-text-tertiary-color);
}

/* "+" zum Hinzufügen (Notiz/Urlaub/Einheit): am Desktop erst beim Überfahren des Tages sichtbar, auf Touch-Geräten
   und in der Handy-Agenda immer, damit es erreichbar bleibt. */
.cal-add[b-rk8gj6btg9] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.1rem;
    min-width: 1.4rem;
    height: 1.4rem;
    padding: 0 0.15rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--rz-text-tertiary-color);
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.12s ease, background 0.12s ease;
}

.cal-day:hover .cal-add[b-rk8gj6btg9],
.cal-add:focus-visible[b-rk8gj6btg9] {
    opacity: 1;
}

.cal-add:hover[b-rk8gj6btg9] {
    background: var(--rz-base-300);
    color: var(--rz-text-color);
}

@media (hover: none) {
    .cal-add[b-rk8gj6btg9] {
        opacity: 0.6;
    }
}

.cal-day-today .cal-day-num[b-rk8gj6btg9] {
    color: var(--rz-primary);
}

/* Krank/Verletzt/Urlaub tönen den ganzen Tag leicht ein. */
.cal-log-sick[b-rk8gj6btg9],
.cal-log-injury[b-rk8gj6btg9] {
    background: color-mix(in srgb, var(--rz-danger) 9%, var(--rz-base-200));
}

.cal-log-holiday[b-rk8gj6btg9] {
    background: color-mix(in srgb, var(--rz-info) 10%, var(--rz-base-200));
}

.cal-log-line[b-rk8gj6btg9] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    min-width: 0;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    cursor: pointer;
}

.cal-log-line span[b-rk8gj6btg9] {
    overflow: hidden;
    text-overflow: ellipsis;
}

.cal-log-line-compact span[b-rk8gj6btg9] {
    white-space: nowrap;
}

.cal-log-line[b-rk8gj6btg9]  .rzi {
    font-size: 0.9rem;
    flex-shrink: 0;
}

/* ---------- Chips ---------- */

.cal-chip[b-rk8gj6btg9] {
    min-width: 0;
    padding: 0.3rem 0.45rem;
    border: 1px solid var(--rz-base-300);
    border-left: 3px solid var(--rz-base-400);
    border-radius: 7px;
    background: var(--rz-base-50);
    cursor: pointer;
    transition: border-color 120ms ease;
}

.cal-chip:hover[b-rk8gj6btg9] {
    border-top-color: var(--rz-base-400);
    border-right-color: var(--rz-base-400);
    border-bottom-color: var(--rz-base-400);
}

.cal-chip-compact[b-rk8gj6btg9] {
    padding: 0.2rem 0.35rem;
}

.cal-chip-title[b-rk8gj6btg9] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    min-width: 0;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--rz-text-color);
}

.cal-chip-compact .cal-chip-title[b-rk8gj6btg9] {
    font-size: 0.75rem;
}

.cal-chip-text[b-rk8gj6btg9] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cal-chip-meta[b-rk8gj6btg9] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cal-chip-compact .cal-chip-meta[b-rk8gj6btg9] {
    font-size: 0.68rem;
}

.cal-shell[b-rk8gj6btg9]  .cal-chip-icon {
    font-size: 0.95rem;
    flex-shrink: 0;
}

.cal-chip-compact[b-rk8gj6btg9]  .cal-chip-icon {
    font-size: 0.8rem;
}

/* Vergangen und nicht gefahren: ausgegraut + durchgestrichen (wie in der WeekCard). */
.cal-chip-missed[b-rk8gj6btg9] {
    opacity: 0.55;
}

.cal-chip-missed .cal-chip-text[b-rk8gj6btg9] {
    text-decoration: line-through;
}

/* Einheit einer Draft-Woche: gestrichelt, noch nicht angenommen. */
.cal-chip-draft[b-rk8gj6btg9] {
    border-style: dashed;
    border-left-style: solid;
}

/* Ungeplant gefahren bzw. direkt in Intervals angelegt: bewusst zurückhaltender. */
.cal-chip-unplanned[b-rk8gj6btg9],
.cal-chip-foreign[b-rk8gj6btg9] {
    background: transparent;
}

.cal-chip-foreign[b-rk8gj6btg9] {
    border-style: dashed;
    border-left-style: solid;
    border-left-color: var(--rz-base-400);
}

.cal-chip-foreign[b-rk8gj6btg9]  .cal-chip-icon {
    color: var(--rz-text-tertiary-color);
}

.cal-chip-race[b-rk8gj6btg9] {
    cursor: default;
    background: color-mix(in srgb, var(--rz-danger) 7%, var(--rz-base-50));
}

/* ---------- Wochenspalte / Wochenkopf ---------- */

.cal-sum[b-rk8gj6btg9] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 0.45rem 0.6rem;
    border: 1px solid var(--rz-base-300);
    border-radius: 10px;
    background: var(--rz-base-background-color);
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    cursor: pointer;
    transition: border-color 120ms ease;
}

.cal-sum:hover[b-rk8gj6btg9] {
    border-color: var(--rz-primary);
}

.cal-week-current .cal-sum[b-rk8gj6btg9] {
    border-color: var(--rz-primary);
}

.cal-sum-top[b-rk8gj6btg9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.4rem;
}

.cal-sum-kw[b-rk8gj6btg9] {
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--rz-text-color);
}

.cal-sum-phase[b-rk8gj6btg9] {
    font-size: 0.72rem;
    font-weight: 700;
}

.cal-shell[b-rk8gj6btg9]  .cal-badge {
    font-size: 0.6rem;
    padding: 0.05rem 0.45rem;
    text-transform: none;
    flex-shrink: 0;
}

.cal-stats[b-rk8gj6btg9] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.cal-stat[b-rk8gj6btg9] {
    display: flex;
    justify-content: space-between;
    gap: 0.4rem;
    white-space: nowrap;
}

.cal-stat b[b-rk8gj6btg9] {
    color: var(--rz-text-color);
}

.cal-stat-label[b-rk8gj6btg9] {
    color: var(--rz-text-tertiary-color);
}

.cal-stat-form[b-rk8gj6btg9] {
    font-size: 0.7rem;
}

.cal-bar[b-rk8gj6btg9] {
    height: 4px;
    border-radius: 2px;
    background: var(--rz-base-300);
    overflow: hidden;
}

.cal-bar > div[b-rk8gj6btg9] {
    height: 100%;
    background: var(--rz-primary);
}

/* ---------- Endlos-Scroll ---------- */

.cal-sentinel[b-rk8gj6btg9] {
    min-height: 2.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cal-edge[b-rk8gj6btg9] {
    padding: 0.9rem 0;
    text-align: center;
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
}

/* ---------- Agenda (Handy) ---------- */

.cal-agenda[b-rk8gj6btg9] {
    display: none;
}

.cal-agenda-head[b-rk8gj6btg9] {
    display: flex;
    margin-top: 0.6rem;
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    overflow: hidden;
    background: var(--rz-base-background-color);
    cursor: pointer;
}

.cal-week-current .cal-agenda-head[b-rk8gj6btg9] {
    border-color: var(--rz-primary);
}

.cal-agenda-head-bar[b-rk8gj6btg9] {
    width: 5px;
    flex-shrink: 0;
}

.cal-agenda-head-body[b-rk8gj6btg9] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 0.6rem 0.75rem;
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color);
}

.cal-agenda-range[b-rk8gj6btg9] {
    font-weight: 400;
    color: var(--rz-text-tertiary-color);
    margin-left: 0.3rem;
}

/* Im Wochenkopf nebeneinander statt untereinander, der Balken bekommt eine eigene Zeile. */
.cal-agenda .cal-stats[b-rk8gj6btg9] {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
}

.cal-agenda .cal-stat[b-rk8gj6btg9] {
    justify-content: flex-start;
    gap: 0.35rem;
}

.cal-agenda .cal-bar[b-rk8gj6btg9] {
    flex-basis: 100%;
    order: 10;
}

.cal-agenda-row[b-rk8gj6btg9] {
    display: grid;
    grid-template-columns: 3.4rem minmax(0, 1fr) auto;
    gap: 0.5rem;
    align-items: start;
    min-height: 44px;
    padding: 0.45rem 0.35rem;
    border-bottom: 1px solid var(--rz-base-300);
}

.cal-agenda-today[b-rk8gj6btg9] {
    background: color-mix(in srgb, var(--rz-primary) 6%, transparent);
    border-radius: 8px;
}

.cal-agenda-day[b-rk8gj6btg9] {
    padding-top: 0.3rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--rz-text-color);
}

.cal-agenda-today .cal-agenda-day[b-rk8gj6btg9] {
    color: var(--rz-primary);
}

.cal-agenda-empty[b-rk8gj6btg9] {
    min-height: 0;
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
}

.cal-agenda-empty .cal-agenda-day[b-rk8gj6btg9] {
    padding-top: 0;
    font-weight: 400;
    color: var(--rz-text-tertiary-color);
}

.cal-agenda-items[b-rk8gj6btg9] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
}

.cal-agenda-rest[b-rk8gj6btg9] {
    font-size: 0.8rem;
    color: var(--rz-text-tertiary-color);
}

.cal-agenda-items > .cal-agenda-rest[b-rk8gj6btg9] {
    padding-top: 0.3rem;
}

/* Handy: das "+" ist immer sichtbar und ein größeres Tap-Ziel (44 px Zeilenhöhe). */
.cal-agenda .cal-add[b-rk8gj6btg9] {
    opacity: 0.75;
    min-width: 2rem;
    height: 2rem;
}

.cal-agenda-adds[b-rk8gj6btg9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.15rem;
}

.cal-agenda-adds .cal-add-chip[b-rk8gj6btg9] {
    min-width: 2rem;
    padding: 0 0.4rem;
}

/* ---------- Breakpoints ---------- */

@media (max-width: 1100px) {
    .cal-shell[b-rk8gj6btg9] {
        --cal-cols: 5px repeat(7, minmax(0, 1fr)) 150px;
    }
}

@media (max-width: 767.98px) {
    .cal-shell[b-rk8gj6btg9] {
        padding: 0 0.75rem 2rem;
    }

    .cal-weekdays[b-rk8gj6btg9],
    .cal-grid[b-rk8gj6btg9] {
        display: none;
    }

    .cal-sticky[b-rk8gj6btg9] {
        border-bottom: 1px solid var(--rz-base-300);
    }

    .cal-shell[b-rk8gj6btg9]  .cal-subtitle {
        display: none;
    }

    .cal-agenda[b-rk8gj6btg9] {
        display: block;
    }

    .cal-month[b-rk8gj6btg9] {
        margin-top: 1.4rem;
    }
}
/* /Components/Pages/DashboardCards/HeaderCard.razor.rz.scp.css */
/* Mini-Höhenprofil des Saisonziels als Einstieg ins Renn-Cockpit (/rennen/{id}). */
.hc-course[b-135vmfrl31] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.2rem 0.6rem 0.2rem 0.25rem;
    border: 1px solid var(--rz-base-400);
    border-radius: 8px;
    background: transparent;
    color: var(--rz-text-color);
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    min-height: 40px;
}

.hc-course:hover[b-135vmfrl31] {
    border-color: var(--rz-primary);
}

/* CourseProfileChart ist eine eigene Komponente → ::deep für ihr Wurzelelement */
.hc-course[b-135vmfrl31]  .cpc-wrap {
    width: 96px;
    border-radius: 6px;
}
/* /Components/Pages/DashboardCards/RaceCard.razor.rz.scp.css */
.rc-head[b-inza3xixvt] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.rc-eyebrow[b-inza3xixvt] {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rz-primary);
}

.rc-profile[b-inza3xixvt] {
    margin-top: 0.75rem;
    cursor: pointer;
}

.rc-stats[b-inza3xixvt] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.9rem;
    margin-top: 0.5rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--rz-text-color);
}

.rc-climbs[b-inza3xixvt] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.6rem;
}

.rc-climb[b-inza3xixvt] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    background: var(--rz-base-200);
    border-radius: 999px;
    padding: 0.2rem 0.6rem 0.2rem 0.2rem;
}

.rc-climb b[b-inza3xixvt] {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--rz-text-secondary-color);
    color: var(--rz-base-background-color);
    font-size: 0.65rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.rc-progress[b-inza3xixvt] {
    margin-top: 0.8rem;
}

.rc-progress-text[b-inza3xixvt] {
    display: flex;
    justify-content: space-between;
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color);
    margin-bottom: 0.3rem;
}

.rc-progress-text b[b-inza3xixvt] {
    color: var(--rz-text-color);
}
/* /Components/Pages/DashboardCards/WeekCard.razor.rz.scp.css */
/* Markdig-Output kommt per MarkupString roh rein und wird von Blazors CSS-Isolation nicht
   automatisch gescoped -> ::deep, damit die Regeln trotzdem greifen. */

.review-md[b-f2gqy30foc]  > *:first-child {
    margin-top: 0;
}

.review-md[b-f2gqy30foc]  h1,
.review-md[b-f2gqy30foc]  h2,
.review-md[b-f2gqy30foc]  h3 {
    color: var(--rz-text-color);
    font-weight: 700;
    line-height: 1.3;
}

.review-md[b-f2gqy30foc]  h1 {
    font-size: 1rem;
    margin: 0 0 0.5rem;
}

.review-md[b-f2gqy30foc]  h2 {
    font-size: 0.92rem;
    margin: 1rem 0 0.35rem;
}

.review-md[b-f2gqy30foc]  h3 {
    font-size: 0.85rem;
    font-weight: 600;
    margin: 0.75rem 0 0.3rem;
}

.review-md[b-f2gqy30foc]  p {
    font-size: 0.88rem;
    margin: 0 0 0.6rem;
}

.review-md[b-f2gqy30foc]  ul,
.review-md[b-f2gqy30foc]  ol {
    margin: 0 0 0.6rem;
    padding-left: 1.15rem;
    font-size: 0.88rem;
}

.review-md[b-f2gqy30foc]  li {
    margin: 0.2rem 0;
}

.review-md[b-f2gqy30foc]  strong {
    color: var(--rz-text-color);
}

/* Wochen-Dropdown + Prev/Next: min-width hier betrifft NUR den geschlossenen Trigger (das kurze
   "KW 33 [Badge]"), NICHT die Popup-Liste — Radzens .rz-dropdown-panel ist ein Portal-Element,
   irgendwo außerhalb dieser Karte ins DOM gehängt, ::deep erreicht es also nie (siehe PopupStyle
   auf dem RadzenDropDown in WeekCard.razor für die Popup-Breite). Auf schmalen Phones (<400px
   Content-Breite in der Karte) sprengt der Trigger sonst die Zeile und erzwingt horizontales
   Scrollen der ganzen Seite -> ab 480px darf er auf Kosten der KW-Badge-Breite schrumpfen. */
[b-f2gqy30foc] .week-dropdown {
    min-width: 250px;
}

/* .week-nav sitzt auf RadzenStack, .week-nav-btn auf RadzenButton — nach demselben Fund wie bei
   .week-day-match-title (Radzen-Komponenten-Root trägt kein Scope-Attribut) VERMUTLICH ebenfalls
   wirkungslos, hier aber NICHT versucht mit ::deep zu fixen: anders als bei .week-day-match-title
   gibt es hier keinen einzigen eigenen <div>/<span> als Vorfahre bis hoch zur äußeren <RadzenCard>
   (auch selbst eine Radzen-Komponente) — ein Scope-Attribut-Anker fehlt also komplett im Baum,
   ::deep würde daher ins Leere laufen (bräuchte stattdessen eine echte globale, nicht isolierte
   Regel). Nicht angefasst, weil nicht der gemeldete Bug UND ungetestet — siehe
   [[velotrainr-plan-editor-dnd]]/Session-Notiz zum breiteren Radzen-CSS-Scoping-Muster. */
.week-nav[b-f2gqy30foc] {
    min-width: 0;
}

.week-nav-btn[b-f2gqy30foc] {
    flex-shrink: 0;
}

@media (max-width: 480px) {
    .week-nav[b-f2gqy30foc] {
        flex: 1 1 100%;
    }

    [b-f2gqy30foc] .week-dropdown {
        min-width: 0;
        flex: 1 1 auto;
    }
}

/* Tageskarten-Streifen: horizontales Scrollen über drei Stufen. Desktop (>=1024px, Basis-Regel
   unten, bewusst unverändert): 120px-Floor, wächst per flex:1 1 0 auf die verfügbare Breite -> alle
   7 Karten passen normalerweise ohne Scroll. Tablet (768-1023px): normal scrollbar wie Desktop, aber
   150px-Floor, weil die Karten sonst auf dieser Breite zu winzig für die Inhalte würden. Mobile
   (<768px): eine Karte = ein Bildschirm (flex-basis 100%), scroll-snap-type mandatory macht das
   Swipen zwischen Tagen zu einem echten Snap statt nur einer weichen Andeutung. */
.week-days[b-f2gqy30foc] {
    display: flex;
    gap: 0.5rem;
    overflow-x: auto;
    padding-bottom: 0.25rem;
    scroll-snap-type: x proximity;
}

.week-day-card[b-f2gqy30foc] {
    flex: 1 1 0;
    min-width: 120px;
    scroll-snap-align: start;
    border: 1px solid var(--rz-base-300);
    border-radius: 14px;
    overflow: hidden;   /* rundet die Farbleiste oben mit den Karten-Ecken mit */
    background: var(--rz-base-200);
    display: flex;
    flex-direction: column;
}

.week-day-today[b-f2gqy30foc] {
    outline: 2px solid var(--rz-primary);
    outline-offset: -1px;
}

@media (min-width: 768px) and (max-width: 1023px) {
    .week-day-card[b-f2gqy30foc] {
        min-width: 150px;
    }
}

@media (max-width: 767px) {
    .week-days[b-f2gqy30foc] {
        scroll-snap-type: x mandatory;
    }

    .week-day-card[b-f2gqy30foc] {
        flex: 0 0 100%;
        min-width: 0;
    }
}

/* Ersetzt den früheren einfarbigen 3px-Rand oben: ein Segment pro Einheit des Tages, damit z.B.
   ein harter Vormittags-Krit + ein lockerer Abend-Spin schon auf einen Blick als zwei
   unterschiedliche Einheiten erkennbar sind, nicht nur als "irgendwas Gemischtes". */
.week-day-bar[b-f2gqy30foc] {
    display: flex;
    height: 3px;
    flex-shrink: 0;
}

.week-day-body[b-f2gqy30foc] {
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
}

/* Mehrere Einheiten am selben Tag (z.B. Basis + Krit) stapeln sich als eigene, einzeln klickbare
   Zeilen innerhalb der Tageskarte -> jede Zeile bekommt ihre eigene kleine Karte (Rahmen + heller
   Hintergrund gegen den grauen Karten-Hintergrund), damit sie sich klar als eigenständige,
   anklickbare Einheit von den Nachbarzeilen und vom Kartenhintergrund abhebt. */
.week-day-match[b-f2gqy30foc] {
    cursor: pointer;
    padding: 0.4rem 0.55rem;
    margin-bottom: 0.4rem;
    min-width: 0;
    border: 1px solid var(--rz-base-300);
    border-radius: 10px;
    background: var(--rz-base-50);
    transition: border-color 120ms ease;
}

.week-day-match:hover[b-f2gqy30foc] {
    border-color: var(--rz-base-400);
}

/* Session wurde nach dem letzten Push direkt in intervals.icu verschoben/verändert/gelöscht
   (WeekPushService.GetDriftAsync, proaktiv aus TrainingWeekService.LoadAsync) -- warnt schon im
   Wochen-Streifen, nicht erst wenn der Workout-Detail-Dialog geöffnet wird. */
.week-day-match-drift[b-f2gqy30foc] {
    border-color: var(--rz-warning);
    border-width: 1.5px;
}

.week-day-match:last-of-type[b-f2gqy30foc] {
    margin-bottom: 0;
}

/* ::deep nötig: beide Klassen sitzen auf <RadzenText>, dessen gerendertes Root-Element (ein
   nacktes <p>) KEIN Blazor-CSS-Isolation-Scope-Attribut trägt (live per DOM-Inspektion bestätigt,
   2026-09-15 — RadzenText gibt die Klasse weiter, aber nicht das Scope-Attribut). Eine scoped Regel
   OHNE ::deep matcht also nie, weil der kompilierte Selektor `.week-day-match-title[b-xxx]` lautet
   und `[b-xxx]` am echten <p> fehlt — weiß nichts von "nowrap", fällt still auf Radzens
   Default (white-space:normal) zurück -> Titel umbricht mehrzeilig, die daneben sitzenden Icons
   (flex-shrink:0) landen dadurch neben einer variablen, oft zu hohen Zeile und schieben sich je
   nach Kartenbreite über den rechten Kartenrand hinaus (siehe Philipps Screenshots). Dasselbe
   Muster wie das bereits bekannte ::deep bei .week-dropdown weiter oben — betrifft grundsätzlich
   JEDE Klasse, die auf einer Radzen-Komponente (nicht einem eigenen <div>/<span>) sitzt. */
[b-f2gqy30foc] .week-day-match-title {
    font-weight: 700;
    color: var(--rz-text-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1;
}

/* Safety-Netz für die Dauer/TSS-Zeile bei ungewöhnlich großen Werten (z.B. lange Ausfahrten,
   hohe TSS-Zahlen) auf schmalen Karten — sonst bricht der Text mitten im Inhalt um statt
   sauber abzuschneiden (siehe .week-day-match-title oben, gleiche Behandlung). */
[b-f2gqy30foc] .week-day-match-meta {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Ausgefallen = geplant, aber am vergangenen Tag nicht gefahren (siehe WeekCard.razor IsMissed) */
.week-day-match-missed[b-f2gqy30foc] {
    opacity: 0.55;
}

.week-day-match-missed[b-f2gqy30foc]  .week-day-match-title,
.week-day-match-missed[b-f2gqy30foc]  .week-day-match-meta {
    text-decoration: line-through;
}

/* Log-Eintrag (Verletzung/Krankheit/Urlaub/Notiz, siehe AthleteLogEntry) — steht immer OBEN in der
   Tageskarte, noch vor den Workout-Zeilen (WeekCard.razor reduziert MaxInlineMatches um 1, sobald ein
   Eintrag existiert), damit ein hinterlegter Eintrag auf den ersten Blick auffällt. Farbiger linker
   Rand statt neutralem Rundum-Rahmen wie .week-day-match, um sich klar von einer Workout-Zeile
   abzusetzen, ohne mit deren Statusfarben (Erledigt/Ausgefallen/Drift) zu kollidieren. */
.week-day-log[b-f2gqy30foc] {
    cursor: pointer;
    padding: 0.4rem 0.55rem;
    margin-bottom: 0.4rem;
    min-width: 0;
    border: 1px solid var(--rz-base-300);
    border-left-width: 3px;
    border-radius: 10px;
    background: var(--rz-base-50);
    transition: border-color 120ms ease;
}

.week-day-log:hover[b-f2gqy30foc] {
    border-color: var(--rz-base-400);
}

.week-day-log-injury[b-f2gqy30foc],
.week-day-log-sick[b-f2gqy30foc] {
    border-left-color: var(--rz-danger);
}

.week-day-log-holiday[b-f2gqy30foc] {
    border-left-color: var(--rz-info);
}

.week-day-log-note[b-f2gqy30foc] {
    border-left-color: var(--rz-text-tertiary-color);
}

.week-day-log-btn[b-f2gqy30foc] {
    flex-shrink: 0;
}

.week-day-more-chip[b-f2gqy30foc] {
    display: inline-block;
    align-self: flex-start;
    margin-top: 0.35rem;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    background: var(--rz-primary-lighter);
    color: var(--rz-on-primary-lighter);
    font-size: 0.72rem;
    font-weight: 600;
    cursor: pointer;
}

.week-day-sum[b-f2gqy30foc] {
    margin-top: auto;
    padding-top: 0.5rem;
    font-size: 0.72rem;
    color: var(--rz-text-tertiary-color);
    border-top: 1px solid var(--rz-base-300);
}
/* /Components/Pages/Home.razor.rz.scp.css */
.dashboard-shell[b-boib30yvh6] {
    max-width: 1420px;
    margin: 0 auto;
    padding: 0 1.5rem 3rem;
}

@media (max-width: 640.98px) {
    .dashboard-shell[b-boib30yvh6] {
        padding: 0 1rem 2rem;
    }
}

@media (max-width: 480px) {
    .dashboard-shell[b-boib30yvh6] {
        padding: 0 0.75rem 1.5rem;
    }
}

.dashboard-row[b-boib30yvh6] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

/* Off-Season: nur die Wellness-Karte, volle Breite */
.dashboard-row.single[b-boib30yvh6] {
    grid-template-columns: 1fr;
}

@media (max-width: 860px) {
    .dashboard-row[b-boib30yvh6] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Landing.razor.rz.scp.css */
.landing-page[b-qrq59snpyj] {
    max-width: 56rem;
    margin: 0 auto;
    padding: 3rem 1.5rem 4rem;
}

.landing-hero[b-qrq59snpyj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding-bottom: 2.5rem;
}

.landing-badge[b-qrq59snpyj] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--rz-primary);
    color: var(--rz-on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 1.25rem;
}

.landing-title[b-qrq59snpyj] {
    margin: 0 0 0.6rem !important;
}

.landing-tagline[b-qrq59snpyj] {
    max-width: 34rem;
    color: var(--rz-text-secondary-color);
    margin-bottom: 1.5rem !important;
}

.landing-chips[b-qrq59snpyj] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 1.75rem;
}

.landing-chip[b-qrq59snpyj] {
    background: var(--rz-base-200);
    color: var(--rz-text-secondary-color);
    border-radius: 999px;
    padding: 0.4rem 0.9rem;
    font-size: 0.8rem;
}

.landing-hero-note[b-qrq59snpyj] {
    display: block;
    color: var(--rz-text-tertiary-color);
    margin-top: 0.6rem !important;
}

.landing-card[b-qrq59snpyj] {
    background: var(--rz-base-background-color);
    border: var(--rz-border-normal);
    border-radius: 16px;
    padding: 1.75rem;
    margin-bottom: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    box-shadow: var(--rz-shadow-2, 0 1px 3px rgba(0, 0, 0, 0.08));
}

.landing-card-text[b-qrq59snpyj] {
    flex: 1 1 auto;
    min-width: 0;
}

.landing-eyebrow[b-qrq59snpyj] {
    color: var(--rz-primary);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 0.35rem;
}

.landing-card-title[b-qrq59snpyj] {
    margin: 0 0 0.5rem !important;
}

.landing-card-body[b-qrq59snpyj] {
    display: block;
    color: var(--rz-text-secondary-color);
    margin: 0 !important;
}

.landing-card-visual[b-qrq59snpyj] {
    flex: 0 0 auto;
    width: 220px;
}

/* Die vier Diagramme werden per MarkupString als rohes SVG eingefügt (siehe Landing.razor,
   RZ1023-Workaround für <text> in SVG) — Blazors CSS-Isolation scoped nur statisch geparstes
   Razor-Markup, deshalb brauchen alle Klassen darin "::deep", verankert an der echten
   Razor-Elternklasse ".landing-card-visual". */

.landing-card-visual[b-qrq59snpyj]  .landing-chart {
    width: 100%;
    height: auto;
    overflow: visible;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-line {
    fill: none;
    stroke: var(--rz-primary);
    stroke-width: 2;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-dot {
    fill: var(--rz-primary);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-dot-highlight {
    fill: var(--rz-base-background-color);
    stroke: var(--rz-primary);
    stroke-width: 2.5;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-axis-line {
    stroke: var(--rz-base-300);
    stroke-width: 1;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-label {
    font-family: var(--font-mono);
    font-size: 8px;
    fill: var(--rz-text-tertiary-color);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-axis {
    font-family: var(--font-mono);
    font-size: 8px;
    fill: var(--rz-text-tertiary-color);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-box {
    fill: none;
    stroke: var(--rz-base-400);
    stroke-width: 1.5;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-box-accent {
    fill: none;
    stroke: var(--rz-primary);
    stroke-width: 1.5;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-box-label {
    font-family: var(--font-mono);
    font-size: 9px;
    fill: var(--rz-text-secondary-color);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-box-label-accent {
    font-family: var(--font-mono);
    font-size: 9px;
    font-weight: 700;
    fill: var(--rz-primary);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-arrow {
    stroke: var(--rz-primary);
    stroke-width: 1.5;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-arrow-muted {
    stroke: var(--rz-base-400);
    stroke-width: 1.5;
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-arrowhead {
    fill: var(--rz-primary);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-arrowhead-muted {
    fill: var(--rz-base-400);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-bar {
    fill: var(--rz-primary-lighter);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-bar-muted {
    fill: var(--rz-base-300);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-bar-accent {
    fill: var(--rz-primary);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-icon-warn {
    font-size: 10px;
    fill: var(--rz-warning);
}

.landing-card-visual[b-qrq59snpyj]  .landing-chart-icon-check {
    font-size: 10px;
    fill: var(--rz-success);
}

.landing-closing[b-qrq59snpyj] {
    text-align: center;
    padding: 2rem 0 1rem;
}

.landing-closing-title[b-qrq59snpyj] {
    margin: 0 0 0.4rem !important;
}

.landing-closing-note[b-qrq59snpyj] {
    display: block;
    color: var(--rz-text-secondary-color);
    margin-bottom: 1.5rem !important;
}

@media (max-width: 640px) {
    .landing-card[b-qrq59snpyj] {
        flex-direction: column;
        align-items: stretch;
        text-align: left;
    }

    .landing-card-visual[b-qrq59snpyj] {
        width: 100%;
    }
}
/* /Components/Pages/Login.razor.rz.scp.css */
.login-page[b-83k80daqr1] {
    max-width: 24rem;
    min-height: 100vh;
    margin: 0 auto;
    padding: 2rem 1rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.login-badge[b-83k80daqr1] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--rz-primary);
    color: var(--rz-on-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 1.25rem;
}

.login-title[b-83k80daqr1] {
    margin: 0 0 0.4rem !important;
}

.login-subtitle[b-83k80daqr1] {
    color: var(--rz-text-secondary-color);
    margin-bottom: 1.75rem !important;
}

.login-card[b-83k80daqr1] {
    width: 100%;
    background: var(--rz-base-background-color);
    border: var(--rz-border-normal);
    border-radius: 16px;
    padding: 1.5rem;
    box-shadow: var(--rz-shadow-2, 0 1px 3px rgba(0, 0, 0, 0.08));
    text-align: left;
    margin-top: 1rem;
}

.login-label[b-83k80daqr1] {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--rz-text-secondary-color);
    margin-bottom: 0.4rem;
}

.login-card > .status-alert[b-83k80daqr1] {
    margin-top: 1rem;
}
/* /Components/Pages/NotFound.razor.rz.scp.css */
.not-found-page[b-qe1e9984zc] {
    max-width: 24rem;
    min-height: calc(100vh - 3.5rem - 3rem);
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

[b-qe1e9984zc] .not-found-card {
    width: 100%;
    background: var(--rz-base-background-color);
    border: var(--rz-border-normal);
    border-radius: 16px;
    padding: 2rem 1.5rem;
    box-shadow: var(--rz-shadow-2, 0 1px 3px rgba(0, 0, 0, 0.08));
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.not-found-code[b-qe1e9984zc] {
    font-size: 3.5rem;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--rz-primary);
    margin-bottom: 0.75rem;
}

.not-found-title[b-qe1e9984zc] {
    margin: 0 0 0.4rem !important;
}

.not-found-subtitle[b-qe1e9984zc] {
    color: var(--rz-text-secondary-color);
    margin-bottom: 1.75rem !important;
}
/* /Components/Pages/OnboardingSteps/KeySessionActivityCard.razor.rz.scp.css */
.key-activity-card[b-6nmd8ib649] {
    min-width: 0;
    background: var(--rz-base-background-color);
    border: 2px solid transparent;
    outline: var(--rz-border-normal);
    outline-offset: -1px;
    border-radius: 12px;
    padding: 0.85rem 1rem;
    cursor: pointer;
    transition: border-color 120ms ease;
}

    .key-activity-card:hover[b-6nmd8ib649] {
        outline: var(--rz-border-hover);
    }

    .key-activity-card.selected[b-6nmd8ib649] {
        border-color: var(--rz-primary);
        background: var(--rz-primary-lighter);
    }

    .key-activity-card.disabled[b-6nmd8ib649] {
        cursor: default;
        opacity: 0.45;
    }

        .key-activity-card.disabled:hover[b-6nmd8ib649] {
            outline: var(--rz-border-normal);
        }

.key-card-top[b-6nmd8ib649] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--rz-text-tertiary-color);
    font-size: 0.8rem;
    min-width: 0;
}

.key-card-stat[b-6nmd8ib649] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.key-card-metrics[b-6nmd8ib649] {
    text-align: center;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--rz-text-color);
    margin-top: 0.6rem;
}

.key-card-load[b-6nmd8ib649] {
    text-align: center;
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
    margin-top: 0.15rem;
}

.key-card-chart[b-6nmd8ib649] {
    margin-top: 0.6rem;
}

.key-card-name[b-6nmd8ib649] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--rz-text-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    margin-top: 0.6rem;
}

.key-card-date[b-6nmd8ib649] {
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
    margin-top: 0.15rem;
}
/* /Components/Pages/OnboardingSteps/KeySessionsStep.razor.rz.scp.css */
.key-selected-panel[b-cp36ie3xbv] {
    margin-top: 1rem;
    border-top: var(--rz-border-normal);
    padding-top: 0.85rem;
}

.key-selected-title[b-cp36ie3xbv] {
    display: block;
    color: var(--rz-text-tertiary-color);
    letter-spacing: 0.06em;
    margin-bottom: 0.5rem;
}

.key-nav-right[b-cp36ie3xbv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.key-nav-hint[b-cp36ie3xbv] {
    color: var(--rz-text-tertiary-color);
}

@media (max-width: 480px) {
    .key-nav-right[b-cp36ie3xbv] {
        flex-wrap: wrap;
        justify-content: flex-end;
        gap: 0.5rem;
    }

    .key-nav-hint[b-cp36ie3xbv] {
        display: none;
    }
}
/* /Components/Pages/OnboardingSteps/ProfileStep.razor.rz.scp.css */
.zone-badge[b-2bwy14r1bd] {
    width: 22px;
    height: 22px;
    border-radius: 6px;
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
/* /Components/Pages/RacePage.razor.rz.scp.css */
.rp-shell[b-axzk4gbi5d] {
    max-width: 1180px;
    margin: 0 auto;
    padding: 1rem 1rem 2.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}

.rp-head[b-axzk4gbi5d] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.3rem;
}

.rp-title-row[b-axzk4gbi5d] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.rp-prio[b-axzk4gbi5d] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--rz-primary);
    color: var(--rz-on-primary);
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rp-drop[b-axzk4gbi5d] {
    border: 1px dashed var(--rz-base-400);
    border-radius: 14px;
    padding: 2.5rem 1rem;
    text-align: center;
    background: var(--rz-base-200);
}

.rp-upload-btn[b-axzk4gbi5d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 1.2rem;
    border-radius: 8px;
    background: var(--rz-primary);
    color: var(--rz-on-primary);
    font-weight: 600;
    font-size: 0.9rem;
    cursor: pointer;
}

.rp-upload-btn-small[b-axzk4gbi5d] {
    min-height: 32px;
    padding: 0 0.8rem;
    font-size: 0.8rem;
    background: transparent;
    color: var(--rz-text-color);
    border: 1px solid var(--rz-base-400);
}

.rp-stats[b-axzk4gbi5d] {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.5rem;
}

.rp-stat[b-axzk4gbi5d] {
    background: var(--rz-base-200);
    border-radius: 10px;
    padding: 0.6rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.rp-stat span[b-axzk4gbi5d] {
    font-size: 0.72rem;
    color: var(--rz-text-tertiary-color);
}

.rp-stat b[b-axzk4gbi5d] {
    font-size: 1.05rem;
    color: var(--rz-text-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rp-hint[b-axzk4gbi5d] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
    border: 1px solid var(--rz-base-300);
    border-radius: 8px;
    padding: 0.5rem 0.75rem;
}

.rp-card[b-axzk4gbi5d] {
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    padding: 1rem 1.1rem;
    background: var(--rz-base-background-color);
}

.rp-card-title[b-axzk4gbi5d] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rz-text-tertiary-color);
    margin-bottom: 0.6rem;
}

.rp-grid[b-axzk4gbi5d] {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
    gap: 0.9rem;
    align-items: start;
}

.rp-col[b-axzk4gbi5d] {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    min-width: 0;
}

.rp-list[b-axzk4gbi5d] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.rp-row[b-axzk4gbi5d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    background: var(--rz-base-200);
    border: 1px solid transparent;
    border-radius: 8px;
    padding: 0.55rem 0.8rem;
    cursor: pointer;
}

.rp-row-sel[b-axzk4gbi5d] {
    border-color: var(--rz-primary);
    background: var(--rz-primary-lighter);
}

.rp-row-main[b-axzk4gbi5d] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
}

.rp-num[b-axzk4gbi5d] {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rz-text-secondary-color);
    color: var(--rz-base-background-color);
    font-size: 0.75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rp-num-small[b-axzk4gbi5d] {
    width: 20px;
    height: 20px;
    font-size: 0.68rem;
}

.rp-row-title[b-axzk4gbi5d] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--rz-text-color);
}

.rp-row-sub[b-axzk4gbi5d] {
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
}

.rp-cat[b-axzk4gbi5d] {
    margin-left: 0.35rem;
    border: 1px solid var(--rz-base-400);
    border-radius: 5px;
    padding: 0 0.35rem;
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--rz-text-secondary-color);
}

.rp-row-side[b-axzk4gbi5d] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    flex-shrink: 0;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
}

.rp-row-side b[b-axzk4gbi5d] {
    font-size: 0.9rem;
    color: var(--rz-text-color);
}

.rp-mini-stats[b-axzk4gbi5d] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.9rem;
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color);
    margin-bottom: 0.6rem;
}

.rp-seg[b-axzk4gbi5d] {
    display: grid;
    grid-template-columns: 1.2fr 1.1fr 1fr 0.8fr;
    gap: 0.25rem 0.5rem;
    align-items: center;
    font-size: 0.8rem;
    padding: 0.35rem 0.6rem;
    border-radius: 6px;
    border: 1px solid transparent;
    background: var(--rz-base-200);
}

.rp-seg-kind[b-axzk4gbi5d] {
    font-weight: 600;
}

.rp-seg-km[b-axzk4gbi5d] {
    color: var(--rz-text-tertiary-color);
}

.rp-seg-w[b-axzk4gbi5d] {
    color: var(--rz-text-color);
    font-weight: 600;
}

.rp-seg-t[b-axzk4gbi5d] {
    text-align: right;
    color: var(--rz-text-secondary-color);
}

.rp-seg-hint[b-axzk4gbi5d] {
    grid-column: 1 / -1;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    font-style: italic;
}

.rp-ai-tag[b-axzk4gbi5d] {
    margin-left: 0.3rem;
    font-size: 0.62rem;
    font-weight: 700;
    color: var(--rz-primary);
    border: 1px solid var(--rz-primary);
    border-radius: 4px;
    padding: 0 0.25rem;
    vertical-align: 1px;
}

.rp-refine[b-axzk4gbi5d] {
    margin-top: 0.9rem;
    border-top: 1px solid var(--rz-base-300);
    padding-top: 0.75rem;
}

.rp-refine-head[b-axzk4gbi5d] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
    cursor: pointer;
}

.rp-scale[b-axzk4gbi5d] {
    display: flex;
    justify-content: space-between;
    font-size: 0.68rem;
    color: var(--rz-text-tertiary-color);
    margin-top: 0.25rem;
}

.rp-print-card[b-axzk4gbi5d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.rp-prep[b-axzk4gbi5d] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    font-size: 0.85rem;
    padding: 0.3rem 0;
}

.rp-prep-date[b-axzk4gbi5d] {
    color: var(--rz-text-tertiary-color);
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}

.rp-prep-title[b-axzk4gbi5d] {
    flex: 1;
    min-width: 0;
    color: var(--rz-text-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rp-file[b-axzk4gbi5d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
    border-top: 1px solid var(--rz-base-300);
    padding-top: 0.75rem;
}

@media (max-width: 900px) {
    .rp-grid[b-axzk4gbi5d] {
        grid-template-columns: minmax(0, 1fr);
    }

    .rp-stats[b-axzk4gbi5d] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .rp-stats[b-axzk4gbi5d] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .rp-seg[b-axzk4gbi5d] {
        grid-template-columns: 1fr auto;
    }

    .rp-seg-km[b-axzk4gbi5d] {
        grid-row: 2;
    }

    .rp-seg-t[b-axzk4gbi5d] {
        grid-row: 2;
        grid-column: 2;
    }
}
/* /Components/Pages/RaceResultCard.razor.rz.scp.css */
/* Optik wie .rp-card/.rp-stat im Renn-Cockpit (RacePage.razor.css) — dessen Scoped-CSS greift hier nicht. */
.rr-card[b-06yhns1axq] {
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    padding: 1rem 1.1rem;
    background: var(--rz-base-background-color);
}

.rr-head[b-06yhns1axq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.4rem;
}

.rr-title[b-06yhns1axq] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rz-text-tertiary-color);
}

.rr-actions[b-06yhns1axq] {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.rr-stats[b-06yhns1axq] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.5rem;
}

.rr-stat[b-06yhns1axq] {
    background: var(--rz-base-200);
    border-radius: 10px;
    padding: 0.6rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.rr-stat span[b-06yhns1axq] {
    font-size: 0.72rem;
    color: var(--rz-text-tertiary-color);
}

.rr-stat b[b-06yhns1axq] {
    font-size: 1.05rem;
    color: var(--rz-text-color);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rr-stat small[b-06yhns1axq] {
    font-size: 0.72rem;
}

.rr-candidates[b-06yhns1axq] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: 0.75rem;
    border-top: 1px solid var(--rz-base-300);
    padding-top: 0.6rem;
}

.rr-candidate[b-06yhns1axq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

@media (max-width: 900px) {
    .rr-stats[b-06yhns1axq] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Shared/ChatBox.razor.rz.scp.css */
.chat-scroll[b-vdflupk7vp] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    height: 22rem;
    overflow-y: auto;
    padding: 1rem;
    background: var(--rz-base-100);
    border: var(--rz-border-normal);
    border-radius: 12px;
    margin-bottom: 0.75rem;
}

.chat-row[b-vdflupk7vp] {
    display: flex;
}

.chat-row-coach[b-vdflupk7vp] {
    justify-content: flex-start;
}

.chat-row-user[b-vdflupk7vp] {
    justify-content: flex-end;
}

.chat-bubble[b-vdflupk7vp] {
    max-width: 75%;
    padding: 0.6rem 0.9rem;
    border-radius: 12px;
    white-space: pre-wrap;
    word-break: break-word;
}

.chat-bubble-coach[b-vdflupk7vp] {
    background: var(--rz-base-background-color);
    border: var(--rz-border-normal);
    color: var(--rz-text-color);
    border-bottom-left-radius: 2px;
}

.chat-bubble-user[b-vdflupk7vp] {
    background: var(--rz-primary);
    color: var(--rz-on-primary);
    border-bottom-right-radius: 2px;
}

.chat-input-row[b-vdflupk7vp] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-end;
}

.chat-dots[b-vdflupk7vp] {
    display: inline-flex;
    gap: 0.25rem;
    align-items: center;
}

    .chat-dots span[b-vdflupk7vp] {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: currentColor;
        opacity: 0.4;
        animation: chat-dot-pulse-b-vdflupk7vp 1.2s infinite ease-in-out;
    }

        .chat-dots span:nth-child(2)[b-vdflupk7vp] {
            animation-delay: 0.2s;
        }

        .chat-dots span:nth-child(3)[b-vdflupk7vp] {
            animation-delay: 0.4s;
        }

@keyframes chat-dot-pulse-b-vdflupk7vp {
    0%, 80%, 100% {
        opacity: 0.3;
        transform: scale(0.85);
    }

    40% {
        opacity: 1;
        transform: scale(1);
    }
}
/* /Components/Shared/CourseProfileChart.razor.rz.scp.css */
.cpc-wrap[b-ynqqsaxw3m] {
    position: relative;
    width: 100%;
    background: var(--rz-base-200);
    border-radius: 8px;
    overflow: hidden;
}

.cpc-svg[b-ynqqsaxw3m] {
    position: absolute;
    inset: 0 0 16px 0;
    width: 100%;
    height: calc(100% - 16px);
}

.cpc-compact .cpc-svg[b-ynqqsaxw3m] {
    inset: 0;
    height: 100%;
}

.cpc-line[b-ynqqsaxw3m] {
    fill: none;
    stroke: var(--rz-text-secondary-color);
    stroke-width: 1.5;
    vector-effect: non-scaling-stroke;
}

.cpc-band[b-ynqqsaxw3m] {
    fill: var(--rz-primary);
    opacity: 0.07;
}

.cpc-band-sel[b-ynqqsaxw3m] {
    opacity: 0.2;
}

.cpc-label[b-ynqqsaxw3m] {
    position: absolute;
    font-size: 0.68rem;
    color: var(--rz-text-tertiary-color);
    pointer-events: none;
    line-height: 1;
    white-space: nowrap;
}

.cpc-km[b-ynqqsaxw3m] {
    bottom: 3px;
    transform: translateX(-50%);
}

/* Tap-Ziel bewusst größer als der sichtbare Kreis (Mobile, min. ~32 px) */
.cpc-marker[b-ynqqsaxw3m] {
    position: absolute;
    transform: translate(-50%, -50%);
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 2px solid var(--rz-base-background-color);
    background: var(--rz-text-secondary-color);
    color: var(--rz-base-background-color);
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1;
    padding: 0;
    cursor: pointer;
    box-shadow: 0 0 0 6px transparent;
}

.cpc-marker-sel[b-ynqqsaxw3m] {
    background: var(--rz-primary);
    transform: translate(-50%, -50%) scale(1.15);
}

.cpc-legend[b-ynqqsaxw3m] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.35rem;
    font-size: 0.7rem;
    color: var(--rz-text-tertiary-color);
}

.cpc-legend i[b-ynqqsaxw3m] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    margin-right: 0.3rem;
    vertical-align: -1px;
}
/* /Components/Shared/DayWorkoutsDialog.razor.rz.scp.css */
.day-match-row[b-5s5khbd1r8] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    cursor: pointer;
}

.day-match-row:hover[b-5s5khbd1r8] {
    border-color: var(--rz-base-400);
    background: var(--rz-base-200);
}

.day-match-bar[b-5s5khbd1r8] {
    width: 4px;
    align-self: stretch;
    border-radius: 2px;
    flex-shrink: 0;
}

.day-match-info[b-5s5khbd1r8] {
    flex: 1;
    min-width: 0;
}
/* /Components/Shared/KeySessionPicker.razor.rz.scp.css */
.key-breadcrumb[b-uf8h2q9oxi] {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    margin-top: 0.5rem;
    font-size: 0.85rem;
}

.key-crumb[b-uf8h2q9oxi] {
    color: var(--rz-text-tertiary-color);
    cursor: pointer;
    padding: 0.15rem 0.25rem;
    border-radius: 6px;
}

    .key-crumb:hover[b-uf8h2q9oxi] {
        color: var(--rz-primary);
    }

    .key-crumb.current[b-uf8h2q9oxi] {
        color: var(--rz-text-color);
        font-weight: 600;
        cursor: default;
    }

        .key-crumb.current:hover[b-uf8h2q9oxi] {
            color: var(--rz-text-color);
        }

.key-crumb-sep[b-uf8h2q9oxi] {
    color: var(--rz-text-tertiary-color);
    font-size: 1rem;
}

.key-picker-body[b-uf8h2q9oxi] {
    margin-top: 0.75rem;
    max-height: 26rem;
    overflow-y: auto;
    padding-right: 0.25rem;
}

.key-empty-hint[b-uf8h2q9oxi] {
    color: var(--rz-text-tertiary-color);
    padding: 1rem 0;
}

.key-year-grid[b-uf8h2q9oxi] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.key-year-card[b-uf8h2q9oxi] {
    border: var(--rz-border-normal);
    border-radius: 12px;
    padding: 1rem 0.5rem;
    text-align: center;
    cursor: pointer;
}

    .key-year-card:hover[b-uf8h2q9oxi] {
        border: var(--rz-border-hover);
    }

.key-year-num[b-uf8h2q9oxi] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--rz-text-color);
}

.key-year-meta[b-uf8h2q9oxi] {
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
}

.key-month-grid[b-uf8h2q9oxi] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.6rem;
}

.key-month-card[b-uf8h2q9oxi] {
    border: var(--rz-border-normal);
    border-radius: 10px;
    padding: 0.75rem 0.4rem;
    text-align: center;
    cursor: pointer;
}

    .key-month-card:hover[b-uf8h2q9oxi] {
        border: var(--rz-border-hover);
    }

    .key-month-card.disabled[b-uf8h2q9oxi] {
        cursor: default;
        opacity: 0.45;
    }

        .key-month-card.disabled:hover[b-uf8h2q9oxi] {
            border: var(--rz-border-normal);
        }

.key-month-name[b-uf8h2q9oxi] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--rz-text-color);
}

.key-month-meta[b-uf8h2q9oxi] {
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
}

.key-activity-grid[b-uf8h2q9oxi] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

@media (max-width: 480px) {
    .key-year-grid[b-uf8h2q9oxi] {
        grid-template-columns: repeat(2, 1fr);
    }

    .key-month-grid[b-uf8h2q9oxi] {
        grid-template-columns: repeat(3, 1fr);
    }

    .key-activity-grid[b-uf8h2q9oxi] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/KeySessionSelectedRow.razor.rz.scp.css */
.key-selected-row[b-3p7c06zgqd] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    background: var(--rz-base-200);
    border-radius: 10px;
    padding: 0.6rem 0.75rem;
    margin-bottom: 0.5rem;
}

.key-dot[b-3p7c06zgqd] {
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 0.35rem;
}

.key-selected-info[b-3p7c06zgqd] {
    flex: 1;
    min-width: 0;
}

.key-selected-name[b-3p7c06zgqd] {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--rz-text-color);
}

.key-selected-meta[b-3p7c06zgqd] {
    font-size: 0.75rem;
    color: var(--rz-text-tertiary-color);
}

.key-note-box[b-3p7c06zgqd] {
    margin-top: 0.5rem;
}
/* /Components/Shared/PlanEditor.razor.rz.scp.css */
/* Grid statt Flex-Row: bei mehreren Einheiten am selben Tag (z.B. Basis + Krit) landet jede als
   eigenes .plan-session-item direkt neben .plan-day-label im selben Grid-Container — in einer
   Flex-Row würden sich 2+ Karten mit width:100% gegenseitig zusammenquetschen. Grid mit fixer
   Label-Spalte lässt die Session-Karten stattdessen in Spalte 2 sauber untereinander stapeln. */
.plan-editor .plan-day[b-p04k26jp7e] {
    display: grid;
    grid-template-columns: 6.5rem 1fr;
    align-items: start;
    gap: 0.5rem 0.75rem;
    border-radius: 14px;
    padding: 0.75rem 0.85rem;
    margin-bottom: 0.5rem;
    min-height: 2.5rem;
    transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.plan-editor .plan-day-rest[b-p04k26jp7e] {
    border: 1px dashed var(--rz-base-300);
    background: transparent;
}

.plan-editor .plan-day-filled[b-p04k26jp7e] {
    border: 1px solid var(--rz-base-300);
    background: var(--rz-base-200);
}

.plan-editor .plan-day-filled:hover[b-p04k26jp7e] {
    border-color: var(--rz-base-400);
}

/* Aktuell überflogene Tages-Zone während eines Drags (siehe plan-editor-dnd.js:zoneAt) — Ersatz
   für Radzens frühere rz-can-drop-Klasse, gleiche Optik. Deaktivierte Zonen (data-plan-day-disabled)
   bekommen diese Klasse nie, siehe JS. */
.plan-editor .plan-day.plan-day-drop-active[b-p04k26jp7e] {
    border-style: solid;
    border-color: var(--rz-primary);
    background: var(--rz-primary-lighter);
    box-shadow: 0 0 0 2px var(--rz-primary-lighter);
}

.plan-editor .plan-day-label[b-p04k26jp7e] {
    grid-column: 1;
    grid-row: 1;
}

.plan-editor .plan-session-item[b-p04k26jp7e] {
    grid-column: 2;
    width: 100%;
    position: relative;
}

/* Ziel-Anzeige während eines Drags (plan-editor-dnd.js:targetIn): Einfügelinie in der Lücke vor/nach
   der Karte (Grid-Gap 0.5rem → Linie mittig darin), bzw. gestrichelter Rahmen = mit dieser Karte tauschen. */
.plan-editor .plan-session-item.plan-insert-before[b-p04k26jp7e]::before,
.plan-editor .plan-session-item.plan-insert-after[b-p04k26jp7e]::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    height: 3px;
    border-radius: 2px;
    background: var(--rz-primary);
    pointer-events: none;
}

.plan-editor .plan-session-item.plan-insert-before[b-p04k26jp7e]::before {
    top: -5px;
}

.plan-editor .plan-session-item.plan-insert-after[b-p04k26jp7e]::after {
    bottom: -5px;
}

.plan-editor .plan-session-item.plan-swap-target .plan-session-card[b-p04k26jp7e] {
    outline: 2px dashed var(--rz-primary);
    outline-offset: 2px;
}

.plan-editor .plan-session-item.plan-dragging[b-p04k26jp7e] {
    opacity: 0.45;
}

.plan-editor .plan-session-card[b-p04k26jp7e] {
    flex: 1;
    min-width: 0;
    background: var(--rz-base-50);
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    padding: 0.6rem 0.75rem;
}

/* Touch-fähiges Drag&Drop (siehe plan-editor-dnd.js) statt nativer HTML5-DnD-API — der Griff
   braucht touch-action:none, sonst interpretiert der Browser das erste touchmove als Scroll-Geste,
   bevor unser Pointer-Handler den Bewegungs-Schwellwert überhaupt prüfen kann (siehe [data-wb-drag]
   im Workout-Builder, identisches Muster). */
.plan-editor [data-plan-drag][b-p04k26jp7e] {
    cursor: grab;
    touch-action: none;
    user-select: none;
    -webkit-user-select: none;
}

.plan-editor [data-plan-drag]:active[b-p04k26jp7e] {
    cursor: grabbing;
}

/* .plan-drag-ghost/.plan-dnd-active bewusst NICHT hier (CSS-isoliert auf diese Komponente) — der
   Ghost hängt per JS direkt an document.body, .plan-dnd-active auch, beide liegen also außerhalb
   des Blazor-Scoping dieser Datei. Stattdessen global in wwwroot/css/plan-editor-dnd.css (siehe
   App.razor), analog zu .wb-drag-ghost/.wb-dnd-active in workout-builder.css. */

/* Auf schmalen Phones (Dialog geht ab 768px auf volle Breite) reicht die Restbreite neben dem
   6.5rem breiten Wochentag-Label nicht für Titel + Dauer/TSS + Edit-Icon nebeneinander -> Label
   über die Karte stellen und die Titel-/Werte-Zeile in der Karte umbrechen lassen statt sie
   abzuschneiden. */
@media (max-width: 480px) {
    .plan-editor .plan-day[b-p04k26jp7e] {
        grid-template-columns: 1fr;
    }

    .plan-editor .plan-day-label[b-p04k26jp7e],
    .plan-editor .plan-session-item[b-p04k26jp7e] {
        grid-column: 1;
    }
}
/* /Components/Shared/PowerProfileChart.razor.rz.scp.css */
.ppc-wrap[b-4xvoofmtgb] {
    position: relative;
    width: 100%;
    background: var(--rz-base-200);
    border-radius: 8px;
    overflow: hidden;
}

/* 16px unten = Zeitachse, muss zu AxisPx im Code passen */
.ppc-svg[b-4xvoofmtgb],
.ppc-hover[b-4xvoofmtgb] {
    position: absolute;
    inset: 0 0 16px 0;
    width: 100%;
    height: calc(100% - 16px);
}

.ppc-compact .ppc-svg[b-4xvoofmtgb] {
    inset: 0;
    height: 100%;
}

.ppc-line[b-4xvoofmtgb] {
    fill: none;
    stroke: var(--rz-text-secondary-color);
    stroke-width: 1.5;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.ppc-ref[b-4xvoofmtgb] {
    stroke: var(--rz-text-tertiary-color);
    stroke-width: 1;
    stroke-dasharray: 4 4;
    vector-effect: non-scaling-stroke;
}

.ppc-label[b-4xvoofmtgb] {
    position: absolute;
    font-size: 0.68rem;
    color: var(--rz-text-tertiary-color);
    pointer-events: none;
    line-height: 1;
    white-space: nowrap;
}

.ppc-ref-label[b-4xvoofmtgb] {
    right: 4px;
}

.ppc-time[b-4xvoofmtgb] {
    bottom: 3px;
    transform: translateX(-50%);
}

/* Fadenkreuz + Werte-Box: Inhalt kommt aus power-profile.js. touch-action: pan-y = horizontal wischen
   bewegt das Fadenkreuz, vertikal scrollt die Seite weiter. */
.ppc-hover[b-4xvoofmtgb] {
    cursor: crosshair;
    touch-action: pan-y;
}

.ppc-cursor[b-4xvoofmtgb] {
    display: none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 1px;
    background: var(--rz-text-color);
    pointer-events: none;
}

.ppc-readout[b-4xvoofmtgb] {
    display: none;
    position: absolute;
    top: 4px;
    padding: 0.3rem 0.5rem;
    background: var(--rz-base-background-color);
    border: 1px solid var(--rz-base-300);
    border-radius: 6px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
    font-size: 0.72rem;
    line-height: 1.4;
    color: var(--rz-text-secondary-color);
    white-space: nowrap;
    pointer-events: none;
}

/* Kinder der Box erzeugt JS — ohne Blazor-Scope-Attribut, daher ::deep */
.ppc-readout[b-4xvoofmtgb]  .ppc-r-time {
    color: var(--rz-text-tertiary-color);
}

.ppc-readout[b-4xvoofmtgb]  .ppc-r-main {
    font-weight: 700;
    color: var(--rz-text-color);
}

.ppc-readout[b-4xvoofmtgb]  .ppc-r-zone span {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    margin-right: 0.3rem;
}

.ppc-empty[b-4xvoofmtgb] {
    width: 100%;
    height: 2px;
    background: var(--rz-base-300);
    border-radius: 1px;
}
/* /Components/Shared/ProfileSettingsDialog.razor.rz.scp.css */
.profile-grid-4[b-bwn8gyfsdc],
.profile-grid-3[b-bwn8gyfsdc],
.profile-grid-2[b-bwn8gyfsdc] {
    display: grid;
    gap: 1rem;
}

.profile-grid-4[b-bwn8gyfsdc] {
    grid-template-columns: repeat(4, 1fr);
}

.profile-grid-3[b-bwn8gyfsdc] {
    grid-template-columns: repeat(3, 1fr);
}

.profile-grid-2[b-bwn8gyfsdc] {
    grid-template-columns: repeat(2, 1fr);
}

@media (max-width: 640px) {
    .profile-grid-4[b-bwn8gyfsdc] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .profile-grid-4[b-bwn8gyfsdc],
    .profile-grid-3[b-bwn8gyfsdc],
    .profile-grid-2[b-bwn8gyfsdc] {
        grid-template-columns: 1fr;
    }
}

/* Radzen setzt auf .rz-tabview-panels selbst schon flex:1;overflow:auto (siehe standard-base.css)
   -> die eigentliche Scroll-Grenze soll dort liegen, nicht auf dem äußeren Wrapper-Div, damit die
   Tab-Liste (.rz-tabview-nav) beim Scrollen des Inhalts sichtbar/fix stehen bleibt. Fehlt aber
   min-height:0 auf .rz-tabview selbst (Radzen hat nur min-width:0) -> ohne das bleibt der
   Flex-Item-Automatik-Mindesthöhe am Content hängen und .rz-tabview wächst statt zu scrollen
   (klassische Flexbox-Falle: kein overflow gesetzt -> "min-height:auto" bleibt content-basiert). */
[b-bwn8gyfsdc] .profile-tabs {
    min-height: 0;
}

/* RadzenTabs TabPosition="Left" rendert die Tab-Liste als vertikale Spalte links neben dem
   Content (.rz-tabview-left { flex-direction:row }) -> frisst auf einem Phone (Dialog geht ab
   768px auf volle Bildschirmbreite, siehe Radzen's eigene @media(max-width:768px)-Regel) wertvolle
   horizontale Breite vom eigentlichen Formular. Unter 640px auf oben liegende Tabs umschalten
   (wie TabPosition.Top), statt eine eigene TabPosition-Property pro Breakpoint zu pflegen. */
@media (max-width: 640px) {
    [b-bwn8gyfsdc] .profile-tabs.rz-tabview-left {
        flex-direction: column;
    }

    [b-bwn8gyfsdc] .profile-tabs.rz-tabview-left > .rz-tabview-nav {
        flex-direction: row;
        overflow-x: auto;
        flex-wrap: nowrap;
    }

    [b-bwn8gyfsdc] .profile-tabs.rz-tabview-left > .rz-tabview-nav li {
        flex-shrink: 0;
    }
}
/* /Components/Shared/RaceTacticsPanel.razor.rz.scp.css */
.rtp-card[b-02023ayz0o] {
    border: 1px solid var(--rz-base-300);
    border-radius: 12px;
    padding: 1rem 1.1rem;
    background: var(--rz-base-background-color);
}

.rtp-head[b-02023ayz0o] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.rtp-q[b-02023ayz0o] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--rz-text-color);
    margin-bottom: 0.35rem;
}

.rtp-hint[b-02023ayz0o] {
    font-weight: 400;
    color: var(--rz-text-tertiary-color);
    font-size: 0.75rem;
}

.rtp-chips[b-02023ayz0o] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.rtp-sub[b-02023ayz0o] {
    margin-top: 0.85rem;
    margin-bottom: 0.3rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rz-text-tertiary-color);
}

.rtp-list[b-02023ayz0o] {
    margin: 0;
    padding-left: 1.15rem;
    font-size: 0.85rem;
    color: var(--rz-text-secondary-color);
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.rtp-nutrition[b-02023ayz0o] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.rtp-nut-row[b-02023ayz0o] {
    display: flex;
    gap: 0.6rem;
    font-size: 0.85rem;
    color: var(--rz-text-secondary-color);
}

.rtp-km[b-02023ayz0o] {
    flex-shrink: 0;
    min-width: 4.2rem;
    font-weight: 600;
    color: var(--rz-text-color);
    font-variant-numeric: tabular-nums;
}

.rtp-qa[b-02023ayz0o] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color);
    margin-bottom: 0.4rem;
}

.rtp-qa b[b-02023ayz0o] {
    color: var(--rz-text-color);
    font-weight: 600;
}
/* /Components/Shared/StatusAlert.razor.rz.scp.css */
.status-alert[b-2mir5dcgs2] {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.85rem 1rem;
    border-radius: 10px;
}

.status-dot[b-2mir5dcgs2] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-top: 0.4rem;
    flex-shrink: 0;
}

.status-icon[b-2mir5dcgs2] {
    font-size: 1.1rem;
    flex-shrink: 0;
    margin-top: 0.1rem;
}

.status-title[b-2mir5dcgs2] {
    font-weight: 600;
}

.status-desc[b-2mir5dcgs2] {
    font-size: 0.85rem;
    color: var(--rz-text-secondary-color);
    white-space: pre-line;
}

.status-success[b-2mir5dcgs2] {
    background: var(--rz-success-lighter);
}

    .status-success .status-dot[b-2mir5dcgs2] {
        background: var(--rz-success);
    }

    .status-success .status-icon[b-2mir5dcgs2] {
        color: var(--rz-success);
    }

    .status-success .status-title[b-2mir5dcgs2] {
        color: var(--rz-on-success-lighter);
    }

.status-warning[b-2mir5dcgs2] {
    background: var(--rz-warning-lighter);
}

    .status-warning .status-dot[b-2mir5dcgs2] {
        background: var(--rz-warning);
    }

    .status-warning .status-icon[b-2mir5dcgs2] {
        color: var(--rz-warning);
    }

    .status-warning .status-title[b-2mir5dcgs2] {
        color: var(--rz-on-warning-lighter);
    }

.status-danger[b-2mir5dcgs2] {
    background: var(--rz-danger-lighter);
}

    .status-danger .status-dot[b-2mir5dcgs2] {
        background: var(--rz-danger);
    }

    .status-danger .status-icon[b-2mir5dcgs2] {
        color: var(--rz-danger);
    }

    .status-danger .status-title[b-2mir5dcgs2] {
        color: var(--rz-on-danger-lighter);
    }

.status-info[b-2mir5dcgs2] {
    background: var(--rz-primary-lighter);
}

    .status-info .status-dot[b-2mir5dcgs2] {
        background: var(--rz-primary);
    }

    .status-info .status-icon[b-2mir5dcgs2] {
        color: var(--rz-primary);
    }

    .status-info .status-title[b-2mir5dcgs2] {
        color: var(--rz-on-primary-lighter);
    }

.status-gold[b-2mir5dcgs2] {
    background: var(--rz-gold-lighter);
}

    .status-gold .status-dot[b-2mir5dcgs2] {
        background: var(--rz-gold);
    }

    .status-gold .status-icon[b-2mir5dcgs2] {
        color: var(--rz-gold);
    }

    .status-gold .status-title[b-2mir5dcgs2] {
        color: var(--rz-on-gold-lighter);
    }
/* /Components/Shared/StrengthSessionEditorDialog.razor.rz.scp.css */
.strength-editor[b-mc471g4m53] {
    background: var(--rz-base-background-color);
    padding: 1.25rem;
    border-radius: 12px;
    width: 100%;
    max-width: 640px;
    box-sizing: border-box;
}

.strength-editor-row[b-mc471g4m53] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

.strength-editor-exercise[b-mc471g4m53] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    background: var(--rz-base-200);
    border: 1px solid transparent;
    border-radius: 10px;
    padding: 0.75rem;
}

.strength-editor-exercise.invalid[b-mc471g4m53] {
    border-color: var(--rz-danger);
}

.strength-editor-exercise-head[b-mc471g4m53] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.strength-editor-num[b-mc471g4m53] {
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    color: var(--rz-on-primary);
    font-size: 0.75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.strength-editor-actions[b-mc471g4m53] {
    display: flex;
    flex-shrink: 0;
}

/* 5 Felder nebeneinander am Desktop (Umschalter Wdh./Dauer in natürlicher Breite), 2 Spalten am
   Handy (Sätze/Dosierung, Wdh./RIR, Pause). */
.strength-editor-dose[b-mc471g4m53] {
    display: grid;
    grid-template-columns: minmax(0, 0.7fr) auto repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
    align-items: end;
}

.strength-editor-dose[b-mc471g4m53]  .rz-selectbar {
    flex-wrap: nowrap;
}

@media (max-width: 640px) {
    .strength-editor[b-mc471g4m53] {
        padding: 1rem;
    }

    .strength-editor-dose[b-mc471g4m53] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .strength-editor-dose[b-mc471g4m53]  .rz-selectbar {
        width: 100%;
    }

    .strength-editor-dose[b-mc471g4m53]  .rz-selectbar .rz-button {
        flex: 1;
    }

    .strength-editor-actions[b-mc471g4m53]  .rz-button {
        min-width: 2.5rem;
        min-height: 2.5rem;
    }
}
/* /Components/Shared/TimelineDialog.razor.rz.scp.css */
.timeline-list[b-qhnmj573p6] {
    display: flex;
    flex-direction: column;
    max-height: 65vh;
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 0.25rem;
}

.timeline-day[b-qhnmj573p6] {
    display: flex;
    gap: 0.85rem;
    padding-bottom: 1.25rem;
    position: relative;
    min-width: 0;
}

.timeline-day:not(:last-child)[b-qhnmj573p6]::before {
    content: "";
    position: absolute;
    left: 17px;
    top: 36px;
    bottom: -1.25rem;
    width: 2px;
    background: var(--rz-base-300);
}

.timeline-day-node[b-qhnmj573p6] {
    position: relative;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--rz-base-background-color);
    border: 1.5px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 1.1rem;
    z-index: 1;
}

.timeline-day-anchor .timeline-day-node[b-qhnmj573p6] {
    color: var(--rz-text-tertiary-color);
    border-style: dashed;
}

/* Zweites Icon als eigener kleiner Kreis, der die Haupt-Node am unteren rechten Rand überlappt (Achievement-
   Badge-Muster) — für Tage mit genau zwei unterschiedlichen Eintrags-Kategorien (siehe DistinctKinds).
   Bewusst NICHT als diagonal per clip-path geschnittenes Icon (erster Versuch, verworfen): Material-Icons
   sind Font-Glyphen, ein geometrischer Schnitt mittendurch ergibt einen zufälligen, oft unkenntlichen
   Icon-Rest statt eines sauberen Halb-Icons. Jedes Icon bekommt hier stattdessen seinen eigenen vollen
   kleinen Kreis, nichts wird beschnitten. */
.timeline-day-node-badge[b-qhnmj573p6] {
    position: absolute;
    right: -3px;
    bottom: -3px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--rz-base-background-color);
    border: 1px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.5rem;
}

.timeline-day-body[b-qhnmj573p6] {
    flex: 1;
    min-width: 0;
    padding-top: 0.15rem;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.timeline-day-date[b-qhnmj573p6] {
    color: var(--rz-text-tertiary-color);
}

.timeline-row[b-qhnmj573p6] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    border-radius: 8px;
    margin: 0 -0.4rem;
    padding: 0.1rem 0.4rem;
    min-width: 0;
}

.timeline-row-text[b-qhnmj573p6] {
    min-width: 0;
    overflow-wrap: anywhere;
}

.timeline-row-clickable[b-qhnmj573p6] {
    cursor: pointer;
}

.timeline-row-clickable:hover[b-qhnmj573p6] {
    background: var(--rz-base-200, var(--rz-base-300));
}

.timeline-row-title[b-qhnmj573p6] {
    font-weight: 600;
}

.timeline-row-detail[b-qhnmj573p6] {
    color: var(--rz-text-secondary-color);
}

.timeline-sentinel[b-qhnmj573p6] {
    display: flex;
    justify-content: center;
    padding: 0.5rem 0 1rem 2.7rem;
}

@media (max-width: 480px) {
    .timeline-list[b-qhnmj573p6] {
        max-height: 70vh;
    }
}
/* /Components/Shared/WeekTransitionDialog.razor.rz.scp.css */
/* Markdig-Output kommt per MarkupString roh rein -> ::deep, sonst greift das Blazor-CSS-Scoping nicht. */

.review-md[b-52i6lws43i]  > *:first-child {
    margin-top: 0;
}

.review-md[b-52i6lws43i]  h1,
.review-md[b-52i6lws43i]  h2,
.review-md[b-52i6lws43i]  h3 {
    color: var(--rz-text-color);
    font-weight: 700;
    line-height: 1.3;
}

.review-md[b-52i6lws43i]  h1 {
    font-size: 1rem;
    margin: 0 0 0.5rem;
}

.review-md[b-52i6lws43i]  h2 {
    font-size: 0.92rem;
    margin: 1rem 0 0.35rem;
}

.review-md[b-52i6lws43i]  h3 {
    font-size: 0.85rem;
    font-weight: 600;
    margin: 0.75rem 0 0.3rem;
}

.review-md[b-52i6lws43i]  p {
    font-size: 0.88rem;
    margin: 0 0 0.6rem;
}

.review-md[b-52i6lws43i]  ul,
.review-md[b-52i6lws43i]  ol {
    margin: 0 0 0.6rem;
    padding-left: 1.15rem;
    font-size: 0.88rem;
}

.review-md[b-52i6lws43i]  li {
    margin: 0.2rem 0;
}

.review-md[b-52i6lws43i]  strong {
    color: var(--rz-text-color);
}
/* /Components/Shared/WorkoutProfileChart.razor.rz.scp.css */
/* Gleiche Optik wie PowerProfileChart.razor.css (CSS-Isolation → eigene Kopie). Die Hover-Teile heißen wie dort
   (.ppc-cursor/.ppc-readout), weil power-profile.js sie über diese Klassen findet. */
.wpc-wrap[b-9hzkd090qv] {
    position: relative;
    width: 100%;
    background: var(--rz-base-200);
    border-radius: 8px;
    overflow: hidden;
}

/* 16px unten = Zeitachse, muss zu AxisPx im Code passen */
.wpc-svg[b-9hzkd090qv],
.wpc-hover[b-9hzkd090qv] {
    position: absolute;
    inset: 0 0 16px 0;
    width: 100%;
    height: calc(100% - 16px);
}

.wpc-compact .wpc-svg[b-9hzkd090qv] {
    inset: 0;
    height: 100%;
}

.wpc-line[b-9hzkd090qv] {
    fill: none;
    stroke: var(--rz-text-secondary-color);
    stroke-width: 1.5;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

/* Fuge zwischen zwei Blöcken in der Hintergrundfarbe — hält das Profil blockig */
.wpc-joint[b-9hzkd090qv] {
    stroke: var(--rz-base-200);
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}

.wpc-ref[b-9hzkd090qv] {
    stroke: var(--rz-text-tertiary-color);
    stroke-width: 1;
    stroke-dasharray: 4 4;
    vector-effect: non-scaling-stroke;
}

.wpc-label[b-9hzkd090qv] {
    position: absolute;
    font-size: 0.68rem;
    color: var(--rz-text-tertiary-color);
    pointer-events: none;
    line-height: 1;
    white-space: nowrap;
}

.wpc-ref-label[b-9hzkd090qv] {
    right: 4px;
}

.wpc-time[b-9hzkd090qv] {
    bottom: 3px;
    transform: translateX(-50%);
}

/* Fadenkreuz + Werte-Box: Inhalt kommt aus power-profile.js. touch-action: pan-y = horizontal wischen
   bewegt das Fadenkreuz, vertikal scrollt die Seite weiter. */
.wpc-hover[b-9hzkd090qv] {
    cursor: crosshair;
    touch-action: pan-y;
}

.ppc-cursor[b-9hzkd090qv] {
    display: none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 1px;
    background: var(--rz-text-color);
    pointer-events: none;
}

.ppc-readout[b-9hzkd090qv] {
    display: none;
    position: absolute;
    top: 4px;
    padding: 0.3rem 0.5rem;
    background: var(--rz-base-background-color);
    border: 1px solid var(--rz-base-300);
    border-radius: 6px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
    font-size: 0.72rem;
    line-height: 1.4;
    color: var(--rz-text-secondary-color);
    white-space: nowrap;
    pointer-events: none;
}

/* Kinder der Box erzeugt JS — ohne Blazor-Scope-Attribut, daher ::deep */
.ppc-readout[b-9hzkd090qv]  .ppc-r-time {
    color: var(--rz-text-tertiary-color);
}

.ppc-readout[b-9hzkd090qv]  .ppc-r-main {
    font-weight: 700;
    color: var(--rz-text-color);
}

.ppc-readout[b-9hzkd090qv]  .ppc-r-zone span {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    margin-right: 0.3rem;
}
/* /Components/Shared/ZoneDistributionBar.razor.rz.scp.css */
.zone-bar[b-6p8daomb3z] {
    display: flex;
    align-items: flex-end;
    width: 100%;
    gap: 2px;
}

.zone-bar-col[b-6p8daomb3z] {
    flex: 1 1 0;
    min-width: 2px;
    border-radius: 1px;
    cursor: help;
}

.zone-bar-empty[b-6p8daomb3z] {
    width: 100%;
    height: 2px;
    align-self: center;
    background: var(--rz-base-300);
    border-radius: 1px;
}
