/* /Components/AppBarControls.razor.rz.scp.css */
[b-ye46n7phd3] .app-bar-user-name {
    text-decoration: none;
}

[b-ye46n7phd3] .app-bar-top-adjustment {
    padding-top: 2px;
}
/* /Components/CustomNavLink.razor.rz.scp.css */
.nav-custom[b-f95hr83l9m]{
    display: flex;
    align-items: center;
    justify-content: space-between;
}
/* /Components/Identity/CelebrationSVG.razor.rz.scp.css */
.celebration[b-t69jbd7kj0] { position:relative; width:64px; height:64px; display:flex; align-items:center; justify-content:center; }
.check[b-t69jbd7kj0] { width:56px; height:56px; transform-origin:center; animation: pop-b-t69jbd7kj0 520ms cubic-bezier(.2,.8,.2,1) forwards; }
.check-circle[b-t69jbd7kj0] { stroke-dasharray: 157; stroke-dashoffset: 157; animation: circle-b-t69jbd7kj0 420ms ease-out forwards; }
.check-mark[b-t69jbd7kj0] { stroke-dasharray: 40; stroke-dashoffset: 40; animation: check-b-t69jbd7kj0 360ms 220ms ease-out forwards; }
@keyframes circle-b-t69jbd7kj0 { to { stroke-dashoffset: 0; } }
@keyframes check-b-t69jbd7kj0 { to { stroke-dashoffset: 0; } }
@keyframes pop-b-t69jbd7kj0 { 0% { transform: scale(.6) rotate(-10deg); opacity:0; } 60% { transform: scale(1.05) rotate(3deg); opacity:1; } 100% { transform: scale(1) rotate(0); } }
/* confetti */
.confetti[b-t69jbd7kj0] { position:absolute; inset:0; pointer-events:none; }
.confetti span[b-t69jbd7kj0] { position:absolute; width:8px; height:12px; background:#1976d2; opacity:0; transform:translateY(0) rotate(0); border-radius:2px; }
.confetti span:nth-child(1)[b-t69jbd7kj0] { left:10%; top:10%; background:#ffca28; animation: confetti-1-b-t69jbd7kj0 900ms forwards; }
.confetti span:nth-child(2)[b-t69jbd7kj0] { left:30%; top:5%; background:#ff7043; animation: confetti-2-b-t69jbd7kj0 1000ms 60ms forwards; }
.confetti span:nth-child(3)[b-t69jbd7kj0] { left:50%; top:12%; background:#66bb6a; animation: confetti-3-b-t69jbd7kj0 920ms 120ms forwards; }
.confetti span:nth-child(4)[b-t69jbd7kj0] { left:70%; top:8%; background:#29b6f6; animation: confetti-4-b-t69jbd7kj0 980ms 30ms forwards; }
.confetti span:nth-child(5)[b-t69jbd7kj0] { left:88%; top:14%; background:#ab47bc; animation: confetti-5-b-t69jbd7kj0 860ms 140ms forwards; }
@keyframes confetti-1-b-t69jbd7kj0 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-80px) rotate(200deg); } }
@keyframes confetti-2-b-t69jbd7kj0 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-100px) rotate(260deg); } }
@keyframes confetti-3-b-t69jbd7kj0 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-60px) rotate(-200deg); } }
@keyframes confetti-4-b-t69jbd7kj0 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-90px) rotate(-120deg); } }
@keyframes confetti-5-b-t69jbd7kj0 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-110px) rotate(320deg); } }
/* /Components/Identity/Confirm.razor.rz.scp.css */
.confirm-wrapper[b-ycogigvt06] { display:flex; justify-content:center; }
.confirm-row[b-ycogigvt06] { display:flex; gap:12px; align-items:center; }
.celebration[b-ycogigvt06] { position:relative; width:64px; height:64px; display:flex; align-items:center; justify-content:center; }
.check[b-ycogigvt06] { width:56px; height:56px; transform-origin:center; animation: pop-b-ycogigvt06 520ms cubic-bezier(.2,.8,.2,1) forwards; }
.check-circle[b-ycogigvt06] { stroke-dasharray: 157; stroke-dashoffset: 157; animation: circle-b-ycogigvt06 420ms ease-out forwards; }
.check-mark[b-ycogigvt06] { stroke-dasharray: 40; stroke-dashoffset: 40; animation: check-b-ycogigvt06 360ms 220ms ease-out forwards; }
@keyframes circle-b-ycogigvt06 { to { stroke-dashoffset: 0; } }
@keyframes check-b-ycogigvt06 { to { stroke-dashoffset: 0; } }
@keyframes pop-b-ycogigvt06 { 0% { transform: scale(.6) rotate(-10deg); opacity:0; } 60% { transform: scale(1.05) rotate(3deg); opacity:1; } 100% { transform: scale(1) rotate(0); } }
/* confetti */
.confetti[b-ycogigvt06] { position:absolute; inset:0; pointer-events:none; }
.confetti span[b-ycogigvt06] { position:absolute; width:8px; height:12px; background:#1976d2; opacity:0; transform:translateY(0) rotate(0); border-radius:2px; }
.confetti span:nth-child(1)[b-ycogigvt06] { left:10%; top:10%; background:#ffca28; animation: confetti-1-b-ycogigvt06 900ms forwards; }
.confetti span:nth-child(2)[b-ycogigvt06] { left:30%; top:5%; background:#ff7043; animation: confetti-2-b-ycogigvt06 1000ms 60ms forwards; }
.confetti span:nth-child(3)[b-ycogigvt06] { left:50%; top:12%; background:#66bb6a; animation: confetti-3-b-ycogigvt06 920ms 120ms forwards; }
.confetti span:nth-child(4)[b-ycogigvt06] { left:70%; top:8%; background:#29b6f6; animation: confetti-4-b-ycogigvt06 980ms 30ms forwards; }
.confetti span:nth-child(5)[b-ycogigvt06] { left:88%; top:14%; background:#ab47bc; animation: confetti-5-b-ycogigvt06 860ms 140ms forwards; }
@keyframes confetti-1-b-ycogigvt06 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-80px) rotate(200deg); } }
@keyframes confetti-2-b-ycogigvt06 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-100px) rotate(260deg); } }
@keyframes confetti-3-b-ycogigvt06 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-60px) rotate(-200deg); } }
@keyframes confetti-4-b-ycogigvt06 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-90px) rotate(-120deg); } }
@keyframes confetti-5-b-ycogigvt06 { 0% { opacity:1; transform: translateY(0) rotate(0); } 100% { opacity:0; transform: translateY(-110px) rotate(320deg); } }
/* /Components/Loader.razor.rz.scp.css */
/* src/Client/Components/Loader.razor.css */
.loader-root[b-adb8o13eme] { display: inline-block; } /* Spinner */
.animated-spinner[b-adb8o13eme] { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; }
.circular-progress[b-adb8o13eme] { width:96px; height:96px; overflow:visible; }
.cp-bg[b-adb8o13eme] {
    stroke: color-mix(
            in srgb,
            var(--mud-palette-secondary) 12%,
            transparent
    );
}
.cp-arc[b-adb8o13eme] {
    stroke: var(--mud-palette-secondary);
}

