/* /Components/Common/EnablePushBanner.razor.rz.scp.css */
.optin-banner[b-zmiixe74w8] {
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 10px;
    padding: 18px 20px;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

.optin-icon[b-zmiixe74w8] {
    font-size: 32px;
    flex-shrink: 0;
}

.optin-content[b-zmiixe74w8] {
    flex: 1;
}

.optin-title[b-zmiixe74w8] {
    font-size: 14px;
    font-weight: 700;
    margin-bottom: 4px;
}

.optin-body[b-zmiixe74w8] {
    font-size: 13px;
    color: var(--mud-palette-text-secondary);
    line-height: 1.5;
    margin-bottom: 12px;
}

.optin-actions[b-zmiixe74w8] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.optin-notnow[b-zmiixe74w8] {
    font-size: 13px;
    opacity: 0.6;
}

.ios-hint[b-zmiixe74w8] {
    background: #fff8e1;
    border: 1px solid #f59e0b;
    border-radius: 8px;
    padding: 12px 14px;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 12px;
}

.ios-hint-icon[b-zmiixe74w8] {
    font-size: 20px;
    flex-shrink: 0;
}

.ios-hint-text[b-zmiixe74w8] {
    font-size: 12px;
    color: #92400e;
    line-height: 1.5;
}

[b-zmiixe74w8] .ios-hint-text strong {
    color: #78350f;
}

.optin-banner.disabled[b-zmiixe74w8] {
    opacity: 0.5;
    cursor: not-allowed;
}
/* /Components/Note/FeelSparkline.razor.rz.scp.css */
.feel-sparkline[b-jbtd0cy8og] {
    display: block;
    width: 100%;
    height: 56px;
    overflow: visible; /* round markers on the first/last point sit half outside the viewBox */
}
/* /Components/Note/WorkoutNotesSection.razor.rz.scp.css */
.workout-notes-section[b-gpyx8tkapz] {
    scroll-margin-top: 56px;
    margin-top: 16px;
}

.notes-list[b-gpyx8tkapz] {
    max-height: 500px;
    overflow-y: auto;
    padding: 4px 0;
}

.note-card[b-gpyx8tkapz] {
    border-radius: 8px;
    border: 1px solid var(--mud-palette-lines-default);
}

.note-header[b-gpyx8tkapz] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.note-reactions[b-gpyx8tkapz] {
    display: flex;
    gap: 4px;
}

.notes-input-area[b-gpyx8tkapz] {
    border-top: 1px solid var(--mud-palette-lines-default);
    padding: 10px 0;
    background: var(--mud-palette-background);
}

.input-controls[b-gpyx8tkapz] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
}

.helper-text[b-gpyx8tkapz] {
    font-size: 10px;
    display: flex;
    align-items: center;
    gap: 4px;
}
/* /Components/Notifications/NotificationBell.razor.rz.scp.css */
[b-x5qew9e749] .amber-badge .mud-badge {
    background-color: #f59e0b !important;
    color: #1a1a1a !important;

    /* Seat the badge inside the icon button's bounds. The previous
       translate(20%, -20%) pushed it past the app bar's top edge, so the
       counter clipped — and the wider "9+" state crowded the right edge. */
    transform: scale(1) translate(-10%, 10%) !important;
}
/* /Components/Notifications/NotificationPopover.razor.rz.scp.css */
.notif-row[b-nuzgabpyf5] {
    position: relative;
    transition: background-color 0.15s ease;
}

.notif-row:hover[b-nuzgabpyf5] {
    background-color: rgba(0, 0, 0, 0.04);
}

.notif-row.unread[b-nuzgabpyf5] {
    background-color: rgba(255, 243, 224, 0.4);
    border-left: 3px solid #4caf50;
}

.notif-row:not(.unread)[b-nuzgabpyf5] {
    border-left: 3px solid transparent;
}

.priority-dot[b-nuzgabpyf5] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.priority-urgent[b-nuzgabpyf5] {
    background-color: #ef5350;
}

.priority-awareness[b-nuzgabpyf5] {
    background-color: #f59e0b;
}

.priority-info[b-nuzgabpyf5] {
    background-color: #d1d5db;
}

.priority-milestone[b-nuzgabpyf5] {
    background-color: #7c3aed;
}

.notif-title[b-nuzgabpyf5] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.notif-snippet[b-nuzgabpyf5] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* /Components/Schedule/RenderWorkoutRecord.razor.rz.scp.css */
/* ================================================================
   WORKOUT CARD — ATHLETE REDESIGN (Story 19-2)
   Reference: ux-athlete-schedule-redesign.html section WC-0
   ================================================================ */

.wk-card[b-k7hvcb25ee] {
    border-radius: 10px;
    overflow: hidden;
    background: white;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
    cursor: pointer;
    transition: box-shadow 0.15s;
    display: flex;
    flex-direction: row;
    /* 31-17: anchor for absolute plan-link dot. */
    position: relative;
}

.wk-card:hover[b-k7hvcb25ee] {
    box-shadow: 0 3px 12px rgba(0, 0, 0, 0.12);
}

/* Sport color accent bar — left edge */
.wk-sport-bar[b-k7hvcb25ee] {
    width: 5px;
    flex-shrink: 0;
    border-radius: 10px 0 0 10px;
}

/* Card body */
.wk-body[b-k7hvcb25ee] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Status strip — thin top bar */
.wk-status-strip[b-k7hvcb25ee] {
    height: 3px;
}

/* Card content area */
.wk-content[b-k7hvcb25ee] {
    padding: 10px 12px;
    flex: 1;
}

/* Header row: icon + code + title + intensity */
.wk-header[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 6px;
}

[b-k7hvcb25ee] .wk-sport-icon {
    font-size: 16px;
    flex-shrink: 0;
}

.wk-code[b-k7hvcb25ee] {
    font-size: 14px;
    font-weight: 800;
    color: #1a1a1a;
    letter-spacing: 0.3px;
    white-space: nowrap;
}

.wk-title[b-k7hvcb25ee] {
    font-size: 11px;
    color: #555;
    flex: 1;
    min-width: 0;
}

/* Intensity badges */
.wk-intensity-badge[b-k7hvcb25ee] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    padding: 2px 6px;
    border-radius: 8px;
    flex-shrink: 0;
}

.wk-intensity-badge.easy[b-k7hvcb25ee] {
    background: rgba(76, 175, 80, 0.12);
    color: #4caf50;
}

.wk-intensity-badge.moderate[b-k7hvcb25ee] {
    background: rgba(255, 152, 0, 0.12);
    color: #ff9800;
}

.wk-intensity-badge.hard[b-k7hvcb25ee] {
    background: rgba(229, 57, 53, 0.12);
    color: #e53935;
}

/* Intensity dot inside badge */
.wk-intensity-dot[b-k7hvcb25ee] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.wk-dot-easy[b-k7hvcb25ee] {
    background: #4caf50;
}

.wk-dot-moderate[b-k7hvcb25ee] {
    background: #ff9800;
}

.wk-dot-hard[b-k7hvcb25ee] {
    background: #e53935;
}

/* Ad-hoc badge */
.wk-adhoc-badge[b-k7hvcb25ee] {
    font-size: 9px;
    font-weight: 600;
    color: #e65100;
    background: rgba(230, 81, 0, 0.08);
    padding: 2px 6px;
    border-radius: 6px;
    flex-shrink: 0;
}

/* Intensity graph (planned workouts) */
.wk-graph[b-k7hvcb25ee] {
    width: 100%;
    height: 44px;
    border-radius: 6px;
    background: linear-gradient(90deg, rgba(89, 74, 226, 0.06) 0%, rgba(89, 74, 226, 0.02) 100%);
    margin-bottom: 6px;
    overflow: hidden;
    position: relative;
}

/* Metrics row (planned) */
.wk-metrics[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    color: #555;
}

.wk-metric[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 3px;
}

[b-k7hvcb25ee] .wk-metric-icon {
    font-size: 14px;
    opacity: 0.6;
}

.wk-metric-label[b-k7hvcb25ee] {
    font-size: 10px;
    color: #999;
}

.wk-metric-value[b-k7hvcb25ee] {
    font-weight: 600;
    color: #1a1a1a;
}

.wk-metric-est[b-k7hvcb25ee] {
    font-size: 10px;
    font-style: italic;
    color: #999;
}

/* Two-column metrics for completed */
.wk-metrics-grid[b-k7hvcb25ee] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 16px;
    font-size: 12px;
}

/* TLS delta */
.wk-delta[b-k7hvcb25ee] {
    font-size: 10px;
    font-weight: 700;
    padding: 1px 5px;
    border-radius: 6px;
}

.wk-delta.positive[b-k7hvcb25ee] {
    background: rgba(46, 125, 50, 0.1);
    color: #2e7d32;
}

.wk-delta.negative[b-k7hvcb25ee] {
    background: rgba(198, 40, 40, 0.08);
    color: #c62828;
}

/* Pace/speed row */
.wk-pace-row[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 3px;
    margin-top: 4px;
    font-size: 12px;
}

