/* /Components/Layout/DashboardLayout.razor.rz.scp.css */
.dash[b-ftqmka5hhp] {
    display: flex;
    height: 100vh;
    width: 100%;
    overflow: hidden;
    background: var(--rd-surface);
}

.dash__body[b-ftqmka5hhp] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dash__content[b-ftqmka5hhp] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    background: var(--rd-surface);
}
/* /Components/Layout/NotAuthorizedView.razor.rz.scp.css */
.not-authorized[b-plwhqamgde] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    padding: 4rem 1rem;
    text-align: center;
    color: var(--rd-muted);
}

    .not-authorized h1[b-plwhqamgde] {
        margin: 0;
        font-size: 1.4rem;
        color: var(--rd-ink);
    }

    .not-authorized p[b-plwhqamgde] {
        margin: 0 0 0.75rem;
        max-width: 32rem;
    }
/* /Components/Layout/SideNav.razor.rz.scp.css */
/* The left navigation of the Rodly client (side-nav__*), driven by routes instead of session state. */
.side-nav[b-5nqodhu41u] {
    display: flex;
    flex-direction: column;
    flex: 0 0 15rem;
    width: 15rem;
    height: 100%;
    padding: 0.9rem 0.6rem 0.75rem;
    gap: 0.75rem;
    background: linear-gradient(180deg, #f8fbff 0%, #eef4ff 100%);
    border-right: 1px solid var(--rd-line);
    position: relative;
    z-index: 20;
    transition: flex-basis 0.25s ease, width 0.25s ease, padding 0.25s ease;
}

.side-nav--collapsed[b-5nqodhu41u] {
    flex-basis: 3.6rem;
    width: 3.6rem;
    padding-left: 0.4rem;
    padding-right: 0.4rem;
}

/* Brand */
.side-nav__brand[b-5nqodhu41u] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.2rem 0.4rem;
    color: var(--rd-ink);
}

.side-nav__mark[b-5nqodhu41u] {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    border-radius: 9px;
    background: linear-gradient(135deg, var(--rd-blue-soft), var(--rd-blue));
    box-shadow: 0 6px 16px rgba(25, 134, 242, 0.35);
}

    .side-nav__mark img[b-5nqodhu41u] {
        width: 60%;
        height: 60%;
        display: block;
    }

.side-nav__brand-text[b-5nqodhu41u],
.side-nav__company-text[b-5nqodhu41u],
.side-nav__user-text[b-5nqodhu41u] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
    transition: opacity 0.15s ease, max-width 0.25s ease;
}

.side-nav__brand-name[b-5nqodhu41u] {
    font-weight: 600;
    line-height: 1.1;
}

.side-nav__brand-sub[b-5nqodhu41u] {
    font-size: 0.7rem;
    color: var(--rd-muted);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* Company */
.side-nav__company[b-5nqodhu41u] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.5rem 0.5rem;
    border-radius: 12px;
    background: white;
    border: 1px solid var(--rd-line);
}

.side-nav__company-text[b-5nqodhu41u] {
    flex: 1;
}

.side-nav__company-close[b-5nqodhu41u] {
    flex: 0 0 auto;
    margin: 0;
}

    .side-nav__company-close button[b-5nqodhu41u] {
        display: grid;
        place-items: center;
        width: 1.6rem;
        height: 1.6rem;
        border: none;
        border-radius: 999px;
        background: transparent;
        color: #b45309;
        cursor: pointer;
        transition: background 0.15s, color 0.15s;
    }

        .side-nav__company-close button:hover[b-5nqodhu41u] {
            background: rgba(245, 158, 11, 0.18);
            color: #78350f;
        }

.side-nav--collapsed .side-nav__company-close[b-5nqodhu41u] {
    display: none;
}

.side-nav__company--view-as[b-5nqodhu41u] {
    border-color: rgba(245, 158, 11, 0.5);
    background: rgba(245, 158, 11, 0.08);
}

.side-nav__company-initial[b-5nqodhu41u],
.side-nav__avatar[b-5nqodhu41u] {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 8px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-navy);
    font-size: 0.75rem;
    font-weight: 700;
}

.side-nav__company-name[b-5nqodhu41u],
.side-nav__user-name[b-5nqodhu41u] {
    font-size: 0.82rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.side-nav__company-role[b-5nqodhu41u],
.side-nav__user-email[b-5nqodhu41u] {
    font-size: 0.7rem;
    color: var(--rd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Menu */
.side-nav__menu[b-5nqodhu41u] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
}

.side-nav__group + .side-nav__group[b-5nqodhu41u] {
    margin-top: 0.9rem;
}

.side-nav__heading[b-5nqodhu41u] {
    position: relative;
    height: 1.3rem;
    padding: 0 0.5rem;
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--rd-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.side-nav__heading-text[b-5nqodhu41u] {
    display: block;
    white-space: nowrap;
    transition: opacity 0.15s ease;
}

.side-nav__divider[b-5nqodhu41u] {
    position: absolute;
    left: 0.3rem;
    right: 0.3rem;
    top: 0.6rem;
    height: 1px;
    background: var(--rd-line-strong);
    opacity: 0;
    transition: opacity 0.15s ease;
}

.side-nav--collapsed .side-nav__heading-text[b-5nqodhu41u],
.side-nav--collapsed .side-nav__brand-text[b-5nqodhu41u],
.side-nav--collapsed .side-nav__company-text[b-5nqodhu41u],
.side-nav--collapsed .side-nav__user-text[b-5nqodhu41u] {
    opacity: 0;
    max-width: 0;
}

.side-nav--collapsed .side-nav__divider[b-5nqodhu41u] {
    opacity: 1;
    transition-delay: 0.1s;
}

[b-5nqodhu41u] .side-nav__item,
.side-nav__action[b-5nqodhu41u] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    width: 100%;
    padding: 0.45rem 0.5rem;
    margin-bottom: 0.15rem;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: var(--rd-ink);
    font-size: 0.85rem;
    text-align: left;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, gap 0.25s ease, padding 0.25s ease;
}

    [b-5nqodhu41u] .side-nav__item:hover,
    .side-nav__action:hover[b-5nqodhu41u] {
        background: rgba(37, 99, 235, 0.07);
    }

    [b-5nqodhu41u] .side-nav__item.is-active {
        background: linear-gradient(135deg, var(--rd-blue-soft) 0%, var(--rd-blue-deep) 100%);
        color: white;
        box-shadow: 0 6px 16px rgba(37, 99, 235, 0.24);
    }

.side-nav--collapsed[b-5nqodhu41u]  .side-nav__item,
.side-nav--collapsed .side-nav__action[b-5nqodhu41u] {
    gap: 0;
    padding-left: 0.45rem;
    padding-right: 0.45rem;
}

[b-5nqodhu41u] .side-nav__icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 8px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-navy);
}

[b-5nqodhu41u] .side-nav__item.is-active .side-nav__icon {
    background: rgba(255, 255, 255, 0.22);
    color: white;
}

[b-5nqodhu41u] .side-nav__label {
    flex: 1;
    max-width: 12rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity 0.15s ease, max-width 0.25s ease;
}

.side-nav--collapsed[b-5nqodhu41u]  .side-nav__label {
    max-width: 0;
    opacity: 0;
}

[b-5nqodhu41u] .side-nav__badge {
    flex: 0 0 auto;
    min-width: 1.3rem;
    padding: 0 0.4rem;
    border-radius: 999px;
    background: var(--rd-warning);
    color: white;
    font-size: 0.7rem;
    font-weight: 600;
    text-align: center;
    line-height: 1.3rem;
}

.side-nav--collapsed[b-5nqodhu41u]  .side-nav__badge {
    position: absolute;
    right: 0.2rem;
    top: 0.1rem;
    min-width: 1rem;
    line-height: 1rem;
    font-size: 0.6rem;
}

/* Footer */
.side-nav__footer[b-5nqodhu41u] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--rd-line-strong);
}

.side-nav__user[b-5nqodhu41u] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.3rem 0.5rem;
}

.side-nav__actions .side-nav__action[b-5nqodhu41u] {
    color: var(--rd-muted);
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
}

.side-nav__actions .side-nav__action[b-5nqodhu41u]  svg {
    flex: 0 0 auto;
    width: 1.8rem;
}

/* Language dropdown */
.lang-menu[b-5nqodhu41u] {
    position: relative;
}

    .lang-menu > summary[b-5nqodhu41u] {
        list-style: none;
    }

        .lang-menu > summary[b-5nqodhu41u]::-webkit-details-marker {
            display: none;
        }

.lang-menu__chevron[b-5nqodhu41u] {
    margin-left: auto;
    display: inline-flex;
    transition: transform 0.2s ease;
}

.lang-menu[open] .lang-menu__chevron[b-5nqodhu41u] {
    transform: rotate(180deg);
}

.lang-menu__list[b-5nqodhu41u] {
    position: absolute;
    left: 0;
    right: 0;
    bottom: calc(100% + 0.35rem);
    z-index: 50;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 11rem;
    padding: 0.4rem;
    border: 1px solid var(--rd-line);
    border-radius: 12px;
    background: white;
    box-shadow: 0 12px 32px rgba(2, 6, 23, 0.16);
    animation: lang-menu-in-b-5nqodhu41u 0.16s ease both;
}

.lang-menu__heading[b-5nqodhu41u] {
    padding: 0.25rem 0.5rem 0.35rem;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

.lang-menu__option[b-5nqodhu41u] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.45rem 0.55rem;
    border-radius: 8px;
    color: var(--rd-ink);
    font-size: 0.85rem;
    text-decoration: none;
}

    .lang-menu__option:hover[b-5nqodhu41u] {
        background: rgba(37, 99, 235, 0.07);
    }

    .lang-menu__option.is-current[b-5nqodhu41u] {
        color: var(--rd-blue-deep);
        font-weight: 600;
    }

@keyframes lang-menu-in-b-5nqodhu41u {
    from { opacity: 0; transform: translateY(4px); }
}

.side-nav__collapse[b-5nqodhu41u] {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    margin-left: calc(100% - 2rem);
    border: 1px solid var(--rd-line-strong);
    border-radius: 999px;
    background: white;
    color: var(--rd-navy);
    cursor: pointer;
    transition: margin-left 0.25s ease, background 0.15s;
}

/* The chevron points to where the navigation goes: left to collapse, right to expand. */
.side-nav__collapse[b-5nqodhu41u]  svg {
    transform: rotate(90deg);
    transition: transform 0.25s ease;
}

.side-nav--collapsed .side-nav__collapse[b-5nqodhu41u] {
    margin-left: calc(50% - 1rem);
}

    .side-nav--collapsed .side-nav__collapse[b-5nqodhu41u]  svg {
        transform: rotate(-90deg);
    }

    .side-nav__collapse:hover[b-5nqodhu41u] {
        background: rgba(37, 99, 235, 0.05);
    }
/* /Components/Pages/Admin/CompanyPage.razor.rz.scp.css */
[b-ycrj3a09ox] .admin-grid {
    align-items: start;
}

.admin-side[b-ycrj3a09ox] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.company-approval[b-ycrj3a09ox] {
    align-items: center;
    margin-bottom: 1.25rem;
}

.company-approval__body[b-ycrj3a09ox] {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 0.15rem;
}

.company-approval__actions[b-ycrj3a09ox] {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .company-approval[b-ycrj3a09ox] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Admin/MachinesPage.razor.rz.scp.css */
.mc[b-7bcphzo91f] {
    display: grid;
    grid-template-columns: 20rem minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

.mc__side[b-7bcphzo91f] {
    position: sticky;
    top: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.mc__list-card[b-7bcphzo91f] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    padding: 0.75rem;
    border: 1px solid var(--rd-line);
    border-radius: 14px;
    background: var(--rd-surface);
}

.mc__toolbar[b-7bcphzo91f] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

    .mc__toolbar[b-7bcphzo91f]  .mc__search {
        flex: 1;
        min-width: 0;
    }

    .mc__toolbar[b-7bcphzo91f]  .mc__new {
        flex: 0 0 auto;
        display: inline-flex;
        align-items: center;
        gap: 0.3rem;
        padding: 0.5rem 0.8rem;
    }

.mc__empty[b-7bcphzo91f] {
    margin: 0.25rem 0.35rem;
    font-size: 0.82rem;
}

.mc__list[b-7bcphzo91f] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    max-height: 60vh;
    margin: 0;
    padding: 0;
    overflow: auto;
    list-style: none;
}

.mc__item[b-7bcphzo91f] {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas: "name usage" "sub usage";
    align-items: center;
    gap: 0.05rem 0.5rem;
    width: 100%;
    padding: 0.55rem 0.65rem;
    border: 1px solid transparent;
    border-radius: 10px;
    background: transparent;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}

    .mc__item:hover[b-7bcphzo91f] {
        background: var(--rd-surface-2);
    }

    .mc__item.is-active[b-7bcphzo91f] {
        border-color: rgba(37, 99, 235, 0.35);
        background: rgba(37, 99, 235, 0.07);
    }

.mc__item-name[b-7bcphzo91f] {
    grid-area: name;
    font-size: 0.88rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mc__item-sub[b-7bcphzo91f] {
    grid-area: sub;
    font-size: 0.74rem;
    color: var(--rd-muted);
}

.mc__item-usage[b-7bcphzo91f] {
    grid-area: usage;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    background: rgba(22, 163, 74, 0.1);
    color: #15803d;
    font-size: 0.68rem;
    font-weight: 600;
    white-space: nowrap;
}

    .mc__item-usage.is-unused[b-7bcphzo91f] {
        background: var(--rd-surface-3);
        color: var(--rd-muted);
    }

.mc__main[b-7bcphzo91f] {
    min-width: 0;
}

/* Sticky save bar at the bottom of the viewport */
.page--with-savebar[b-7bcphzo91f] {
    padding-bottom: 6rem;
}

.savebar[b-7bcphzo91f] {
    position: fixed;
    bottom: 1.25rem;
    left: 50%;
    z-index: 700;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 0.6rem 0.55rem 1rem;
    border-radius: 14px;
    background: var(--rd-navy);
    color: white;
    box-shadow: 0 16px 40px rgba(2, 6, 23, 0.3);
    transform: translateX(-50%);
    animation: savebar-in-b-7bcphzo91f 0.25s cubic-bezier(0.2, 0.75, 0.15, 1) both;
}

.savebar__text[b-7bcphzo91f] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-right: 0.75rem;
    font-size: 0.85rem;
}

    .savebar[b-7bcphzo91f]  .savebar__discard {
        color: rgba(255, 255, 255, 0.85);
    }

@keyframes savebar-in-b-7bcphzo91f {
    from { opacity: 0; transform: translate(-50%, 12px); }
}

@media (max-width: 900px) {
    .mc[b-7bcphzo91f] {
        grid-template-columns: 1fr;
    }

    .mc__side[b-7bcphzo91f] {
        position: static;
    }
}
/* /Components/Pages/Factories/Connectors/AttributeLadderEditor.razor.rz.scp.css */
.ladder[b-6u6475y53r] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: 0.5rem;
    padding: 0.5rem 0.6rem;
    border-radius: 8px;
    background: var(--rd-surface-2);
}