.cp-arc[b-adb8o13eme] { transform-origin: 50% 50%; animation: arc-rotate-b-adb8o13eme 1.4s linear infinite, arc-dash-b-adb8o13eme 1.6s ease-in-out infinite; }
.orbit[b-adb8o13eme] { transform-origin: 50% 50%; animation: orbit-rotate-b-adb8o13eme 2.2s linear infinite; }
.o-dot[b-adb8o13eme] { fill: var(--mud-palette-primary);
    opacity: 0.95; }
.o1[b-adb8o13eme] { animation: o-scale-b-adb8o13eme 1.6s ease-in-out infinite 0s; }
.o2[b-adb8o13eme] { animation: o-scale-b-adb8o13eme 1.6s ease-in-out infinite 0.12s; }
.o3[b-adb8o13eme] { animation: o-scale-b-adb8o13eme 1.6s ease-in-out infinite 0.24s; }

@keyframes arc-rotate-b-adb8o13eme { to { transform: rotate(360deg); } }
@keyframes orbit-rotate-b-adb8o13eme { to { transform: rotate(-360deg); } }
@keyframes arc-dash-b-adb8o13eme {
    0% { stroke-dasharray: 1,260; stroke-dashoffset: 0; }
    50% { stroke-dasharray: 180,260; stroke-dashoffset: -40; }
    100% { stroke-dasharray: 1,260; stroke-dashoffset: -160; }
}
@keyframes core-pulse-b-adb8o13eme {
    0% { transform: scale(1); opacity:0.04; }
    50% { transform: scale(0.9); opacity:0.08; }
    100% { transform: scale(1); opacity:0.04; }
}
@keyframes o-scale-b-adb8o13eme {
    0%, 80%, 100% { transform: scale(1); opacity:0.9; }
    40% { transform: scale(1.6); opacity:1; }
}