/* RPE / Feel row */
.wk-subjective[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
    font-size: 11px;
    color: #999;
}

.wk-rpe-badge[b-k7hvcb25ee] {
    background: rgba(0, 0, 0, 0.06);
    border-radius: 4px;
    padding: 1px 5px;
    font-weight: 700;
    font-size: 10px;
    color: #555;
}

.wk-feel[b-k7hvcb25ee] {
    font-size: 14px;
}

.wk-time-of-day[b-k7hvcb25ee] {
    font-size: 10px;
    color: #999;
    margin-left: auto;
}

/* Action row */
.wk-actions[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px 12px;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
}

[b-k7hvcb25ee] .wk-btn-complete {
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: none !important;
    padding: 4px 10px !important;
    min-width: unset !important;
}

/* Threshold / status labels in footer */
.wk-threshold-label[b-k7hvcb25ee] {
    font-size: 10px;
    font-weight: 600;
}

.wk-threshold-green[b-k7hvcb25ee] {
    color: #2e7d32;
}

.wk-threshold-red[b-k7hvcb25ee] {
    color: #c62828;
}

.wk-threshold-amber[b-k7hvcb25ee] {
    color: #e65100;
}

/* ================================================================
   31-17: PLAN-LINKED DOT (athlete day-view)
   ================================================================ */

.plan-link-dot-btn[b-k7hvcb25ee] {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 28px;          /* ~44px effective tap target including padding */
    height: 28px;
    padding: 10px;        /* centers the 8px dot, keeps tap area >= 44px-ish */
    border: 0;
    background: transparent;
    cursor: pointer;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
}

.plan-link-dot-btn:focus-visible[b-k7hvcb25ee] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -4px;
    border-radius: 50%;
}

.plan-link-dot[b-k7hvcb25ee] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #7E57C2;
    box-shadow: 0 0 0 1px #fff;  /* 1px white ring so the dot reads over any card background */
    display: inline-block;
}

/* ================================================================
   31-18: COACH NOTE INLINE CALLOUT (athlete day-view)
   ================================================================ */

.wk-coach-note[b-k7hvcb25ee] {
    background: rgba(25, 118, 210, 0.06);
    border-left: 3px solid var(--mud-palette-info);
    border-radius: 4px;
    padding: 6px 8px;
    margin: 8px 12px 0 12px;
}

.wk-coach-note-label[b-k7hvcb25ee] {
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--mud-palette-info);
    margin-bottom: 2px;
    line-height: 1.2;
}

.wk-coach-note-body[b-k7hvcb25ee] {
    font-size: 12px;
    font-style: italic;
    color: var(--mud-palette-text-primary);
    line-height: 1.4;
    word-break: break-word;
    /* Preserve coach-typed newlines from the Lines="3" textarea (see story 31-18). */
    white-space: pre-wrap;
}

/* ================================================================
   37-2: "JUST FOR YOU" INDIVIDUAL-ASSIGNMENT CAPTION (athlete day-view)
   Sits directly above the coach-note callout and shares its gutter so the
   two read as one stacked block rather than two competing badges.
   ================================================================ */

.wk-just-for-you[b-k7hvcb25ee] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 8px 12px 0 12px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.2px;
    color: var(--mud-palette-primary);
    opacity: 0.85;
}
/* /Components/Schedule/WeeklyCalendarView.razor.rz.scp.css */
/* Week Navigator Header */
.week-nav-header[b-v3joygi6rb] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.week-nav-label[b-v3joygi6rb] {
    font-size: 14px;
    font-weight: 700;
}

/* Week Strip — 7 day pills */
.week-strip[b-v3joygi6rb] {
    display: flex;
    gap: 2px;
    padding: 8px 12px;
    background: var(--mud-palette-background);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.week-strip-day[b-v3joygi6rb] {
    flex: 1;
    text-align: center;
    padding: 6px 2px 4px;
    border-radius: 8px;
    cursor: pointer;
    position: relative;
    transition: all 0.15s;
}

.week-strip-day:hover[b-v3joygi6rb] {
    background: rgba(0, 0, 0, 0.04);
}

.week-strip-day.active[b-v3joygi6rb] {
    background: var(--mud-palette-primary);
    color: white;
}

.week-strip-day.today[b-v3joygi6rb] {
    font-weight: 700;
}

.week-strip-day .day-label[b-v3joygi6rb] {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.3px;
}

.week-strip-day .day-num[b-v3joygi6rb] {
    font-size: 13px;
    font-weight: 700;
    margin-top: 1px;
}

.week-strip-day.active .day-label[b-v3joygi6rb],
.week-strip-day.active .day-num[b-v3joygi6rb] {
    color: white;
}

.week-strip-day .day-dots[b-v3joygi6rb] {
    display: flex;
    justify-content: center;
    gap: 2px;
    margin-top: 3px;
    min-height: 6px;
}

.week-strip-day .day-dot[b-v3joygi6rb] {
    width: 5px;
    height: 5px;
    border-radius: 50%;
}

.week-strip-day.active .day-dot[b-v3joygi6rb] {
    opacity: 0.7;
}

.week-strip-load[b-v3joygi6rb] {
    height: 2px;
    border-radius: 1px;
    margin: 2px auto 0;
    opacity: 0.6;
}

/* Weekly Summary */
.week-summary[b-v3joygi6rb] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px 12px;
    gap: 4px;
    background: var(--mud-palette-background);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

/* Day Sections */
.day-section[b-v3joygi6rb] {
    padding: 0 12px;
    scroll-margin-top: 56px; /* offset for fixed MudBlazor AppBar */
}

.day-section-header[b-v3joygi6rb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 0 6px;
}

.day-section-label[b-v3joygi6rb] {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--mud-palette-text-secondary);
}

.day-section-date[b-v3joygi6rb] {
    font-size: 11px;
    color: var(--mud-palette-text-disabled);
}

.day-section-today[b-v3joygi6rb] {
    color: var(--mud-palette-primary);
}

/* Rest day label */
.rest-day-label[b-v3joygi6rb] {
    text-align: center;
    padding: 16px;
    color: var(--mud-palette-text-disabled);
    font-size: 13px;
    font-style: italic;
}

/* Day cards stack */
.day-cards-stack[b-v3joygi6rb] {
    padding-bottom: 4px;
}
/* /Components/Workout/WorkoutColumnChooser.razor.rz.scp.css */
.wl-chooser-wrapper[b-3ws7ssezmu] {
    position: relative;
    display: inline-flex;
}

.wl-gear-btn[b-3ws7ssezmu] {
    color: var(--mud-palette-text-secondary);
}

/* Desktop popover — anchored to gear */
.wl-chooser-popover[b-3ws7ssezmu] {
    position: absolute;
    right: 0;
    top: 40px;
    width: 280px;
    max-height: 70vh;
    overflow-y: auto;
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
    padding: 14px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.12);
    z-index: 9999;
}

/* Mobile bottom-sheet */
.wl-chooser-sheet[b-3ws7ssezmu] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--mud-palette-surface);
    border-top: 1px solid var(--mud-palette-lines-default);
    padding: 14px 16px 18px;
    border-radius: 16px 16px 0 0;
    box-shadow: 0 -6px 20px rgba(0,0,0,0.2);
    z-index: 9999;
    max-height: 80vh;
    overflow-y: auto;
}

.wl-chooser-grip[b-3ws7ssezmu] {
    width: 36px;
    height: 4px;
    border-radius: 2px;
    background: var(--mud-palette-action-disabled);
    margin: 0 auto 14px;
}

.wl-chooser-title[b-3ws7ssezmu] {
    font-size: 15px;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.wl-chooser-reset[b-3ws7ssezmu] {
    font-size: 11px;
    color: var(--mud-palette-primary);
    font-weight: 600;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    background: transparent;
    border: none;
    padding: 4px 8px;
}

.wl-chooser-reset:hover[b-3ws7ssezmu] {
    text-decoration: underline;
}

.wl-chooser-group-label[b-3ws7ssezmu] {
    font-size: 10px;
    font-weight: 700;
    color: var(--mud-palette-text-disabled);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin: 10px 0 6px;
}

.wl-chooser-item[b-3ws7ssezmu] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 4px 4px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.wl-chooser-item:last-of-type[b-3ws7ssezmu] {
    border-bottom: none;
}

.wl-chooser-item-disabled[b-3ws7ssezmu] {
    opacity: 0.55;
}

.wl-chooser-label[b-3ws7ssezmu] {
    font-size: 13px;
    color: var(--mud-palette-text-primary);
    flex: 1;
}

.wl-chooser-default-tag[b-3ws7ssezmu] {
    font-size: 10px;
    color: var(--mud-palette-text-disabled);
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.wl-chooser-hidden-tag[b-3ws7ssezmu] {
    font-size: 10px;
    color: var(--mud-palette-text-disabled);
    font-style: italic;
}

.wl-chooser-close-row[b-3ws7ssezmu] {
    display: flex;
    justify-content: flex-end;
    margin-top: 10px;
}
/* /Components/Workout/WorkoutListDesktopHeader.razor.rz.scp.css */
.wl-desktop-head[b-tazuurynm5] {
    display: grid;
    align-items: center;
    border-bottom: 2px solid var(--mud-palette-lines-default);
    background: var(--mud-palette-background-grey);
    min-height: 34px;
}

.wl-d-head[b-tazuurynm5] {
    padding: 6px 8px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--mud-palette-text-secondary);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.wl-d-head.num[b-tazuurynm5] {
    text-align: right;
}

.wl-row-band[b-tazuurynm5] {
    height: 100%;
    min-height: 34px;
    background: transparent;
}
/* /Components/Workout/WorkoutListRow.razor.rz.scp.css */
/* Mobile compact row — 62px target, two-line layout */
.wl-row[b-xeqtbvtao0] {
    display: flex;
    align-items: stretch;
    background: var(--mud-palette-surface);
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    transition: background-color 0.15s ease;
    min-height: 62px;
    outline: none;
}

.wl-row:hover[b-xeqtbvtao0],
.wl-row:focus[b-xeqtbvtao0] {
    background: var(--mud-palette-background-grey);
}

.wl-row-expanded[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-success-rgb), 0.08);
    border-bottom: none;
}