.ladder__settings[b-6u6475y53r] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

    .ladder__settings select[b-6u6475y53r] {
        width: auto;
    }

.ladder__label[b-6u6475y53r] {
    font-size: 0.75rem;
    color: var(--rd-muted);
}

.ladder__grid[b-6u6475y53r] {
    display: grid;
    grid-template-columns: 1fr 1fr 2.5rem 1.5fr 2rem;
    align-items: center;
    gap: 0.4rem;
}

.ladder__grid--header[b-6u6475y53r] {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

    .ladder__grid--header span:nth-child(3)[b-6u6475y53r] {
        text-align: center;
    }

.ladder__grid input[type=number][b-6u6475y53r],
.ladder__grid input[type=text][b-6u6475y53r] {
    box-sizing: border-box;
    width: 100%;
    height: 1.9rem;
    padding: 2px 6px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font: inherit;
    font-size: 0.82rem;
    background: white;
}

.ladder__grid input[type=checkbox][b-6u6475y53r] {
    justify-self: center;
    accent-color: var(--rd-blue);
}

.ladder__grid input:disabled[b-6u6475y53r] {
    background: var(--rd-surface-3);
    color: var(--rd-muted);
}
/* /Components/Pages/Factories/Connectors/ComponentRuleEditor.razor.rz.scp.css */
.rules[b-kfkkg7b2pq] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.rules__header[b-kfkkg7b2pq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.rule[b-kfkkg7b2pq] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--rd-line);
    border-radius: 8px;
}

.rule__row[b-kfkkg7b2pq] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.rule__name[b-kfkkg7b2pq],
.rule__input[b-kfkkg7b2pq] {
    flex: 1 1 auto;
    min-width: 0;
    box-sizing: border-box;
    height: 1.9rem;
    padding: 2px 6px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font: inherit;
    font-size: 0.82rem;
}

.rule__condition select[b-kfkkg7b2pq] {
    width: auto;
}

.rule__keyword[b-kfkkg7b2pq] {
    flex: 0 0 auto;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--rd-navy);
}

.rule__branch[b-kfkkg7b2pq] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding-left: 0.6rem;
    border-left: 2px solid var(--rd-line-strong);
}

.rule__empty[b-kfkkg7b2pq] {
    font-size: 0.78rem;
    color: var(--rd-muted);
}

.rule__attribute[b-kfkkg7b2pq] {
    flex: 0 0 8rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.8rem;
    color: var(--rd-muted-2);
}

.rule__ladder-note[b-kfkkg7b2pq] {
    flex: 1 1 auto;
    font-size: 0.78rem;
    color: var(--rd-blue-deep);
}

[b-kfkkg7b2pq] .rule__toggle {
    flex: 0 0 auto;
    font-size: 0.78rem;
    color: var(--rd-muted);
}
/* /Components/Pages/Factories/Connectors/TeklaComponents.razor.rz.scp.css */
.components[b-88dc1tjejh] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(26rem, 1fr));
    gap: 0.75rem;
}

[b-88dc1tjejh] .component {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.component__header[b-88dc1tjejh] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.component__name[b-88dc1tjejh] {
    font-weight: 600;
    color: var(--rd-ink);
}

.component__badges[b-88dc1tjejh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-top: 0.25rem;
}

.component__actions[b-88dc1tjejh] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

    .component__actions select[b-88dc1tjejh] {
        width: auto;
    }

.attribute[b-88dc1tjejh] {
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--rd-line);
    border-radius: 8px;
}

    .attribute + .attribute[b-88dc1tjejh] {
        margin-top: 0.4rem;
    }

.attribute__row[b-88dc1tjejh] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.attribute__name[b-88dc1tjejh] {
    flex: 0 0 9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.8rem;
    color: var(--rd-muted-2);
}

.attribute__value[b-88dc1tjejh] {
    flex: 1 1 auto;
    min-width: 0;
    box-sizing: border-box;
    height: 2rem;
    padding: 3px 8px;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font: inherit;
    font-size: 0.85rem;
}

.attribute__ladder-note[b-88dc1tjejh] {
    flex: 1 1 auto;
    font-size: 0.78rem;
    color: var(--rd-blue-deep);
}

[b-88dc1tjejh] .attribute__toggle {
    flex: 0 0 auto;
    font-size: 0.78rem;
    color: var(--rd-muted);
}
/* /Components/Pages/Factories/FactoriesPage.razor.rz.scp.css */
[b-ohgeyyulbp] .factory-card {
    color: inherit;
}

.factory-card__top[b-ohgeyyulbp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.factory-card__icon[b-ohgeyyulbp] {
    display: grid;
    place-items: center;
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 10px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-navy);
}

.factory-card__facts[b-ohgeyyulbp] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1rem;
    margin: 0.3rem 0 0.6rem;
    font-size: 0.78rem;
    color: var(--rd-muted);
}

    .factory-card__facts span[b-ohgeyyulbp] {
        display: inline-flex;
        align-items: center;
        gap: 0.3rem;
    }
/* /Components/Pages/Factories/FactoryPage.razor.rz.scp.css */
[b-i5sdwfl4mg] .tab--danger {
    color: var(--rd-error);
}

    [b-i5sdwfl4mg] .tab--danger:hover {
        color: var(--rd-error-deep);
    }
/* /Components/Pages/Factories/FactoryWizardPage.razor.rz.scp.css */
.wizard[b-vlid4lsuqh] {
    display: flex;
    gap: 1.5rem;
    margin: 0 0 1.5rem;
    padding: 0;
    list-style: none;
}

.wizard__step[b-vlid4lsuqh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--rd-muted);
    font-size: 0.85rem;
}

.wizard__number[b-vlid4lsuqh] {
    display: grid;
    place-items: center;
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 50%;
    background: var(--rd-surface-3);
    font-size: 0.75rem;
    font-weight: 600;
}

.wizard__step.is-active[b-vlid4lsuqh] {
    color: var(--rd-ink);
    font-weight: 600;
}

    .wizard__step.is-active .wizard__number[b-vlid4lsuqh] {
        background: linear-gradient(135deg, var(--rd-blue-soft), var(--rd-blue-deep));
        color: white;
        box-shadow: 0 6px 16px rgba(37, 99, 235, 0.3);
    }

.wizard__step.is-done .wizard__number[b-vlid4lsuqh] {
    background: rgba(22, 163, 74, 0.15);
    color: #15803d;
}

.wizard__actions[b-vlid4lsuqh] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.6rem;
    margin-top: 1.5rem;
}

    .wizard__actions > div[b-vlid4lsuqh] {
        display: flex;
        gap: 0.6rem;
    }

[b-vlid4lsuqh] .type-card {
    align-items: flex-start;
    text-align: left;
    cursor: pointer;
    font: inherit;
}

    [b-vlid4lsuqh] .type-card.is-selected {
        border-color: var(--rd-blue-deep);
        box-shadow: 0 6px 18px rgba(37, 99, 235, 0.15);
    }

.type-card__icon[b-vlid4lsuqh] {
    display: grid;
    place-items: center;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 12px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-navy);
}
/* /Components/Pages/Factories/Machines/AxisForm.razor.rz.scp.css */
.af[b-hh7hsugzkc] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.af__direction[b-hh7hsugzkc] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem 1.5rem;
}

.af__cards[b-hh7hsugzkc] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
    align-items: start;
    gap: 0.75rem;
}

.af__card[b-hh7hsugzkc] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
    padding: 0.9rem 1rem 1rem;
    border: 1px solid var(--rd-line);
    border-radius: 12px;
    background: var(--rd-surface);
}

.af__card--wide[b-hh7hsugzkc] {
    grid-column: 1 / -1;
}

    .af__card.is-disabled[b-hh7hsugzkc] {
        background: var(--rd-surface-2);
    }

        .af__card.is-disabled .af__header[b-hh7hsugzkc] {
            opacity: 0.6;
        }

.af__note[b-hh7hsugzkc] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    align-self: flex-start;
    margin: 0;
    padding: 0.35rem 0.6rem;
    border-radius: 8px;
    background: var(--rd-surface-3);
    color: var(--rd-muted-2);
    font-size: 0.78rem;
}

.af__header h3[b-hh7hsugzkc] {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
}

.af__header p[b-hh7hsugzkc] {
    margin: 0.15rem 0 0;
    font-size: 0.8rem;
    color: var(--rd-muted);
}

.af__pair[b-hh7hsugzkc] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

    .af__pair span[b-hh7hsugzkc] {
        color: var(--rd-muted);
    }

.af__value[b-hh7hsugzkc] {
    font-size: 0.88rem;
    font-weight: 500;
}

[b-hh7hsugzkc] .af__start {
    align-self: flex-start;
}
/* /Components/Pages/Factories/Machines/BendFigure.razor.rz.scp.css */
/* The angles of a bend, the length of the leg and the clearance are registered, so they can be animated and transitioned (back to the
   rest pose when their row is left). */
@property --bf-theta {
    syntax: "<angle>";
    inherits: true;
    initial-value: 90deg;
}

@property --bf-phi {
    syntax: "<angle>";
    inherits: true;
    initial-value: 0deg;
}

@property --bf-leg {
    syntax: "<length>";
    inherits: true;
    initial-value: 60px;
}

@property --bf-clearance {
    syntax: "<length>";
    inherits: true;
    initial-value: 24px;
}

/* ── The scene ──────────────────────────────────────────────────────────
   The rod's bottom lies along x in the floor (the mesh plane) with its middle at the origin; its legs stand up (z) at both ends. The
   active row comes from FieldFigure: --fig-{row} is 1 while it is active, var(--fig-{row}-off, animation) runs an animation only then. */
.bf__stage[b-cgy3xha00o] {
    --half: 86px; /* half the bottom */
    --bf-clearance: 24px;
    --copy: 38px; /* the simultaneous rods next to the rod */
    --fig-bar: 3.5px;
    --fig-arrow: 2px;
    --fig-head: 9px;
    position: absolute;
    inset: 0;
    /* clearance: the neighbouring rod comes closer and moves away */
    animation: 2.6s ease-in-out infinite;
    animation-name: var(--fig-clearance-off, bf-gap);
    transition: --bf-clearance 0.35s ease;
}

.bf__scene[b-cgy3xha00o] {
    position: absolute;
    left: 50%;
    top: calc(50% + 25px);
}

/* ── The rod ── */
.bf__rod[b-cgy3xha00o] {
    --bf-leg: 60px;
    position: absolute;
    transform-style: preserve-3d;
    transition: color var(--fig-fade) ease, --bf-leg 0.35s ease;
}

.bf__rod--main[b-cgy3xha00o] {
    color: var(--fig-axis);
    animation: 2.6s ease-in-out infinite;
    animation-name: var(--fig-length-off, bf-grow);
}

/* Faint rods of the same shape next to it, for the simultaneous row (they bend in step with it): */
.bf__rod--copy[b-cgy3xha00o] {
    color: color-mix(in srgb, var(--fig-faint) calc(var(--fig-simultaneous, 0) * 100%), transparent);
}

.bf__rod--behind[b-cgy3xha00o] {
    transform: translateY(calc(-1 * var(--copy)));
}

.bf__rod--front[b-cgy3xha00o] {
    transform: translateY(var(--copy));
}

.bf__half[b-cgy3xha00o] {
    position: absolute;
    transform-style: preserve-3d;
}

/* The -x half: the same, mirrored (so a bend plane turns the same way at both ends). */
.bf__half--mirror[b-cgy3xha00o] {
    transform: scaleX(-1);
}

.bf__seg[b-cgy3xha00o] {
    left: 0;
    top: 0;
}

.bf__seg--0[b-cgy3xha00o] {
    width: var(--half);
}

.bf__seg--1[b-cgy3xha00o] {
    width: var(--bf-leg);
}

.bf__seg--2[b-cgy3xha00o] {
    width: 28px;
}

.bf__seg--3[b-cgy3xha00o] {
    width: 16px;
}

/* A bend at the end of a segment: the bend plane turns by φ around the segment, the next segment by θ (up) in that plane. */
.bf__joint[b-cgy3xha00o] {
    --bf-theta: 90deg;
    --bf-phi: 0deg;
    position: absolute;
    left: 100%;
    top: 0;
    transform-style: preserve-3d;
    transition: --bf-theta 0.35s ease, --bf-phi 0.35s ease;
}

.bf__bend[b-cgy3xha00o],
.bf__turn[b-cgy3xha00o] {
    position: absolute;
    left: 0;
    top: 0;
    transform-style: preserve-3d;
}

.bf__bend[b-cgy3xha00o] {
    transform: rotateX(var(--bf-phi));
}

.bf__turn[b-cgy3xha00o] {
    transform: rotateY(calc(-1 * var(--bf-theta)));
}

/* Angle: the legs swing (also all three rods together for the simultaneous row); rotation: the bend planes turn. The keyframes are in
   app.css (CSS isolation would rename them here, but not in the var() fallbacks). */