/* Container that wraps the area where loader should be centered.
   Keep this on the parent element (the element you want to center inside). */
.loader-container[b-adb8o13eme] { position: relative; }

/* OVERLAY ЛОАДЕРА */ 
.loader-embedded[b-adb8o13eme] 
{
    min-height: 100vh;
    position: relative; 
    inset: 0; 
    display: flex; 
    flex: 1; 
    align-items: center; 
    justify-content: center; 
    z-index: 10; 
    pointer-events: all; 
    
} /* make sure the spinner itself doesn't stretch */ 
.loader-fullscreen .animated-spinner[b-adb8o13eme] { background: transparent; }
/* /Components/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-ro66dc7bde] {
    background-color: rgba(255, 255, 255, 0.1);
}

.top-row[b-ro66dc7bde] {
    height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-ro66dc7bde] {
    font-size: 1.1rem;
}

.bi[b-ro66dc7bde] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill-nav-menu[b-ro66dc7bde] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-plus-square-fill-nav-menu[b-ro66dc7bde] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested-nav-menu[b-ro66dc7bde] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.nav-item[b-ro66dc7bde] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-ro66dc7bde] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-ro66dc7bde] {
        padding-bottom: 1rem;
    }

    .nav-item[b-ro66dc7bde]  a {
        color: #d7d7d7;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
    }

.nav-item[b-ro66dc7bde]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-ro66dc7bde]  a:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

@media (min-width: 641px) {
    .navbar-toggler[b-ro66dc7bde] {
        display: none;
    }

    .collapse[b-ro66dc7bde] {
        /* Never collapse the sidebar for wide screens */
        display: block;
    }
    
    .nav-scrollable[b-ro66dc7bde] {
        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}
/* /Components/NotificationBell.razor.rz.scp.css */
/* The count sits inside the bell glyph, nudged below the true centre because the glyph's mass is
   there (the handle on top is empty space). */
.notification-bell[b-o24106an4s] {
    position: relative;
    display: inline-flex;
}

.notification-bell__count[b-o24106an4s] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -35%);
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 1;
    color: #293132;
    /* The bell underneath is the menu activator, so the number must not eat the click. */
    pointer-events: none;
    user-select: none;
}
/* /Components/Tools/FacilitySelector.razor.rz.scp.css */
.facility-selector[b-4bjppvqjc0] {
    display: flex;
    align-items: center;
    align-self: stretch;
}

.facility-selector[b-4bjppvqjc0]  .mud-input.mud-input-text {
    align-items: center;
}