.wl-row-planned[b-xeqtbvtao0] {
    background: var(--mud-palette-background-grey);
}

.wl-row-content[b-xeqtbvtao0] {
    flex: 1;
    padding: 8px 10px 8px 12px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
}

/* ── Band ──────────────────────────────────────────────────────────────── */
.wl-row-band[b-xeqtbvtao0] {
    width: 4px;
    flex-shrink: 0;
}

.wl-row-band-green[b-xeqtbvtao0] {
    background: var(--mud-palette-success);
}

.wl-row-band-amber[b-xeqtbvtao0] {
    background: var(--mud-palette-warning);
}

.wl-row-band-red[b-xeqtbvtao0] {
    background: var(--mud-palette-error);
}

.wl-row-band-grey[b-xeqtbvtao0] {
    background: var(--mud-palette-action-default);
}

.wl-row-band-dashed-red[b-xeqtbvtao0] {
    background: repeating-linear-gradient(to bottom,
        var(--mud-palette-error) 0,
        var(--mud-palette-error) 4px,
        transparent 4px,
        transparent 7px);
}

/* ── Line 1 — date · sport · title · pill ──────────────────────────────── */
.wl-line-1[b-xeqtbvtao0] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    min-width: 0;
}

.wl-date[b-xeqtbvtao0] {
    font-size: 11px;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    flex-shrink: 0;
    min-width: 52px;
}

.wl-row-missed .wl-date[b-xeqtbvtao0] {
    color: var(--mud-palette-error);
}

.wl-sport-icon[b-xeqtbvtao0] {
    flex-shrink: 0;
}

.wl-title[b-xeqtbvtao0] {
    font-size: 14px;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

.wl-title-missed[b-xeqtbvtao0] {
    text-decoration: line-through;
    color: var(--mud-palette-text-secondary);
}

.wl-title-planned[b-xeqtbvtao0] {
    font-style: italic;
    color: var(--mud-palette-text-secondary);
}

/* ── Pills & chips ─────────────────────────────────────────────────────── */
.wl-comp-pill[b-xeqtbvtao0] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 10px;
    white-space: nowrap;
    flex-shrink: 0;
}

.wl-comp-pill-green[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-success-rgb), 0.10);
    color: var(--mud-palette-success);
    border: 1px solid rgba(var(--mud-palette-success-rgb), 0.35);
}

.wl-comp-pill-amber[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-warning-rgb), 0.10);
    color: var(--mud-palette-warning);
    border: 1px solid rgba(var(--mud-palette-warning-rgb), 0.35);
}

.wl-comp-pill-red[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-error-rgb), 0.09);
    color: var(--mud-palette-error);
    border: 1px solid rgba(var(--mud-palette-error-rgb), 0.35);
}

.wl-comp-pill-grey[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-action-default-rgb), 0.10);
    color: var(--mud-palette-text-secondary);
    border: 1px solid rgba(var(--mud-palette-action-default-rgb), 0.35);
}

.wl-missed-chip[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-error-rgb), 0.09);
    color: var(--mud-palette-error);
    border: 1px solid rgba(var(--mud-palette-error-rgb), 0.35);
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 8px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    white-space: nowrap;
    flex-shrink: 0;
}

.wl-planned-chip[b-xeqtbvtao0] {
    background: rgba(var(--mud-palette-action-default-rgb), 0.10);
    color: var(--mud-palette-text-secondary);
    border: 1px solid rgba(var(--mud-palette-action-default-rgb), 0.35);
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 8px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* ── Line 2 — metrics strip ────────────────────────────────────────────── */
.wl-line-2[b-xeqtbvtao0] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    color: var(--mud-palette-text-secondary);
}

.wl-row-missed .wl-line-2[b-xeqtbvtao0] {
    opacity: 0.55;
}

.wl-row-planned .wl-line-2[b-xeqtbvtao0] {
    opacity: 0.70;
}

.wl-metric[b-xeqtbvtao0] {
    display: inline-flex;
    align-items: baseline;
    gap: 3px;
    white-space: nowrap;
}

.wl-metric-value[b-xeqtbvtao0] {
    color: var(--mud-palette-text-primary);
    font-weight: 600;
}