.bf__rod--main .bf__joint--1[b-cgy3xha00o] {
    animation: 2.4s ease-in-out infinite;
    animation-name: var(--fig-angle-off, bf-swing), var(--fig-simultaneous-off, bf-swing), var(--fig-rotation-off, bf-turn);
}

.bf__rod--copy .bf__joint--1[b-cgy3xha00o] {
    animation: 2.4s ease-in-out infinite;
    animation-name: var(--fig-simultaneous-off, bf-swing);
}

/* ── Annotations ── */

/* Clearance: a faint neighbouring rod, and the space kept clear on both sides of the +x bottom bend. */
.bf__neighbour[b-cgy3xha00o] {
    left: calc(-1 * var(--half) - 24px);
    top: calc(var(--bf-clearance) + var(--fig-bar));
    width: calc(2 * var(--half) + 48px);
    color: color-mix(in srgb, var(--fig-faint) calc(var(--fig-clearance, 0) * 100%), transparent);
    transition: color var(--fig-fade) ease;
}

.bf__clearance[b-cgy3xha00o] {
    --on: var(--fig-clearance, 0);
    left: calc(var(--half) - 8px);
    height: calc(var(--bf-clearance) - var(--fig-bar) / 2);
}

.bf__clearance--near[b-cgy3xha00o] {
    top: calc(var(--fig-bar) / 2 + 1px);
}

.bf__clearance--far[b-cgy3xha00o] {
    top: calc(-1 * var(--bf-clearance) - 1px);
}

/* Max bends: the bend joints, as discs in the bend plane. */
.bf__dot[b-cgy3xha00o] {
    --on: var(--fig-maxBends, 0);
    position: absolute;
    left: -5px;
    top: -5px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: currentColor;
    transform: rotateX(90deg);
}

.bf__more[b-cgy3xha00o] {
    position: absolute;
    top: 0.35rem;
    right: 0.6rem;
    color: color-mix(in srgb, var(--fig-note) calc(var(--fig-maxBends, 0) * 100%), var(--rd-muted));
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1;
    transition: color var(--fig-fade) ease;
}

/* Angle: the straight-on line of the incoming segment, and θ from it to the leg, in the bend plane (turned up into x–z). */
.bf__straight[b-cgy3xha00o] {
    --on: var(--fig-angle, 0);
    position: absolute;
    left: 0;
    top: -1px;
    width: 38px;
    height: 2px;
    background: repeating-linear-gradient(90deg, currentColor 0 4px, transparent 4px 7px);
    transform: rotateX(90deg);
}

.bf__theta[b-cgy3xha00o] {
    --on: var(--fig-angle, 0);
    position: absolute;
    left: -22px;
    top: -22px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    /* a ring with a light wedge; in this plane "right" is straight on (x) and "down" is up (z): */
    background: conic-gradient(from 90deg, currentColor 0 var(--bf-theta), transparent 0);
    -webkit-mask: radial-gradient(farthest-side, rgb(0 0 0 / 0.16) calc(100% - 2.5px), #000 calc(100% - 2px));
    mask: radial-gradient(farthest-side, rgb(0 0 0 / 0.16) calc(100% - 2.5px), #000 calc(100% - 2px));
    transform: rotateX(90deg);
}

/* The labels sit on the bisector of their arc, turned towards the viewer (undoing the bend plane's φ too). */
.bf__theta-label[b-cgy3xha00o] {
    --on: var(--fig-angle, 0);
    left: 0;
    top: 0;
    transform: translate3d(calc(cos(var(--bf-theta) / 2) * 34px), 0, calc(sin(var(--bf-theta) / 2) * 34px)) rotateX(calc(-1 * var(--bf-phi))) var(--face-viewer);
}

/* Rotation: the faint mesh plane and normal (upright, unrotated) bend plane, the plane the rod is bent in, and φ between the last two
   around the incoming segment. */
.bf__floor[b-cgy3xha00o],
.bf__normal[b-cgy3xha00o],
.bf__plane[b-cgy3xha00o] {
    --on: var(--fig-rotation, 0);
    position: absolute;
    box-sizing: border-box;
}

.bf__floor[b-cgy3xha00o] {
    left: -32px;
    top: -26px;
    width: 52px;
    height: 52px;
    border: 1px dashed var(--fig-faint);
    background: color-mix(in srgb, var(--rd-muted) 8%, transparent);
}

.bf__normal[b-cgy3xha00o],
.bf__plane[b-cgy3xha00o] {
    left: -30px;
    top: 0;
    width: 46px;
    height: 64px;
    transform-origin: 50% 0;
    transform: rotateX(90deg);
}

.bf__normal[b-cgy3xha00o] {
    border: 1px dashed var(--fig-faint);
    background: color-mix(in srgb, var(--rd-muted) 10%, transparent);
}

.bf__plane[b-cgy3xha00o] {
    border: 1px solid color-mix(in srgb, var(--fig-axis) 45%, transparent);
    background: color-mix(in srgb, var(--fig-axis) 14%, transparent);
}

.bf__phi[b-cgy3xha00o] {
    --on: var(--fig-rotation, 0);
    position: absolute;
    left: -58px;
    top: -58px;
    width: 116px;
    height: 116px;
    border-radius: 50%;
    /* turned into y–z: "left" is up (z), "up" is -y: */
    background: conic-gradient(from calc(270deg + min(0deg, var(--bf-phi))), currentColor 0 max(var(--bf-phi), -1 * var(--bf-phi)), transparent 0);
    -webkit-mask: radial-gradient(farthest-side, rgb(0 0 0 / 0.16) calc(100% - 2.5px), #000 calc(100% - 2px));
    mask: radial-gradient(farthest-side, rgb(0 0 0 / 0.16) calc(100% - 2.5px), #000 calc(100% - 2px));
    transform: rotateY(90deg);
}

.bf__phi-label[b-cgy3xha00o] {
    --on: var(--fig-rotation, 0);
    left: 0;
    top: 0;
    transform: translate3d(10px, calc(-1 * sin(var(--bf-phi) / 2) * 66px), calc(cos(var(--bf-phi) / 2) * 66px)) var(--face-viewer);
}

    /* −φ while the bend plane is turned counter-clockwise (as seen in the figure; a positive --bf-phi), placed before the φ so that stays
       put. sin() turns the angle into a number to take its sign from. */
    .bf__phi-label[b-cgy3xha00o]::before {
        content: "\2212";
        position: absolute;
        right: 11px;
        opacity: clamp(0, sin(var(--bf-phi)) * 1000, 1);
    }

/* Length: an arrow along the leg, just outside it. */
.bf__length[b-cgy3xha00o] {
    --on: var(--fig-length, 0);
    left: 0;
    top: calc(var(--fig-arrow) / -2);
    width: 100%;
    transform: translateZ(-11px);
}

/* Reduced motion: a still pose instead of the animations. */
@media (prefers-reduced-motion: reduce) {
    .bf__rod--main .bf__joint--1[b-cgy3xha00o] {
        --bf-phi: calc(var(--fig-rotation, 0) * 30deg);
    }
}
/* /Components/Pages/Factories/Machines/FactoryMachinePicker.razor.rz.scp.css */
.mp[b-ifoqou1j9w] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 1rem;
}

.mp--readonly[b-ifoqou1j9w] {
    grid-template-columns: minmax(0, 1fr);
    max-width: 40rem;
}

.mp__column[b-ifoqou1j9w] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
}

.mp__header[b-ifoqou1j9w] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

    .mp__header p[b-ifoqou1j9w] {
        margin: 0.2rem 0 0;
    }

.mp__column[b-ifoqou1j9w]  .mp__search {
    min-width: 0;
}

.mp__list[b-ifoqou1j9w] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.mp__catalogue[b-ifoqou1j9w] {
    max-height: 32rem;
    overflow: auto;
}

/* The factory's list is the drop target, also while empty: */
.mp__selected[b-ifoqou1j9w] {
    min-height: 3.2rem;
    padding: 0.35rem;
    border: 1px dashed transparent;
    border-radius: 12px;
    transition: border-color 0.15s, background 0.15s;
}

    .mp__selected.is-empty[b-ifoqou1j9w] {
        border-color: var(--rd-line-strong);
        background: var(--rd-surface-2);
    }

.mp--readonly .mp__selected[b-ifoqou1j9w] {
    min-height: 0;
    padding: 0;
    border: none;
}

.mp__selected:has(.is-sortable-ghost)[b-ifoqou1j9w] {
    border-color: var(--rd-blue);
    background: var(--rd-tint);
}

/* The hint of an empty list lies on top of it, in the same grid cell, so the list grows to fit the hint (also when it wraps); drops go
   through the hint to the list. */
.mp__drop[b-ifoqou1j9w] {
    display: grid;
}

    .mp__drop > *[b-ifoqou1j9w] {
        grid-area: 1 / 1;
    }

.mp__empty[b-ifoqou1j9w] {
    align-self: center;
    margin: 0;
    padding: 0.85rem;
    text-align: center;
    pointer-events: none;
}

.mp__card[b-ifoqou1j9w],
.mp__item[b-ifoqou1j9w] {
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: var(--rd-surface);
    transition: border-color 0.15s, background 0.15s, opacity 0.15s, box-shadow 0.15s;
}

.mp__card[b-ifoqou1j9w] {
    cursor: grab;
}

    .mp__card:hover[b-ifoqou1j9w] {
        border-color: rgba(37, 99, 235, 0.35);
    }

    .mp__card.is-added[b-ifoqou1j9w] {
        background: var(--rd-surface-2);
        cursor: default;
    }

        .mp__card.is-added .mp__identity[b-ifoqou1j9w] {
            opacity: 0.55;
        }

.mp__card-row[b-ifoqou1j9w] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.5rem;
}

.mp__item[b-ifoqou1j9w] {
    cursor: grab;
}

.mp--readonly .mp__item[b-ifoqou1j9w] {
    cursor: default;
}

    /* The item Alt+↑/↓ moves: */
    .mp__item:focus[b-ifoqou1j9w] {
        outline: none;
        border-color: var(--rd-blue-deep);
        box-shadow: 0 0 0 2px var(--rd-blue-deep), 0 0 0 5px rgba(25, 134, 242, 0.18);
    }

.is-sortable-ghost[b-ifoqou1j9w] {
    opacity: 0.45;
    border-style: dashed;
}

.is-sortable-chosen[b-ifoqou1j9w] {
    box-shadow: 0 8px 20px rgba(2, 6, 23, 0.12);
}

.mp__expand[b-ifoqou1j9w] {
    display: inline-grid;
    place-items: center;
    width: 1.6rem;
    height: 1.6rem;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--rd-muted);
    cursor: pointer;
    transform: rotate(-90deg);
    transition: transform 0.2s ease, background 0.15s;
}

    .mp__expand:hover[b-ifoqou1j9w] {
        background: var(--rd-tint);
        color: var(--rd-navy);
    }

.mp__card.is-expanded .mp__expand[b-ifoqou1j9w],
.mp__item.is-expanded .mp__expand[b-ifoqou1j9w] {
    transform: none;
}

.mp__identity[b-ifoqou1j9w] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.mp__name[b-ifoqou1j9w] {
    overflow: hidden;
    font-size: 0.86rem;
    font-weight: 600;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.mp__summary[b-ifoqou1j9w] {
    color: var(--rd-muted);
    font-size: 0.74rem;
}

.mp__added[b-ifoqou1j9w] {
    display: inline-grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    color: var(--rd-success);
}

.mp__description[b-ifoqou1j9w] {
    margin: 0;
    padding: 0 0.75rem 0.6rem 2.6rem;
    color: var(--rd-muted-2);
    font-size: 0.8rem;
    cursor: default;
}

.mp__description--selected[b-ifoqou1j9w] {
    padding-left: 4.6rem;
}

    .mp__description.is-empty[b-ifoqou1j9w] {
        color: var(--rd-muted);
        font-style: italic;
    }

.mp__position[b-ifoqou1j9w] {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 6px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-navy);
    font-size: 0.72rem;
    font-weight: 700;
}

@media (max-width: 900px) {
    .mp[b-ifoqou1j9w] {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (prefers-reduced-motion: reduce) {
    .mp__card[b-ifoqou1j9w],
    .mp__item[b-ifoqou1j9w],
    .mp__expand[b-ifoqou1j9w],
    .mp__selected[b-ifoqou1j9w] {
        transition: none;
    }
}
/* /Components/Pages/Factories/Machines/FieldFigure.razor.rz.scp.css */
/* ── Tokens shared by the figures ── */
.fig[b-c2ia8xgecd] {
    --fig-x: var(--rd-error);
    --fig-y: var(--rd-success);
    --fig-z: var(--rd-blue);
    --fig-axis: var(--rd-muted-2);
    /* arrows, arcs and their labels: */
    --fig-note: var(--rd-ink);
    --fig-rod: color-mix(in srgb, var(--rd-muted-2) 55%, transparent);
    --fig-rod-light: color-mix(in srgb, var(--rd-muted) 28%, transparent);
    /* neighbouring rods (opaque, so crossing strips don't darken): */
    --fig-faint: color-mix(in srgb, var(--rd-muted) 40%, var(--rd-surface-2));
    /* arrows of the state on screen that are not active: */
    --fig-idle: color-mix(in srgb, var(--rd-muted) 22%, transparent);
    --fig-fade: 0.2s;
    --fig-bar: 4px; /* rod thickness */
    --fig-arrow: 3px; /* arrow thickness */
    --fig-head: 13px; /* arrow head */
    /* The inverse of the isometric view, to turn labels towards the viewer: */
    --face-viewer: rotateZ(36deg) rotateX(-58deg);
}

/* The rod being edited, in its axis colour: */
.fig-tint--x[b-c2ia8xgecd] {
    --fig-axis: var(--fig-x);
}

.fig-tint--y[b-c2ia8xgecd] {
    --fig-axis: var(--fig-y);
}

.fig-tint--z[b-c2ia8xgecd] {
    --fig-axis: var(--fig-z);
}

/* ── Layout ── */
.fig__fields[b-c2ia8xgecd] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

    /* A row: what the figure reacts to (hover/focus). */
    .fig__fields[b-c2ia8xgecd]  > * {
        padding: 0.35rem 0.5rem;
        border-radius: 8px;
        transition: background 0.15s;
    }

        .fig__fields[b-c2ia8xgecd]  > *:hover,
        .fig__fields[b-c2ia8xgecd]  > *:focus-within {
            background: var(--rd-tint);
        }

.fig__panel[b-c2ia8xgecd] {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--rd-line);
    border-radius: 12px;
    background: var(--rd-surface-2);
}

/* Side: the fields on the left, the figure on the right (sticky while the fields scroll); above the fields on narrow screens. */
.fig--side[b-c2ia8xgecd] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 20.5rem;
    align-items: start;
    gap: 1rem 1.5rem;
}

    .fig--side .fig__panel[b-c2ia8xgecd] {
        position: sticky;
        top: 1rem;
        display: flex;
        flex-direction: column;
        align-items: center;
        padding: 0.5rem;
    }