.facility-selector[b-4bjppvqjc0]  .mud-select-input {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.facility-selector[b-4bjppvqjc0]  .mud-input-adornment {
    margin: 0 !important;
}

.facility-selector[b-4bjppvqjc0]  .mud-input-slot,
.facility-selector[b-4bjppvqjc0]  .mud-input-root {
    display: flex;
    align-items: center;
}

.facility-selector[b-4bjppvqjc0]  .mud-input-underline::before,
.facility-selector[b-4bjppvqjc0]  .mud-input-underline::after {
    border-bottom: none !important;
}

.facility-selector[b-4bjppvqjc0]  .select-input {
    color: var(--mud-palette-primary-text) !important;
}
/* /Components/Tools/SearchComponent.razor.rz.scp.css */
.search-component[b-n1hjavxs3i]  .search-selects {
    flex-shrink: 0;
}

.search-component[b-n1hjavxs3i]  .search-select {
    flex: 1 1 auto;
    min-width: 10rem;
}

.search-component[b-n1hjavxs3i]  .search-daterange {
    max-width: 20rem;
    flex: 1 1 auto;
}

@media (max-width: 780px) {
    .search-component[b-n1hjavxs3i]  .search-selects {
        width: 100%;
        min-width: 0;
        overflow: hidden;
    }

    .search-component[b-n1hjavxs3i]  .search-select {
        min-width: 0;
    }

    .search-component[b-n1hjavxs3i]  .search-select-outer {
        min-width: 0;
        overflow: hidden;
    }

    .search-component[b-n1hjavxs3i]  .search-select div.mud-input-slot {
        display: block !important;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .search-component[b-n1hjavxs3i]  .search-daterange {
        max-width: 100% !important;
        width: 100%;
    }
}
/* /Components/Tools/TableSearch.razor.rz.scp.css */
.search-input[b-6py3es2tgk] {
    max-width: 20rem;
    padding-left: 1rem;
}

@media (max-width: 600px) {
    .search-input[b-6py3es2tgk] {
        max-width: 100%;
        flex-grow: 1;
        padding-left: 0;
    }
}
/* /Components/Tools/TimeSelectPicker.razor.rz.scp.css */
.time-picker-wrap[b-90c5w8tcds] {
    width: 100%;
}

[b-90c5w8tcds] .time-stack {
    width: 100%;
}

[b-90c5w8tcds] .time-stack > * {
    flex: 1 1 0;
    min-width: 0;
}

[b-90c5w8tcds] .time-stack > .mud-typography {
    flex: 0 0 auto;
}

[b-90c5w8tcds] .time-picker-error {
    outline: 2px solid var(--mud-palette-error);
    border-radius: 4px;
    padding: 2px;
}
/* /Components/User/Bookings/BookingCard.razor.rz.scp.css */
/* Status chip: remove extra SVG margin */
.booking-card-root[b-xiwiev42aq]  .centered-chip svg {
    margin: 0;
}

/* Card inner: two stacked rows */
[b-xiwiev42aq] .bc-inner {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* Row 1 – time / name / phone wrap freely */
[b-xiwiev42aq] .bc-info {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px;
    row-gap: 2px;
}

[b-xiwiev42aq] .bc-time {
    font-weight: bold;
    white-space: nowrap;
    flex-shrink: 0;
}

[b-xiwiev42aq] .bc-name {
    /* allow truncation on very narrow containers, but prefer wrapping */
    overflow-wrap: break-word;
    word-break: break-word;
    min-width: 0;
}

[b-xiwiev42aq] .bc-phone {
    white-space: nowrap;
    flex-shrink: 0;
    opacity: 0.75;
}

/* Row 2 – chips on left, button+status on right */
[b-xiwiev42aq] .bc-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
}

[b-xiwiev42aq] .bc-chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    flex: 1 1 auto;
    min-width: 0;
}

[b-xiwiev42aq] .bc-status {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}

[b-xiwiev42aq] .bc-status > button{
    padding: 0;
}

/* Row 3 – delayed items warning row */
[b-xiwiev42aq] .bc-delayed-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    margin-top: 2px;
}

[b-xiwiev42aq] .bc-delayed-icon {
    color: var(--mud-palette-warning-darken);
    font-size: 1rem;
    flex-shrink: 0;
}

[b-xiwiev42aq] .bc-delayed-chip {
    border-color: var(--mud-palette-warning);
    color: var(--mud-palette-warning-darken);
    font-size: 0.7rem;
}

/* /Components/User/Bookings/BookingsCalendar.razor.rz.scp.css */
.calendar-root[b-umuch6wekq] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 500px;
}

[b-umuch6wekq] .calendar-paper {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 500px;
    padding: 0.5rem;
    gap: 0.5rem;
}

.calendar-header[b-umuch6wekq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-wrap: wrap;
}

[b-umuch6wekq] .mud-toggle-item-size-small{
    padding-left: 0.75rem;
    padding-right: 0.75rem;
}

.calendar-period-label[b-umuch6wekq] {
    min-width: 8rem;
    text-align: center;
    font-weight: 600;
    text-transform: capitalize;
}

.calendar-body[b-umuch6wekq] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

@media (max-width: 599.98px) {
    .calendar-period-label[b-umuch6wekq] {
        min-width: unset;
        font-size: 0.875rem;
    }
}
/* /Components/User/Bookings/BookingsCalendarDayView.razor.rz.scp.css */
.day-empty[b-hi50bkck9x] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.day-timeline-scroll[b-hi50bkck9x] {
    flex: 1;
    overflow: auto;
}

.day-timeline[b-hi50bkck9x] {
    --lane-width: 12em;
    position: relative;
    margin-left: 3.5rem;
    padding-right: 0.25rem;
    min-width: calc(var(--max-lanes, 1) * var(--lane-width));
}

.hour-row[b-hi50bkck9x] {
    position: absolute;
    left: 0;
    right: 0;
    height: 60px;
}