.wl-metric-label[b-xeqtbvtao0] {
    color: var(--mud-palette-text-disabled);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.wl-effort-metric[b-xeqtbvtao0] {
    color: var(--wl-effort-metric, #7e57c2);
}

.wl-effort-metric .wl-metric-value[b-xeqtbvtao0],
.wl-effort-metric .wl-metric-label[b-xeqtbvtao0] {
    color: var(--wl-effort-metric, #7e57c2);
}

/* ── Chevron ───────────────────────────────────────────────────────────── */
.wl-chev[b-xeqtbvtao0] {
    padding: 0 12px;
    display: flex;
    align-items: center;
    color: var(--mud-palette-text-disabled);
    font-size: 18px;
    flex-shrink: 0;
    transition: transform 0.2s ease;
}

.wl-chev-open[b-xeqtbvtao0] {
    transform: rotate(90deg);
}

/* ── Expand panel ──────────────────────────────────────────────────────── */
.wl-expanded[b-xeqtbvtao0] {
    background: var(--mud-palette-background-grey);
    border-bottom: 1px solid var(--mud-palette-lines-default);
    padding: 10px 14px 12px 18px;
}

.wl-exp-row[b-xeqtbvtao0] {
    display: flex;
    justify-content: space-between;
    padding: 5px 0;
    font-size: 12px;
    border-bottom: 1px dotted var(--mud-palette-lines-default);
}

.wl-exp-row:last-of-type[b-xeqtbvtao0] {
    border-bottom: none;
}

.wl-exp-label[b-xeqtbvtao0] {
    color: var(--mud-palette-text-disabled);
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: 0.4px;
}

.wl-exp-value[b-xeqtbvtao0] {
    color: var(--mud-palette-text-primary);
    font-weight: 600;
    font-size: 13px;
}

.wl-exp-actions[b-xeqtbvtao0] {
    padding: 12px 0 2px;
    display: flex;
    justify-content: flex-end;
}

.wl-exp-fulldetails[b-xeqtbvtao0] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    padding: 8px 14px;
    border-radius: 20px;
    border: none;
    cursor: pointer;
}

.wl-exp-fulldetails:hover[b-xeqtbvtao0] {
    background: var(--mud-palette-primary-darken);
}

.wl-exp-arrow[b-xeqtbvtao0] {
    font-size: 14px;
}

.wl-muted[b-xeqtbvtao0] {
    color: var(--mud-palette-text-disabled);
    font-size: 11px;
    font-weight: 400;
    margin-left: 4px;
}

/* ── Desktop grid row ──────────────────────────────────────────────────── */
.wl-desktop-row[b-xeqtbvtao0] {
    display: grid;
    align-items: center;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    min-height: 50px;
    background: var(--mud-palette-surface);
    outline: none;
}

.wl-desktop-row:hover[b-xeqtbvtao0],
.wl-desktop-row:focus[b-xeqtbvtao0] {
    background: var(--mud-palette-background-grey);
}

.wl-desktop-row .wl-row-band[b-xeqtbvtao0] {
    height: 100%;
    min-height: 50px;
}

.desktop-cell[b-xeqtbvtao0] {
    padding: 6px 8px;
    font-size: 13px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.desktop-cell.num[b-xeqtbvtao0] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.wl-d-date[b-xeqtbvtao0] {
    font-weight: 500;
}

.wl-row-missed.wl-desktop-row .wl-d-date[b-xeqtbvtao0] {
    color: var(--mud-palette-error);
}

.wl-d-sport[b-xeqtbvtao0] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.wl-d-title[b-xeqtbvtao0] {
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.wl-d-chev[b-xeqtbvtao0] {
    text-align: center;
    color: var(--mud-palette-text-disabled);
    font-size: 18px;
}

.wl-row-planned.wl-desktop-row[b-xeqtbvtao0] {
    background: var(--mud-palette-background-grey);
}
/* /Pages/Athlete/AthletePass.razor.rz.scp.css */
[b-30jdgvkzv4] .alert-community {
    background: rgba(233, 30, 99, 0.06);
    color: #e91e63;
    border-left: 4px solid #e91e63;
}

[b-30jdgvkzv4] .alert-platform {
    background: rgba(126, 87, 194, 0.08);
    color: #5e35b1;
}
/* /Pages/Athlete/TrainingLogHistory.razor.rz.scp.css */
.tlh[b-d2z7vgolh2] {
    display: flex;
    flex-direction: column;
}

/* ── Sticky range bar ───────────────────────────────────────────────────── */

.tlh-rangebar[b-d2z7vgolh2] {
    /* The window is the scroll container and MudAppBar is fixed over it, so top:0 would park
       the chips behind the app bar. Offset by the app bar's own height variable. */
    position: sticky;
    top: var(--mud-appbar-height, 64px);
    z-index: 3;
    background: var(--mud-palette-surface);
    border-bottom: 1px solid var(--mud-palette-divider);
    padding: 8px 0 4px;
}

.tlh-custom-range[b-d2z7vgolh2] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    max-width: 460px;
    padding: 4px 0 8px;
}

/* ── Feel trend ─────────────────────────────────────────────────────────── */

.tlh-trend[b-d2z7vgolh2] {
    padding: 10px 12px 6px;
    border: 1px solid var(--mud-palette-divider);
    border-radius: var(--mud-default-borderradius);
}

.tlh-trend-caption[b-d2z7vgolh2] {
    display: block;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 4px;
}

.tlh-trend-axis[b-d2z7vgolh2] {
    display: flex;
    justify-content: space-between;
    font-size: 0.7rem;
    color: var(--mud-palette-text-disabled);
    margin-top: 6px;
}

.tlh-focusbar[b-d2z7vgolh2] {
    padding: 8px 0 4px;
}

/* ── Feel dots ──────────────────────────────────────────────────────────── */

.tlh-feel[b-d2z7vgolh2] {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}

.tlh-dot[b-d2z7vgolh2] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--mud-palette-divider);
    display: inline-block;
}

.tlh-dot-on[b-d2z7vgolh2] {
    background: var(--mud-palette-primary);
}

.tlh-dot-low[b-d2z7vgolh2] {
    background: var(--mud-palette-error);
}

.tlh-feel small[b-d2z7vgolh2] {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
    margin-left: 4px;
}

.tlh-blank[b-d2z7vgolh2] {
    color: var(--mud-palette-text-disabled);
}

/* ── 3B: the column table ───────────────────────────────────────────────── */

/* Scroll the TABLE, never the page — the range bar and app bar stay put. */
.tlh-table-scroll[b-d2z7vgolh2] {
    overflow-x: auto;
    border: 1px solid var(--mud-palette-divider);
    border-radius: var(--mud-default-borderradius);
}

.tlh-table[b-d2z7vgolh2] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.tlh-table th[b-d2z7vgolh2] {
    text-align: left;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    color: var(--mud-palette-text-secondary);
    background: var(--mud-palette-background-gray);
    padding: 7px 8px;
    border-bottom: 1px solid var(--mud-palette-divider);
    white-space: nowrap;
}

.tlh-table td[b-d2z7vgolh2] {
    padding: 7px 8px;
    border-bottom: 1px solid var(--mud-palette-divider);
    vertical-align: middle;
    color: var(--mud-palette-text-secondary);
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tlh-table .tlh-col-period[b-d2z7vgolh2] {
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    white-space: nowrap;
}

.tlh-table .tlh-col-feel[b-d2z7vgolh2],
.tlh-table .tlh-col-reaction[b-d2z7vgolh2] {
    white-space: nowrap;
    width: 1%;
}

.tlh-row[b-d2z7vgolh2] {
    cursor: pointer;
}

.tlh-row:hover[b-d2z7vgolh2],
.tlh-row:focus-visible[b-d2z7vgolh2] {
    background: var(--mud-palette-action-default-hover);
}

.tlh-row-open[b-d2z7vgolh2] {
    background: var(--mud-palette-action-default-hover);
}

.tlh-row-detail td[b-d2z7vgolh2] {
    white-space: normal;
    max-width: none;
    background: var(--mud-palette-background-gray);
}

/* ── 3A: stacked cards ──────────────────────────────────────────────────── */

.tlh-card-head[b-d2z7vgolh2] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    cursor: pointer;
}

.tlh-card-head:hover[b-d2z7vgolh2],
.tlh-card-head:focus-visible[b-d2z7vgolh2] {
    background: var(--mud-palette-action-default-hover);
}

.tlh-card-body[b-d2z7vgolh2] {
    padding: 4px 12px 10px;
    border-top: 1px solid var(--mud-palette-divider);
}

/* ── 3C: focus rows ─────────────────────────────────────────────────────── */

.tlh-rows[b-d2z7vgolh2] {
    border: 1px solid var(--mud-palette-divider);
    border-radius: var(--mud-default-borderradius);
    overflow: hidden;
}

.tlh-focus-row[b-d2z7vgolh2] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-bottom: 1px solid var(--mud-palette-divider);
    cursor: pointer;
    font-size: 0.8rem;
}

.tlh-focus-row:hover[b-d2z7vgolh2],
.tlh-focus-row:focus-visible[b-d2z7vgolh2],
.tlh-focus-row-open[b-d2z7vgolh2] {
    background: var(--mud-palette-action-default-hover);
}

.tlh-focus-detail[b-d2z7vgolh2] {
    padding: 4px 12px 10px;
    border-bottom: 1px solid var(--mud-palette-divider);
    background: var(--mud-palette-background-gray);
}

.tlh-period[b-d2z7vgolh2] {
    font-weight: 600;
    flex: 0 0 auto;
    white-space: nowrap;
}