@media (max-width: 1100px) {
    .fig--side[b-c2ia8xgecd] {
        grid-template-columns: minmax(0, 1fr);
    }

        .fig--side .fig__panel[b-c2ia8xgecd] {
            position: static;
            order: -1;
        }
}

/* Top: the figure the full width above the fields (the rows line up with the content around them). */
.fig--top[b-c2ia8xgecd] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

    .fig--top .fig__panel[b-c2ia8xgecd] {
        order: -1;
        height: 10rem;
    }

    .fig--top .fig__fields[b-c2ia8xgecd] {
        margin: 0 -0.5rem;
    }

/* ── Parts of the figures ──────────────────────────────────────────────── */

/* One CSS 3D scene with a fixed isometric view: x and y lie in the floor (the mesh plane), z points up. */
.fig__panel[b-c2ia8xgecd]  .fig-scene {
    transform-style: preserve-3d;
    transform: rotateX(58deg) rotateZ(-36deg);
}

/* A rod: a thin bar along its x from its origin (width = its length, placed by the figure), drawn as two crossed strips so it reads as a
   bar from any side. Its colour is `color` (the parts inherit it), so it fades by colour: opacity would flatten the 3D parts inside it.
   The parts here only set what the figures don't, as these selectors are more specific than theirs. */
.fig__panel[b-c2ia8xgecd]  .fig-bar {
    position: absolute;
    height: 0;
    transform-style: preserve-3d;
}

    .fig__panel[b-c2ia8xgecd]  .fig-bar::before,
    .fig__panel[b-c2ia8xgecd]  .fig-bar::after {
        content: "";
        position: absolute;
        left: 0;
        top: calc(var(--fig-bar) / -2);
        width: 100%;
        height: var(--fig-bar);
        border-radius: calc(var(--fig-bar) / 2);
        background: currentColor;
    }

    .fig__panel[b-c2ia8xgecd]  .fig-bar::after {
        transform: rotateX(90deg);
    }

/* Double-headed dimension arrows along x (--h) or y (--v) of their plane, in `color`. */
.fig__panel[b-c2ia8xgecd]  .fig-arrow {
    position: absolute;
    transform-style: preserve-3d;
}

    .fig__panel[b-c2ia8xgecd]  .fig-arrow::before,
    .fig__panel[b-c2ia8xgecd]  .fig-arrow::after {
        content: "";
        position: absolute;
        width: var(--fig-head);
        height: var(--fig-head);
        background: currentColor;
    }

.fig__panel[b-c2ia8xgecd]  .fig-arrow--h {
    height: var(--fig-arrow);
    background: currentColor;
}

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--h::before,
    .fig__panel[b-c2ia8xgecd]  .fig-arrow--h::after {
        top: 50%;
        margin-top: calc(var(--fig-head) / -2);
    }

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--h::before {
        left: calc(var(--fig-arrow) * -0.67);
        clip-path: polygon(0 50%, 100% 0, 100% 100%);
    }

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--h::after {
        right: calc(var(--fig-arrow) * -0.67);
        clip-path: polygon(100% 50%, 0 0, 0 100%);
    }

.fig__panel[b-c2ia8xgecd]  .fig-arrow--v {
    width: var(--fig-arrow);
    background: currentColor;
}

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--v::before,
    .fig__panel[b-c2ia8xgecd]  .fig-arrow--v::after {
        left: 50%;
        margin-left: calc(var(--fig-head) / -2);
    }

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--v::before {
        top: calc(var(--fig-arrow) * -0.67);
        clip-path: polygon(50% 0, 100% 100%, 0 100%);
    }

    .fig__panel[b-c2ia8xgecd]  .fig-arrow--v::after {
        bottom: calc(var(--fig-arrow) * -0.67);
        clip-path: polygon(50% 100%, 100% 0, 0 0);
    }

/* A letter centred on its position (turned towards the viewer by the figure). */
.fig__panel[b-c2ia8xgecd]  .fig-label {
    position: absolute;
    width: 16px;
    height: 16px;
    margin: -8px 0 0 -8px;
    font-size: 14px;
    font-weight: 800;
    line-height: 16px;
    text-align: center;
}

/* An annotation that fades in while its row is active (--on: var(--fig-{row}, 0)). Only for parts without 3D parts inside. */
.fig__panel[b-c2ia8xgecd]  .fig-note {
    color: var(--fig-note);
    opacity: var(--on, 0);
    transition: opacity var(--fig-fade) ease;
}

/* Reduced motion: no fades and no animations; the figures show a still pose instead. */
@media (prefers-reduced-motion: reduce) {
    .fig__fields[b-c2ia8xgecd]  > *,
    .fig__panel[b-c2ia8xgecd]  *,
    .fig__panel[b-c2ia8xgecd]  *::before,
    .fig__panel[b-c2ia8xgecd]  *::after {
        transition: none !important;
        animation: none !important;
    }
}
/* /Components/Pages/Factories/Machines/MachineDetail.razor.rz.scp.css */
.md[b-wd8vyw3g8i] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.md__header[b-wd8vyw3g8i] {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--rd-line);
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(37, 99, 235, 0.06), rgba(37, 99, 235, 0) 60%), var(--rd-surface);
}

.md__icon[b-wd8vyw3g8i] {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2.8rem;
    height: 2.8rem;
    border-radius: 12px;
    background: var(--rd-navy);
    color: white;
}

.md__identity[b-wd8vyw3g8i] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.md__name[b-wd8vyw3g8i] {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 600;
}

.md__name-row[b-wd8vyw3g8i] {
    display: flex;
    align-items: baseline;
    min-width: 0;
}

.md__name-input[b-wd8vyw3g8i],
.md__description-input[b-wd8vyw3g8i] {
    width: 100%;
    max-width: 26rem;
    padding: 0.15rem 0.35rem;
    margin-left: -0.35rem;
    border: 1px solid transparent;
    border-radius: 8px;
    background: transparent;
    color: var(--rd-ink);
    font: inherit;
    font-size: 1.15rem;
    font-weight: 600;
    transition: border-color 0.15s, background 0.15s;
}

.md__description-input[b-wd8vyw3g8i] {
    max-width: 40rem;
    font-size: 0.84rem;
    font-weight: 400;
    color: var(--rd-muted-2);
}

    .md__description-input[b-wd8vyw3g8i]::placeholder {
        color: var(--rd-muted);
        font-style: italic;
    }

    .md__name-input:hover[b-wd8vyw3g8i],
    .md__description-input:hover[b-wd8vyw3g8i] {
        border-color: var(--rd-line);
        background: var(--rd-surface);
    }

    .md__name-input:focus[b-wd8vyw3g8i],
    .md__description-input:focus[b-wd8vyw3g8i] {
        outline: none;
        border-color: var(--rd-blue);
        background: var(--rd-surface);
        box-shadow: 0 0 0 3px rgba(25, 134, 242, 0.15);
    }

.md__summary[b-wd8vyw3g8i] {
    font-size: 0.8rem;
    color: var(--rd-muted);
}

.md__actions[b-wd8vyw3g8i] {
    display: flex;
    gap: 0.4rem;
}

    .md__actions[b-wd8vyw3g8i]  .md__remove {
        color: var(--rd-error-deep);
    }

        .md__actions[b-wd8vyw3g8i]  .md__remove:disabled {
            color: var(--rd-muted);
            cursor: not-allowed;
        }

.md__usage[b-wd8vyw3g8i] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.82rem;
}

    .md__usage[b-wd8vyw3g8i]  .chip {
        text-decoration: none;
    }

.md__usage-label[b-wd8vyw3g8i] {
    margin-right: 0.25rem;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

.md__tools[b-wd8vyw3g8i] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.md__add[b-wd8vyw3g8i] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.8rem;
    border: 1px dashed var(--rd-line-strong);
    border-radius: 14px;
    background: transparent;
    color: var(--rd-blue-deep);
    font: inherit;
    font-size: 0.88rem;
    font-weight: 600;
    cursor: pointer;
}

    .md__add:hover[b-wd8vyw3g8i] {
        border-color: var(--rd-blue-deep);
        background: rgba(37, 99, 235, 0.04);
    }

@media (max-width: 700px) {
    .md__header[b-wd8vyw3g8i] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Factories/Machines/MachineIndex.razor.rz.scp.css */
/* An inline-block sits on the baseline of its own text, so the number lines up with the name next to it. */
.machine-index[b-3dhx9m2t1k] {
    display: inline-block;
    min-width: 1.15rem;
    margin-left: 0.35rem;
    padding: 0 0.3rem;
    border: 1px solid var(--rd-line-strong);
    border-radius: 5px;
    background: var(--rd-surface-3);
    color: var(--rd-muted);
    font-size: 0.68rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.35;
    text-align: center;
    vertical-align: baseline;
    white-space: nowrap;
    user-select: none;
}
/* /Components/Pages/Factories/Machines/MeasureField.razor.rz.scp.css */
.measure__value[b-st9ajwroq4] {
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--rd-ink);
}
/* /Components/Pages/Factories/Machines/MeshFigure.razor.rz.scp.css */
/* ── The scene ──────────────────────────────────────────────────────────
   The bottom face lies in the floor (x = length/X, y = width/Y; the viewer looks at the x = 0 end and the y = width side); the side faces
   hang on its long edges and the top returns on the sides. Bent: every hinge is rotated 90° (sides up, returns inwards). Net: every hinge
   at 0°, so the five strips lie flat in a row across Y. The active row comes from FieldFigure as --fig-{row} (1 while active). */
.mf__stage[b-dsvg635ofa] {
    --L: 156px; /* length, X */
    --W: 84px; /* width, Y */
    --H: 54px; /* height, Z */
    --R: 22px; /* top return */
    --gap: 13px; /* dimension arrows to the mesh */
    --fold: 0.6s;
    /* 1 while a flat dimension is active: the cage is folded open into its net. */
    --net: max(var(--fig-flatLength, 0), var(--fig-flatWidth, 0));
    position: relative;
    display: grid;
    place-items: center;
    width: 100%;
    height: 16.5rem;
}

.mf__scene[b-dsvg635ofa] {
    position: relative;
    width: var(--L);
    height: var(--W);
    margin-top: 2.5rem;
}

.mf__face[b-dsvg635ofa] {
    position: absolute;
    box-sizing: border-box;
    transform-style: preserve-3d;
    /* the fold lines of the net are darker: */
    border: 1.5px solid color-mix(in srgb, var(--rd-muted-2) calc(var(--net) * 100%), var(--fig-rod));
    background-color: color-mix(in srgb, var(--rd-blue) 6%, transparent);
    /* the bent rods run across (along the face's y), the straight rods along X: */
    background-image:
        repeating-linear-gradient(90deg, var(--fig-rod) 0 1.5px, transparent 1.5px 27px),
        repeating-linear-gradient(0deg, var(--fig-rod-light) 0 1px, transparent 1px 23px);
    background-position: 13px 0, 0 11px;
    transition: transform var(--fold) var(--rd-ease), border-color 0.3s;
}

.mf__bottom[b-dsvg635ofa] {
    inset: 0;
}

.mf__side[b-dsvg635ofa],
.mf__return[b-dsvg635ofa] {
    left: -1.5px;
    width: calc(100% + 3px);
}

.mf__side[b-dsvg635ofa] {
    height: var(--H);
}

.mf__return[b-dsvg635ofa] {
    height: var(--R);
}

/* The far side (y = 0) and its return: */
.mf__side--back[b-dsvg635ofa],
.mf__return--back[b-dsvg635ofa] {
    bottom: 100%;
    transform-origin: 50% 100%;
    transform: rotateX(calc(-90deg * (1 - var(--net))));
}

/* The near side (y = width) and its return: */
.mf__side--front[b-dsvg635ofa],
.mf__return--front[b-dsvg635ofa] {
    top: 100%;
    transform-origin: 50% 0;
    transform: rotateX(calc(90deg * (1 - var(--net))));
}

/* In the net the fold lines (the long edges of the bottom and the sides) are dashed: the solid edges fade out, dashed ones in. */
.mf__bottom[b-dsvg635ofa],
.mf__side[b-dsvg635ofa] {
    border-top-color: color-mix(in srgb, var(--fig-rod) calc((1 - var(--net)) * 100%), transparent);
    border-bottom-color: color-mix(in srgb, var(--fig-rod) calc((1 - var(--net)) * 100%), transparent);
}

    .mf__bottom[b-dsvg635ofa]::before,
    .mf__side[b-dsvg635ofa]::before {
        content: "";
        position: absolute;
        inset: -1.5px 0;
        border-top: 1.5px dashed var(--rd-muted-2);
        border-bottom: 1.5px dashed var(--rd-muted-2);
        opacity: var(--net);
        transition: opacity 0.3s;
        pointer-events: none;
    }

/* ── Dimension arrows ─────────────────────────────────────────────────────
   Faint grey for the state on screen (the cage, also when nothing is active, or the net), hidden otherwise, and in their axis colour
   (--active) with the axis letter while their row is active (--self). Shown and hidden by colour only: opacity on an element with 3D
   children (the turned letters) would flatten them halfway through a fade. */
