.JFoldBox{position:relative;display:block;box-sizing:border-box;}
.JFoldBox.JFoldBox-collapsed{overflow:hidden;}
.JFoldBox.JFoldBox-canFold{cursor:pointer;}
.JFoldBox.JFoldBox-canFold.JFoldBox-collapsed::after{content:"";position:absolute;left:0;right:0;bottom:0;height:28px;background:linear-gradient(to bottom, rgba(255,255,255,0), var(--JFoldBoxFadeColor, rgba(255,255,255,.92)));pointer-events:none;}
.JFoldBox.JFoldBox-anim{transition:max-height 220ms ease;}

.JSortableList{display:block;box-sizing:border-box;}
.JSortableList-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin-bottom:8px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;box-sizing:border-box;cursor:move;user-select:none;}
.JSortableList-item:last-child{margin-bottom:0;}
.JSortableList-item.JSortableList-dragging{opacity:.55;}
.JSortableList-item.JSortableList-drop-before{border-top:2px solid #0091FB;}
.JSortableList-item.JSortableList-drop-after{border-bottom:2px solid #0091FB;}
.JSortableList-name{flex:1;min-width:0;line-height:20px;color:#333;word-break:break-all;}
.JSortableList-item.JSortableList-deleted .JSortableList-name{text-decoration:line-through;color:#999;}
.JSortableList-action{flex:none;padding:4px 10px;border:1px solid #d1d5db;border-radius:14px;background:#fff;font-size:12px;line-height:18px;color:#666;cursor:pointer;}
.JSortableList-item.JSortableList-deleted .JSortableList-action{color:#0f766e;border-color:#99f6e4;background:#f0fdfa;}

.JBizTypeTree{display:block;box-sizing:border-box;}
.JBizTypeTree *{box-sizing:border-box;}
.JBizTypeTree-l1{margin-bottom:8px;}
.JBizTypeTree-l1:last-child{margin-bottom:0;}
.JBizTypeTree-row{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;}
.JBizTypeTree-row.JBizTypeTree-leaf{cursor:pointer;}
.JBizTypeTree-row.JBizTypeTree-leaf:hover{border-color:#cbd5e1;background:#f8fafc;}
.JBizTypeTree-title{flex:1;min-width:0;line-height:20px;color:#111827;word-break:break-all;}
.JBizTypeTree-toggle{flex:none;width:22px;height:22px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
.JBizTypeTree-toggle:hover{background:#f3f4f6;}
.JBizTypeTree-caret{display:block;width:0;height:0;border-left:5px solid #6b7280;border-top:4px solid transparent;border-bottom:4px solid transparent;transform:rotate(0deg);transition:transform .12s ease;}
.JBizTypeTree-l1.JBizTypeTree-expanded .JBizTypeTree-caret{transform:rotate(90deg);}
.JBizTypeTree-children{margin-top:6px;margin-left:18px;padding-left:10px;border-left:2px solid #eef2f7;display:none;}
.JBizTypeTree-l1.JBizTypeTree-expanded .JBizTypeTree-children{display:block;}
.JBizTypeTree-l2{margin-top:6px;}
.JBizTypeTree-l2 .JBizTypeTree-row{border-radius:6px;padding:8px 10px;}
.JBizTypeTree-selected{border-color:#0091FB !important;background:#eef7ff !important;}

/*进度条*/
.JTaskProgressBar{
    position:relative;
    display:block;
    box-sizing:border-box;
}

.JTaskProgressBar-root{
    position:relative;
    display:block;
    box-sizing:border-box;
}

.JTaskProgressBar-track{
    position:relative;
    height:14px;
    border-radius:0;
    overflow:hidden;
    box-shadow:0 8px 20px rgba(15, 43, 77, 0.06);
}

.JTaskProgressBar-fill{
    position:absolute;
    left:0;
    top:0;
    bottom:0;
    width:0%;
    border-radius:0;
    background:linear-gradient(90deg, #3492ff, #66c2ff);
    transition:width 260ms ease;
    overflow:hidden;
}

.JTaskProgressBar-text{
    position:absolute;
    left:10px;
    right:10px;
    top:50%;
    transform:translateY(-50%);
    display:flex;
    align-items:center;
    justify-content:flex-start;
    gap:10px;
    font-size:12px;
    white-space:nowrap;
    text-align:left;
    pointer-events:none;
}

.JTaskProgressBar-root.is-running .JTaskProgressBar-text{
    color:#000;
}

.JTaskProgressBar-root.is-s0 .JTaskProgressBar-fill{
    background:linear-gradient(90deg, #c6d6e8, #b7c9dd);
}

.JTaskProgressBar-root.is-s1 .JTaskProgressBar-fill{
    background:linear-gradient(90deg, #3492ff, #66c2ff);
}

.JTaskProgressBar-root.is-s2 .JTaskProgressBar-fill{
    background:linear-gradient(90deg, #ffb84d, #ffd26e);
}

.JTaskProgressBar-root.is-s3 .JTaskProgressBar-fill{
    background:transparent;
}

.JTaskProgressBar-root.is-s4 .JTaskProgressBar-fill{
    background:linear-gradient(90deg, #ff6b6b, #ff9a8a);
}

.JTaskProgressBar-root.is-s5 .JTaskProgressBar-fill{
    background:linear-gradient(90deg, #6f7d8c, #9aa8b7);
}

.JTaskProgressBar-root.is-running .JTaskProgressBar-fill::before{
    content:"";
    position:absolute;
    inset:0;
    background:
            linear-gradient(110deg,
            rgba(255,255,255,0) 0%,
            rgba(255,255,255,0.22) 35%,
            rgba(255,255,255,0) 70%);
    animation:JTaskProgressBar-shimmer 1.2s linear infinite;
}

.JTaskProgressBar-root.is-running .JTaskProgressBar-fill::after{
    content:"";
    position:absolute;
    inset:0;
    background-image:linear-gradient(135deg,
    rgba(255,255,255,0.14) 0%,
    rgba(255,255,255,0.14) 18%,
    rgba(255,255,255,0) 18%,
    rgba(255,255,255,0) 50%,
    rgba(255,255,255,0.14) 50%,
    rgba(255,255,255,0.14) 68%,
    rgba(255,255,255,0) 68%,
    rgba(255,255,255,0) 100%);
    background-size:22px 22px;
    animation:JTaskProgressBar-stripes 0.9s linear infinite;
    opacity:0.75;
    mix-blend-mode:overlay;
}

.JTaskProgressBar-root.is-running .JTaskProgressBar-track::before{
    content:"";
    position:absolute;
    inset:0;
    background-image:repeating-linear-gradient(135deg,
    rgba(52, 146, 255, 0.32) 0px,
    rgba(52, 146, 255, 0.32) 10px,
    rgba(255, 255, 255, 0.72) 10px,
    rgba(255, 255, 255, 0.72) 20px);
    background-size:28px 28px;
    animation:JTaskProgressBar-trackStripes 0.85s linear infinite;
    opacity:0.95;
    pointer-events:none;
}

@keyframes JTaskProgressBar-shimmer{
    from{
        transform:translateX(-120%);
    }
    to{
        transform:translateX(220%);
    }
}

@keyframes JTaskProgressBar-stripes{
    from{
        background-position:0 0;
    }
    to{
        background-position:22px 0;
    }
}

@keyframes JTaskProgressBar-trackStripes{
    from{
        background-position:0 0;
    }
    to{
        background-position:28px 0;
    }
}