.tlh-answer[b-d2z7vgolh2] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.tlh-card-head .tlh-period[b-d2z7vgolh2] {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tlh-chevron[b-d2z7vgolh2] {
    flex-shrink: 0;
    color: var(--mud-palette-text-disabled);
}

/* ── Expanded entry ─────────────────────────────────────────────────────── */

.tlh-qa[b-d2z7vgolh2] {
    margin-top: 8px;
}

.tlh-q[b-d2z7vgolh2] {
    display: block;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    color: var(--mud-palette-text-secondary);
}

.tlh-detail-reaction[b-d2z7vgolh2] {
    display: flex;
    align-items: center;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid var(--mud-palette-divider);
}
/* /Pages/AthleteDetails/AthleteDetailsDashboard.razor.rz.scp.css */
/* Story 26-3 — Workout list section dividers + week-group accordion */
/* No ::deep here: these elements are authored directly in this file (not inside a
   child component's own template), and every ancestor between them and the page
   root is a MudBlazor component — none of which emit this file's scope attribute.
   ::deep compiles to a descendant-of-scope-attribute selector, which never matched
   anything, so this CSS was dead: no flex row, no padding, no banding. */
.wl-section-divider[b-kpn9h0ol22] {
    background: var(--mud-palette-background-grey);
    padding: 10px 14px;
    border-top: 1px solid var(--mud-palette-lines-default);
    border-bottom: 1px solid var(--mud-palette-lines-default);
    font-size: 12px;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.wl-section-divider-future[b-kpn9h0ol22] {
    background: rgba(var(--mud-palette-warning-rgb), 0.12);
}

.wl-section-title[b-kpn9h0ol22] {
    flex: 1;
}

.wl-section-count[b-kpn9h0ol22] {
    color: var(--mud-palette-text-disabled);
    font-weight: 400;
    font-size: 11px;
    text-transform: none;
}

.wl-week-group-header[b-kpn9h0ol22] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 14px;
    background: var(--mud-palette-background-grey);
    border-top: 1px solid var(--mud-palette-lines-default);
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    outline: none;
}

.wl-week-group-header:hover[b-kpn9h0ol22],
.wl-week-group-header:focus[b-kpn9h0ol22] {
    background: var(--mud-palette-background-greyer);
}

.wl-partial-week-chip[b-kpn9h0ol22] {
    flex-shrink: 0;
}
/* /Pages/Authentication/Login.razor.rz.scp.css */
.login-container[b-sa4prqev2q] {
    display: flex;
    justify-content: center;
    padding: 16px;
}

.login-card[b-sa4prqev2q] {
    width: 100%;
    max-width: 420px;
}

@media (max-width: 599px) {
    .login-container[b-sa4prqev2q] {
        padding: 0;
    }

    .login-card[b-sa4prqev2q] {
        box-shadow: none !important;
        border-radius: 0 !important;
    }
}
/* /Pages/Authentication/Register.razor.rz.scp.css */
.register-container[b-3pq143hwkb] {
    display: flex;
    justify-content: center;
    padding: 16px;
}

.register-card[b-3pq143hwkb] {
    width: 100%;
    max-width: 520px;
}

@media (max-width: 599px) {
    .register-container[b-3pq143hwkb] {
        padding: 0;
    }

    .register-card[b-3pq143hwkb] {
        box-shadow: none !important;
        border-radius: 0 !important;
    }
}

.register-pill-toggle[b-3pq143hwkb] {
    border-radius: 24px;
    overflow: hidden;
}

.team-badge[b-3pq143hwkb] {
    display: flex;
    align-items: center;
    padding: 12px 16px;
    border-radius: 8px;
    background-color: rgba(var(--mud-palette-success-rgb), 0.12);
    border: 1px solid rgba(var(--mud-palette-success-rgb), 0.4);
}

.org-section-card[b-3pq143hwkb] {
    border: 1px solid var(--mud-palette-divider);
    border-radius: 8px;
}

.org-section-title[b-3pq143hwkb] {
    font-weight: 600;
}
/* /Pages/Coach/LicenseManagement/BulkLicensePurchase.razor.rz.scp.css */
.bulk-purchase-page[b-ustkm2c0ya] {
    --bp-primary: var(--mud-palette-primary);
    --bp-primary-soft: rgba(89, 74, 226, 0.08);
    --bp-primary-border: rgba(89, 74, 226, 0.3);
    --bp-community: #e91e63;
    --bp-community-soft: rgba(233, 30, 99, 0.06);
    --bp-community-border: rgba(233, 30, 99, 0.18);
    --bp-surface: var(--mud-palette-surface);
    --bp-bg: var(--mud-palette-background-gray);
    --bp-border: var(--mud-palette-lines-default);
    --bp-text: var(--mud-palette-text-primary);
    --bp-text-2: var(--mud-palette-text-secondary);
    --bp-text-3: var(--mud-palette-text-disabled);
    --bp-status-green: #2e7d32;
    --bp-status-blue: #1565c0;
    --bp-status-amber: #e65100;
}

.bulk-purchase-page .page-title[b-ustkm2c0ya] {
    font-size: 22px;
    font-weight: 700;
    color: var(--bp-text);
    margin-top: 4px;
}

.bulk-purchase-page .page-subtitle[b-ustkm2c0ya] {
    font-size: 13px;
    color: var(--bp-text-2);
    margin-bottom: 24px;
}

.bulk-purchase-page .purchase-grid[b-ustkm2c0ya] {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 24px;
    align-items: start;
}

.bulk-purchase-page .picker-card[b-ustkm2c0ya] {
    border: 1px solid var(--bp-border);
    border-radius: 10px;
    padding: 22px;
}

.bulk-purchase-page .picker-heading[b-ustkm2c0ya] {
    font-size: 15px;
    font-weight: 600;
    color: var(--bp-text);
    margin-bottom: 4px;
}

.bulk-purchase-page .picker-caption[b-ustkm2c0ya] {
    font-size: 12px;
    color: var(--bp-text-3);
    margin-bottom: 16px;
}

.bulk-purchase-page .quick-picks[b-ustkm2c0ya] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 20px;
}

.bulk-purchase-page .chip[b-ustkm2c0ya] {
    padding: 8px 14px;
    border-radius: 20px;
    border: 1px solid var(--bp-border);
    background: var(--bp-bg);
    font-size: 13px;
    font-weight: 500;
    color: var(--bp-text-2);
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
    font-family: inherit;
}

.bulk-purchase-page .chip:hover[b-ustkm2c0ya] {
    border-color: var(--bp-primary);
    color: var(--bp-primary);
}

.bulk-purchase-page .chip.chip-selected[b-ustkm2c0ya] {
    background: var(--bp-primary);
    color: white;
    border-color: var(--bp-primary);
}

.bulk-purchase-page .qty-stepper[b-ustkm2c0ya] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    background: var(--bp-bg);
    border: 1px solid var(--bp-border);
    border-radius: 10px;
    margin-bottom: 14px;
}

.bulk-purchase-page .qty-label[b-ustkm2c0ya] {
    font-size: 12px;
    color: var(--bp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    flex-shrink: 0;
}

.bulk-purchase-page .stepper-btn[b-ustkm2c0ya] {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    border: 1px solid var(--bp-border);
    background: var(--bp-surface);
    color: var(--bp-text);
    font-size: 18px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.bulk-purchase-page .stepper-btn:hover:not(:disabled)[b-ustkm2c0ya] {
    border-color: var(--bp-primary);
    color: var(--bp-primary);
}

.bulk-purchase-page .stepper-btn:disabled[b-ustkm2c0ya] {
    opacity: 0.4;
    cursor: not-allowed;
}

.bulk-purchase-page .qty-input[b-ustkm2c0ya] {
    width: 70px;
    text-align: center;
    font-size: 22px;
    font-weight: 700;
    color: var(--bp-text);
    border: none;
    background: transparent;
    outline: none;
    -moz-appearance: textfield;
}

.bulk-purchase-page .qty-input[b-ustkm2c0ya]::-webkit-outer-spin-button,
.bulk-purchase-page .qty-input[b-ustkm2c0ya]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.bulk-purchase-page .qty-suffix[b-ustkm2c0ya] {
    font-size: 13px;
    color: var(--bp-text-2);
    margin-left: -4px;
}

.bulk-purchase-page .helper-line[b-ustkm2c0ya] {
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
}

.bulk-purchase-page .helper-icon[b-ustkm2c0ya] {
    font-weight: 700;
}

.bulk-purchase-page .helper-green[b-ustkm2c0ya] {
    color: var(--bp-status-green);
}

.bulk-purchase-page .helper-blue[b-ustkm2c0ya] {
    color: var(--bp-status-blue);
}

.bulk-purchase-page .helper-amber[b-ustkm2c0ya] {
    color: var(--bp-status-amber);
}

.bulk-purchase-page .summary-card[b-ustkm2c0ya] {
    background: linear-gradient(180deg, var(--bp-surface), var(--bp-bg));
    border: 1px solid var(--bp-border);
    border-radius: 10px;
    padding: 22px;
    position: sticky;
    top: 20px;
}

.bulk-purchase-page .summary-heading[b-ustkm2c0ya] {
    font-size: 13px;
    font-weight: 600;
    color: var(--bp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 14px;
}

.bulk-purchase-page .summary-row[b-ustkm2c0ya] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    font-size: 13px;
    color: var(--bp-text-2);
}

.bulk-purchase-page .summary-row .value[b-ustkm2c0ya] {
    font-weight: 600;
    color: var(--bp-text);
}

.bulk-purchase-page .summary-row.total[b-ustkm2c0ya] {
    border-top: 1px solid var(--bp-border);
    padding-top: 14px;
    margin-top: 6px;
    font-size: 15px;
}

.bulk-purchase-page .summary-row.total .value[b-ustkm2c0ya] {
    font-size: 22px;
    font-weight: 700;
    color: var(--bp-primary);
}

.bulk-purchase-page .pool-preview[b-ustkm2c0ya] {
    background: var(--bp-primary-soft);
    border: 1px solid var(--bp-primary-border);
    border-radius: 8px;
    padding: 12px 14px;
    margin: 14px 0;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    color: var(--bp-text);
}

.bulk-purchase-page .pool-icon[b-ustkm2c0ya] {
    font-size: 18px;
}

.bulk-purchase-page .community-preview[b-ustkm2c0ya] {
    background: var(--bp-community-soft);
    border: 1px solid var(--bp-community-border);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 16px;
}

.bulk-purchase-page .community-label[b-ustkm2c0ya] {
    font-size: 12px;
    color: var(--bp-community);
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
}

.bulk-purchase-page .progress-bar-track[b-ustkm2c0ya] {
    height: 8px;
    background: rgba(233, 30, 99, 0.12);
    border-radius: 4px;
    overflow: hidden;
}

.bulk-purchase-page .progress-bar-fill[b-ustkm2c0ya] {
    height: 100%;
    background: linear-gradient(90deg, var(--bp-primary), var(--bp-community));
    border-radius: 4px;
    transition: width 0.3s;
}

.bulk-purchase-page .progress-meta[b-ustkm2c0ya] {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    color: var(--bp-text-2);
    margin-top: 6px;
}

.bulk-purchase-page .progress-meta .earned[b-ustkm2c0ya] {
    color: var(--bp-community);
    font-weight: 600;
}

.bulk-purchase-page .checkout-btn[b-ustkm2c0ya] {
    width: 100%;
    padding: 14px 20px;
    border-radius: 8px;
    border: none;
    background: var(--bp-primary);
    color: white;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    transition: filter 0.15s, box-shadow 0.15s;
}

.bulk-purchase-page .checkout-btn:hover:not(:disabled)[b-ustkm2c0ya] {
    filter: brightness(1.1);
    box-shadow: 0 4px 12px rgba(89, 74, 226, 0.35);
}

.bulk-purchase-page .checkout-btn:disabled[b-ustkm2c0ya] {
    opacity: 0.6;
    cursor: not-allowed;
}

.bulk-purchase-page .checkout-btn .amount[b-ustkm2c0ya] {
    opacity: 0.9;
    font-weight: 500;
    border-left: 1px solid rgba(255, 255, 255, 0.3);
    padding-left: 10px;
    margin-left: 4px;
}

.bulk-purchase-page .stripe-note[b-ustkm2c0ya] {
    font-size: 11px;
    color: var(--bp-text-3);
    text-align: center;
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.bulk-purchase-page .cancel-link[b-ustkm2c0ya] {
    display: block;
    text-align: center;
    font-size: 12px;
    color: var(--bp-text-2);
    text-decoration: none;
    margin-top: 12px;
    padding: 6px;
}

.bulk-purchase-page .cancel-link:hover[b-ustkm2c0ya] {
    color: var(--bp-primary);
}

.bulk-purchase-page .how-it-works[b-ustkm2c0ya] {
    margin-top: 20px;
    border: 1px solid var(--bp-border);
    border-radius: 10px;
    overflow: hidden;
}

.bulk-purchase-page .how-header[b-ustkm2c0ya] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: var(--bp-bg);
    cursor: pointer;
    font-size: 13px;
    font-weight: 500;
    color: var(--bp-text-2);
    border: none;
    text-align: left;
}

.bulk-purchase-page .how-toggle[b-ustkm2c0ya] {
    font-size: 14px;
    color: var(--bp-text-3);
    transition: transform 0.2s;
    display: inline-block;
}

.bulk-purchase-page .how-toggle.open[b-ustkm2c0ya] {
    transform: rotate(180deg);
}

.bulk-purchase-page .how-body[b-ustkm2c0ya] {
    padding: 14px 16px;
    font-size: 12px;
    color: var(--bp-text-2);
    line-height: 1.7;
    border-top: 1px solid var(--bp-border);
}

@media (max-width: 600px) {
    .bulk-purchase-page .purchase-grid[b-ustkm2c0ya] {
        grid-template-columns: 1fr;
    }

    .bulk-purchase-page .summary-card[b-ustkm2c0ya] {
        position: static;
    }

    .bulk-purchase-page .qty-input[b-ustkm2c0ya] {
        width: 56px;
        font-size: 20px;
    }

    .bulk-purchase-page .checkout-btn[b-ustkm2c0ya] {
        padding: 12px 16px;
        font-size: 14px;
    }
}
/* /Pages/Coach/TeamSchedule.razor.rz.scp.css */
/* Scoped styles for TeamSchedule. Dev Notes for 26-5 asked that the new DnD
   affordances live here rather than bleeding into global smagpieC.css. The
   .drag-ghost-pill rule stays in smagpieC.css because position:fixed + high
   z-index escape the scoping attribute anyway. */

/* Drag-and-drop caption above the desktop schedule matrix */
.schedule-drag-hint[b-tgzrw3ebs3] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    opacity: 0.6;
    margin-top: 12px;
}

/* Footer note below the schedule explaining the countdown pill.
   Color matches EventPriority.High (#B71C1C) so it visually ties to the red pills. */
.countdown-note[b-tgzrw3ebs3] {
    color: #B71C1C;
    font-size: 11px;
    font-weight: 500;
    margin-top: 8px;
    padding: 0 4px;
}

/* Drop-target highlight on matrix cells (schedule-matrix is rendered directly
   in this page, so no ::deep required). */
.schedule-matrix td.drop-hover[b-tgzrw3ebs3] {
    outline: 2px dashed var(--mud-palette-primary);
    outline-offset: -2px;
}

/* The matrix-card element is rendered by the child TeamScheduleAssignedItem
   component, so ::deep is needed to reach it from this page's scoped CSS. */
[b-tgzrw3ebs3] .matrix-card[draggable="true"] {
    cursor: grab;
}

[b-tgzrw3ebs3] .matrix-card[draggable="true"]:active,
[b-tgzrw3ebs3] .matrix-card.dragging {
    cursor: grabbing;
}

[b-tgzrw3ebs3] .matrix-card.dragging {
    opacity: 0.55;
}

/* 31-16: plan-linked dot. Rendered by the child TeamScheduleAssignedItem on the matrix
   compact card when ScheduledTrainingPlanId.HasValue. Absolute-positioned so it doesn't
   disturb the card's flex layout; the 1px white inner ring + purple body keep it visible
   on any sport-color-coded card background. */
[b-tgzrw3ebs3] .plan-link-dot {
    position: absolute;
    top: 2px;
    right: 2px;
    width: 6px;
    height: 6px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #7E57C2;
    box-shadow: 0 0 0 1px #ffffff;
    cursor: pointer;
    z-index: 2;
}

[b-tgzrw3ebs3] .plan-link-dot:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
}
/* /Pages/Coach/TrainingPlanEditor.razor.rz.scp.css */
/* Mirrors --plan-purple scope to the editor page — 31-1 declared it only on the list page.
   A future styling-cleanup story can move this to a shared CSS file. */