.mf__arrow[b-dsvg635ofa] {
    --self: 0;
    color: color-mix(in srgb, var(--active) calc(var(--self) * 100%), var(--base));
    transition: color 0.2s ease;
}

.mf__arrow--cage[b-dsvg635ofa] {
    --base: color-mix(in srgb, var(--fig-idle) calc((1 - var(--net)) * 100%), transparent);
}

.mf__arrow--net[b-dsvg635ofa] {
    --base: color-mix(in srgb, var(--fig-idle) calc(var(--net) * 100%), transparent);
}

/* The axis letter, at the middle of the arrow on its outer side, turned towards the viewer; it fades with the colour of its arrow. */
.mf__label[b-dsvg635ofa] {
    color: color-mix(in srgb, var(--active) calc(var(--self) * 100%), transparent);
    transform: var(--face-viewer);
    transition: color 0.2s ease;
}

.fig-arrow--h .mf__label[b-dsvg635ofa] {
    left: 50%;
    top: 18px;
}

.fig-arrow--v .mf__label[b-dsvg635ofa] {
    top: 50%;
    left: 18px;
}

/* On the bent cage: */
.mf__arrow--length[b-dsvg635ofa] {
    --active: var(--fig-x);
    --self: var(--fig-length, 0);
    left: 0;
    top: calc(100% + var(--gap));
    width: 100%;
}

.mf__arrow--width[b-dsvg635ofa] {
    --active: var(--fig-y);
    --self: var(--fig-width, 0);
    left: calc(-1 * var(--gap) - 3px);
    top: 0;
    height: 100%;
}

    .mf__arrow--width .mf__label[b-dsvg635ofa],
    .mf__arrow--flat-width .mf__label[b-dsvg635ofa] {
        left: -16px;
    }

/* On the near side, standing up along its far end: */
.mf__arrow--height[b-dsvg635ofa] {
    --active: var(--fig-z);
    --self: var(--fig-height, 0);
    left: calc(100% + var(--gap));
    top: 0;
    height: 100%;
}

    /* The near side is turned up (rotateX 90°) relative to the floor: undo that too. */
    .mf__arrow--height .mf__label[b-dsvg635ofa] {
        transform: rotateX(-90deg) var(--face-viewer);
    }

/* On the net: */
.mf__arrow--flat-length[b-dsvg635ofa] {
    --active: var(--fig-x);
    --self: var(--fig-flatLength, 0);
    left: 0;
    top: calc(100% + var(--H) + var(--R) + var(--gap));
    width: 100%;
}

.mf__arrow--flat-width[b-dsvg635ofa] {
    --active: var(--fig-y);
    --self: var(--fig-flatWidth, 0);
    left: calc(-1 * var(--gap) - 3px);
    top: calc(-1 * (var(--H) + var(--R)));
    height: calc(100% + 2 * (var(--H) + var(--R)));
}

/* Max weight: a fat arrow above the cage pointing down, turned to face the viewer; only shown for its own row. */
.mf__weight[b-dsvg635ofa] {
    position: absolute;
    left: calc(50% - 15px);
    bottom: 50%;
    width: 30px;
    height: 56px;
    color: color-mix(in srgb, var(--rd-ink) calc(var(--fig-weight, 0) * 100%), transparent);
    transform-origin: 50% 100%;
    transform: translateZ(calc(var(--H) + 10px)) rotateZ(36deg) rotateX(-90deg);
    transition: color 0.2s ease;
}

    .mf__weight[b-dsvg635ofa]::before {
        content: "";
        position: absolute;
        inset: 0;
        background: currentColor;
        clip-path: polygon(30% 0, 70% 0, 70% 58%, 100% 58%, 50% 100%, 0 58%, 30% 58%);
    }

.mf__weight-label[b-dsvg635ofa] {
    position: absolute;
    bottom: calc(100% + 3px);
    left: 50%;
    color: currentColor;
    font-size: 13px;
    font-weight: 700;
    transform: translateX(-50%);
}
/* /Components/Pages/Factories/Machines/OverlapFigure.razor.rz.scp.css */
/* The clearance and overhang are registered, so they can be animated and transitioned (back to the rest pose when their row is left). */
@property --of-clearance {
    syntax: "<length>";
    inherits: true;
    initial-value: 26px;
}

@property --of-overhang {
    syntax: "<length>";
    inherits: true;
    initial-value: 40px;
}

/* ── The scene ──────────────────────────────────────────────────────────
   The rod lies along x on top of crossing rods along y (all in the floor, the mesh plane); the crossing rods and the -x end of the rod
   run off the figure, which clips them. The active row comes from FieldFigure (--fig-{row} is 1 while it is active). */
.of__stage[b-o3id46zrpa] {
    --last: 45px; /* the last crossing rod */
    --of-overhang: 40px;
    --of-clearance: 26px;
    --fig-bar: 3.5px;
    --fig-arrow: 2px;
    --fig-head: 8px;
    position: absolute;
    inset: 0;
    /* clearance: the parallel rod comes closer and moves away; overhang: the end of the rod grows and shrinks. The keyframes are in
       app.css (CSS isolation would rename them here, but not in the var() fallbacks). */
    animation: 2.6s ease-in-out infinite;
    animation-name: var(--fig-clearance-off, of-gap), var(--fig-overhang-off, of-overhang);
    transition: --of-clearance 0.35s ease, --of-overhang 0.35s ease;
}

.of__scene[b-o3id46zrpa] {
    position: absolute;
    left: calc(50% - 40px);
    top: calc(50% + 22px);
}

.of__crossing[b-o3id46zrpa] {
    left: var(--at);
    top: 0;
    width: 640px;
    color: color-mix(in srgb, var(--rd-muted) 55%, var(--rd-surface-2));
    transform-origin: 0 0;
    transform: rotateZ(90deg) translateX(-320px);
}

/* On top of the crossing rods: */
.of__rod[b-o3id46zrpa],
.of__parallel[b-o3id46zrpa] {
    left: -420px;
    transform: translateZ(var(--fig-bar));
}

.of__rod[b-o3id46zrpa] {
    top: 0;
    width: calc(420px + var(--last) + var(--of-overhang));
    color: var(--fig-axis);
}

.of__parallel[b-o3id46zrpa] {
    top: calc(var(--of-clearance) + var(--fig-bar));
    width: 840px;
    color: var(--fig-faint);
}

/* ── Annotations (just above the rods) ── */

/* Clearance: on both sides of the rod next to a crossing, the near one up to the parallel rod. */
.of__clearance[b-o3id46zrpa] {
    --on: var(--fig-clearance, 0);
    left: 9px;
    height: calc(var(--of-clearance) - 2px);
    transform: translateZ(calc(var(--fig-bar) * 1.5));
}

.of__clearance--near[b-o3id46zrpa] {
    top: calc(var(--fig-bar) / 2 + 1px);
}

.of__clearance--far[b-o3id46zrpa] {
    top: calc(-1 * var(--of-clearance) - var(--fig-bar) / 2 + 1px);
}

/* Overhang: from the last crossing rod to the rod's end, beside the rod. */
.of__overhang[b-o3id46zrpa] {
    --on: var(--fig-overhang, 0);
    left: var(--last);
    top: calc(-1 * var(--fig-bar) - 8px);
    width: var(--of-overhang);
    transform: translateZ(calc(var(--fig-bar) * 1.5));
}
/* /Components/Pages/Factories/Machines/PatternForm.razor.rz.scp.css */
.pf[b-cg2smc5625] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
}

.pf__options[b-cg2smc5625] {
    display: flex;
    align-items: flex-end;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.pf__offset[b-cg2smc5625] {
    width: 13rem;
}

.pf__input-unit[b-cg2smc5625] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
}

    .pf__input-unit > span[b-cg2smc5625] {
        color: var(--rd-muted);
        font-size: 0.78rem;
    }

.pf__list[b-cg2smc5625] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pf__row[b-cg2smc5625] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.5rem;
    padding: 0.4rem 0.5rem 0.4rem 0.25rem;
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: var(--rd-surface-2);
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

    .pf__row:hover[b-cg2smc5625],
    .pf__row:focus-within[b-cg2smc5625] {
        border-color: rgba(37, 99, 235, 0.35);
        background: var(--rd-surface);
    }

    .pf__row.is-sortable-ghost[b-cg2smc5625] {
        opacity: 0.4;
        border-style: dashed;
    }

    .pf__row.is-sortable-chosen[b-cg2smc5625] {
        box-shadow: 0 8px 20px rgba(2, 6, 23, 0.12);
    }

    .pf__row input[type=number][b-cg2smc5625] {
        width: 5.2rem;
    }

.pf__handle[b-cg2smc5625] {
    display: inline-grid;
    place-items: center;
    width: 1.4rem;
    height: 1.8rem;
    border-radius: 6px;
    color: var(--rd-muted);
    cursor: grab;
}

    .pf__handle:hover[b-cg2smc5625] {
        background: var(--rd-tint);
        color: var(--rd-navy);
    }

.pf__label[b-cg2smc5625] {
    margin-left: 0.4rem;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

    .pf__label:first-of-type[b-cg2smc5625] {
        margin-left: 0;
    }

.pf__times[b-cg2smc5625] {
    color: var(--rd-muted);
    font-size: 0.85rem;
}

.pf__spinner[b-cg2smc5625] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--rd-line-strong);
    border-radius: var(--rd-radius);
    background: var(--rd-surface);
}

    .pf__spinner input[type=number][b-cg2smc5625] {
        width: 3.2rem;
        border: none;
        border-radius: 0;
        text-align: center;
        -moz-appearance: textfield;
    }

        .pf__spinner input[type=number][b-cg2smc5625]::-webkit-inner-spin-button,
        .pf__spinner input[type=number][b-cg2smc5625]::-webkit-outer-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }

        .pf__spinner input[type=number]:focus[b-cg2smc5625] {
            box-shadow: none;
        }

    .pf__spinner:focus-within[b-cg2smc5625] {
        border-color: var(--rd-blue);
        box-shadow: 0 0 0 4px rgba(25, 134, 242, 0.15);
    }

.pf__step[b-cg2smc5625] {
    width: 1.7rem;
    height: 1.9rem;
    border: none;
    background: transparent;
    color: var(--rd-muted-2);
    font: inherit;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
}

    .pf__step:hover:not(:disabled)[b-cg2smc5625] {
        background: var(--rd-tint);
        color: var(--rd-navy);
    }

    .pf__step:disabled[b-cg2smc5625] {
        opacity: 0.35;
        cursor: default;
    }

.pf__placement[b-cg2smc5625] {
    width: auto;
}

.pf__row[b-cg2smc5625]  .pf__remove-row {
    margin-left: auto;
}

.pf__actions[b-cg2smc5625] {
    display: flex;
    gap: 0.5rem;
}

    .pf__actions[b-cg2smc5625]  .pf__remove {
        color: var(--rd-error-deep);
    }

@media (prefers-reduced-motion: reduce) {
    .pf__row[b-cg2smc5625] {
        transition: none;
    }
}
/* /Components/Pages/Factories/Machines/PatternOverview.razor.rz.scp.css */
.po[b-vcahpilngt] {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--rd-line);
    border-radius: 14px;
    background: var(--rd-surface);
}

.po__header[b-vcahpilngt] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.po__title[b-vcahpilngt] {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

.po__hint[b-vcahpilngt] {
    font-size: 0.78rem;
    color: var(--rd-muted);
}

.po__panel[b-vcahpilngt] {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    align-items: start;
    gap: 0.75rem;
    padding-top: 0.8rem;
    border-top: 1px solid var(--rd-line);
}

.po__direction[b-vcahpilngt] {
    display: grid;
    place-items: center;
    height: 2rem;
    border-radius: 8px;
    background: var(--rd-navy);
    color: white;
    font-size: 0.78rem;
    font-weight: 700;
}
/* /Components/Pages/Factories/Machines/PatternRuler.razor.rz.scp.css */
.pr[b-x67cfhngt1] {
    --label: 0px;
    --track: 1.35rem;
    --combined: 2.6rem;
    --row-gap: 0.3rem;
    --zone-unrestricted: color-mix(in srgb, var(--rd-blue) 26%, transparent);
    --zone-optional: color-mix(in srgb, var(--rd-blue) 9%, transparent);
    --zone-mandatory: var(--rd-navy);
    --zone-gap: color-mix(in srgb, var(--rd-muted) 45%, transparent);
    --zone-conflict: var(--rd-error);
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    min-width: 0;
}

.pr--labelled[b-x67cfhngt1] {
    --label: 7.5rem;
}

.pr.is-disabled[b-x67cfhngt1] {
    opacity: 0.5;
    filter: grayscale(0.6);
}

/* ── Toolbar: position of the first rod and the zoom ── */
.pr__toolbar[b-x67cfhngt1] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.4rem 1rem;
    font-size: 0.75rem;
    color: var(--rd-muted-2);
}

.pr__position[b-x67cfhngt1] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.pr__anchor-icon[b-x67cfhngt1] {
    width: 10px;
    height: 10px;
    background: var(--rd-blue-deep);
    clip-path: polygon(50% 0, 100% 45%, 100% 100%, 0 100%, 0 45%);
}

.pr__position-value[b-x67cfhngt1] {
    min-width: 4.5rem;
    color: var(--rd-ink);
    font-variant-numeric: tabular-nums;
}

    .pr__position-value[b-x67cfhngt1]::before {
        content: attr(data-mm) " mm";
    }

.pr__zoom[b-x67cfhngt1] {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    padding: 0.15rem;
    border: 1px solid var(--rd-line);
    border-radius: 8px;
    background: var(--rd-surface);
}

.pr__zoom-button[b-x67cfhngt1] {
    min-width: 1.6rem;
    height: 1.5rem;
    padding: 0 0.4rem;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--rd-muted-2);
    font: inherit;
    font-size: 0.9rem;
    line-height: 1;
    cursor: pointer;
}

    .pr__zoom-button:hover:not(:disabled)[b-x67cfhngt1] {
        background: var(--rd-tint);
        color: var(--rd-navy);
    }

    .pr__zoom-button:disabled[b-x67cfhngt1] {
        opacity: 0.35;
        cursor: default;
    }