.hour-label[b-hi50bkck9x] {
    position: absolute;
    left: -3.5rem;
    width: 3rem;
    text-align: right;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.hour-line[b-hi50bkck9x] {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    border-top: 1px solid var(--mud-palette-divider);
}

.day-events[b-hi50bkck9x] {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.booking-block[b-hi50bkck9x] {
    position: absolute;
    pointer-events: auto;
    width: calc(var(--lane-width) - 8px);
    left: calc(var(--lane, 0) * var(--lane-width) + 4px);
    background: var(--mud-palette-surface);
    border-radius: 4px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
    padding: 0.25rem 0.5rem;
    overflow: hidden;
    cursor: pointer;
    font-size: 0.8125rem;
    line-height: 1.2;
    transition: box-shadow 0.15s ease;
}

.booking-block:hover[b-hi50bkck9x] {
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}

.booking-block-time[b-hi50bkck9x] {
    display: flex;
    align-items: center;
    gap: 3px;
    font-weight: 600;
}

.booking-block-time-text[b-hi50bkck9x] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.booking-block-time[b-hi50bkck9x]  .booking-block-instructor {
    flex-shrink: 0;
    font-size: 1.1rem;
}

.booking-block-name[b-hi50bkck9x] {
    color: var(--mud-palette-text-secondary);
    word-break: break-word;
    overflow-wrap: anywhere;
}

.booking-block-delayed[b-hi50bkck9x] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 3px;
    margin-top: 2px;
    font-size: 0.7rem;
    line-height: 1.1;
}

.booking-block-delayed .delayed-icon[b-hi50bkck9x] {
    color: var(--mud-palette-warning-darken, #e65100);
    flex-shrink: 0;
}

.booking-block-delayed .delayed-badge[b-hi50bkck9x] {
    background: rgba(244, 67, 54, 0.12);
    border: 1px solid rgba(244, 67, 54, 0.35);
    border-radius: 3px;
    padding: 0 3px;
    color: var(--mud-palette-error-darken, #b71c1c);
    white-space: nowrap;
}

/* /Components/User/Bookings/BookingsCalendarMonthView.razor.rz.scp.css */
.month-grid[b-ysbm6ud3o2] {
    flex: 1;
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-auto-rows: minmax(0, 1fr);
    gap: 0.125rem;
    overflow: auto;
}

.month-dow[b-ysbm6ud3o2] {
    font-size: 0.75rem;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    text-align: center;
    padding: 0.25rem 0;
    border-bottom: 1px solid var(--mud-palette-divider);
}

.month-cell[b-ysbm6ud3o2] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.125rem;
    padding: 0.25rem 0.375rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 3px;
    cursor: pointer;
    background: var(--mud-palette-surface);
    transition: background 0.15s ease;
    min-height: 3rem;
    overflow: hidden;
}

.month-cell:hover[b-ysbm6ud3o2] {
    background: var(--mud-palette-action-default-hover);
}

.month-cell.is-outside[b-ysbm6ud3o2] {
    opacity: 0.4;
}

.month-cell.is-today[b-ysbm6ud3o2] {
    border-color: var(--mud-palette-primary);
}

.month-cell.is-selected[b-ysbm6ud3o2] {
    background: var(--mud-palette-primary-hover);
    border-color: var(--mud-palette-primary);
}

.month-cell-date[b-ysbm6ud3o2] {
    font-weight: 600;
    font-size: 0.875rem;
}

.month-cell-count[b-ysbm6ud3o2] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
/* /Components/User/Bookings/BookingsCalendarWeekView.razor.rz.scp.css */
.week-grid[b-efdsxft0s9] {
    flex: 1;
    display: grid;
    gap: 0.25rem;
    overflow: auto;
}

.week-grid-cols[b-efdsxft0s9] {
    grid-template-columns: repeat(7, 1fr);
    grid-auto-rows: 1fr;
}

.week-grid-rows[b-efdsxft0s9] {
    grid-template-columns: 1fr;
    grid-auto-rows: minmax(3rem, auto);
}

.week-cell[b-efdsxft0s9] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 4px;
    padding: 0.5rem;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
    background: var(--mud-palette-surface);
    min-height: 4rem;
}

.week-grid-rows .week-cell[b-efdsxft0s9] {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    min-height: unset;
}

.week-cell:hover[b-efdsxft0s9] {
    background: var(--mud-palette-action-default-hover);
}

.week-cell.is-today[b-efdsxft0s9] {
    border-color: var(--mud-palette-primary);
}

.week-cell.is-selected[b-efdsxft0s9] {
    background: var(--mud-palette-primary-hover);
    border-color: var(--mud-palette-primary);
}

.week-cell-header[b-efdsxft0s9] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.125rem;
}