:root[b-yrs4lwi2jh] {
    --plan-purple: #7e57c2;
}

.plan-status-card[b-yrs4lwi2jh] {
    width: 280px;
    flex: 0 0 280px;
    border: 2px solid rgba(126, 87, 194, 0.5);
    background: rgba(126, 87, 194, 0.05);
    border-radius: 6px;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.plan-status-label[b-yrs4lwi2jh] {
    color: var(--plan-purple);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.plan-status-caption[b-yrs4lwi2jh] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 2px;
}

.plan-status-state[b-yrs4lwi2jh] {
    font-weight: 600;
}

.plan-status-helper[b-yrs4lwi2jh] {
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
}

.plan-status-explainer[b-yrs4lwi2jh] {
    margin-top: 8px;
    font-size: 10px;
    color: var(--mud-palette-text-disabled);
}

.info-blurb.plan[b-yrs4lwi2jh] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 16px;
    border-left: 4px solid var(--plan-purple);
    background: rgba(126, 87, 194, 0.08);
    border-radius: 4px;
    font-size: 13px;
}

.info-blurb.plan .info-blurb-icon[b-yrs4lwi2jh] {
    color: var(--plan-purple);
    flex-shrink: 0;
}

.plan-draft-chip[b-yrs4lwi2jh] {
    background-color: var(--plan-purple) !important;
    color: #fff !important;
    font-weight: 700;
    letter-spacing: 0.05em;
}

/* ── Matrix grid (31-3) — Mockup Screen 3 ───────────────────────────── */

.plan-matrix-caption[b-yrs4lwi2jh] {
    font-size: 13px;
    color: var(--mud-palette-text-secondary);
    font-style: italic;
}

/* 31-25: ambient auto-save status line. Subtle in steady state ("All changes saved"); the only
   loud state is failure, which also surfaces a Retry button. */
.plan-autosave-status[b-yrs4lwi2jh] {
    font-size: 12px;
    font-style: normal;
    white-space: nowrap;
}

.plan-autosave-saving[b-yrs4lwi2jh] {
    color: var(--mud-palette-text-secondary);
}

.plan-autosave-saved[b-yrs4lwi2jh] {
    color: var(--mud-palette-success);
}

.plan-autosave-error[b-yrs4lwi2jh] {
    color: var(--mud-palette-error);
    font-weight: 500;
}

.plan-matrix-wrap[b-yrs4lwi2jh] {
    padding: 12px 14px;
    overflow-x: auto;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 4px;
}

.plan-matrix[b-yrs4lwi2jh] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    background: var(--mud-palette-surface);
}

.plan-matrix th[b-yrs4lwi2jh] {
    background: var(--mud-palette-background-grey);
    padding: 6px 8px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    color: var(--mud-palette-text-secondary);
    border: 1px solid var(--mud-palette-divider);
    text-align: center;
}

.plan-matrix-week-col[b-yrs4lwi2jh] {
    width: 60px;
}

.plan-matrix td[b-yrs4lwi2jh] {
    border: 1px solid var(--mud-palette-divider);
    padding: 4px;
    vertical-align: top;
    min-width: 120px;
    height: 80px;
    background: var(--mud-palette-surface);
    position: relative;
}

.plan-matrix-week-cell[b-yrs4lwi2jh] {
    background: var(--mud-palette-background-grey) !important;
    text-align: center;
    font-weight: 700;
    width: 60px;
    min-width: 60px;
}

/* 31-26: pending-removal band. Weeks beyond a pending DurationWeeks render desaturated + display-only
   (the cards stay legible, just clearly "about to go"). pointer-events:none makes the cards purely
   visual — no drag start, no action menu — so a coach can't auto-save an edit to a row the next Save
   prunes. Distinct from the phase band tints (which apply a background to live rows). */
.plan-matrix-row-pending > td[b-yrs4lwi2jh] {
    filter: grayscale(0.85);
    opacity: 0.55;
    background: var(--mud-palette-background-grey);
}

/* ::deep is required: .matrix-card is rendered by the child TeamScheduleAssignedItem, so a
   page-scoped selector (b-* hash) never matches it — same reason the drag cursor rules below
   use ::deep. This makes the card body inert (no click → no action menu); the binding-layer
   EventCallback.Empty gating in the markup is the primary guard for the already-open-menu case. */