.pr__zoom-button--fit[b-x67cfhngt1] {
    font-size: 0.72rem;
    font-weight: 600;
}

.pr__zoom-level[b-x67cfhngt1] {
    min-width: 2.8rem;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

    .pr__zoom-level[b-x67cfhngt1]::before {
        content: attr(data-pattern-zoom-label);
    }

/* ── Body: fixed labels on the left, the scrollable (zoomable) lanes and scale on the right ── */
.pr__body[b-x67cfhngt1] {
    position: relative;
    display: grid;
    grid-template-columns: var(--label) minmax(0, 1fr);
    gap: 0 0.6rem;
}

.pr:not(.pr--labelled) .pr__body[b-x67cfhngt1] {
    grid-template-columns: minmax(0, 1fr);
}

.pr__labels[b-x67cfhngt1] {
    display: flex;
    flex-direction: column;
    gap: var(--row-gap);
    min-width: 0;
}

.pr__label[b-x67cfhngt1] {
    display: flex;
    align-items: center;
    height: var(--track);
    overflow: hidden;
    color: var(--rd-muted-2);
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.pr__label--combined[b-x67cfhngt1] {
    height: var(--combined);
    color: var(--rd-ink);
    font-weight: 700;
}

/* The whole ruler is 50 m; --zoom (ruler ÷ span in view) is set by dashboard.js, --default-zoom shows the default span before that. */
.pr__viewport[b-x67cfhngt1] {
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    /* room for the anchor tab at both ends: */
    padding: 0 7px;
    scrollbar-width: thin;
}

.pr__content[b-x67cfhngt1] {
    display: flex;
    flex-direction: column;
    gap: var(--row-gap);
    width: calc(100% * var(--zoom, var(--default-zoom, 1)));
}

.pr__track[b-x67cfhngt1] {
    position: relative;
    height: var(--track);
    overflow: hidden;
    border: 1px solid var(--rd-line);
    border-radius: 6px;
    background: var(--rd-surface);
    transition: opacity 0.2s;
}

.pr__track--combined[b-x67cfhngt1] {
    height: var(--combined);
    border-color: var(--rd-line-strong);
    box-shadow: 0 1px 0 var(--rd-line);
}

/* Hovering a lane dims the other lanes (the combined lane stays): */
.pr__content:has(.pr__track:not(.pr__track--combined):hover) .pr__track:not(.pr__track--combined):not(:hover)[b-x67cfhngt1] {
    opacity: 0.35;
}

/* While the anchor tab is dragged the combined lane is out of date until it is released: */
.pr:has(.pr__anchor:active) .pr__track--combined[b-x67cfhngt1] {
    opacity: 0.2;
    filter: grayscale(1);
}

.pr__stale[b-x67cfhngt1] {
    position: absolute;
    top: 0;
    left: calc(var(--label) + 0.6rem);
    right: 0;
    display: grid;
    place-items: center;
    height: var(--combined);
    color: var(--rd-ink);
    font-size: 0.78rem;
    font-weight: 600;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s;
}

.pr:has(.pr__anchor:active) .pr__stale[b-x67cfhngt1] {
    opacity: 1;
}

.pr__zones[b-x67cfhngt1] {
    position: absolute;
    inset: 0;
}

.pr__track.is-floating .pr__zones[b-x67cfhngt1] {
    transform: translateX(calc(var(--anchor, 0) * 100%));
}

/* A floating lane has nothing before its first rod (the anchor): */
.pr__before-anchor[b-x67cfhngt1] {
    left: 0;
    width: calc(var(--anchor, 0) * 100%);
}

.pr__zone[b-x67cfhngt1] {
    position: absolute;
    top: 0;
    bottom: 0;
    min-width: 1px;
    transition: opacity 0.15s, box-shadow 0.15s;
}

    .pr__zone.is-point[b-x67cfhngt1] {
        width: 3px;
        margin-left: -1.5px;
    }

.pr__zone--unrestricted[b-x67cfhngt1] {
    background: var(--zone-unrestricted);
}

.pr__zone--optional[b-x67cfhngt1] {
    background: var(--zone-optional);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rd-blue) 55%, transparent);
}

.pr__zone--mandatory[b-x67cfhngt1] {
    background: var(--zone-mandatory);
}

.pr__zone--gap[b-x67cfhngt1] {
    background: repeating-linear-gradient(-45deg, var(--zone-gap) 0 1.5px, transparent 1.5px 5px);
}

.pr__zone--conflict[b-x67cfhngt1] {
    background: var(--zone-conflict);
}

    .pr__zone--optional.is-point[b-x67cfhngt1],
    .pr__zone--unrestricted.is-point[b-x67cfhngt1] {
        background: color-mix(in srgb, var(--rd-blue) 60%, transparent);
        box-shadow: none;
    }

/* ── Scale: tick labels and the anchor tab (a range input whose thumb is the tab) ── */
.pr__axis[b-x67cfhngt1] {
    position: relative;
    height: 1.7rem;
}

.pr__tick[b-x67cfhngt1] {
    position: absolute;
    top: 0.6rem;
    color: var(--rd-muted);
    font-size: 0.66rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    transform: translateX(-50%);
    pointer-events: none;
}

    .pr__tick[b-x67cfhngt1]::before {
        content: "";
        position: absolute;
        top: -0.55rem;
        left: 50%;
        height: 0.3rem;
        border-left: 1px solid var(--rd-line-strong);
    }

    .pr__tick.is-start[b-x67cfhngt1] {
        transform: none;
    }

        .pr__tick.is-start[b-x67cfhngt1]::before {
            left: 0;
        }

    .pr__tick.is-end[b-x67cfhngt1] {
        transform: translateX(-100%);
    }

        .pr__tick.is-end[b-x67cfhngt1]::before {
            left: 100%;
        }

/* Ticks have levels l0 (finest) to l6. Only the levels whose labels are far enough apart at the current zoom are labelled, the level
   below them gets a tick mark only (data-label-level is set by dashboard.js; level 2 until then). */
.pr__tick[b-x67cfhngt1] {
    color: transparent;
}

    .pr__tick[b-x67cfhngt1]::before {
        opacity: 0;
    }

.pr__viewport[data-label-level="0"] .pr__tick[b-x67cfhngt1],
.pr__viewport[data-label-level="1"] .pr__tick:not(.pr__tick--l0)[b-x67cfhngt1],
.pr__viewport:is([data-label-level="2"], :not([data-label-level])) .pr__tick:not(.pr__tick--l0, .pr__tick--l1)[b-x67cfhngt1],
.pr__viewport[data-label-level="3"] .pr__tick:not(.pr__tick--l0, .pr__tick--l1, .pr__tick--l2)[b-x67cfhngt1],
.pr__viewport[data-label-level="4"] .pr__tick:is(.pr__tick--l4, .pr__tick--l5, .pr__tick--l6)[b-x67cfhngt1],
.pr__viewport[data-label-level="5"] .pr__tick:is(.pr__tick--l5, .pr__tick--l6)[b-x67cfhngt1],
.pr__viewport[data-label-level="6"] .pr__tick--l6[b-x67cfhngt1] {
    color: var(--rd-muted);
}

.pr__viewport:is([data-label-level="0"], [data-label-level="1"]) .pr__tick[b-x67cfhngt1]::before,
.pr__viewport:is([data-label-level="2"], :not([data-label-level])) .pr__tick:not(.pr__tick--l0)[b-x67cfhngt1]::before,
.pr__viewport[data-label-level="3"] .pr__tick:not(.pr__tick--l0, .pr__tick--l1)[b-x67cfhngt1]::before,
.pr__viewport[data-label-level="4"] .pr__tick:is(.pr__tick--l3, .pr__tick--l4, .pr__tick--l5, .pr__tick--l6)[b-x67cfhngt1]::before,
.pr__viewport[data-label-level="5"] .pr__tick:is(.pr__tick--l4, .pr__tick--l5, .pr__tick--l6)[b-x67cfhngt1]::before,
.pr__viewport[data-label-level="6"] .pr__tick:is(.pr__tick--l5, .pr__tick--l6)[b-x67cfhngt1]::before {
    opacity: 1;
}

.pr__anchor[b-x67cfhngt1] {
    position: absolute;
    top: -0.45rem;
    left: -7px;
    width: calc(100% + 14px);
    height: 1rem;
    margin: 0;
    background: transparent;
    appearance: none;
    cursor: grab;
}

    .pr__anchor:active[b-x67cfhngt1] {
        cursor: grabbing;
    }

    .pr__anchor:disabled[b-x67cfhngt1] {
        cursor: default;
    }

    .pr__anchor[b-x67cfhngt1]::-webkit-slider-runnable-track {
        height: 1rem;
        background: transparent;
    }

    .pr__anchor[b-x67cfhngt1]::-moz-range-track {
        height: 1rem;
        background: transparent;
    }

    .pr__anchor[b-x67cfhngt1]::-webkit-slider-thumb {
        width: 14px;
        height: 14px;
        border: none;
        border-radius: 2px 2px 3px 3px;
        background: var(--rd-blue-deep);
        clip-path: polygon(50% 0, 100% 45%, 100% 100%, 0 100%, 0 45%);
        appearance: none;
    }

    .pr__anchor[b-x67cfhngt1]::-moz-range-thumb {
        width: 14px;
        height: 14px;
        border: none;
        border-radius: 2px 2px 3px 3px;
        background: var(--rd-blue-deep);
        clip-path: polygon(50% 0, 100% 45%, 100% 100%, 0 100%, 0 45%);
    }

    .pr__anchor:focus-visible[b-x67cfhngt1] {
        outline: none;
    }

        .pr__anchor:focus-visible[b-x67cfhngt1]::-webkit-slider-thumb {
            box-shadow: 0 0 0 3px rgba(25, 134, 242, 0.35);
        }

.pr__legend[b-x67cfhngt1] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.9rem;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--rd-muted-2);
    font-size: 0.72rem;
}

.pr--labelled .pr__legend[b-x67cfhngt1] {
    padding-left: calc(var(--label) + 0.6rem);
}

    .pr__legend li[b-x67cfhngt1] {
        display: inline-flex;
        align-items: center;
        gap: 0.35rem;
    }

.pr__legend-unit[b-x67cfhngt1] {
    margin-left: auto;
    color: var(--rd-muted);
}

.pr__swatch[b-x67cfhngt1] {
    position: static;
    display: inline-block;
    width: 1rem;
    height: 0.7rem;
    border-radius: 3px;
}

@media (prefers-reduced-motion: reduce) {
    .pr__track[b-x67cfhngt1],
    .pr__zone[b-x67cfhngt1],
    .pr__stale[b-x67cfhngt1] {
        transition: none;
    }
}
/* /Components/Pages/Factories/Machines/RangeInput.razor.rz.scp.css */
.range-input[b-kfpmob3uaz] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

    .range-input input[b-kfpmob3uaz] {
        flex: 1 1 0;
        min-width: 0;
        box-sizing: border-box;
        padding: 0.5rem 0.7rem;
        border: 1px solid var(--rd-line-strong);
        border-radius: var(--rd-radius);
        font: inherit;
        font-size: 0.88rem;
        color: var(--rd-text);
        background: white;
        transition: border-color 0.15s, box-shadow 0.15s;
    }

        .range-input input:focus[b-kfpmob3uaz] {
            outline: none;
            border-color: var(--rd-blue);
            box-shadow: 0 0 0 3px rgba(25, 134, 242, 0.15);
        }

        .range-input input:disabled[b-kfpmob3uaz] {
            background: var(--rd-surface-3);
            color: var(--rd-muted);
        }

.range-input__sep[b-kfpmob3uaz],
.range-input__unit[b-kfpmob3uaz] {
    color: var(--rd-muted);
    font-size: 0.8rem;
    white-space: nowrap;
}
/* /Components/Pages/Factories/Machines/ToolCard.razor.rz.scp.css */
.tc[b-yid4j8b4j0] {
    border: 1px solid var(--rd-line);
    border-radius: 14px;
    background: var(--rd-surface);
    transition: border-color 0.2s, box-shadow 0.2s;
}

    .tc.is-open[b-yid4j8b4j0] {
        border-color: var(--rd-line-strong);
        box-shadow: 0 8px 24px rgba(2, 6, 23, 0.06);
    }

.tc__header[b-yid4j8b4j0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem 0.4rem 0.4rem;
}

.tc__toggle[b-yid4j8b4j0] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-width: 0;
    padding: 0.45rem;
    border: none;
    border-radius: 10px;
    background: transparent;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

    .tc__toggle:hover[b-yid4j8b4j0] {
        background: var(--rd-surface-2);
    }

.tc__chevron[b-yid4j8b4j0] {
    display: inline-flex;
    color: var(--rd-muted);
    transform: rotate(-90deg);
    transition: transform 0.2s ease;
}

.tc.is-open .tc__chevron[b-yid4j8b4j0] {
    transform: none;
}

.tc__icon[b-yid4j8b4j0] {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 9px;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-blue-deep);
}