.week-grid-rows .week-cell-header[b-efdsxft0s9] {
    flex-direction: row;
    align-items: baseline;
    gap: 0.5rem;
}

.week-cell-dow[b-efdsxft0s9] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
}

.week-cell-date[b-efdsxft0s9] {
    font-size: 1.25rem;
    font-weight: 600;
}

.week-cell-count[b-efdsxft0s9] {
    margin-top: auto;
    font-size: 0.875rem;
    color: var(--mud-palette-text-secondary);
}

.week-grid-rows .week-cell-count[b-efdsxft0s9] {
    margin-top: 0;
}
/* /Components/User/Bookings/SelectRentalItemForBooking.razor.rz.scp.css */
.rental-row[b-bvws50d0o3] {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
}

.rental-row__info[b-bvws50d0o3] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
}

.rental-row > *:last-child[b-bvws50d0o3] {
    flex: 0 0 auto;
}

.rental-row__info[b-bvws50d0o3]  .rental-row__free {
    padding-left: 32px;
}

.rental-row__info[b-bvws50d0o3]  .mud-checkbox > .mud-typography {
    white-space: normal;
    word-break: break-word;
}
/* /Layout/AppLayout.razor.rz.scp.css */
.page[b-gci4v8dvp9] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-gci4v8dvp9] {
    flex: 1;
}

.navigation[b-gci4v8dvp9] {
    background-image: linear-gradient(180deg, #4cf216 0%, #061701 70%);
}

.top-row[b-gci4v8dvp9] {
    background-color: #132e0b;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
    color: white;
}

    .top-row[b-gci4v8dvp9]  a, .top-row[b-gci4v8dvp9]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-gci4v8dvp9]  a:hover, .top-row[b-gci4v8dvp9]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-gci4v8dvp9]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-gci4v8dvp9] {
        justify-content: space-between;
    }

    .top-row[b-gci4v8dvp9]  a, .top-row[b-gci4v8dvp9]  .btn-link {
        margin-left: 0;
    }
}

.tenant-name[b-gci4v8dvp9] {
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    position: relative;
    padding-right: 2em;
}

.tenant-name[b-gci4v8dvp9]::after {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 2em;
    background: linear-gradient(to right, transparent, var(--mud-palette-primary));
    pointer-events: none;
}

@media (min-width: 641px) {
    .page[b-gci4v8dvp9] {
        flex-direction: row;
    }

    .navigation[b-gci4v8dvp9] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-gci4v8dvp9] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-gci4v8dvp9]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-gci4v8dvp9], article[b-gci4v8dvp9] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}
/* /Layout/LoginLayout.razor.rz.scp.css */
.centered-layout[b-eqjawluujv] {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.centered-layout[b-eqjawluujv]  .mud-input-outlined {
    background: white;
    border-radius: 4px; /* Match MudBlazor's default radius */
}

.centered-layout[b-eqjawluujv]  .mud-input-outlined-border {
    border-radius: 4px; /* Ensure border matches */
}
/* /Pages/Common/Stats/CurrentRentalState.razor.rz.scp.css */
[b-s039nskhd4] .mud-table-cell {
    text-align: center !important;
}
/* /Pages/User/Bookings/BookingDialog.razor.rz.scp.css */
/* The bar has three layouts, and the middle one is the odd one: wide enough for a single row only
   because the two secondary buttons give up their words there. Stacked, they get them back — two
   rows of two has the space for them. */

.booking-dialog-actions[b-hykbiiz0hq] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    gap: 8px 16px;
    padding: 8px 16px;
}

/* The stage navigation keeps its width: squeezed, its label wrapped to two lines under the
   neighbouring button. What gives way instead is the action group, and it wraps whole. */
.booking-dialog-actions[b-hykbiiz0hq]  > .mud-button-root {
    flex-shrink: 0;
}

.booking-dialog-primary-actions[b-hykbiiz0hq] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    margin-left: auto;
}

/* The tooltip is the flex item, not the button inside it, so every size the row hands out stops at
   the wrapper — which is why the instructor button came out shorter than the one beside it. */