.plan-matrix-row-pending[b-yrs4lwi2jh]  .matrix-card {
    pointer-events: none;
}

/* Inline marker naming the blast radius — warning, not info. Mirrors the .plan-autosave-error
   emphasis but in the warning palette. */
.plan-pending-band-marker[b-yrs4lwi2jh] {
    font-size: 13px;
}

.plan-matrix-cell.race-day[b-yrs4lwi2jh] {
    background: rgba(229, 57, 53, 0.05);
    border: 2px solid var(--mud-palette-error);
}

.plan-matrix-cell.race-day[b-yrs4lwi2jh]::after {
    content: '\2605 Race';
    position: absolute;
    top: 2px;
    right: 4px;
    font-size: 9px;
    color: var(--mud-palette-error);
    font-weight: 700;
    pointer-events: none;
}

.plan-matrix-cell-add[b-yrs4lwi2jh] {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    min-height: 40px;
    cursor: pointer;
    border-radius: 3px;
    border: 1px dashed transparent;
}

.plan-matrix-cell-add:hover[b-yrs4lwi2jh] {
    border-color: var(--mud-palette-divider);
    background: rgba(126, 87, 194, 0.05);
}

/* Compact "+" affordance — appears below the bottom stacked card in cells that have 1..4
   workouts. Shorter than the empty-cell "+" so the stack stays the visual centerpiece.
   height:auto overrides the base rule's height:100% so the compact box hugs its content
   instead of stretching to fill whatever height the sibling workout card forced on the td. */
.plan-matrix-cell-add.compact[b-yrs4lwi2jh] {
    height: auto;
    min-height: 22px;
    margin-top: 2px;
}

/* Stacked cards in multi-slot cells (31-4) — gap between cards mirrors the mockup's 2px
   margin-bottom on .matrix-card-mini (lines 226-242 of ux-training-plans-mockups.html). */
.plan-matrix-cell .matrix-card + .matrix-card[b-yrs4lwi2jh],
.plan-matrix-cell .matrix-card + div .matrix-card[b-yrs4lwi2jh] {
    margin-top: 2px;
}

/* Let cell height grow organically when a stack exceeds the 80px baseline — coaches must be
   able to see all five cards at once (no scroll inside the cell). The week row stretches in
   lock-step because <tr> rows align their <td> heights naturally. */
.plan-matrix-cell[b-yrs4lwi2jh] {
    height: auto;
}

.plan-matrix-picker[b-yrs4lwi2jh] {
    position: relative;
}

/* .plan-matrix-popover / .plan-picker-ac-popover sizing + z-index live in the GLOBAL
   stylesheet (wwwroot/css/smagpieC.css) — these popovers render through the global
   MudPopoverProvider, so scoped page CSS (b-* attribute) never matches them. */

/* ── DnD between cells (31-5) — mirrors TeamSchedule.razor.css:28-46 ─────
   Same dashed-outline drop-hover treatment as 26-5; same ::deep .matrix-card
   cursor + opacity. The plan editor reuses TeamScheduleAssignedItem (which
   applies .matrix-card / .dragging classes internally), but scoped CSS in
   TeamSchedule.razor.css doesn't cascade here — so we replicate the rules. */

.plan-matrix-cell.drag-over[b-yrs4lwi2jh],
.plan-matrix-cell-add.drag-over[b-yrs4lwi2jh] {
    outline: 2px dashed var(--plan-purple);
    outline-offset: -2px;
}

[b-yrs4lwi2jh] .matrix-card[draggable="true"] {
    cursor: grab;
}

[b-yrs4lwi2jh] .matrix-card[draggable="true"]:active,
[b-yrs4lwi2jh] .matrix-card.dragging {
    cursor: grabbing;
}

[b-yrs4lwi2jh] .matrix-card.dragging {
    opacity: 0.55;
}

/* ── Phases section (31-7) — Mockup Screen 13 ───────────────────────────── */

.plan-phases-section[b-yrs4lwi2jh] {
    overflow: hidden;
}