.tc__title[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

    .tc__title strong[b-yid4j8b4j0] {
        font-size: 0.92rem;
    }

.tc__sub[b-yid4j8b4j0] {
    font-size: 0.76rem;
    color: var(--rd-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tc__body[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    padding: 0.4rem 1rem 1rem 3.4rem;
    animation: tc-open-b-yid4j8b4j0 0.2s ease backwards;
}

.tc__name[b-yid4j8b4j0] {
    max-width: 22rem;
}

.tc__block[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.tc__block-header[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.tc__block-title[b-yid4j8b4j0] {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

.tc__hint[b-yid4j8b4j0] {
    font-size: 0.78rem;
    color: var(--rd-muted);
}

/* Mesh: one row per dimension, label left and its min–max inputs right (the row itself is styled by FieldFigure). */
.tc__mesh-row[b-yid4j8b4j0]  .rd-field {
    display: grid;
    grid-template-columns: 9.5rem minmax(0, 1fr);
    align-items: center;
    gap: 0.75rem;
}

.tc__weight[b-yid4j8b4j0] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

    .tc__weight input[b-yid4j8b4j0] {
        max-width: 8rem;
    }

    .tc__weight span[b-yid4j8b4j0] {
        color: var(--rd-muted);
        font-size: 0.8rem;
    }

@media (max-width: 520px) {
    .tc__mesh-row[b-yid4j8b4j0]  .rd-field {
        grid-template-columns: minmax(0, 1fr);
        gap: 0.35rem;
    }
}

.tc__value[b-yid4j8b4j0] {
    font-size: 0.88rem;
    font-weight: 500;
}

.tc__axes[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.tc__axis[b-yid4j8b4j0] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: var(--rd-surface-2);
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}

    .tc__axis:hover[b-yid4j8b4j0] {
        border-color: rgba(37, 99, 235, 0.4);
        background: var(--rd-surface);
    }

.tc__axis-item.is-open .tc__axis[b-yid4j8b4j0] {
    border-color: rgba(37, 99, 235, 0.35);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    background: var(--rd-surface);
}

.tc__axis-chevron[b-yid4j8b4j0] {
    display: inline-flex;
    color: var(--rd-muted);
    transform: rotate(-90deg);
    transition: transform 0.2s ease;
}

.tc__axis-item.is-open .tc__axis-chevron[b-yid4j8b4j0] {
    transform: none;
}

.tc__axis-panel[b-yid4j8b4j0] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1rem;
    border: 1px solid rgba(37, 99, 235, 0.35);
    border-top: none;
    border-radius: 0 0 10px 10px;
    background: var(--rd-surface-2);
    animation: tc-open-b-yid4j8b4j0 0.2s ease backwards;
}

.tc__axis-actions[b-yid4j8b4j0] {
    display: flex;
    justify-content: flex-end;
}

    .tc__axis-actions[b-yid4j8b4j0]  .tc__remove-axis {
        color: var(--rd-error-deep);
    }

.tc__direction[b-yid4j8b4j0] {
    display: grid;
    place-items: center;
    min-width: 2rem;
    height: 2rem;
    padding: 0 0.4rem;
    border-radius: 8px;
    background: var(--rd-navy);
    color: white;
    font-size: 0.78rem;
    font-weight: 700;
}

.tc__axis-text[b-yid4j8b4j0] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    font-size: 0.84rem;
}

    .tc__axis-text span[b-yid4j8b4j0] {
        color: var(--rd-muted);
        font-size: 0.78rem;
    }


.tc__add[b-yid4j8b4j0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.55rem;
    border: 1px dashed var(--rd-line-strong);
    border-radius: 10px;
    background: transparent;
    color: var(--rd-blue-deep);
    font: inherit;
    font-size: 0.84rem;
    font-weight: 600;
    cursor: pointer;
}

    .tc__add:hover[b-yid4j8b4j0] {
        border-color: var(--rd-blue-deep);
        background: rgba(37, 99, 235, 0.04);
    }

@keyframes tc-open-b-yid4j8b4j0 {
    from { opacity: 0; transform: translateY(-4px); }
}

@media (max-width: 700px) {
    .tc__body[b-yid4j8b4j0] {
        padding-left: 1rem;
    }
}
/* /Components/Pages/Notches/FactoryApplicability.razor.rz.scp.css */
.applicability[b-4c5ty6rw8q] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
/* /Components/Pages/Notches/IfcFileDropZone.razor.rz.scp.css */
.drop-zone[b-6p9i70m8zi] {
    position: relative;
    padding: 1.6rem 1rem;
    border: 2px dashed var(--rd-line-strong);
    border-radius: 14px;
    background: var(--rd-surface-2);
    text-align: center;
    transition: border-color 0.2s, background 0.2s;
}

    .drop-zone:hover[b-6p9i70m8zi],
    .drop-zone.is-over[b-6p9i70m8zi] {
        border-color: var(--rd-blue);
        background: rgba(25, 134, 242, 0.05);
    }

    .drop-zone.is-busy[b-6p9i70m8zi] {
        opacity: 0.8;
        pointer-events: none;
    }

[b-6p9i70m8zi] .drop-zone__input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 1;
}

.drop-zone__content[b-6p9i70m8zi] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
    color: var(--rd-navy);
    pointer-events: none;
}

    .drop-zone__content strong[b-6p9i70m8zi] {
        color: var(--rd-ink);
    }
/* /Components/Pages/Notches/NotchDrawer.razor.rz.scp.css */
[b-dc2xed2mow] .nd-block {
    margin-bottom: 1rem;
}

/* Preview and key figures side by side */
.nd-hero[b-dc2xed2mow] {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: stretch;
}

    .nd-hero__preview[b-dc2xed2mow]  .notch-preview__canvas {
        height: 19rem;
    }

/* Section tabs */
.nd-tabs[b-dc2xed2mow] {
    display: flex;
    gap: 0.25rem;
    margin: 1.4rem 0 0;
    border-bottom: 1px solid var(--rd-line);
}

.nd-tab[b-dc2xed2mow] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 0.85rem;
    margin-bottom: -1px;
    border: none;
    border-bottom: 2px solid transparent;
    background: transparent;
    color: var(--rd-muted-2);
    font: inherit;
    font-size: 0.86rem;
    font-weight: 500;
    cursor: pointer;
}

    .nd-tab:hover[b-dc2xed2mow] {
        color: var(--rd-ink);
    }

    .nd-tab.is-active[b-dc2xed2mow] {
        color: var(--rd-blue-deep);
        border-bottom-color: var(--rd-blue-deep);
        font-weight: 600;
    }

.nd-tab__count[b-dc2xed2mow] {
    display: inline-grid;
    place-items: center;
    min-width: 1.2rem;
    height: 1.2rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--rd-surface-3);
    font-size: 0.68rem;
    font-weight: 700;
}

.nd-panel[b-dc2xed2mow] {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    padding-top: 1rem;
    animation: nd-fade-b-dc2xed2mow 0.2s ease backwards;
}

/* History */
.nd-history[b-dc2xed2mow] {
    position: relative;
    margin: 0;
    padding: 0;
    list-style: none;
}

.nd-history__item[b-dc2xed2mow] {
    position: relative;
    display: grid;
    grid-template-columns: 1.75rem 1fr;
    gap: 0.75rem;
    padding-bottom: 1.1rem;
}

    .nd-history__item:not(:last-child)[b-dc2xed2mow]::before {
        content: "";
        position: absolute;
        top: 1.75rem;
        bottom: 0.15rem;
        left: calc(0.875rem - 1px);
        width: 2px;
        background: var(--rd-line);
    }

.nd-history__dot[b-dc2xed2mow] {
    display: grid;
    place-items: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: rgba(37, 99, 235, 0.1);
    color: var(--rd-blue-deep);
}

.nd-history__dot--success[b-dc2xed2mow] { background: rgba(22, 163, 74, 0.12); color: #15803d; }
.nd-history__dot--warning[b-dc2xed2mow] { background: rgba(245, 158, 11, 0.16); color: #b45309; }
.nd-history__dot--danger[b-dc2xed2mow] { background: rgba(220, 38, 38, 0.1); color: var(--rd-error-deep); }

.nd-history__body[b-dc2xed2mow] {
    padding-top: 0.2rem;
}

.nd-history__title[b-dc2xed2mow] {
    font-weight: 600;
    font-size: 0.9rem;
}

.nd-history__meta[b-dc2xed2mow] {
    margin-top: 0.1rem;
    font-size: 0.76rem;
    color: var(--rd-muted);
}

.nd-history__detail[b-dc2xed2mow] {
    display: inline-block;
    margin-top: 0.4rem;
    padding: 0.3rem 0.6rem;
    border-radius: 8px;
    background: var(--rd-surface-2);
    font-size: 0.82rem;
}

.nd-history__comment[b-dc2xed2mow] {
    margin: 0.4rem 0 0;
    padding: 0.35rem 0.7rem;
    border-left: 3px solid var(--rd-line-strong);
    color: var(--rd-ink);
    font-size: 0.85rem;
}

.nd-history__note[b-dc2xed2mow] {
    margin-top: 0.3rem;
    font-size: 0.74rem;
    font-style: italic;
    color: var(--rd-muted);
}

/* Reason for reject / revoke */
.nd-reason[b-dc2xed2mow] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-top: 1rem;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(220, 38, 38, 0.25);
    border-radius: 12px;
    background: rgba(220, 38, 38, 0.03);
}

/* Duplicate comparison */
.nd-compare[b-dc2xed2mow] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-top: 1rem;
}

.nd-compare__side[b-dc2xed2mow] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.9rem;
    border: 1px solid var(--rd-line);
    border-radius: 14px;
}

.nd-compare__header[b-dc2xed2mow] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

/* Footer */
.nd-nav[b-dc2xed2mow] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-right: auto;
}

.nd-nav__position[b-dc2xed2mow] {
    min-width: 4.5rem;
    text-align: center;
    font-size: 0.85rem;
    font-weight: 600;
}

.nd-actions[b-dc2xed2mow] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

    .nd-actions[b-dc2xed2mow]  .nd-remove {
        color: var(--rd-error-deep);
    }

.nd-actions__hint[b-dc2xed2mow] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.8rem;
    color: var(--rd-muted);
}

@keyframes nd-fade-b-dc2xed2mow {
    from { opacity: 0; transform: translateY(4px); }
}

@media (max-width: 900px) {
    .nd-hero[b-dc2xed2mow],
    .nd-compare[b-dc2xed2mow] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Notches/NotchFigures.razor.rz.scp.css */
.nf[b-llltx36m8c] {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
}

.nf__group[b-llltx36m8c] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.nf__heading[b-llltx36m8c] {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--rd-muted);
}

.nf__tiles[b-llltx36m8c] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem;
}

.nf__tiles--3[b-llltx36m8c] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.nf__tile[b-llltx36m8c] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: white;
}

.nf__tile--accent[b-llltx36m8c] {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    border-color: rgba(37, 99, 235, 0.25);
    background: rgba(37, 99, 235, 0.05);
}

.nf__label[b-llltx36m8c] {
    font-size: 0.7rem;
    color: var(--rd-muted);
}

.nf__value[b-llltx36m8c] {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--rd-ink);
    white-space: nowrap;
}

    .nf__value small[b-llltx36m8c] {
        font-size: 0.72rem;
        font-weight: 500;
        color: var(--rd-muted);
    }

.nf__sub[b-llltx36m8c] {
    font-size: 0.72rem;
    color: var(--rd-blue-deep);
}
/* /Components/Pages/Notches/NotchRangeBar.razor.rz.scp.css */
.nrb[b-9awvo68d0c] {
    padding: 0.9rem 1rem 0.7rem;
    border: 1px solid var(--rd-line);
    border-radius: 12px;
    background: white;
}

.nrb__track[b-9awvo68d0c] {
    position: relative;
    height: 0.6rem;
    border-radius: 999px;
    background: var(--rd-surface-3);
}

.nrb__range[b-9awvo68d0c] {
    position: absolute;
    top: 0;
    bottom: 0;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--rd-blue-soft), var(--rd-blue-deep));
    transition: left 0.3s ease, width 0.3s ease;
}

.nrb__marker[b-9awvo68d0c] {
    position: absolute;
    top: -0.3rem;
    width: 2px;
    height: 1.2rem;
    margin-left: -1px;
    border-radius: 2px;
    background: var(--rd-ink);
}

.nrb__scale[b-9awvo68d0c] {
    display: flex;
    justify-content: space-between;
    margin-top: 0.55rem;
    font-size: 0.72rem;
    color: var(--rd-muted);
}

.nrb__caption[b-9awvo68d0c] {
    color: var(--rd-ink);
    font-weight: 600;
}
/* /Components/Pages/Notches/NotchRangeEditor.razor.rz.scp.css */
.range-editor[b-vwxjz7xr2l] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: var(--rd-surface-2);
}

.range-editor__header[b-vwxjz7xr2l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.range-editor__inputs[b-vwxjz7xr2l] {
    display: flex;
    align-items: flex-end;
    gap: 0.6rem;
}

    .range-editor__inputs .rd-field[b-vwxjz7xr2l] {
        flex: 1;
    }
/* /Components/Pages/Notches/NotchTable.razor.rz.scp.css */
[b-pqwdccle4v] .table-warning {
    margin-bottom: 0.75rem;
}

    [b-pqwdccle4v] .table-warning span {
        flex: 1;
    }

[b-pqwdccle4v] .notch-table tr.is-duplicate td {
    background: rgba(245, 158, 11, 0.08);
}

[b-pqwdccle4v] .notch-table tr.is-invalid td {
    background: rgba(220, 38, 38, 0.06);
}

[b-pqwdccle4v] .notch-table input[type=checkbox] {
    accent-color: var(--rd-blue-deep);
}
/* /Components/Pages/Overview/OverviewPage.razor.rz.scp.css */
[b-4gtyx9gl35] .stat--attention {
    border-color: rgba(245, 158, 11, 0.5);
    background: rgba(245, 158, 11, 0.06);
}

    [b-4gtyx9gl35] .stat--attention .stat__value {
        color: #b45309;
    }
/* /Components/Pages/Requests/RequestsPage.razor.rz.scp.css */
.details[b-pzf1n18b9u] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.5rem 1.2rem;
    margin: 0;
    font-size: 0.88rem;
}

    .details dt[b-pzf1n18b9u] {
        font-size: 0.72rem;
        font-weight: 600;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--rd-muted);
        align-self: center;
    }

    .details dd[b-pzf1n18b9u] {
        margin: 0;
        word-break: break-all;
    }
/* /Components/Pages/Statistics/StatisticsPage.razor.rz.scp.css */
.chart-legend[b-d6micj4dab] {
    display: flex;
    gap: 1.2rem;
    font-size: 0.78rem;
    color: var(--rd-muted);
}

    .chart-legend span[b-d6micj4dab] {
        display: inline-flex;
        align-items: center;
        gap: 0.4rem;
    }

.chart-legend__swatch[b-d6micj4dab] {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 3px;
}
/* /Components/Shared/BarChart.razor.rz.scp.css */
.bar-chart[b-nybg9l31vl] {
    position: relative;
    width: 100%;
}