.booking-dialog-primary-actions[b-hykbiiz0hq]  > .mud-tooltip-root {
    display: flex;
    align-items: stretch;
}

/* One row, because the two secondary buttons are down to their icon. Below Medium the dialog is no
   longer 960px wide but as wide as the window allows, and five worded buttons stop fitting; their
   `title` carries the name for a mouse, and the instructor's tooltip still explains the disabled
   state. */
@media (min-width: 601px) and (max-width: 960px) {
    .booking-dialog-primary-actions[b-hykbiiz0hq]  .booking-action-text {
        display: none;
    }

    .booking-dialog-primary-actions[b-hykbiiz0hq]  .booking-secondary-action {
        min-width: 40px;
        width: 40px;
        padding: 0;
    }

    .booking-dialog-primary-actions[b-hykbiiz0hq]  .booking-secondary-action .mud-button-label {
        justify-content: center;
    }

    .booking-dialog-primary-actions[b-hykbiiz0hq]  .booking-secondary-action .mud-button-icon-start {
        margin: 0;
    }
}

/* Two rows of two, all of them worded. */
@media (max-width: 600px) {
    .booking-dialog-actions[b-hykbiiz0hq] {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    /* Stacked, the column would stretch it to the full width and MudBlazor centres a button's label,
       so the stage navigation reads as a banner rather than as the aside it is. */
    .booking-dialog-actions[b-hykbiiz0hq]  > .mud-button-root {
        align-self: flex-start;
    }

    /* Stacked, the group owns the full width, so the desktop right-alignment has to go — a third
       button would otherwise sit on the right of its row instead of beside the second. */
    .booking-dialog-primary-actions[b-hykbiiz0hq] {
        width: 100%;
        justify-content: flex-start;
        margin-left: 0;
    }

    /* Half the row each, gap included, so exactly two sit on a line. ::deep because these are
       child-component roots, which Blazor does NOT stamp with the scope attribute
       (see CLAUDE.md → Blazor CSS Isolation). */
    .booking-dialog-primary-actions[b-hykbiiz0hq]  > * {
        flex: 1 1 calc(50% - 4px);
        min-width: 0;
    }

    /* The button inside the MudTooltip wrapper has to fill the half its wrapper was given. */
    .booking-dialog-primary-actions[b-hykbiiz0hq]  .mud-button-root {
        width: 100%;
        min-width: 0;
    }

    /* Safety net: let a long label wrap inside its button instead of clipping. */
    .booking-dialog-primary-actions[b-hykbiiz0hq]  .mud-button-label {
        white-space: normal;
    }
}
/* /Pages/User/Bookings/FinalizeBookingDialog.razor.rz.scp.css */
.price-summary[b-vjrn9k8y2g] {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-around;
}

.price-summary-item[b-vjrn9k8y2g] {
    display: grid;
}

@media (max-width: 600px) {
    .price-summary[b-vjrn9k8y2g] {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .price-summary-item[b-vjrn9k8y2g] {
        grid-template-columns: 1fr auto;
        align-items: center;
        gap: 12px;
    }
}

.members-table[b-vjrn9k8y2g]  .mud-table-cell,
.members-table[b-vjrn9k8y2g]  .mud-table-head .mud-table-cell {
    font-size: 0.75rem;
    padding-left: 8px;
    padding-right: 8px;
}

.members-table[b-vjrn9k8y2g]  .mud-chip {
    font-size: 0.7rem;
    height: 22px;
}
/* /Pages/User/Bookings/FinalizeBookingMemberDialog.razor.rz.scp.css */
.finalize-member-actions[b-avuqtsccwq] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    width: 100%;
}

@media (max-width: 600px) {
    .finalize-member-actions[b-avuqtsccwq] {
        flex-wrap: wrap;
    }

    /* Two buttons per row (Cancel + Save); "Pay now" wraps to its own row and,
       being the only item there, grows to full width via flex-grow. ::deep
       because these are MudButton roots, which Blazor does NOT stamp with the
       scope attribute (see CLAUDE.md → Blazor CSS Isolation). */
    .finalize-member-actions[b-avuqtsccwq]  .mud-button-root {
        flex: 1 1 calc(50% - 4px);
        min-width: 0;
    }

    /* Let a long label wrap instead of clipping. */
    .finalize-member-actions[b-avuqtsccwq]  .mud-button-label {
        white-space: normal;
    }
}
/* /Pages/User/Notifications/NotificationsPage.razor.rz.scp.css */
/* Rows are rendered by MudTable, so they never get this component's scope attribute — target them
   through ::deep from the scoped root (.notifications-page). See CLAUDE.md "Blazor CSS Isolation". */
[b-d1cojj390p] tbody tr {
    cursor: pointer;
}

/* Unread rows are bold so they stand apart from the handled history below. */
[b-d1cojj390p] .notifications-page__row--unread td {
    font-weight: 700;
}

/* Give the actions column real width (not shrink-to-fit) so its centred header and mark-read button
   sit in the middle of the column rather than hugging the table's right edge. */
[b-d1cojj390p] .notif-actions-col {
    width: 100px;
    text-align: center;
}

/* On phones the "mark all read" button collapses to just its icon — the label is bulky on a narrow
   toolbar. Drop the label and the now-orphaned start-icon margin so the icon sits centred. */
@media (max-width: 599.98px) {
    [b-d1cojj390p] .mark-all-btn__label {
        display: none;
    }

    [b-d1cojj390p] .mark-all-btn .mud-button-icon-start {
        margin: 0;
    }
}
/* /Pages/User/OrderLog/DayStatsPanel.razor.rz.scp.css */
[b-8cc9ai6d2z] .mud-tab-panel {
    width: 100%;
}
/* /Pages/User/Products/ProductDialog.razor.rz.scp.css */
.custom-price-checkbox[b-kt3jsv43fk]  .mud-button-root {
    padding-left: 0;
}
/* /Pages/User/Settings/ClientSettings.razor.rz.scp.css */
/*
 * Left-column sidebar: flex column so Save button always sits below the panels.
 * The scroll is handled inside RentalSettings (.rental-scroll).
 */
.settings-sidebar[b-re6le21wy2] {
    display: flex;
    flex-direction: column;
}

/* MudButton is a child component — its root doesn't get the scope attribute,
   so use ::deep. Prevent the flex column from stretching the button. */
.settings-sidebar[b-re6le21wy2]  .mud-button-root {
    align-self: flex-start;
}
/* /Pages/User/Settings/FacilityPrices.razor.rz.scp.css */
.facility-prices[b-qrlvl2r7az]  .price-header-cell {
    position: relative;
}

.facility-prices[b-qrlvl2r7az]  .price-header-menu {
    position: absolute;
    top: 2px;
    right: 2px;
}

.facility-prices[b-qrlvl2r7az]  .price-header-labels {
    gap: 0 !important;
    padding-right: 24px;
}
/* /Pages/User/Settings/RentalSettings.razor.rz.scp.css */
/* Scroll is contained here so that the outer MudExpansionPanels elevation/shadow
   is never clipped by overflow:auto on a parent wrapper.
   Offset ≈ 22rem:
     dense AppBar (3rem) + py-4 padding (2rem) + MudTabs + mt-4 (4rem)
     + two expansion-panel headers (6rem) + Save button + mt-4 (5rem) + inner padding (2rem) */
.rental-scroll[b-z9p9rhpeya] {
    overflow-y: auto;
    max-height: calc(100dvh - 22rem);
    padding-right: 6px; /* breathing room so scrollbar doesn't overlay content */
}

.rental-settings[b-z9p9rhpeya]  .self-start {
    align-self: start;
}

.rental-settings[b-z9p9rhpeya]  .nowrap {
    text-wrap-mode: nowrap;
}
/* /Pages/User/Settings/WorkScheduleEditor.razor.rz.scp.css */
.schedule-table[b-a38igu1yy8]  th.mud-table-cell {
    padding: 6px 8px;
    font-size: 0.8rem;
    border-right: 1px solid rgba(0,0,0,0.12);
}

.schedule-table[b-a38igu1yy8]  th.mud-table-cell:last-child {
    border-right: none;
}

.schedule-table[b-a38igu1yy8]  td.mud-table-cell {
    padding: 3px 6px;
    border-right: 1px solid rgba(0,0,0,0.12);
}

.schedule-table[b-a38igu1yy8]  td.mud-table-cell:last-child {
    border-right: none;
}

.schedule-table[b-a38igu1yy8]  .mud-select {
    margin: 0;
}

.schedule-table[b-a38igu1yy8]  .mud-input-root {
    padding-right: 24px; /* room for dropdown arrow */
}