.plan-phases-header[b-yrs4lwi2jh] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: var(--mud-palette-background-grey);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.plan-phases-label[b-yrs4lwi2jh] {
    font-size: 10px;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.plan-phases-count[b-yrs4lwi2jh] {
    font-size: 10px;
    color: var(--mud-palette-text-secondary);
}

.plan-phases-list[b-yrs4lwi2jh] {
    display: flex;
    flex-direction: column;
}

.plan-phase-row[b-yrs4lwi2jh] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 14px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.plan-phase-row:last-child[b-yrs4lwi2jh] {
    border-bottom: none;
}

.plan-phase-swatch[b-yrs4lwi2jh] {
    width: 14px;
    height: 14px;
    border-radius: 3px;
    flex-shrink: 0;
}

.plan-phase-name[b-yrs4lwi2jh] {
    font-size: 12px;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    min-width: 80px;
}

.plan-phase-range[b-yrs4lwi2jh] {
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
}

.plan-phase-bar-spacer[b-yrs4lwi2jh] {
    flex: 1;
}

.plan-phases-empty[b-yrs4lwi2jh] {
    padding: 12px 14px;
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
    font-style: italic;
}

.plan-phase-editor-row[b-yrs4lwi2jh] {
    background: var(--mud-palette-background-grey);
}

.plan-phase-editor-name[b-yrs4lwi2jh] {
    width: 200px;
    flex-shrink: 0;
}

.plan-phase-editor-week[b-yrs4lwi2jh] {
    width: 100px;
    flex-shrink: 0;
}

.plan-phase-editor-error[b-yrs4lwi2jh] {
    padding: 0 14px 8px 14px;
}

.plan-phase-band-label[b-yrs4lwi2jh] {
    font-size: 8px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    line-height: 1;
    margin-bottom: 2px;
}
/* /Pages/Coach/TrainingPlanList.razor.rz.scp.css */
/*
 * Story 31-10 moved the shared Training Plans purple styling out of this scoped sheet into
 * src/Blazor/Client/wwwroot/css/training-plans.css so the ApplyPlanDialog (rendered in
 * MudBlazor's overlay portal, outside this component's scoped boundary) can consume the same
 * classes. This file is intentionally empty — the plan-library list now reads its styles from
 * the shared non-scoped sheet. Keeping the file present (rather than deleting) avoids a
 * dangling reference if any razor.cs include hint references this path.
 */
/* /Pages/Coach/WorkoutLibrary.razor.rz.scp.css */
.lib-list[b-536uvcbg7a] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lib-list[b-536uvcbg7a]  .lib-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-left: 4px solid var(--mud-palette-success);
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.lib-list[b-536uvcbg7a]  .lib-row:hover {
    background-color: var(--mud-palette-background-gray);
}

.lib-row-icon[b-536uvcbg7a] {
    flex-shrink: 0;
}

.lib-row-info[b-536uvcbg7a] {
    min-width: 0;
    flex: 1;
}

.lib-list[b-536uvcbg7a]  .lib-row-title {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Unified action row: tab pills on the left, share icon, New Library anchored right */
.pill-bar[b-536uvcbg7a] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    background: var(--mud-palette-background);
}

/* ──── Browse Public split panel ──── */
.browse-public-split[b-536uvcbg7a] {
    display: grid;
    grid-template-columns: 280px 1fr;
    min-height: 400px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 4px;
    margin-top: 8px;
}

.pub-list-panel[b-536uvcbg7a] {
    border-right: 1px solid var(--mud-palette-lines-default);
    overflow-y: auto;
    max-height: 600px;
}

.pub-row[b-536uvcbg7a] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-left: 3px solid transparent;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.pub-row:hover[b-536uvcbg7a] {
    background-color: var(--mud-palette-background-gray);
}

.pub-row.selected[b-536uvcbg7a] {
    background-color: var(--mud-palette-primary-lighten);
    border-left: 3px solid var(--mud-palette-primary);
}

.pub-row.selected[b-536uvcbg7a],
.pub-row.selected[b-536uvcbg7a]  .mud-typography {
    color: var(--mud-palette-primary-text);
}

.pub-row-icon[b-536uvcbg7a] {
    flex-shrink: 0;
}

.pub-info[b-536uvcbg7a] {
    flex: 1;
    min-width: 0;
}

.pub-info[b-536uvcbg7a]  .pub-title {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pub-check[b-536uvcbg7a] {
    flex-shrink: 0;
}

.pub-detail-panel[b-536uvcbg7a] {
    overflow-y: auto;
    max-height: 600px;
}

.detail-header[b-536uvcbg7a] {
    padding: 16px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.pub-description[b-536uvcbg7a] {
    font-size: 14px;
    line-height: 1.6;
}

/* Mobile responsive: stack title/meta on top and badge below */
@media (max-width: 599.98px) {
    .lib-list[b-536uvcbg7a]  .lib-row {
        flex-wrap: wrap;
        gap: 8px;
    }

    .lib-row-info[b-536uvcbg7a] {
        flex-basis: calc(100% - 48px);
    }

    .lib-list[b-536uvcbg7a]  .mud-chip {
        margin-left: auto;
    }

    /* Browse Public: stack vertically on mobile */
    .browse-public-split[b-536uvcbg7a] {
        grid-template-columns: 1fr;
    }

    .pub-list-panel[b-536uvcbg7a] {
        border-right: none;
        border-bottom: 1px solid var(--mud-palette-lines-default);
        max-height: 300px;
    }
}
/* /Pages/Coach/WorkoutLibraryDetail.razor.rz.scp.css */
.category-description-clamp[b-2dl1q4ax5v] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Story 9-12 review: the clamped content is server-rendered markdown, so it arrives as one or
   more <p> children with the browser's default block margins. -webkit-line-clamp measures the
   box's line count, and those margins push real text out of the two visible lines (and clamp
   erratically across multiple block children). Flattening the margins makes the clamp behave
   the same for one paragraph or several. ::deep is required because the markup comes from a
   MarkupString and therefore carries no scope attribute. */
.category-description-clamp[b-2dl1q4ax5v]  p {
    margin: 0;
}

.category-description-clamp[b-2dl1q4ax5v]  p + p {
    margin-top: 0.5em;
}

.category-description-clamp.expanded[b-2dl1q4ax5v] {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}
/* /Pages/Index.razor.rz.scp.css */
.panel-summary[b-93h6mcdww6] {
    font-size: 11px;
    color: var(--mud-palette-text-disabled);
    font-weight: 400;
    margin-left: 8px;
}
/* /Pages/Notifications.razor.rz.scp.css */
/* ===== Full Mailbox Page — Story 18.6 ===== */

.mailbox-shell[b-dgwl2gt6p5] {
    margin: 20px;
    border-radius: 8px;
    font-size: 13px;
    border: 1px solid var(--mud-palette-lines-default);
    overflow: hidden;
}

.mailbox-topbar[b-dgwl2gt6p5] {
    padding: 14px 20px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    display: flex;
    align-items: center;
    gap: 12px;
}

.mailbox-topbar h3[b-dgwl2gt6p5] {
    font-size: 16px;
    font-weight: 700;
    flex: 1;
    margin: 0;
}

.mailbox-topbar-action[b-dgwl2gt6p5] {
    font-size: 12px;
    cursor: pointer;
}

/* ─── Filter tabs ─── */

.filter-tabs[b-dgwl2gt6p5] {
    display: flex;
    gap: 0;
    padding: 0 20px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.filter-tab[b-dgwl2gt6p5] {
    padding: 10px 16px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    color: var(--mud-palette-text-secondary);
    border-bottom: 2px solid transparent;
    transition: all 0.15s;
    user-select: none;
}

.filter-tab:hover[b-dgwl2gt6p5] {
    color: var(--mud-palette-text-primary);
}

.filter-tab.active[b-dgwl2gt6p5] {
    color: #3eaf7c;
    border-bottom-color: #3eaf7c;
}

.filter-tab-count[b-dgwl2gt6p5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #3eaf7c;
    color: white;
    font-size: 9px;
    font-weight: 800;
    min-width: 16px;
    height: 16px;
    border-radius: 8px;
    padding: 0 4px;
    margin-left: 5px;
    vertical-align: middle;
}

/* ─── Card list ─── */

.mailbox-list[b-dgwl2gt6p5] {
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* ─── Notification card ─── */

.notif-card[b-dgwl2gt6p5] {
    border-radius: 8px;
    border: 1px solid var(--mud-palette-lines-default);
    overflow: hidden;
    transition: box-shadow 0.15s;
}

.notif-card:hover[b-dgwl2gt6p5] {
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}

.notif-card.unread[b-dgwl2gt6p5] {
    border-left: 3px solid #3eaf7c;
    background-color: rgba(62, 175, 124, 0.04);
}

.notif-card-inner[b-dgwl2gt6p5] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
}

[b-dgwl2gt6p5] .notif-card-avatar {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
}

.notif-card-content[b-dgwl2gt6p5] {
    flex: 1;
    min-width: 0;
}

.notif-card-header[b-dgwl2gt6p5] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 4px;
    flex-wrap: wrap;
}

.notif-card-title[b-dgwl2gt6p5] {
    font-size: 13px;
    font-weight: 400;
    line-height: 1.3;
}

.notif-card-title.unread[b-dgwl2gt6p5] {
    font-weight: 700;
}

.notif-card-time[b-dgwl2gt6p5] {
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
    flex-shrink: 0;
    margin-left: auto;
    opacity: 0.7;
}

.notif-card-body[b-dgwl2gt6p5] {
    font-size: 13px;
    color: var(--mud-palette-text-secondary);
    line-height: 1.5;
    margin-bottom: 10px;
}

.notif-card-action[b-dgwl2gt6p5] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 600;
    background: rgba(62, 175, 124, 0.08);
    color: #2e7d53;
    border: 1px solid rgba(62, 175, 124, 0.3);
    cursor: pointer;
    transition: background 0.15s;
}

.notif-card-action:hover[b-dgwl2gt6p5] {
    background: rgba(62, 175, 124, 0.15);
}

/* ─── Type badge ─── */

.notif-type-badge[b-dgwl2gt6p5] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 600;
    margin-left: 6px;
    white-space: nowrap;
    flex-shrink: 0;
}

.type-badge-comment[b-dgwl2gt6p5] {
    background: #e0e7ff;
    color: #4338ca;
}

.type-badge-workout[b-dgwl2gt6p5] {
    background: #d1fae5;
    color: #065f46;
}

.type-badge-event[b-dgwl2gt6p5] {
    background: #fef3c7;
    color: #92400e;
}

.type-badge-milestone[b-dgwl2gt6p5] {
    background: #ede9fe;
    color: #5b21b6;
}

.type-badge-team[b-dgwl2gt6p5] {
    background: #dbeafe;
    color: #1e40af;
}

.type-badge-default[b-dgwl2gt6p5] {
    background: #f3f4f6;
    color: #6b7280;
}

/* ─── Digest ─── */

.notif-card-digest-wrapper[b-dgwl2gt6p5] {
    border-radius: 8px;
    border: 1px solid var(--mud-palette-lines-default);
    overflow: hidden;
}

.notif-card-digest-wrapper .notif-card[b-dgwl2gt6p5] {
    border-radius: 0;
    border: none;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.notif-card-digest[b-dgwl2gt6p5] {
    /* no border-top on the digest header itself — only on child cards */
}

.notif-card-digest-header[b-dgwl2gt6p5] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    cursor: pointer;
}

.notif-card-digest-label[b-dgwl2gt6p5] {
    font-size: 12px;
    color: var(--mud-palette-text-secondary);
}

.notif-card-digest-count[b-dgwl2gt6p5] {
    background: var(--mud-palette-lines-default);
    border-radius: 4px;
    font-size: 11px;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
    padding: 1px 7px;
}

/* ─── Empty state ─── */

.empty-state[b-dgwl2gt6p5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    border-radius: 8px;
    border: 1px solid var(--mud-palette-lines-default);
    margin: 12px;
}

.empty-state-icon[b-dgwl2gt6p5] {
    font-size: 40px;
    margin-bottom: 12px;
    opacity: 0.4;
}

.empty-state-title[b-dgwl2gt6p5] {
    font-size: 15px;
    font-weight: 700;
    margin-bottom: 6px;
}

.empty-state-timestamp[b-dgwl2gt6p5] {
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
    margin-top: 12px;
}

.empty-state-body[b-dgwl2gt6p5] {
    font-size: 13px;
    color: var(--mud-palette-text-secondary);
    max-width: 280px;
    line-height: 1.5;
}
/* /Pages/NotificationSettings.razor.rz.scp.css */
/* ===== Notification Preferences Page — Story 18.8 ===== */

.settings-shell[b-5bf0v30wa6] {
    margin: 20px;
    border-radius: 8px;
    font-size: 13px;
    border: 1px solid var(--mud-palette-lines-default);
    overflow: hidden;
}

/* ─── Preference list ─── */

.pref-list[b-5bf0v30wa6] {
    padding: 8px 0;
}

.pref-row[b-5bf0v30wa6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 20px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    transition: background 0.15s;
}

.pref-row:last-child[b-5bf0v30wa6] {
    border-bottom: none;
}

.pref-row:hover[b-5bf0v30wa6] {
    background: rgba(0, 0, 0, 0.02);
}

.pref-row-left[b-5bf0v30wa6] {
    display: flex;
    align-items: center;
    gap: 10px;
}

[b-5bf0v30wa6] .pref-row-icon {
    opacity: 0.6;
}

.pref-row-label[b-5bf0v30wa6] {
    font-size: 13px;
    font-weight: 500;
}

.pref-row-right[b-5bf0v30wa6] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ─── Footer ─── */

.pref-footer[b-5bf0v30wa6] {
    padding: 12px 20px;
    border-top: 1px solid var(--mud-palette-lines-default);
}