.bar-chart__svg[b-nybg9l31vl] {
    display: block;
    width: 100%;
    height: 11rem;
}

.bar-chart__grid[b-nybg9l31vl] {
    stroke: var(--rd-line);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.bar-chart__primary[b-nybg9l31vl] {
    fill: var(--rd-blue-deep);
    transition: opacity 0.15s;
}

.bar-chart__secondary[b-nybg9l31vl] {
    fill: var(--rd-error);
}

.bar-chart__bar:hover .bar-chart__primary[b-nybg9l31vl],
.bar-chart__bar:hover .bar-chart__secondary[b-nybg9l31vl] {
    opacity: 0.75;
}

.bar-chart__labels[b-nybg9l31vl] {
    position: relative;
    height: 1.2rem;
    margin-top: 0.3rem;
    font-size: 0.7rem;
    color: var(--rd-muted);
}

    .bar-chart__labels span[b-nybg9l31vl] {
        position: absolute;
        transform: translateX(-50%);
        white-space: nowrap;
    }
/* /Components/Shared/CategoryTabs.razor.rz.scp.css */
.tab__count[b-3h70fts9rd] {
    margin-left: 0.4rem;
    padding: 0 0.4rem;
    border-radius: 999px;
    background: var(--rd-surface-3);
    font-size: 0.7rem;
    color: var(--rd-muted-2);
}

.tab.is-active .tab__count[b-3h70fts9rd] {
    background: rgba(37, 99, 235, 0.12);
    color: var(--rd-blue-deep);
}
/* /Components/Shared/Drawer.razor.rz.scp.css */
.drawer-backdrop[b-cg2ts3pxsd] {
    position: fixed;
    inset: 0;
    z-index: 900;
    display: flex;
    justify-content: flex-end;
    background: rgba(2, 6, 23, 0.45);
    backdrop-filter: blur(3px);
    animation: rd-fade-b-cg2ts3pxsd 0.2s ease both;
}

.drawer[b-cg2ts3pxsd] {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    background: white;
    box-shadow: -20px 0 60px rgba(2, 6, 23, 0.3);
    animation: rd-drawer-in-b-cg2ts3pxsd 0.34s cubic-bezier(0.2, 0.75, 0.15, 1) both;
}

.drawer--sm[b-cg2ts3pxsd] { max-width: 28rem; }
.drawer--md[b-cg2ts3pxsd] { max-width: 40rem; }
.drawer--lg[b-cg2ts3pxsd] { max-width: 60rem; }
.drawer--xl[b-cg2ts3pxsd] { max-width: 80rem; }

.drawer__header[b-cg2ts3pxsd] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.4rem 1.6rem 1rem;
    border-bottom: 1px solid var(--rd-line);
}

.drawer__eyebrow[b-cg2ts3pxsd] {
    margin: 0 0 0.3rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--rd-blue);
}

.drawer__title[b-cg2ts3pxsd] {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.drawer__meta[b-cg2ts3pxsd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.6rem;
    margin-top: 0.55rem;
    font-size: 0.8rem;
    color: var(--rd-muted);
}

.drawer__close[b-cg2ts3pxsd] {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--rd-muted);
    cursor: pointer;
}

    .drawer__close:hover[b-cg2ts3pxsd] {
        background: rgba(37, 99, 235, 0.07);
        color: var(--rd-ink);
    }

.drawer__body[b-cg2ts3pxsd] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 1.2rem 1.6rem;
}

.drawer__footer[b-cg2ts3pxsd] {
    display: flex;
    justify-content: flex-end;
    gap: 0.6rem;
    padding: 0.9rem 1.6rem;
    border-top: 1px solid var(--rd-line);
    background: var(--rd-surface);
}

/* The panel slides in from the right edge and leaves the same way. */
@keyframes rd-drawer-in-b-cg2ts3pxsd {
    from { transform: translateX(100%); }
}

@keyframes rd-fade-b-cg2ts3pxsd {
    from { opacity: 0; }
}

/* Closing: the opening animation in reverse (the component waits for it before it is removed). */
.drawer-backdrop.is-closing[b-cg2ts3pxsd] {
    animation: rd-fade-out-b-cg2ts3pxsd 0.28s ease both;
}

    .drawer-backdrop.is-closing .drawer[b-cg2ts3pxsd] {
        animation: rd-drawer-out-b-cg2ts3pxsd 0.28s cubic-bezier(0.55, 0, 0.8, 0.25) both;
    }

@keyframes rd-drawer-out-b-cg2ts3pxsd {
    to { transform: translateX(100%); }
}

@keyframes rd-fade-out-b-cg2ts3pxsd {
    to { opacity: 0; }
}
/* /Components/Shared/EmptyState.razor.rz.scp.css */
.empty-state[b-8uiy2rv559] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 3rem 1rem;
    text-align: center;
    color: var(--rd-muted);
}

    .empty-state strong[b-8uiy2rv559] {
        color: var(--rd-ink);
    }

    .empty-state p[b-8uiy2rv559] {
        margin: 0;
        max-width: 28rem;
        font-size: 0.88rem;
    }
/* /Components/Shared/Modal.razor.rz.scp.css */
.modal-backdrop[b-hvqq8br3re] {
    position: fixed;
    inset: 0;
    z-index: 900;
    display: grid;
    place-items: center;
    padding: 1rem;
    background: rgba(2, 6, 23, 0.45);
    backdrop-filter: blur(3px);
    animation: rd-fade-b-hvqq8br3re 0.2s ease both;
}

.modal[b-hvqq8br3re] {
    width: 100%;
    max-height: calc(100vh - 2rem);
    display: flex;
    flex-direction: column;
    border-radius: 18px;
    background: white;
    box-shadow: 0 30px 80px rgba(2, 6, 23, 0.35);
    animation: rd-dialog-in-b-hvqq8br3re 0.25s cubic-bezier(0.2, 0.75, 0.15, 1) both;
}

.modal--sm[b-hvqq8br3re] { max-width: 26rem; }
.modal--md[b-hvqq8br3re] { max-width: 36rem; }
.modal--lg[b-hvqq8br3re] { max-width: 56rem; }
.modal--xl[b-hvqq8br3re] { max-width: 80rem; }

.modal__header[b-hvqq8br3re] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.4rem 0.8rem;
}

.modal__title[b-hvqq8br3re] {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.modal__close[b-hvqq8br3re] {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--rd-muted);
    cursor: pointer;
}

    .modal__close:hover[b-hvqq8br3re] {
        background: rgba(37, 99, 235, 0.07);
        color: var(--rd-ink);
    }

.modal__body[b-hvqq8br3re] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 0 1.4rem 1.2rem;
}

.modal__footer[b-hvqq8br3re] {
    display: flex;
    justify-content: flex-end;
    gap: 0.6rem;
    padding: 0.9rem 1.4rem;
    border-top: 1px solid var(--rd-line);
}

@keyframes rd-dialog-in-b-hvqq8br3re {
    from { opacity: 0; transform: scale(0.92) translateY(8px); }
}

@keyframes rd-fade-b-hvqq8br3re {
    from { opacity: 0; }
}

/* Closing: the opening animation in reverse (the component waits for it before it is removed). */
.modal-backdrop.is-closing[b-hvqq8br3re] {
    animation: rd-fade-out-b-hvqq8br3re 0.18s ease both;
}

    .modal-backdrop.is-closing .modal[b-hvqq8br3re] {
        animation: rd-dialog-out-b-hvqq8br3re 0.18s cubic-bezier(0.55, 0, 0.8, 0.25) both;
    }

@keyframes rd-dialog-out-b-hvqq8br3re {
    to { opacity: 0; transform: scale(0.92) translateY(8px); }
}

@keyframes rd-fade-out-b-hvqq8br3re {
    to { opacity: 0; }
}
/* /Components/Shared/NotchPreview.razor.rz.scp.css */
.notch-preview[b-noncbvaivj] {
    position: relative;
    border: 1px solid var(--rd-line-strong);
    border-radius: 12px;
    overflow: hidden;
    background: #f8f9fa;
}

.notch-preview__canvas[b-noncbvaivj] {
    width: 100%;
    height: 24rem;
}

[b-noncbvaivj] .notch-preview__fit {
    position: absolute;
    right: 0.5rem;
    bottom: 0.5rem;
    background: white;
    border-color: var(--rd-line-strong);
}
/* /Components/Shared/PageHeader.razor.rz.scp.css */
.page-header[b-nb92g2j1tu] {
    position: relative;
    overflow: hidden;
    color: var(--rd-text-on-dark);
    background:
        radial-gradient(50rem 30rem at 10% 120%, rgba(25, 134, 242, 0.28), transparent 60%),
        radial-gradient(30rem 20rem at 95% -20%, rgba(96, 165, 250, 0.18), transparent 60%),
        linear-gradient(160deg, var(--rd-ink-deep) 0%, var(--rd-ink-2) 100%);
}

    /* Blueprint grid, like the login: */
    .page-header[b-nb92g2j1tu]::before {
        content: "";
        position: absolute;
        inset: -64px;
        background-image:
            linear-gradient(rgba(148, 163, 184, 0.12) 1px, transparent 1px),
            linear-gradient(90deg, rgba(148, 163, 184, 0.12) 1px, transparent 1px);
        background-size: 64px 64px;
        mask-image: radial-gradient(ellipse at 30% 60%, #000 10%, transparent 70%);
        pointer-events: none;
    }

.page-header__inner[b-nb92g2j1tu] {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    padding: 2.4rem 2.5rem 1.8rem;
}

.page-header--compact .page-header__inner[b-nb92g2j1tu] {
    padding: 1.5rem 2.5rem 1.3rem;
    align-items: center;
}

.page-header__eyebrow[b-nb92g2j1tu] {
    margin: 0 0 0.6rem;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--rd-blue-soft);
    animation: rd-rise 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.page-header__title[b-nb92g2j1tu] {
    margin: 0;
    font-size: clamp(1.6rem, 2.6vw, 2.4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.03em;
    color: white;
    animation: rd-rise 0.7s 0.08s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.page-header--compact .page-header__title[b-nb92g2j1tu] {
    font-size: clamp(1.3rem, 2vw, 1.7rem);
}

    .page-header__title[b-nb92g2j1tu]  span {
        background: linear-gradient(90deg, var(--rd-blue-soft), var(--rd-blue));
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
    }

.page-header__lead[b-nb92g2j1tu] {
    max-width: 40rem;
    margin: 0.7rem 0 0;
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--rd-muted-on-dark);
    animation: rd-rise 0.7s 0.16s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.page-header__actions[b-nb92g2j1tu] {
    display: flex;
    gap: 0.6rem;
    flex: 0 0 auto;
    animation: rd-rise 0.7s 0.2s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.page-header__bar[b-nb92g2j1tu] {
    position: relative;
    padding: 0 2.5rem 1.2rem;
}

@media (max-width: 860px) {
    .page-header__inner[b-nb92g2j1tu] {
        flex-direction: column;
        align-items: flex-start;
        padding: 1.6rem 1.25rem 1.2rem;
    }

    .page-header__bar[b-nb92g2j1tu] {
        padding: 0 1.25rem 1rem;
    }
}
/* /Components/Shared/RodTable.razor.rz.scp.css */
.rods[b-fcy4zs64pe] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.rods__item[b-fcy4zs64pe] {
    display: grid;
    grid-template-columns: 0.9rem 5.5rem 1fr auto;
    align-items: center;
    gap: 0.75rem;
    padding: 0.55rem 0.8rem;
    border: 1px solid var(--rd-line);
    border-radius: 10px;
    background: white;
    font-size: 0.86rem;
}

.rods__swatch[b-fcy4zs64pe] {
    width: 0.9rem;
    height: 0.9rem;
    border-radius: 50%;
    box-shadow: inset 0 0 0 1px rgba(2, 6, 23, 0.12);
}

.rods__diameter[b-fcy4zs64pe] {
    font-weight: 600;
}

    .rods__diameter small[b-fcy4zs64pe] {
        font-weight: 500;
        color: var(--rd-muted);
    }

.rods__type[b-fcy4zs64pe] {
    color: var(--rd-muted-2);
}

.rods__count[b-fcy4zs64pe] {
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    background: var(--rd-surface-3);
    font-size: 0.78rem;
    font-weight: 700;
}
/* /Components/Shared/Toasts.razor.rz.scp.css */
.toasts[b-beby6niko2] {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 24rem;
}

.toast[b-beby6niko2] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.7rem 0.9rem;
    border-radius: 12px;
    background: var(--rd-ink);
    color: white;
    font-size: 0.85rem;
    box-shadow: 0 12px 30px rgba(2, 6, 23, 0.35);
    animation: rd-toast-in-b-beby6niko2 0.3s cubic-bezier(0.2, 0.75, 0.15, 1) both;
}

.toast--success[b-beby6niko2] {
    background: var(--rd-success);
}

.toast--error[b-beby6niko2] {
    background: var(--rd-error);
}

.toast__message[b-beby6niko2] {
    flex: 1;
}

.toast__close[b-beby6niko2] {
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    color: inherit;
    opacity: 0.7;
    cursor: pointer;
}

    .toast__close:hover[b-beby6niko2] {
        opacity: 1;
    }

@keyframes rd-toast-in-b-beby6niko2 {
    from { opacity: 0; transform: translateY(12px); }
}
/* /Components/Shared/UnderConstruction.razor.rz.scp.css */
.under-construction[b-uc71v6vsil] {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    padding: 1.25rem 1.4rem;
    border: 1px dashed var(--rd-line-strong);
    border-radius: 14px;
    background: repeating-linear-gradient(135deg, rgba(37, 99, 235, 0.04) 0 10px, transparent 10px 20px);
    color: var(--rd-navy);
}

    .under-construction strong[b-uc71v6vsil] {
        display: block;
        margin-bottom: 0.25rem;
    }

    .under-construction p[b-uc71v6vsil] {
        margin: 0;
        font-size: 0.85rem;
        color: var(--rd-muted);
    }
