body, html { margin: 0; padding: 0 !important; width: 100%; height: 100%; overflow: hidden; background-color: #f0f0f0;}

#header{
    width: 100%;
    background: none;
    backdrop-filter: none;
    height: 60px;
}
#header .user-profile-card{}


.LoginRegister-Box{
    display: flex;
    flex-wrap: nowrap;
    justify-content: flex-start;
    align-items: center;
    align-content: center;
    gap: 8px;
}

.login-button {
    display: flex;
    align-items: center;
    justify-content: center;
    align-content: center;
}
.LoginRegister-Box > a{
    display: inline-block;
    height: 30px;
    line-height: 30px;
    background: #ccc;
    padding: 0 16px;
    border-radius: 20px;
    box-sizing: border-box;
    -webkit-transition: .2s;
    -moz-transition: .2s;
    transition: .2s;
}
.LoginRegister-Box > .dl-btn{
    background: #f0f5ff;
    border: 1px solid #d3dff5;
    color: #0560f8;
}
.LoginRegister-Box > .zc-btn{
    background: #0560f8;
    color: #fff;
}


.logo{
    position: fixed;
    z-index: 99;
    left: 14px;
    top: 14px;
    height: 36px;
}
.logo a{
    display: block;
    height: 100%;
}
.logo a img{
    display: block;
    height: 100%;
}


/* === Ã©Â¡Â¶Ã©Æ’Â¨Ã¦Â â€¡Ã©Â¢ËœÃ¨Â¯Â»Ã¥â€ â„¢Ã¥Ë†â€ Ã§Â¦Â»Ã¦Â Â·Ã¥Â¼Â === */
#top-title-wrapper {
    display: flex;
    align-items: center;
    gap: 0px;
    height: 30px;
    position: fixed;
    left: 60px;
    top: 18px;
    z-index: 99;
}

/* Ã¥Â±â€¢Ã§Â¤ÂºÃ¦â‚¬ÂÃ¯Â¼Å¡Span */
.workflow-name-text {
    font-size: 16px;
    color: #333;
    /* Ã¥ÂÂ Ã¤Â½ÂÃ¯Â¼Å’Ã©ËœÂ²Ã¦Â­Â¢Ã¥Ë†â€¡Ã¦ÂÂ¢Ã¦â€”Â¶Ã¨Â·Â³Ã¥Å Â¨ */
    cursor: pointer;
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: background 0.2s;
    font-family: 'Open Sans', -apple-system, Helvetica Neue, Helvetica, Roboto, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.workflow-name-text:hover {
    background: rgba(0,0,0,0.03); /* Ã©Â¼Â Ã¦Â â€¡Ã¦â€Â¾Ã¤Â¸Å Ã¥Å½Â»Ã¥Â¾Â®Ã¥Â¾Â®Ã¥ÂËœÃ§ÂÂ°Ã¦ÂÂÃ§Â¤ÂºÃ¥ÂÂ¯Ã§â€šÂ¹ */
}

/* Ã§Â¼â€“Ã¨Â¾â€˜Ã¦â‚¬ÂÃ¯Â¼Å¡Input */
#top-workflow-title-input {
    font-size: 16px;
    color: #333;
    padding: 0;
    border: none; /* Ã§Â¼â€“Ã¨Â¾â€˜Ã¦â€”Â¶Ã¦ËœÂ¾Ã§Â¤ÂºÃ¨â€œÂÃ¦Â¡â€  */
    background: none;
    border-radius: 0;
    outline: none;
    min-width: 50px;
    position: absolute;
    left: 0;
    font-family: 'Open Sans', -apple-system, Helvetica Neue, Helvetica, Roboto, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
    box-sizing: border-box;
}

/* Ã¥â€ºÂ¾Ã¦Â â€¡Ã¦Â Â·Ã¥Â¼Â */
#top-title-edit-btn {
    cursor: pointer;
    font-size: 18px;
    color: #1a1a1a;
    padding: 4px;
}
#top-title-edit-btn:hover {
    color: #1890ff;
}




/* 1. Ã¤Â¿Â¡Ã¦ÂÂ¯Ã¥Â¼Â¹Ã§Âªâ€”Ã¥Â®Â¹Ã¥â„¢Â¨Ã¦Â Â·Ã¥Â¼ÂÃ¯Â¼Å¡Ã¥â€ºÂºÃ¥Â®Å¡Ã¥Å“Â¨Ã©Â¡Â¶Ã©Æ’Â¨Ã¥Â±â€¦Ã¤Â¸Â­ */
#toast-container {
    position: fixed;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 99999;
    display: flex;
    flex-direction: column;
    gap: 15px; /* Ã¦Â¶Ë†Ã¦ÂÂ¯Ã¤Â¹â€¹Ã©â€”Â´Ã§Å¡â€žÃ©â€”Â´Ã¨Â·Â */
    width: 90%;
    max-width: 600px; /* Ã©â„¢ÂÃ¥Ë†Â¶Ã¦Å“â‚¬Ã¥Â¤Â§Ã¥Â®Â½Ã¥ÂºÂ¦Ã¯Â¼Å’Ã¤Â¿ÂÃ¦Å’ÂÃ§Â¾Å½Ã¨Â§â€š */
}


/* 2. Ã¥Ââ€¢Ã¤Â¸ÂªÃ¦Â¶Ë†Ã¦ÂÂ¯Ã¥ÂÂ¡Ã§â€°â€¡Ã§Å¡â€žÃ¥Å¸ÂºÃ§Â¡â‚¬Ã¦Â Â·Ã¥Â¼Â */
.toast-item {
    display: flex;
    align-items: flex-start;
    padding: 16px;
    border-radius: 8px;
    border: 1px solid transparent;
    background-color: #fff;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    opacity: 0; /* Ã¥Ë†ÂÃ¥Â§â€¹Ã©â‚¬ÂÃ¦ËœÅ½Ã¯Â¼Å’Ã§â€Â¨Ã¤ÂºÅ½Ã¦Â·Â¡Ã¥â€¦Â¥Ã¥Å Â¨Ã§â€Â» */
    transition: opacity 0.3s ease;
}

/* Ã¥â€ â€¦Ã¥Â®Â¹Ã¥Å’ÂºÃ¥Å¸Å¸Ã¥Â¸Æ’Ã¥Â±â‚¬ */
.toast-icon {
    flex-shrink: 0;
    margin-right: 12px;
    width: 24px;
    height: 24px;
}
.toast-content {
    flex: 1;
}
.toast-title {
    font-weight: 600;
    font-size: 16px;
    margin-bottom: 4px;
}
.toast-desc {
    font-size: 14px;
    line-height: 1.5;
    margin-bottom: 8px;
    opacity: 0.9;
}
.toast-link {
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}
.toast-close {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    margin-left: 12px;
    opacity: 0.5;
    transition: opacity 0.2s;
}
.toast-close:hover {
    opacity: 1;
}

/* 3. Ã¤Â¸Â»Ã©Â¢ËœÃ©â€¦ÂÃ¨â€°Â² (Ã¥Â¯Â¹Ã¥Âºâ€Ã¥â€ºÂ¾Ã¤Â¸Â­Ã§Å¡â€ž5Ã§Â§ÂÃ©Â£Å½Ã¦Â Â¼) */

/* Purple (Info) */
.toast-info {
    background-color: #eff6ff; /* Ã¦Âµâ€¦Ã¨â€œÂÃ§Â´Â«Ã¥Âºâ€¢ */
    border-color: #bfdbfe;
    color: #1e40af;
}
.toast-info .toast-icon svg { fill: #3b82f6; } /* Ã¥â€ºÂ¾Ã¦Â â€¡Ã¨â€°Â² */

/* Gray (Default) */
.toast-default {
    background-color: #f9fafb;
    border-color: #e5e7eb;
    color: #374151;
}
.toast-default .toast-icon svg { fill: #6b7280; }

/* Red (Error) */
.toast-error {
    background-color: #fef2f2;
    border-color: #fecaca;
    color: #991b1b;
}
.toast-error .toast-icon svg { fill: #ef4444; }

/* Yellow (Warning) */
.toast-warning {
    background-color: #fffbeb;
    border-color: #fde68a;
    color: #92400e;
}
.toast-warning .toast-icon svg { fill: #f59e0b; }

/* Green (Success) */
.toast-success {
    background-color: #ecfdf5;
    border-color: #6ee7b7;
    color: #065f46;
}
.toast-success .toast-icon svg { fill: #10b981; }

/* --- Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¨Â¿â€ºÃ¥ÂºÂ¦Ã¦ÂÂ¡Ã¦Â Â·Ã¥Â¼Â --- */

.toast-item {
    position: relative;
    overflow: hidden;
}

.toast-progress {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background-color: rgba(0,0,0, 0.05);
}

.toast-progress-bar {
    height: 100%;
    width: 100%;
    /* Ã¦Â Â¸Ã¥Â¿Æ’Ã¤Â¿Â®Ã¦â€Â¹ 1: Ã¤Â½Â¿Ã§â€Â¨ scaleX Ã§Â¼Â©Ã¦â€Â¾Ã¯Â¼Å’Ã¦â‚¬Â§Ã¨Æ’Â½Ã¦â€ºÂ´Ã¥Â¥Â½ */
    transform-origin: left; /* Ã£â‚¬ÂÃ¥â€¦Â³Ã©â€Â®Ã§â€šÂ¹Ã£â‚¬â€˜Ã¨Â®Â¾Ã§Â½Â®Ã¥Å¸ÂºÃ§â€šÂ¹Ã¥Å“Â¨Ã¥ÂÂ³Ã¨Â¾Â¹ -> Ã¨Â¿â„¢Ã¦Â Â·Ã¥Â·Â¦Ã¨Â¾Â¹Ã¤Â¼Å¡Ã¥Ââ€˜Ã¥ÂÂ³Ã§Â¼Â©Ã¨Â¿â€º */
    animation: toast-countdown 2.5s linear forwards;
}

/* Ã¦Â Â¸Ã¥Â¿Æ’Ã¤Â¿Â®Ã¦â€Â¹ 2: Ã¥Å Â¨Ã§â€Â»Ã¤Â»Å½ 1 (100%) Ã§Â¼Â©Ã¦â€Â¾Ã¥Ë†Â° 0 */
@keyframes toast-countdown {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
}

/* Ã¤ÂºÂ¤Ã¤Âºâ€™Ã¤Â¼ËœÃ¥Å’â€“Ã¯Â¼Å¡Ã©Â¼Â Ã¦Â â€¡Ã¦â€šÂ¬Ã¥ÂÅ“Ã¦Å¡â€šÃ¥ÂÅ“ */
.toast-item:hover .toast-progress-bar {
    animation-play-state: paused;
}

/* Ã©Â¢Å“Ã¨â€°Â²Ã¤Â¿ÂÃ¦Å’ÂÃ¤Â¸ÂÃ¥ÂËœ */
.toast-info .toast-progress-bar    { background-color: #3b82f6; }
.toast-default .toast-progress-bar { background-color: #9ca3af; }
.toast-error .toast-progress-bar   { background-color: #ef4444; }
.toast-warning .toast-progress-bar { background-color: #f59e0b; }
.toast-success .toast-progress-bar { background-color: #10b981; }


/* === Ã¥Å¸ÂºÃ§Â¡â‚¬Ã§â€Â»Ã¥Â¸Æ’ === */
#viewport {
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    position: relative;
    user-select: none;

    background-color: #fafafa;
    /* Ã§Â»ËœÃ¥Ë†Â¶Ã¦Â¨ÂªÃ§Â«â€“Ã¤Â¸Â¤Ã¦ÂÂ¡Ã§ÂºÂ¿ */
    background-image:
            linear-gradient(#f3f3f3 1px, transparent 1px),
            linear-gradient(90deg, #f3f3f3 1px, transparent 1px);

    background-size: 30px 30px;

}

/* === Ã§Â©ÂºÃ§â€Â»Ã¥Â¸Æ’Ã¦ÂÂÃ§Â¤ÂºÃ¯Â¼Ë†Ã¦â€”Â Ã¨Å â€šÃ§â€šÂ¹Ã¦â€”Â¶Ã¦ËœÂ¾Ã§Â¤ÂºÃ¯Â¼â€° === */
#canvas-empty-hint{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-6px);
    z-index: 6;
    pointer-events: none; /* Ã¤Â¸ÂÃ©ËœÂ»Ã¥Â¡Å¾Ã§â€Â»Ã¥Â¸Æ’Ã¤ÂºÂ¤Ã¤Âºâ€™ */
    opacity: 0;
    visibility: hidden;
    /* transition: opacity .15s ease, transform .15s ease, visibility .15s ease; */
}
#canvas-empty-hint.is-visible{
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(-50%);
}
#canvas-empty-hint .ceh-inner{
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 16px;
    color: #666;
}

#canvas-empty-hint .ceh-inner .ceh-btn {
    background: #ffffff;
    height: 32px;
    padding: 0 18px;
    border: 1px solid #dfdfdf;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    align-content: center;
    gap: 6px;
    cursor: pointer;
    box-shadow: 2px 2px 0px rgba(0, 0, 0, 0.15);
}

#canvas-empty-hint .ceh-inner .ceh-btn i {
    color: #333;
    font-size: 22px;
}
#canvas-empty-hint .ceh-inner .iconfont{
    font-size: 18px;
    color: #999;
}
#canvas-empty-hint .ceh-text{
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    white-space: nowrap;
}
#canvas-empty-hint .ceh-title{
    font-weight: 700;
    color: #333;
    font-size: 15px;
}
#canvas-empty-hint .ceh-desc{
    color: #666;
    font-size: 16px;
}
#canvas-layer {
    position: absolute; left: 0; top: 0; width: 100%; height: 100%; transform-origin: 0 0;
}

/* === Ã¨Â¿Å¾Ã§ÂºÂ¿Ã¥Â±â€š === */
#connections-layer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 2;}

.connection-path {
    fill: none; stroke: #999; stroke-width: 2px;
    pointer-events: stroke;
    cursor: pointer;
}
.connection-path:hover { stroke: #555; stroke-width: 4px; }
.connection-path.selected { stroke: #ff4d4f; stroke-width: 4px; filter: drop-shadow(0 0 2px rgba(255, 77, 79, 0.5)); }

/* === Ã¨Å â€šÃ§â€šÂ¹Ã¦Â Â·Ã¥Â¼Â === */
.node {
    position: absolute;
    width: 380px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    border: 1px solid #e0e0e0;
    display: flex;
    flex-direction: column;
    z-index: 10;
    cursor: default;

    /* âœ… ç§»é™¤â€œè‡ªåŠ¨æŽ¨æŒ¤/æŒ¤åŽ‹ä¸‹ç§»â€ç›¸å…³åŠ¨ç”»ï¼šèŠ‚ç‚¹ top å˜åŒ–ä¸å†æœ‰ç‰¹æ®Šè¿‡æ¸¡ */
    transition: box-shadow 0.2s, border-color 0.2s;
}

.type-image-upload {
    /* border: none; */
}

/* Ã¢Å“â€¦ Ã§Â»Å¸Ã¤Â¸â‚¬Ã¯Â¼Å¡Ã¦â€°â‚¬Ã¦Å“â€°Ã¥â€ºÂ¾Ã§â€°â€¡Ã¨Å â€šÃ§â€šÂ¹Ã¥Â®Â½Ã¥ÂºÂ¦Ã¥â€ºÂºÃ¥Â®Å¡ 480px */
.node.type-image-upload {
    width: 480px !important;
}
/* Ã¥Â½â€œÃ¤Â½Â Ã¥Å“Â¨Ã¦â€¹â€“Ã¦â€¹Â½Ã¨Å â€šÃ§â€šÂ¹Ã¦â€”Â¶Ã¯Â¼Å’Ã¥Â¿â€¦Ã©Â¡Â»Ã¥â€¦Â³Ã¦Å½â€°Ã¥Å Â¨Ã§â€Â»Ã¯Â¼Å’Ã¥ÂÂ¦Ã¥Ë†â„¢Ã¦â€°â€¹Ã¦â€žÅ¸Ã¤Â¼Å¡Ã¥Æ’ÂÃ¦â€¹â€°Ã§Å¡Â®Ã§Â­â€¹Ã¤Â¸â‚¬Ã¦Â Â·Ã¥Â»Â¶Ã¨Â¿Å¸ */
.node.ui-draggable-dragging,
.node.selected {
    transition: box-shadow 0.2s, border-color 0.2s !important;
}


.node.type-ai-image {
    width: 480px;
}

/* =========================================
 * ðŸ–¼ï¸ AIç»˜å›¾èŠ‚ç‚¹ï¼šå›ºå®šæ¯”ä¾‹é¢„è§ˆæ¡† + é»˜è®¤æŠ˜å è®¾ç½®åŒº
 * ========================================= */
.node.type-ai-image.is-collapsed .ai-image-settings {
    display: none;
}

.node.type-ai-image .ai-image-preview-wrap{
    --ai-preview-pt: 100%;
    position: relative;
    width: 100%;
    border-radius: 12px;
    background: #fafafa;
    border: 1px solid #f0f0f0;
    overflow: hidden;
    cursor: pointer;
    user-select: none;
}
.node.type-ai-image .ai-image-preview-wrap::before{
    content: "";
    display: block;
    padding-top: var(--ai-preview-pt);
}
.node.type-ai-image .ai-image-preview-frame{
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.node.type-ai-image img.ai-image-preview-img{
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: none;
    background: #fff;
}
.node.type-ai-image .ai-image-preview-placeholder{
    padding: 14px 16px;
    text-align: center;
    color: #8c8c8c;
}
.node.type-ai-image .ai-image-preview-title{
    font-size: 14px;
    font-weight: 600;
    color: #666;
    margin-bottom: 6px;
}
.node.type-ai-image .ai-image-preview-sub{
    font-size: 12px;
    line-height: 1.4;
    color: #999;
}
.node.type-ai-image .ai-image-preview-badge{
    position: absolute;
    left: 10px;
    top: 10px;
    font-size: 12px;
    color: #555;
    background: rgba(255,255,255,0.88);
    border: 1px solid rgba(0,0,0,0.06);
    border-radius: 999px;
    padding: 4px 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.node.type-ai-image .ai-image-preview-loading{
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 8px;
    background: rgba(255,255,255,0.78);
    z-index: 2;
}
.node.type-ai-image .ai-image-preview-loading-text{
    font-size: 12px;
    font-weight: 600;
    color: #666;
    text-align: center;
    /* âœ… æ”¯æŒå¤šè¡ŒçŠ¶æ€åˆ—è¡¨ï¼ˆç¬¬1å¼ /ç¬¬2å¼ ...ï¼‰ */
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 0 16px;
    max-height: 60%;
    overflow: auto;
    line-height: 1.35;
}

.node.type-ai-image .ai-image-preview-loading-line{
    white-space: nowrap;
}
.node.type-ai-image .ai-status-ok{
    color: #31d95c;
    font-weight: 900;
    margin-left: 4px;
}
.node.type-ai-image .ai-status-fail{
    color: #ed3a3a;
    font-weight: 900;
    margin-left: 4px;
}

.node.type-ai-image .ai-image-gallery-count-btn{
    position: absolute;
    right: 10px;
    top: 10px;
    height: 26px;
    min-width: 26px;
    padding: 0 8px;
    border-radius: 999px;
    border: 1px solid rgba(0,0,0,0.08);
    background: rgba(24,144,255,0.92);
    color: #fff;
    font-weight: 700;
    font-size: 12px;
    line-height: 24px;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(0,0,0,0.10);
    z-index: 10;
}
.node.type-ai-image .ai-image-gallery-count-btn.is-empty{
    background: rgba(0,0,0,0.25);
}
.node.type-ai-image .ai-image-gallery-count-btn:hover{
    filter: brightness(1.05);
}

/* å…¨å±€å±…ä¸­å¼¹çª—ï¼šAIç»˜å›¾ç”»å»Š */
.ai-img-modal{
    position: fixed;
    inset: 0;
    z-index: 999;
    display: none;
}
.ai-img-modal-backdrop{
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.35);
}
.ai-img-modal-box{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: min(1100px, 92vw);
    height: min(760px, 86vh);
    background: rgba(255,255,255,0.98);
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: 14px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.ai-img-modal-header{
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    border-bottom: 1px solid rgba(0,0,0,0.06);
    background: #fff;
}
.ai-img-modal-title{
    font-size: 14px;
    font-weight: 700;
    color: #333;
}
.ai-img-modal-actions{
    display: flex;
    gap: 8px;
    align-items: center;
}
.ai-img-modal-batch{
    height: 32px;
    padding: 0 10px;
    border-radius: 10px;
    border: 1px solid rgba(0,0,0,0.10);
    background: rgba(255,255,255,0.92);
    cursor: pointer;
    font-size: 12px;
    line-height: 30px;
    font-weight: 700;
    color: #333;
}
.ai-img-modal-batch:hover{
    background: rgba(255,255,255,1);
}
.ai-img-modal-batch.ai-batch-delete-all{
    color: #cf1322;
    border-color: rgba(207,19,34,0.22);
    background: rgba(255,241,240,0.92);
}
.ai-img-modal-batch.ai-batch-delete-all:hover{
    background: rgba(255,241,240,1);
}
.ai-img-modal-close{
    width: 32px;
    height: 32px;
    border-radius: 16px;
    border: none;
    background: rgba(0,0,0,0.06);
    cursor: pointer;
    font-size: 16px;
    line-height: 32px;
}
.ai-img-modal-close:hover{ background: rgba(0,0,0,0.10); }
.ai-img-modal-body{
    padding: 14px;
    overflow: auto;
    flex: 1;
}
.ai-img-modal-grid{
    /* âœ… æ”¹ä¸º JS ç€‘å¸ƒæµï¼šé¿å… column å¸ƒå±€â€œå°‘å›¾å¿…ç«–æŽ’â€çš„é—®é¢˜ */
    position: relative;
    width: 100%;
}
.ai-img-modal-item{
    position: absolute; /* ç”± JS è®¡ç®— top/left */
    display: block;
    margin: 0;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(0,0,0,0.06);
    background: #f3f3f3;
}
.ai-img-modal-thumb{
    width: 100%;
    height: 100%;
    /* é»˜è®¤ 1:1ï¼›å¼¹çª—æ¸²æŸ“æ—¶ä¼šä¸ºæ¯å¼ å›¾æ³¨å…¥çœŸå®žæ¯”ä¾‹ï¼ˆ--ai-modal-arï¼‰ï¼Œä»¥ä¾¿ç€‘å¸ƒæµæœ‰æ„ä¹‰ */
    aspect-ratio: var(--ai-modal-ar, 1 / 1);
    background-size: cover;
    background-position: center;
    transition: transform .16s ease;
}
.ai-img-modal-item:hover .ai-img-modal-thumb{ transform: scale(1.03); }
.ai-img-modal-item-actions{
    position: absolute;
    top: 8px;
    right: 8px;
    display: flex;
    gap: 6px;
    opacity: 0;
    transition: opacity .12s ease;
}
.ai-img-modal-item:hover .ai-img-modal-item-actions{ opacity: 1; }
.ai-img-modal-act{
    width: 28px;
    height: 28px;
    border-radius: 14px;
    border: none;
    background: rgba(255,255,255,0.78);
    cursor: pointer;
    font-size: 13px;
    line-height: 28px;
}
.ai-img-modal-act:hover{ background: rgba(255,255,255,1); }

/* =========================================
 * ðŸ–¼ï¸ AIç»˜å›¾å¼¹çª—ï¼šçŠ¶æ€æ¡/ç”Ÿæˆä¸­/å¤±è´¥æ€
 * ========================================= */
.ai-img-modal-statusbar{
    position: absolute;
    left: 8px;
    bottom: 8px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255,255,255,0.88);
    border: 1px solid rgba(0,0,0,0.06);
    box-shadow: 0 2px 10px rgba(0,0,0,0.10);
    font-size: 12px;
    font-weight: 700;
    color: #333;
    pointer-events: none;
}
.ai-img-modal-thumb-pending,
.ai-img-modal-thumb-failed{
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 10px;
    background: #f3f3f3;
}
.ai-img-modal-thumb-failed{
    background: #fff1f0;
}
.ai-img-modal-pending-text{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 700;
    color: #666;
    text-align: center;
    padding: 0 10px;
}
.ai-img-modal-submsg{
    font-size: 12px;
    color: rgba(0,0,0,0.55);
    padding: 0 12px 10px;
    text-align: center;
    line-height: 1.35;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    line-clamp: 3;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}

.node.type-ai-image .ai-image-settings{
    margin-top: 12px;
}

.node.type-ai-video {
    width: 480px;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Å¸Ã¦Ë†ÂÃ§Å¡â€žÃ¥â€ºÂ¾Ã§â€°â€¡Ã¨Å â€šÃ§â€šÂ¹Ã¦Â Â·Ã¥Â¼Â */
.node.type-ai-generated-image {
    width: 480px !important;
     /* Ã§Â»â„¢Ã¤Â¸ÂªÃ©â€¡â€˜Ã¨Â¾Â¹Ã¯Â¼Å’Ã¨Â¡Â¨Ã§Â¤ÂºÃ¦ËœÂ¯Ã§â€Å¸Ã¦Ë†ÂÃ§Å¡â€ž */
}
.node.type-ai-generated-image .node-body {
    padding: 0;
    background: #ffffff; /* Ã¥Â¾Â®Ã¥Â¾Â®Ã¥Ââ€˜Ã©Â»â€žÃ§Å¡â€žÃ¨Æ’Å’Ã¦â„¢Â¯ */
    border-radius: 12px 12px;
    overflow: hidden;
}

.node.selected {border-color: #1890ff;box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.5);z-index: 20;background: #fff;}

.node-header {
    background: none;
    padding: 10px 0;
    /* border-bottom: 1px solid #eee; */
    border-radius: 12px 12px 0 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: normal;
    color: #444;
    cursor: grab;
    font-size: 14px;
    position: absolute;
    top: -41px;
    width: 100%;
}
.node-header .delete-btn {     font-size: 18px;
    color: #c8c8c8;
    cursor: pointer;
    position: relative;
    top: 1px;}
.node-header .delete-btn:hover { color: #ff4d4f; }

.node-body {
    position: relative !important; /* Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¥Â­ÂÃ¥â€¦Æ’Ã§Â´Â Ã§Â»ÂÃ¥Â¯Â¹Ã¥Â®Å¡Ã¤Â½ÂÃ§Å¡â€žÃ¥Ââ€šÃ¨â‚¬Æ’Ã§â€šÂ¹ */

    /* Ã¤Â¿ÂÃ¨Â¯ÂÃ¦Å“â‚¬Ã¥Â°ÂÃ©Â«ËœÃ¥ÂºÂ¦Ã¯Â¼Å’Ã©ËœÂ²Ã¦Â­Â¢Ã¦Å¾ÂÃ§Â«Â¯Ã¦Æ’â€¦Ã¥â€ ÂµÃ¥Â¡Å’Ã©â„¢Â· */
    min-height: 60px;
    padding: 12px;
}
.type-ai-image .node-body{
    padding: 12px;
}

.type-ai-video .node-body{
    padding: 12px;
}
.node-body .placeholder-content{
    width: 100%;
    /* Ã©Â«ËœÃ¥ÂºÂ¦Ã§â€Â± JS Ã¥Å Â¨Ã¦â‚¬ÂÃ¦Å½Â§Ã¥Ë†Â¶Ã¯Â¼Å’Ã¨Â¿â„¢Ã©â€¡Å’Ã¤Â¿ÂÃ¦Å’Â flex Ã¥Â¸Æ’Ã¥Â±â‚¬ */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: opacity 0.3s ease; /* Ã¥â€¦ÂÃ¨Â®Â¸Ã¦Â·Â¡Ã¥â€¡Âº */
}
/* Ã§Â»â€œÃ¦Å¾Å“Ã¥Â±â€šÃ¯Â¼Ë†Ã¤Â¸Å Ã¥Â±â€šÃ¯Â¼Å’Ã¥Ë†ÂÃ¥Â§â€¹Ã§Å Â¶Ã¦â‚¬ÂÃ¯Â¼â€° */
.node-body .result-overlay {
    position: absolute; /* Ã°Å¸â€Â¥ Ã§Â»ÂÃ¥Â¯Â¹Ã¥Â®Å¡Ã¤Â½ÂÃ¯Â¼Å’Ã¦â€šÂ¬Ã¦ÂµÂ®Ã¥Å“Â¨Ã¥ÂÂ Ã¤Â½ÂÃ¥Â±â€šÃ¤Â¸Å Ã©ÂÂ¢ */
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; /* Ã¥Â¼ÂºÃ¥Ë†Â¶Ã©â€œÂºÃ¦Â»Â¡ */
    opacity: 0; /* Ã¤Â¸â‚¬Ã¥Â¼â‚¬Ã¥Â§â€¹Ã§Å“â€¹Ã¤Â¸ÂÃ¨Â§Â */
    background: #fff; /*Ã¨Â¦ÂÃ¦Å“â€°Ã¨Æ’Å’Ã¦â„¢Â¯Ã¨â€°Â²Ã¯Â¼Å’Ã¨Â¿â„¢Ã¥Â°Â±Ã¦Å Å Ã¥Âºâ€¢Ã¤Â¸â€¹Ã§Å¡â€žÃ¨Â½Â¬Ã¥Å“Ë†Ã¥Å“Ë†Ã¦Å’Â¡Ã¤Â½ÂÃ¤Âºâ€ */
    transition: opacity 0.4s ease; /* Ã¦â€¦Â¢Ã¦â€¦Â¢Ã¦ËœÂ¾Ã§Â¤ÂºÃ¥â€¡ÂºÃ¦ÂÂ¥ */
    z-index: 10;

    /* Ã¥â€ â€¦Ã©Æ’Â¨Ã¥Â¸Æ’Ã¥Â±â‚¬ */
    display: flex;
    flex-direction: column;
}

/* Ã§Â»â€œÃ¦Å¾Å“Ã¥Â±â€šÃ¯Â¼Ë†Ã¦ËœÂ¾Ã§Â¤ÂºÃ§Å Â¶Ã¦â‚¬ÂÃ¯Â¼â€° */
.node-body .result-overlay.show {
    opacity: 1; /* Ã¦ËœÂ¾Ã§Â¤Âº */
}

textarea.node-input {
    width: 100%;
    border: 1px solid #eee;
    resize: vertical;
    outline: none;
    font-size: 14px;
    color: #333;
    font-family: inherit;
    background: #fff;
    box-sizing: border-box;
    overflow-y: auto;
    line-height: 1.6;
    transition: border-color 0.2s;
    border-radius: 4px;
    padding: 8px;
}

.type-image-upload  textarea.node-input {
    display: none;
}
textarea.node-input:focus { border-color: #ccc; }
textarea.node-input::-webkit-scrollbar { width: 6px; }
textarea.node-input::-webkit-scrollbar-thumb { background-color: #ddd; border-radius: 3px; }

.node.type-ai-text textarea.node-input, .node.type-ai-image textarea.node-input, .node.type-ai-video textarea.node-input { height: 80px; }
.node.type-text textarea.node-input { height: 150px; border-color: transparent; }
.node.type-text textarea.node-input:focus { border-color: #eee; }

/* Ã¦â€œÂÃ¤Â½Å“Ã¦Â Â */
.node-actions {
    display: flex; justify-content: space-between; align-items: center; margin-top: 5px;
    position: relative;
    gap: 8px;
}

.actions-left {display: flex;gap: 8px;flex-grow: 1;position: relative;}

/* === ðŸŽ¬ VEO è§†é¢‘èŠ‚ç‚¹é€‰é¡¹è¡Œ === */
.veo-options-row{
    display:flex;
    flex-wrap: wrap;
    align-items:center;
    gap: 10px;
    margin-top: 6px;
    padding: 0 2px;
    font-size: 12px;
    color: #666;
}
.veo-opt{
    display:flex;
    align-items:center;
    gap: 4px;
}
.veo-opt input{
    transform: translateY(0.5px);
}
.veo-aspect-select{
    margin-left: 6px;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    padding: 4px 6px;
    font-size: 12px;
    background: #fff;
    outline: none;
}
.veo-hint{
    margin-left: auto;
    color: #999;
}
.veo-status-box{
    padding: 10px;
    background: #fafafa;
    border: 1px solid #eee;
    border-radius: 8px;
    font-size: 12px;
    color: #555;
}
.veo-actions{
    margin-top: 8px;
    font-size: 12px;
}
.veo-actions a{
    color: #1890ff;
    text-decoration: none;
}
.veo-actions a:hover{
    text-decoration: underline;
}

/* === ðŸŽ¬ è§†é¢‘ç”»å»Š === */
.node-output-video-gallery{
    padding: 12px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}
.video-item{
    position: relative;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    overflow: hidden;
}
.video-item-actions{
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 5;
}
.video-delete-btn{
    border: 1px solid rgba(0,0,0,0.08);
    background: rgba(255,255,255,0.9);
    border-radius: 8px;
    padding: 6px 8px;
    cursor: pointer;
    font-size: 12px;
    color: #ff4d4f;
}
.video-delete-btn:hover{
    background: #fff;
    border-color: rgba(255,77,79,0.25);
}
.video-item-body{
    padding: 10px;
}
.video-item-placeholder{
    width: 100%;
    min-height: 160px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap: 8px;
    background: #fafafa;
    border-radius: 8px;
}
.video-batch-btn{
    background: #f0f0f0;
    border: 1px solid #e0e0e0;
    padding: 6px 10px;
    border-radius: 6px;
    font-size: 12px;
    color: #333;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    user-select: none;
}
.video-batch-btn:hover{
    background: #fff;
    border-color: #d0d0d0;
}

/* === Ã¤Â¸â€¹Ã¦â€¹â€°Ã¨ÂÅ“Ã¥Ââ€¢Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â === */
.dropdown-trigger-btn {
    background: #f0f0f0;
    border: 1px solid #e0e0e0;
    padding: 8px 10px;
    border-radius: 6px;
    font-size: 12px;
    color: #333;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 2px;
    max-width: 230px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: all 0.2s;
    user-select: none;
    font-weight: 500;
}

.dropdown-trigger-btn span {
    display: none;
}
.dropdown-trigger-btn:hover, .dropdown-trigger-btn.active { background: #e5e5e5; border-color: #ccc; }
.dropdown-trigger-btn .btn-icon { font-size: 14px; color: #666; }

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¦â€°Â¹Ã©â€¡ÂÃ¦Â¨Â¡Ã¥Â¼ÂÃ¥Â¼â‚¬Ã¥â€¦Â³Ã¦Å’â€°Ã©â€™Â® */
.batch-switch-btn {
    background: #fff;
    border: 1px solid #d9d9d9;
    color: #666;
    padding: 0;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    transition: all 0.2s;
    font-weight: 500;
    height: 36px;
}
.batch-switch-btn:hover { border-color: #40a9ff; color: #40a9ff; }
/* Ã¦Â¿â‚¬Ã¦Â´Â»Ã§Å Â¶Ã¦â‚¬ÂÃ¯Â¼Å¡Ã§Â»Â¿Ã¨â€°Â²Ã¨Æ’Å’Ã¦â„¢Â¯ */
.batch-switch-btn.active {
    background: #f6ffed;
    border-color: #b7eb8f;
    color: #52c41a;
}


/* Ã¤Â¸â€¹Ã¦â€¹â€°Ã¥Ë†â€”Ã¨Â¡Â¨Ã¥Â®Â¹Ã¥â„¢Â¨ */
.custom-dropdown {
    position: absolute;
    bottom: 40px;
    left: 0;
    width: 220px;
    background: #ffffff;
    border: 1px solid #eee;
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    padding: 6px;
    display: none;
    z-index: 100;
    max-height: 280px;
    overflow-y: auto;
}
.custom-dropdown::-webkit-scrollbar { width: 4px; }
.custom-dropdown::-webkit-scrollbar-thumb { background-color: #ccc; border-radius: 2px; }

/* Ã¥Ë†â€”Ã¨Â¡Â¨Ã©Â¡Â¹ */
.dropdown-item {
    padding: 8px 10px;
    font-size: 12px;
    color: #444;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0;
    transition: background 0.1s;
    margin-bottom: 2px;
}
.dropdown-item:hover { background: #f5f5f5; }
.dropdown-item.active {color: #000000;font-weight: 600;background: #f0f0f0;}
.dropdown-item-icon { width: 16px; text-align: center; font-size: 12px;}

.exec-btn {
    background: #444;
    color: #fff;
    border: none;
    padding: 0 18px;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    transition: background 0.2s;
    white-space: nowrap;
    font-weight: 600;
    height: 36px;
    box-sizing: border-box;
    border: 1px solid #ffffff;
}
.exec-btn:hover { background: #222; }
.exec-btn.loading { background: #666; cursor: wait; pointer-events: none; }

.node-output-area {
    margin: 0 10px 15px 10px;
    border: none;
    border-radius: 8px;
    min-height: 100px;
    background: #ffffff;
    padding: 0;
    max-height: 700px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}
.type-ai-text .node-output-area{
    height: 200px;
}
.node-output-area::-webkit-scrollbar { width: 6px; }
.node-output-area::-webkit-scrollbar-thumb { background-color: #ddd; border-radius: 3px; }

.node-output-label { font-size: 12px; color: #999; margin-bottom: 0; font-weight: 600; }

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Â»Ã¥Â»Å Ã¥Â¤Â´Ã©Æ’Â¨Ã¥Â®Â¹Ã¥â„¢Â¨Ã¦Â Â·Ã¥Â¼Â */
.gallery-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    padding: 0 5px;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¦â€°Â¹Ã©â€¡ÂÃ¦â€œÂÃ¤Â½Å“Ã¦Å’â€°Ã©â€™Â®Ã¥Â®Â¹Ã¥â„¢Â¨ */
.gallery-batch-actions {
    display: flex;
    gap: 6px;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¦â€°Â¹Ã©â€¡ÂÃ¦â€œÂÃ¤Â½Å“Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
.gallery-batch-btn {
    background: #f5f5f5;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    padding: 3px 8px;
    font-size: 11px;
    color: #666;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    gap: 2px;
}

.gallery-batch-btn:hover {
    background: #e8e8e8;
    border-color: #d0d0d0;
    color: #333;
}

/* Ã¥â€¦Â¨Ã©Æ’Â¨Ã§â€¹Â¬Ã§Â«â€¹Ã¦Å’â€°Ã©â€™Â®Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥ÂËœÃ¨â€œÂ */
.gallery-batch-btn.detach-all:hover {
    background: #e6f7ff;
    border-color: #91d5ff;
    color: #1890ff;
}

/* Ã¥â€¦Â¨Ã©Æ’Â¨Ã¥Ë†Â Ã©â„¢Â¤Ã¦Å’â€°Ã©â€™Â®Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥ÂËœÃ§ÂºÂ¢ */
.gallery-batch-btn.delete-all:hover {
    background: #fff1f0;
    border-color: #ffa39e;
    color: #ff4d4f;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¤Â¿Â®Ã¦â€Â¹Ã£â‚¬â€˜Ã¥Â¢Å¾Ã¥Å Â Ã¤Âºâ€  user-select: text Ã¥â€¦ÂÃ¨Â®Â¸Ã©â‚¬â€°Ã¦â€¹Â©Ã¦â€“â€¡Ã¥Â­â€”Ã¯Â¼Å’cursor: text Ã©Â¼Â Ã¦Â â€¡Ã¥ÂËœÃ¥Â·Â¥Ã¥Â­â€”Ã¥Å¾â€¹ */
.node-output-content {
    font-size: 13px;
    color: #333;
    line-height: 1.6;
    word-wrap: break-word;
    user-select: text !important; /* Ã¥Â¼ÂºÃ¥Ë†Â¶Ã¥â€¦ÂÃ¨Â®Â¸Ã©â‚¬â€°Ã¤Â¸Â­ */
    cursor: text;
    position: relative; /* Ã¤Â¸ÂºÃ¥Â¤ÂÃ¥Ë†Â¶Ã¦Å’â€°Ã©â€™Â®Ã¥Â®Å¡Ã¤Â½ÂÃ¥ÂÅ¡Ã¥â€¡â€ Ã¥Â¤â€¡ */
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¥Â¤ÂÃ¥Ë†Â¶Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
.copy-btn {
    display: none; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”ÂÃ¯Â¼Å’Ã§Â­â€°Ã§â€Å¸Ã¦Ë†ÂÃ¥Â®Å’Ã¦â€°ÂÃ¦ËœÂ¾Ã§Â¤Âº */
    margin-top: 8px;
    background: #f0f0f0;
    border: 1px solid #ddd;
    color: #555;
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    float: right; /* Ã©ÂÂ Ã¥ÂÂ³Ã¦ËœÂ¾Ã§Â¤Âº */
    transition: all 0.2s;
}
.copy-btn:hover { background: #e6e6e6; color: #333; }
.copy-btn.copied { background: #d9f7be; color: #389e0d; border-color: #b7eb8f; } /* Ã¥Â¤ÂÃ¥Ë†Â¶Ã¦Ë†ÂÃ¥Å Å¸Ã§Å¡â€žÃ§Â»Â¿Ã¨â€°Â²Ã§Å Â¶Ã¦â‚¬Â */

.node-output-content p { margin: 0 0 10px 0; }
.node-output-content pre {

    padding: 0 10px 10px;
    
    margin: 0;
    color: #6f6f6f; 
    border-radius: 8px;
    font-size: 12px;
    line-height: 1.6;
    white-space: pre-wrap; 
    word-break: break-word; 
    overflow-x: hidden;
    font-family: 'Open Sans', -apple-system, Helvetica Neue, Helvetica, Roboto, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;

}
.node-output-content code { background: #e0e0e0; padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 12px; }

.node-output-content img { max-width: 100%; border-radius: 8px; border: 1px solid #eee; display: block; margin: auto; }

.port {
    width: 22px; height: 22px; background: #fff; border: 1px solid #ccc; border-radius: 50%;
    position: absolute; top: 50%; transform: translateY(-50%);
    display: flex; align-items: center; justify-content: center; z-index: 15; color: #ccc;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05); transition: all 0.2s;
}
.port::after { content: '+'; position: relative; top: -1px;}
.port:hover { border-color: #666; color: #666; transform: translateY(-50%) scale(1.1); cursor: crosshair; }
.port-left { left: -26px; } .port-right { right: -26px; }

#context-menu {
    position: absolute;
    background: #fff;
    border: 1px solid rgba(0,0,0,0.08);
    box-shadow: 0 12px 32px rgba(0,0,0,0.14);
    border-radius: 12px;
    padding: 8px;
    display: none;
    z-index: 1000;
    min-width: 170px;
    user-select: none;
}
#context-menu .menu-item {
    height: 40px;
    padding: 0 12px;
    font-size: 13px;
    color: #1f1f1f;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
    display: flex;
    align-items: center;
    gap: 10px;
    border-radius: 10px;
    letter-spacing: 0.1px;
}
#context-menu .menu-item:hover {background: #ededed;color: #060606;}
#context-menu .menu-item i{
    font-size: 22px;
    width: 20px;
    text-align: center;
    opacity: 0.9;
}
.controls-hint {
    position: fixed; bottom: 20px; left: 20px; background: rgba(0, 0, 0, 0.7); color: white; box-shadow: 0 2px 10px rgba(0,0,0,0.2);
    padding: 10px 15px; border-radius: 8px; font-size: 12px; pointer-events: none; z-index: 200; font-family: 'Segoe UI Mono', monospace;
}

/* === Ã¥Å Â Ã¨Â½Â½Ã¥Å Â¨Ã§â€Â»Ã¦Â Â·Ã¥Â¼Â === */
.loading-container {
    display: flex; flex-direction: column; justify-content: center; align-items: center;
    height: 100%; min-height: 120px; gap: 15px; color: #888; font-size: 13px;
    background: #fafafa; border-radius: 6px;
}
.loading-spinner {
    width: 24px; height: 24px;
    border: 3px solid #e0e0e0; border-top: 3px solid #555;
    border-radius: 50%; animation: spin 0.8s linear infinite;
}
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

/* === Ã¥â€ºÂ¾Ã§â€°â€¡Ã¤Â¸Å Ã¤Â¼Â Ã¨Å â€šÃ§â€šÂ¹Ã¦Â Â·Ã¥Â¼Â === */
.node.type-image-upload .node-body {padding: 0;}

.upload-area {
    width: 100%;
    min-height: 180px;
    border: none;
    border-radius: 11px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s;
    position: relative;
    overflow: hidden;
}
.upload-area:hover { border-color: #999; background: #f0f0f0; }
.upload-area.has-file { /* border-style: solid; */ border-color: #ccc; }

.upload-placeholder { color: #999; font-size: 12px; text-align: center; pointer-events: none; }
.upload-icon {font-size: 24px;margin-bottom: 10px;display: block;text-align: center;}

.upload-placeholder {
    font-size: 13px;
    color: #888888;
}
.hidden-file-input { display: none; }
/* âœ… ä¿®å¤ï¼šæ¨¡æ¿å¯¼å…¥/è¯»å–åŽ upload-preview éœ€è¦èƒ½æ˜¾ç¤º
   æ—§è§„åˆ™æŠŠ .upload-preview å…¨å±€éšè—ï¼Œä¼šå¯¼è‡´ JS show() åœ¨æŸäº›æµè§ˆå™¨/åœºæ™¯ä¸‹ä»è¢«è¦†ç›–ã€‚
   æ­£ç¡®é€»è¾‘ï¼šåªæœ‰â€œæœªé€‰æ‹©æ–‡ä»¶â€æ—¶æ‰éšè—é¢„è§ˆï¼›ä¸€æ—¦ .upload-area.has-file å°±æ˜¾ç¤ºã€‚ */
.upload-area:not(.has-file) .upload-preview { display: none; }
.upload-area.has-file .upload-preview { display: block; }

.upload-preview, .result-img-item {
    width: 100%;
    height: auto;
    object-fit: contain;

    /* Ã¥â€¦Â³Ã©â€Â® 1: Ã¥â€¦ÂÃ¨Â®Â¸Ã©Â¼Â Ã¦Â â€¡Ã§â€šÂ¹Ã¥â€¡Â»Ã¥â€ºÂ¾Ã§â€°â€¡ (Ã¨Â§Â£Ã¥â€ Â³Ã§â€šÂ¹Ã¥â€¡Â»Ã¦â€”Â Ã¦Â³â€¢Ã¤Â¸Å Ã¤Â¼Â Ã§Å¡â€žÃ©â€”Â®Ã©Â¢Ëœ) */
    pointer-events: auto;

    /* Ã¥â€¦Â³Ã©â€Â® 2: Ã§Â¦ÂÃ¦Â­Â¢Ã§â€Â¨Ã¦Ë†Â·Ã©â‚¬â€°Ã¤Â¸Â­Ã¥â€ºÂ¾Ã§â€°â€¡Ã¥ÂËœÃ¨â€œÂ */
    user-select: none;

    /* Ã¥â€¦Â³Ã©â€Â® 3: Ã§ÂºÂ¯ CSS Ã§Â¦ÂÃ¦Â­Â¢Ã¦ÂµÂÃ¨Â§Ë†Ã¥â„¢Â¨Ã¦Å Å Ã¥â€ºÂ¾Ã§â€°â€¡Ã¥Â½â€œÃ¤Â½Å“Ã¦â€“â€¡Ã¤Â»Â¶Ã¦â€¹â€“Ã¥Å Â¨ */
    -webkit-user-drag: none;
}

/* Ã©â€™Ë†Ã¥Â¯Â¹Ã§â€Å¸Ã¦Ë†ÂÃ§Â»â€œÃ¦Å¾Å“Ã©â€¡Å’Ã§Å¡â€žÃ¥â€ºÂ¾Ã§â€°â€¡Ã¯Â¼Å’Ã¤Â¹Å¸Ã¥Å Â Ã¤Â¸Å Ã©ËœÂ²Ã¦â€¹â€“Ã¦â€¹Â½ */
.node-output-content img {
    pointer-events: auto;
    user-select: none;
    -webkit-user-drag: none;
}

/* === Ã§Â¼Â©Ã§â€¢Â¥Ã¥â€ºÂ¾Ã¥Ë†â€”Ã¨Â¡Â¨Ã¦Â Â·Ã¥Â¼Â (Ã©â‚¬Å¡Ã§â€Â¨) === */
.input-thumbs-container {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 5px;
    min-height: 0;
    transition: all 0.2s;
    border-radius: 12px 12px 0 0;
}
.input-thumbs-container:empty { display: none; }

.thumb-item {
    width: 42px; height: 42px;
    border-radius: 6px;
    border: 1px solid #ddd;
    background-size: cover; background-position: center;
    position: relative;
    cursor: grab;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
    transition: transform 0.2s, box-shadow 0.2s;
    position: relative;
    overflow: visible;
}
.thumb-item.selected {
    border-color: #ff4d4f;
    box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.22), 0 2px 8px rgba(0,0,0,0.12);
}
.thumb-item:hover { transform: scale(1.05); z-index: 5; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
.thumb-item:active { cursor: grabbing; }

/* Ã¦â€¹â€“Ã¦â€¹Â½Ã¦â€”Â¶Ã§Å¡â€žÃ¦Â Â·Ã¥Â¼Â */
.thumb-item.sortable-dragging { opacity: 0.5; border: 1px dashed #666; }
.thumb-item.sortable-over { border-color: #1890ff; transform: scale(1.1); }

.thumb-badge {
    position: absolute; top: 0; left: 0;
    background: rgba(0,0,0,0.7); color: white;
    font-size: 10px; font-weight: bold;
    width: 14px; height: 14px;
    display: flex; align-items: center; justify-content: center;
    border-bottom-right-radius: 4px;
    border-top-left-radius: 5px;
    pointer-events: none;
}
/* Ã¥Ë†Â Ã©â„¢Â¤Ã¦Å’â€°Ã©â€™Â® */
.thumb-delete-btn {
    position: absolute;
    top: -4px;
    right: -4px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    text-align: center;
    line-height: 14px; /* Ã¨Â°Æ’Ã¦â€¢Â´Ã¦â€“â€¡Ã¥Â­â€”Ã¥Å¾â€šÃ§â€ºÂ´Ã¥Â±â€¦Ã¤Â¸Â­ */
    display: flex;
    color: #ffffff;
    background: #e72d2d;
    font-size: 14px;
    font-weight: bold;
    cursor: pointer;
    display: none; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”ÂÃ¯Â¼Å’Ã¦â€šÂ¬Ã¥ÂÅ“Ã¦ËœÂ¾Ã§Â¤Âº */
    z-index: 10;
    transition: transform 0.1s;
    align-items: center;
    align-content: center;
    justify-content: center;
}

.thumb-delete-btn i {
    font-size: 12px;
    font-weight: bold;
}

/* Ã©Â¼Â Ã¦Â â€¡Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥Å“Â¨Ã§Â¼Â©Ã§â€¢Â¥Ã¥â€ºÂ¾Ã¤Â¸Å Ã¦â€”Â¶Ã¦ËœÂ¾Ã§Â¤ÂºÃ¦Å’â€°Ã©â€™Â® */
.thumb-item:hover .thumb-delete-btn {
    display: flex;
}



/* ========================================= */
/* === Ã§Â»â€œÃ¦Å¾Å“Ã¦Â±â€¡Ã¦â‚¬Â»Ã¨Å â€šÃ§â€šÂ¹ & Ã¥â€ºÂ¾Ã§â€°â€¡Ã¦â€Â¾Ã¥Â¤Â§Ã¦Â Â·Ã¥Â¼Â === */
/* ========================================= */

/* 1. Ã§Â»â€œÃ¦Å¾Å“Ã¦Â±â€¡Ã¦â‚¬Â»Ã¨Å â€šÃ§â€šÂ¹Ã§â€°Â¹Ã¥Â®Å¡Ã¦Â Â·Ã¥Â¼Â */
.node.type-result-output {width: 400px;border-radius: 10px;}
.node.type-result-output .node-body {
    padding: 0;
    border-radius: 0 0 12px 12px;
    overflow: hidden;
}

/* Ã§Â»â€œÃ¦Å¾Å“Ã¥Â®Â¹Ã¥â„¢Â¨Ã¦Â»Å¡Ã¥Å Â¨Ã¥Å’Âº */
.result-display-container {
    padding: 15px;
    min-height: 150px;
    max-height: 500px;
    overflow-y: auto;
    font-size: 14px;
    color: #333;
    line-height: 1.6;
}
.result-display-container::-webkit-scrollbar { width: 6px; }
.result-display-container::-webkit-scrollbar-thumb { background-color: #ddd; border-radius: 3px; }

/* Ã¦â€“â€¡Ã¦Å“Â¬Ã¦Â®ÂµÃ¨ÂÂ½ */
.result-section-text {
    margin-bottom: 15px;
    padding-bottom: 15px;
    border-bottom: 1px dashed #eee;
}
.result-section-text:last-child { border-bottom: none; }

/* Ã¥â€ºÂ¾Ã§â€°â€¡Ã§Â½â€˜Ã¦Â Â¼Ã¥Â¸Æ’Ã¥Â±â‚¬ */
.result-image-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #f0f0f0;
}

/* Ã§Â»â€œÃ¦Å¾Å“Ã¥â€ºÂ¾Ã¥Ââ€¢Ã¥Â¼Â Ã¦Â Â·Ã¥Â¼Â */
.result-img-item {
    width: calc(50% - 4px); /* Ã¥ÂÅ’Ã¥Ë†â€” */
    border-radius: 6px;
    border: 1px solid #eee;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
    transition: transform 0.2s;
    object-fit: cover;

}
.result-img-item:hover { transform: scale(1.02); }

/* Ã¥Âºâ€¢Ã©Æ’Â¨Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â */
.result-footer {
    padding: 10px 15px;
    background: #f9f9f9;
    border-top: 1px solid #eee;
    display: flex;
    justify-content: flex-end;
}

/* 2. Ã¤ÂºÂ¤Ã¤Âºâ€™Ã¤Â½â€œÃ©ÂªÅ’Ã¥Â¢Å¾Ã¥Â¼Âº */
.upload-preview {  transition: opacity 0.2s; }
.upload-preview:hover { opacity: 0.9; }

.node-output-content img {  transition: transform 0.2s; }
.node-output-content img:hover { transform: scale(1.01); }

/* 3. Ã¥â€¦Â¨Ã¥Â±ÂÃ¥â€ºÂ¾Ã§â€°â€¡Ã¦Å¸Â¥Ã§Å“â€¹Ã¥â„¢Â¨ (Lightbox) - Ã¥Â¢Å¾Ã¥Â¼ÂºÃ§â€°Ë† */
#image-overlay {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0, 0, 0, 0.92);
    z-index: 99999;
    display: none; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”Â */
    flex-direction: column;
    backdrop-filter: blur(8px);
}

/* Ã¥â€ºÂ¾Ã§â€°â€¡Ã¥Â®Â¹Ã¥â„¢Â¨ */
#image-overlay .lightbox-container {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    overflow: hidden;
    position: relative;
    cursor: grab;
}

/* Ã¥â€ºÂ¾Ã§â€°â€¡Ã¦Å“Â¬Ã¨ÂºÂ« */
#image-overlay #lightbox-img {
    max-width: none;
    max-height: none;
    border-radius: 4px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.6);
    transform-origin: center center;
    user-select: none;
    -webkit-user-drag: none;
    cursor: grab;
    will-change: transform; /* Ã°Å¸â€Â¥ GPU Ã¥Å Â Ã©â‚¬Å¸ */
}

/* Ã¥Âºâ€¢Ã©Æ’Â¨Ã¥Â·Â¥Ã¥â€¦Â·Ã¦Â Â */
#image-overlay .lightbox-toolbar {
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(40, 40, 40, 0.95);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 50px;
    padding: 8px 20px;
    display: flex;
    align-items: center;
    gap: 16px;
    backdrop-filter: blur(10px);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
    z-index: 10;
    user-select: none;
}

/* Ã¥â€ºÂ¾Ã§â€°â€¡Ã¤Â¿Â¡Ã¦ÂÂ¯Ã¥Å’Âº */
#image-overlay .lightbox-info {
    display: flex;
    align-items: center;
    gap: 6px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
    padding-right: 12px;
    border-right: 1px solid rgba(255, 255, 255, 0.15);
}

#image-overlay .lightbox-info .lightbox-icon {
    font-size: 14px;
    opacity: 0.8;
}

/* Ã¦Å½Â§Ã¥Ë†Â¶Ã¦Å’â€°Ã©â€™Â®Ã¥Å’Âº */
#image-overlay .lightbox-controls {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* Ã¥Ââ€¢Ã¤Â¸ÂªÃ¦Å’â€°Ã©â€™Â® */
#image-overlay .lightbox-btn {
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    border: none;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.85);
    border-radius: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
    font-size: 16px;
    font-weight: 600;
}

#image-overlay .lightbox-btn:hover {
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
    transform: scale(1.05);
}

#image-overlay .lightbox-btn:active {
    transform: scale(0.95);
}

/* Ã¦â€¹â€“Ã¥Å Â¨Ã¦Å’â€°Ã©â€™Â®Ã¦Â¿â‚¬Ã¦Â´Â»Ã§Å Â¶Ã¦â‚¬Â */
#image-overlay .lightbox-btn.active {
    background: rgba(24, 144, 255, 0.8);
    color: #fff;
    box-shadow: 0 0 8px rgba(24, 144, 255, 0.5);
}

#image-overlay .lightbox-btn.active:hover {
    background: rgba(24, 144, 255, 1);
}

#image-overlay .lightbox-btn span {
    font-size: 16px;
    line-height: 1;
}

/* Ã¥Ë†â€ Ã©Å¡â€Ã§ÂºÂ¿ */
#image-overlay .lightbox-divider {
    width: 1px;
    height: 20px;
    background: rgba(255, 255, 255, 0.15);
    margin: 0 4px;
}

/* Ã§â„¢Â¾Ã¥Ë†â€ Ã¦Â¯â€Ã¦ËœÂ¾Ã§Â¤Âº */
#image-overlay .lightbox-zoom-percent {
    color: rgba(255, 255, 255, 0.9);
    font-size: 13px;
    font-weight: 600;
    min-width: 50px;
    text-align: center;
    background: rgba(255, 255, 255, 0.1);
    padding: 4px 10px;
    border-radius: 20px;
}

/* Ã¥â€¦Â³Ã©â€”Â­Ã¦ÂÂÃ§Â¤Âº */
#image-overlay .lightbox-close-hint {
    padding-left: 12px;
    border-left: 1px solid rgba(255, 255, 255, 0.15);
    color: rgba(255, 255, 255, 0.5);
    font-size: 12px;
}

.reupload-btn {
    position: absolute;
    right: 10px;
    top: 10px;
    background: #00000073;
    color: #fff;
    font-size: 14px;
    padding: 5px 8px;
    border-radius: 6px;
}

@keyframes zoomIn {
    from { transform: scale(0.9); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¦Â¡â€ Ã©â‚¬â€°Ã©â‚¬â€°Ã¥Å’ÂºÃ¦Â Â·Ã¥Â¼Â === */
#selection-marquee {
    position: absolute;
    border: 1px dashed #1890ff;
    background: rgba(24, 144, 255, 0.1);
    display: none;
    z-index: 1000;
    pointer-events: none; /* Ã§Â¡Â®Ã¤Â¿ÂÃ©Â¼Â Ã¦Â â€¡Ã¤Âºâ€¹Ã¤Â»Â¶Ã§Â©Â¿Ã©â‚¬Â */
}

/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¥Â¤Å¡Ã©â‚¬â€°Ã§Â¾Â¤Ã§Â»â€žÃ¥Â¤Â§Ã¨Â¾Â¹Ã¦Â¡â€  === */
#group-selection-frame {
    position: absolute;
    border: 2px dashed #1890ff; /* Ã¨â€œÂÃ¨â€°Â²Ã¨â„¢Å¡Ã§ÂºÂ¿ */
    background: rgba(24, 144, 255, 0.05); /* Ã¦Â·Â¡Ã¦Â·Â¡Ã§Å¡â€žÃ¨Æ’Å’Ã¦â„¢Â¯Ã¨â€°Â² */
    border-radius: 8px;
    z-index: 5; /* Ã¥Å“Â¨Ã¨Â¿Å¾Ã§ÂºÂ¿Ã¤Â¹â€¹Ã¤Â¸Å Ã¯Â¼Å’Ã¨Å â€šÃ§â€šÂ¹Ã¤Â¹â€¹Ã¤Â¸â€¹ */
    display: none; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”Â */
    pointer-events: none; /* Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¤Â¸ÂÃ¦Å’Â¡Ã©Â¼Â Ã¦Â â€¡ */
    overflow: visible; /* Ã¥â€¦ÂÃ¨Â®Â¸Ã¥Â·Â¥Ã¥â€¦Â·Ã¦Â ÂÃ¨Â¶â€¦Ã¥â€¡ÂºÃ¨Â¾Â¹Ã§â€¢Å’Ã¦ËœÂ¾Ã§Â¤Âº */
}

/* === Ã¨Å â€šÃ§â€šÂ¹Ã¥Â¯Â¹Ã©Â½ÂÃ¥Â·Â¥Ã¥â€¦Â·Ã¦Â Â === */
#node-align-toolbar {
    position: absolute;
    display: none; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”Â */
    align-items: center;
    gap: 2px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.15);
    padding: 6px 8px;
    pointer-events: auto; /* Ã¥â€¦ÂÃ¨Â®Â¸Ã§â€šÂ¹Ã¥â€¡Â» */
    z-index: 1000; /* Ã§Â¡Â®Ã¤Â¿ÂÃ¥Å“Â¨Ã¦Å“â‚¬Ã¤Â¸Å Ã¥Â±â€š */
    /* Ã¢Å“â€¦ Ã¨Â®Â© left/top Ã¤Â»Â¥Ã¢â‚¬Å“Ã©â‚¬â€°Ã¦Â¡â€ Ã¤Â¸Å Ã¨Â¾Â¹Ã¤Â¸Â­Ã¥Â¿Æ’Ã¢â‚¬ÂÃ¤Â¸ÂºÃ©â€Å¡Ã§â€šÂ¹Ã¯Â¼Å’Ã©ÂÂ¿Ã¥â€¦ÂÃ¦â€°â€¹Ã¥Å Â¨Ã¥â€¡ÂÃ¥Å½Â»Ã¥Â®Â½Ã¥ÂºÂ¦Ã¥Â¯Â¼Ã¨â€¡Â´Ã¥ÂÂÃ§Â§Â» */
    transform: translate(-50%, -100%);
    will-change: left, top, transform;
}

#node-align-toolbar.visible {
    display: flex;
}

#node-align-toolbar::after {
    content: '';
    position: absolute;
    bottom: -6px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 6px solid white;
}

.node-align-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    cursor: pointer;
    color: #666;
    transition: all 0.15s ease;
}

.node-align-btn:hover {
    background: #e6f7ff;
    color: #1890ff;
}

.node-align-btn:active {
    background: #bae7ff;
    transform: scale(0.95);
}

.node-align-btn .iconfont {
    font-size: 12px;
}

.align-toolbar-divider {
    width: 1px;
    height: 18px;
    background: #e8e8e8;
    margin: 0 4px;
}


/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¥Ë†â€ Ã§Â»â€žÃ¥Å’ÂºÃ¥Å¸Å¸ (Group) Ã¦Â Â·Ã¥Â¼Â === */
.node.type-group {
    background: rgba(240, 242, 245, 0.5); /* Ã¥ÂÅ Ã©â‚¬ÂÃ¦ËœÅ½Ã§ÂÂ°Ã¨Æ’Å’Ã¦â„¢Â¯ */
    border: 2px dashed #bbb; /* Ã¨â„¢Å¡Ã§ÂºÂ¿Ã¨Â¾Â¹Ã¦Â¡â€  */
    box-shadow: none;
    display: flex; flex-direction: column;
    z-index: 1 !important;
    /* Ã°Å¸â€Â¥ Ã¤Â¿Â®Ã¦â€Â¹Ã¯Â¼Å¡Ã¥Å½Â»Ã¦Å½â€°Ã¤Âºâ€  width Ã¥â€™Å’ height Ã§Å¡â€žÃ¨Â¿â€¡Ã¦Â¸Â¡Ã¯Â¼Å’Ã¥ÂÂªÃ¤Â¿ÂÃ§â€¢â„¢ box-shadow */
    transition: box-shadow 0.2s;


}
.node.type-group.selected {
    border-color: #1890ff;
    background: rgba(24, 144, 255, 0.05);
}

.group-header {
    height: 36px;
    background: #e6e6e6;
    border-bottom: 1px dashed #bbb;
    border-radius: 10px 10px 0 0;
    display: flex; justify-content: space-between; align-items: center;
    padding: 0 10px;
    cursor: grab; /* Ã¥Â¤Â´Ã©Æ’Â¨Ã¥ÂÂ¯Ã¤Â»Â¥Ã¦â€¹â€“Ã¦â€¹Â½ */
}

.group-title { font-weight: bold; color: #555; font-size: 13px; }

.group-controls { display: flex; gap: 8px; align-items: center; }

/* Ã¥Å’ÂºÃ¥Å¸Å¸Ã¨Â¿ÂÃ¨Â¡Å’Ã¦Å’â€°Ã©â€™Â® */
.group-run-btn {
    background: #1890ff; color: white; border: none;
    padding: 4px 10px; border-radius: 4px; font-size: 11px; cursor: pointer;
    font-weight: bold;
}
.group-run-btn:hover { background: #40a9ff; }
.group-run-btn.running { background: #52c41a; cursor: wait; pointer-events: none; }

.group-header .delete-btn { font-size: 14px; color: #999; cursor: pointer; }
.group-header .delete-btn:hover { color: red; }

/* Ã¨Â°Æ’Ã¦â€¢Â´Ã¥Â¤Â§Ã¥Â°ÂÃ§Å¡â€žÃ¦â€°â€¹Ã¦Å¸â€ž */
.resize-handle {
    position: absolute; bottom: 0; right: 0;
    width: 20px; height: 20px;
    cursor: se-resize; /* Ã¤Â¸Å“Ã¥Ââ€”Ã¦â€“Â¹Ã¥Ââ€˜Ã§Â®Â­Ã¥Â¤Â´ */
    background: linear-gradient(135deg, transparent 50%, #ccc 50%);
    border-bottom-right-radius: 12px;
}

/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¥ÂÂ Ã¤Â½ÂÃ¨Å â€šÃ§â€šÂ¹Ã¦Â Â·Ã¥Â¼Â === */
.node.type-ai-generated-image .placeholder-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    /* Ã°Å¸â€Â¥ Ã¥Å½Â»Ã¦Å½â€°Ã¤Âºâ€ Ã¥â€ºÂºÃ¥Â®Å¡Ã©Â«ËœÃ¥ÂºÂ¦Ã¯Â¼Å’Ã¦â€Â¹Ã§â€Â± JS Ã¦Å½Â§Ã¥Ë†Â¶ */
    background: #f9f9f9;
    color: #999;
    font-size: 13px;
    padding: 0;
    gap: 10px;
    border-radius: 0 0 12px 12px;
    /* Ã°Å¸â€Â¥ Ã¦Â Â¸Ã¥Â¿Æ’Ã¯Â¼Å¡Ã¦Â·Â»Ã¥Å Â Ã©Â«ËœÃ¥ÂºÂ¦Ã¨Â¿â€¡Ã¦Â¸Â¡Ã¥Å Â¨Ã§â€Â»Ã¯Â¼Å’Ã¨Â¿â„¢Ã¦Â Â·Ã¥Â½â€œÃ¨Å½Â·Ã¥Ââ€“Ã¥Ë†Â°Ã¤Â¸Å Ã¦Â¸Â¸Ã¥â€ºÂ¾Ã§â€°â€¡Ã¦Â¯â€Ã¤Â¾â€¹Ã¦â€”Â¶Ã¯Â¼Å’Ã§â€ºâ€™Ã¥Â­ÂÃ¤Â¼Å¡Ã¥Â¹Â³Ã¦Â»â€˜Ã¥ÂËœÃ©Â«Ëœ/Ã¥ÂËœÃ§Å¸Â® */
    transition: height 0.3s ease-out;
    overflow: hidden; /* Ã©ËœÂ²Ã¦Â­Â¢Ã¨Â°Æ’Ã¦â€¢Â´Ã¥Â¤Â§Ã¥Â°ÂÃ¦â€”Â¶Ã¥â€ â€¦Ã¥Â®Â¹Ã¦ÂºÂ¢Ã¥â€¡Âº */
}
/* Ã¦Ë†ÂÃ¥Å Å¸Ã¥Å Â Ã¨Â½Â½Ã¥â€ºÂ¾Ã§â€°â€¡Ã¥ÂÅ½Ã¯Â¼Å’Ã¥Å½Â»Ã¦Å½â€°Ã¨Æ’Å’Ã¦â„¢Â¯Ã¨â€°Â²Ã¯Â¼Å’Ã©ËœÂ²Ã¦Â­Â¢Ã©Å“Â²Ã¨Â¾Â¹ */
.node.type-ai-generated-image .node-body.has-image {
    background: transparent;
    padding: 0;
    border-radius: 10px;
    overflow: hidden;
}

/* ========================================= */
/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¤Â¸â€œÃ¤Â¸Å¡Ã§â€°Ë†Ã£â‚¬â€˜AB Ã¥Â¯Â¹Ã¦Â¯â€Ã¨Å â€šÃ§â€šÂ¹Ã¦Â Â·Ã¥Â¼ÂÃ¤Â¼ËœÃ¥Å’â€“ */
/* ========================================= */
.node.type-ab-compare {width: 420px;}

.node.type-ab-compare .node-body {
    padding: 0;
    background: #ffffff; /* Ã¦Â·Â±Ã¨â€°Â²Ã¨Æ’Å’Ã¦â„¢Â¯Ã¯Â¼Å’Ã¦â€ºÂ´Ã¦ËœÂ¾Ã¤Â¸â€œÃ¤Â¸Å¡ */
    border-radius: 0 0 12px 12px;
    border-radius: 10px;
}

/* 1. Ã¥Â®Â¹Ã¥â„¢Â¨Ã¯Â¼Å¡Ã¥Â¢Å¾Ã¥Å Â Ã¦Â£â€¹Ã§â€ºËœÃ¦Â Â¼Ã¨Æ’Å’Ã¦â„¢Â¯Ã¯Â¼Ë†Ã§Â±Â»Ã¤Â¼Â¼PSÃ¯Â¼Å’Ã©ËœÂ²Ã©â‚¬ÂÃ¦ËœÅ½Ã¥â€ºÂ¾Ã§Å“â€¹Ã¤Â¸ÂÃ¦Â¸â€¦Ã¯Â¼â€° */
.ab-compare-container {
    position: relative;
    width: 100%;
    /* height: 350px; Ã°Å¸â€Â¥ Ã¥Â·Â²Ã¥Ë†Â Ã©â„¢Â¤Ã¥â€ºÂºÃ¥Â®Å¡Ã©Â«ËœÃ¥ÂºÂ¦ */
    min-height: 200px; /* Ã§Â»â„¢Ã¤Â¸ÂªÃ¦Å“â‚¬Ã¥Â°ÂÃ©Â«ËœÃ¥ÂºÂ¦Ã©ËœÂ²Ã¦Â­Â¢Ã¥Â¡Å’Ã©â„¢Â· */
    background-color: #ffffff;
    background-image: linear-gradient(45deg, #dddddd 25%, transparent 25%), linear-gradient(-45deg, #dddddd 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #dddddd 75%), linear-gradient(-45deg, transparent 75%, #dddddd 75%);
    background-size: 20px 20px;
    background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
    overflow: hidden;
    display: none;
    user-select: none;
    cursor: col-resize;
    /* Ã°Å¸â€Â¥ Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã©Â«ËœÃ¥ÂºÂ¦Ã¥ÂËœÃ¥Å’â€“Ã§Å¡â€žÃ¨Â¿â€¡Ã¦Â¸Â¡Ã¦â€¢Ë†Ã¦Å¾Å“ */
    transition: height 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* 2. Ã¥â€ºÂ¾Ã§â€°â€¡Ã©â‚¬Å¡Ã§â€Â¨ */
.ab-img {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    object-fit: cover; /* Ã°Å¸â€Â¥ Ã¦â€Â¹Ã¤Â¸Âº coverÃ¯Â¼Å’Ã©â€¦ÂÃ¥ÂË†Ã¥Å Â¨Ã¦â‚¬ÂÃ©Â«ËœÃ¥ÂºÂ¦Ã¥Â®Å¾Ã§Å½Â°Ã¦â€”Â Ã§Â¼ÂÃ¥Â¡Â«Ã¥â€¦â€¦ */
    pointer-events: none;
    user-select: none;
}

/* Ã¥Âºâ€¢Ã¥Â±â€šÃ¥â€ºÂ¾ (After / Right) */
.ab-img-bottom { z-index: 1; }

/* Ã©Â¡Â¶Ã¥Â±â€šÃ¥â€ºÂ¾Ã¥Â®Â¹Ã¥â„¢Â¨ (Before / Left) */
.ab-img-top-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    height: 100%;
    overflow: hidden;
    z-index: 2;
    border-right: 1px solid rgba(255,255,255,0.2); /* Ã§Â»â€ Ã¥Â¾Â®Ã§â„¢Â½Ã¨Â¾Â¹ */
    /* box-shadow: 5px 0 15px rgba(0,0,0,0.5); */ /* Ã¦Â Â¸Ã¥Â¿Æ’Ã¯Â¼Å¡Ã§Â»â„¢Ã¥Ë†â€ Ã¥â€°Â²Ã§ÂºÂ¿Ã¥Å Â Ã©ËœÂ´Ã¥Â½Â±Ã¯Â¼Å’Ã§Â«â€¹Ã¤Â½â€œÃ¦â€žÅ¸ */
    will-change: width;
}

/* Ã©Â¡Â¶Ã¥Â±â€šÃ¥â€ºÂ¾Ã§â€°â€¡Ã¯Â¼Å¡Ã¥Â®Â½Ã¥ÂºÂ¦Ã¥Â¿â€¦Ã©Â¡Â»Ã§â€Â±JSÃ¥Â¼ÂºÃ¥Ë†Â¶Ã¨Â®Â¾Ã¤Â¸ÂºÃ¥Â®Â¹Ã¥â„¢Â¨Ã¥Â®Â½Ã¯Â¼Å’Ã©ËœÂ²Ã¦Â­Â¢Ã¦Å’Â¤Ã¥Å½â€¹ */
.ab-img-top {
    position: absolute;
    top: 0; left: 0;
    height: 100%;
    width: 420px; /* Ã©Â»ËœÃ¨Â®Â¤Ã¥â‚¬Â¼Ã¯Â¼Å’JSÃ¤Â¼Å¡Ã¤Â¿Â®Ã¦Â­Â£ */
    max-width: none;
}

/* 3. Ã¥Ë†â€ Ã¥â€°Â²Ã§ÂºÂ¿Ã¦â€°â€¹Ã¦Å¸â€ž */
.ab-slider-handle {
    position: absolute;
    top: 0; bottom: 0;
    left: 50%;
    width: 4px;
    margin-left: -2px; /* Ã¥Â±â€¦Ã¤Â¸Â­Ã¦Â Â¡Ã¦Â­Â£ */
    background: rgba(255, 255, 255, 0); /* Ã§ÂºÂ¿Ã¦Å“Â¬Ã¨ÂºÂ«Ã©â‚¬ÂÃ¦ËœÅ½Ã¯Â¼Å’Ã©ÂÂ  ::after Ã§â€Â»Ã§ÂºÂ¿ */
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none; /* Ã¨Â®Â©Ã©Â¼Â Ã¦Â â€¡Ã¤Âºâ€¹Ã¤Â»Â¶Ã§Â©Â¿Ã©â‚¬ÂÃ§Â»â„¢ container */
}

/* Ã§Â»â€ Ã§ÂºÂ¿Ã¨Â§â€ Ã¨Â§â€°Ã¥Â±â€š */
.ab-slider-handle::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: #ffffff80;
    box-shadow: 0 0 4px rgba(0,0,0,0.5);
}

/* Ã¤Â¸Â­Ã©â€”Â´Ã¥Å“â€ Ã¥Â½Â¢Ã¦Å’â€°Ã©â€™Â® */
.ab-slider-button {
    width: 8px;
    height: 30px;
    position: absolute;
    top: 50%;
    margin-top: -15px;
    border-radius: 4px;
    background: #fff;
    color: #333;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    z-index: 11;
    /* Ã¥Â¢Å¾Ã¥Å Â Ã¤Â¸ÂªÃ¥ÂÅ’Ã¥Ââ€˜Ã§Â®Â­Ã¥Â¤Â´Ã¥â€ºÂ¾Ã¦Â â€¡ */
}
.ab-slider-button::before {font-size:10px;font-weight:900;letter-spacing:-1px;color:#555;}

/* 4. Ã¦Â â€¡Ã§Â­Â¾ (Badges) */
.ab-label {
    position: absolute;
    top: 15px;
    background: rgba(0, 0, 0, 0.6);
    color: rgba(255, 255, 255, 0.9);
    padding: 4px 8px;
    border-radius: 4px;
    display: flex;
    font-size: 12px;
    width: 78px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    pointer-events: none;
    backdrop-filter: blur(2px);
    border: 1px solid rgba(255,255,255,0.1);
    flex-wrap: nowrap;
    flex-direction: row;
}
.ab-label-left { left: 15px; z-index: 20; } /* Ã©Â¡Â¶Ã¥Â±â€š */
.ab-label-right { right: 15px; z-index: 5; } /* Ã¥Âºâ€¢Ã¥Â±â€š */

/* Ã¥Âºâ€¢Ã©Æ’Â¨Ã¦â€œÂÃ¤Â½Å“Ã¦Â Â */
.ab-actions {
    padding: 10px;
    background: #fff;
    border-top: 1px solid #eee;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-radius: 0 0 12px 12px;
}
.ab-hint { font-size: 12px; color: #999; }
/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¨â€¡ÂªÃ¥Å Â¨Ã¦â€¢Â´Ã§Ââ€ Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â === */
#auto-layout-btn {
    /* Ã¦â€Â¾Ã¥Å“Â¨Ã¥ÂÂ³Ã¤Â¸Å Ã¨Â§â€™ */
}

#auto-layout-btn:active {
    transform: translateY(0);
}

.control-btn {
}

#file-controls{position: fixed;top: 14px;right: 14px;display: flex;gap: 8px;z-index: 99;}

#file-controls button {
    height: 30px;
    border: 1px solid #e9e9e9;
    background: #fff;
    border-radius: 19px;
    padding: 0 16px;
    font-size: 13px;
    cursor: pointer;
    transition: 0.168s;
}

#file-controls button:hover {
    background: #e3e3e3;
    border-color: #d1d1d1;
}

#file-controls button:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    background: #f5f5f5;
}

#file-controls button:disabled:hover {
    background: #f5f5f5;
    border-color: #e9e9e9;
}

#file-controls .toolbar-separator {
    width: 1px;
    height: 20px;
    background: #e0e0e0;
    margin: 5px 4px;
}

/* Ã°Å¸â€Â¥ Ã¥â€¦Â¨Ã¥Â±â‚¬Ã¨Â¿ÂÃ¨Â¡Å’Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
#file-controls #global-run-btn {
    /* background: #333; */ /* Ã¦Â¸ÂÃ¥ÂËœÃ§Â»Â¿Ã¯Â¼Å’Ã¦â€ºÂ´Ã¤Â¸â€œÃ¤Â¸Å¡ */
    /* color: white; */
    /* border-color: #333; */
}

#file-controls #global-run-btn:hover {
    /* box-shadow: 4px 4px 10px rgba(10,10,10,.2); */
}
#global-run-btn.running {
    background: #faad14; /* Ã¨Â¿ÂÃ¨Â¡Å’Ã¤Â¸Â­Ã¥ÂËœÃ¦Â©â„¢ */
    cursor: wait;
    pointer-events: none;
    opacity: 0.8;
}
/* ========================================= */
/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¥ÂÂ³Ã¤Â¸Å Ã¨Â§â€™Ã¦â€°Â¹Ã©â€¡ÂÃ¥Â¼â‚¬Ã¥â€¦Â³Ã¦Â Â·Ã¥Â¼Â */
/* ========================================= */
.batch-toggle-wrapper {
    display: flex;
    align-items: center;
    cursor: pointer;
    user-select: none;
}

.batch-label-text {
    font-size: 12px;
    color: #888;
    margin-right: 6px;
    font-weight: normal;
}

/* Ã¥Â¼â‚¬Ã¥â€¦Â³Ã¥Â®Â¹Ã¥â„¢Â¨ */
.batch-toggle {
    position: relative;
    display: inline-block;
    width: 30px;
    height: 16px;
}

/* Ã©Å¡ÂÃ¨â€”ÂÃ¥Å½Å¸Ã¦Å“Â¬Ã§Å¡â€ž checkbox */
.batch-toggle input {
    opacity: 0;
    width: 0;
    height: 0;
}

/* Ã¦Â»â€˜Ã¥Ââ€”Ã¨Æ’Å’Ã¦â„¢Â¯ */
.slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #ccc;
    transition: .3s;
    border-radius: 34px;
}

/* Ã¦Â»â€˜Ã¥Ââ€”Ã¥Å“â€ Ã§ÂÆ’ */
.slider:before {
    position: absolute;
    content: "";
    height: 12px;
    width: 12px;
    left: 2px;
    bottom: 2px;
    background-color: white;
    transition: .3s;
    border-radius: 50%;
}

/* Ã¦Â¿â‚¬Ã¦Â´Â»Ã§Å Â¶Ã¦â‚¬ÂÃ¯Â¼Å¡Ã¥ÂËœÃ§Â»Â¿ */
input:checked + .slider {
    background-color: #6ee7b7;
}

/* Ã¦Â¿â‚¬Ã¦Â´Â»Ã§Å Â¶Ã¦â‚¬ÂÃ¯Â¼Å¡Ã¥Å“â€ Ã§ÂÆ’Ã¥ÂÂ³Ã§Â§Â» */
input:checked + .slider:before {
    transform: translateX(14px);
}


/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜AIÃ§Â»ËœÃ¥â€ºÂ¾Ã¥â€ â€¦Ã©Æ’Â¨Ã§â€Â»Ã¥Â»Å Ã¦Â Â·Ã¥Â¼Â === */
.node-output-gallery {
    display: flex;
    flex-wrap: wrap;
    gap: 4px; /* Ã¥â€ºÂ¾Ã§â€°â€¡Ã¤Â¹â€¹Ã©â€”Â´Ã§Å¡â€žÃ©â€”Â´Ã¨Â·Â */
    padding: 0;
    width: 100%;
    box-sizing: border-box;
}

.gallery-item {
    width: 100%;
    background: #f3f3f3;
    border-radius: 4px;
    overflow: hidden;
    min-height: 130px;
    position: relative;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    transition: height 0.3s ease, aspect-ratio 0.3s ease;
}

.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Ã¥Â¡Â«Ã¦Â»Â¡Ã¦Â Â¼Ã¥Â­ÂÃ¯Â¼Å’Ã¨Â£ÂÃ¦Å½â€°Ã¥Â¤Å¡Ã¤Â½â„¢Ã©Æ’Â¨Ã¥Ë†â€  */
    transition: transform 0.2s;
}

.gallery-item:hover img {
    transform: scale(1.1);
}

/* Ã¥Å Â Ã¨Â½Â½Ã¥Å Â¨Ã§â€Â»Ã¥Â¾Â®Ã¨Â°Æ’ */
.gallery-item .loading-spinner {
    width: 16px;
    height: 16px;
    border-width: 2px;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã©â€â„¢Ã¨Â¯Â¯Ã¦ÂÂÃ§Â¤ÂºÃ¨Â§â€™Ã¦Â â€¡Ã¦Â Â·Ã¥Â¼Â */
.gallery-item-error-badge {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;/*  */
    background: #ff4d4f; /* Ã©Â²Å“Ã¨â€°Â³Ã§Å¡â€žÃ§ÂºÂ¢Ã¨â€°Â² */
    color: white;
    border-radius: 50%;
    font-size: 12px;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: help; /* Ã©Â¼Â Ã¦Â â€¡Ã§Â§Â»Ã¤Â¸Å Ã¥Å½Â»Ã¥ÂËœÃ¦Ë†ÂÃ©â€”Â®Ã¥ÂÂ· */
    z-index: 10;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
    animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* Ã¤Â¸â‚¬Ã¤Â¸ÂªÃ§Â®â‚¬Ã¥Ââ€¢Ã§Å¡â€žÃ¥Â¼Â¹Ã¨Â·Â³Ã¥Å Â¨Ã§â€Â»Ã¯Â¼Å’Ã¨Â®Â©Ã©â€â„¢Ã¨Â¯Â¯Ã¥â€¡ÂºÃ§Å½Â°Ã¦â€”Â¶Ã¦â€ºÂ´Ã¦ËœÅ½Ã¦ËœÂ¾ */
@keyframes popIn {
    from { transform: scale(0); }
    to { transform: scale(1); }
}

/* Ã©â€™Ë†Ã¥Â¯Â¹Ã©â€â„¢Ã¨Â¯Â¯Ã¦Â Â¼Ã¥Â­ÂÃ§Å¡â€žÃ¦Â Â·Ã¥Â¼ÂÃ¥Â¾Â®Ã¨Â°Æ’ */
.gallery-item.has-error {
    border-color: #ffccc7 !important; /* Ã¨Â¾Â¹Ã¦Â¡â€ Ã¥ÂËœÃ§ÂºÂ¢ */
    background-color: #fff2f0 !important; /* Ã¨Æ’Å’Ã¦â„¢Â¯Ã¥ÂËœÃ¦Â·Â¡Ã§ÂºÂ¢ */
    border-width: 2px;
    border-style: dashed;
}

/* Ã©â€â„¢Ã¨Â¯Â¯Ã¦Â Â¼Ã¥Â­ÂÃ¦â€šÂ¬Ã¥ÂÅ“Ã¦â€”Â¶Ã¦ËœÂ¾Ã§Â¤ÂºÃ¥Â®Å’Ã¦â€¢Â´Ã©â€â„¢Ã¨Â¯Â¯Ã¤Â¿Â¡Ã¦ÂÂ¯ */
.gallery-item.has-error:hover .gallery-error-text {
    -webkit-line-clamp: unset; /* Ã¦â€šÂ¬Ã¥ÂÅ“Ã¦â€”Â¶Ã¥Ââ€“Ã¦Â¶Ë†Ã¨Â¡Å’Ã¦â€¢Â°Ã©â„¢ÂÃ¥Ë†Â¶ */
    max-height: 200px;
    overflow-y: auto;
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Â»Ã¥Â»Å Ã©â€â„¢Ã¨Â¯Â¯Ã¤Â¿Â¡Ã¦ÂÂ¯Ã¦Â Â·Ã¥Â¼Â - Ã§â€ºÂ´Ã¦Å½Â¥Ã¦ËœÂ¾Ã§Â¤ÂºÃ¥Å“Â¨Ã¦Â Â¼Ã¥Â­ÂÃ¥â€ â€¦ */
.gallery-error-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 15px 10px;
    box-sizing: border-box;
    text-align: center;
    background: linear-gradient(135deg, #fff2f0 0%, #ffeded 100%);
}

.gallery-error-icon {
    font-size: 32px;
    color: #ff4d4f;
    font-weight: bold;
    line-height: 1;
    margin-bottom: 10px;
    text-shadow: 0 2px 4px rgba(255, 77, 79, 0.2);
}

.gallery-error-text {
    font-size: 12px;
    color: #cf1322;
    line-height: 1.5;
    word-break: break-word;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 4; /* Ã¦Å“â‚¬Ã¥Â¤Å¡Ã¦ËœÂ¾Ã§Â¤Âº4Ã¨Â¡Å’ */
    -webkit-box-orient: vertical;
    max-width: 100%;
    padding: 0 8px;
    background: rgba(255, 255, 255, 0.6);
    border-radius: 4px;
    margin-top: 2px;
}

/* ========================================= */
/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Â»Ã¥Â»Å Ã¥â€ºÂ¾Ã§â€°â€¡Ã§Å¡â€žÃ¦â€œÂÃ¤Â½Å“Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
/* ========================================= */

/* Ã¦Å’â€°Ã©â€™Â®Ã¥Â®Â¹Ã¥â„¢Â¨Ã¯Â¼Å¡Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”ÂÃ¯Â¼Å’Ã¦â€šÂ¬Ã¥ÂÅ“Ã¦ËœÂ¾Ã§Â¤ÂºÃ¯Â¼Å’Ã¨Â¦â€ Ã§â€ºâ€“Ã¥Å“Â¨Ã¥â€ºÂ¾Ã§â€°â€¡Ã¥Âºâ€¢Ã©Æ’Â¨ */
.gallery-item-actions {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 30px;
    background: rgba(0, 0, 0, 0.7); /* Ã¥ÂÅ Ã©â‚¬ÂÃ¦ËœÅ½Ã©Â»â€˜Ã¥Âºâ€¢ */
    display: none; /* Ã¥Â¹Â³Ã¦â€”Â¶Ã©Å¡ÂÃ¨â€”Â */
    align-items: center;
    justify-content: space-evenly; /* Ã¦Å’â€°Ã©â€™Â®Ã¥Ââ€¡Ã¥Å’â‚¬Ã¥Ë†â€ Ã¥Â¸Æ’ */
    z-index: 20;
    backdrop-filter: blur(2px);
}

/* Ã©Â¼Â Ã¦Â â€¡Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥Å“Â¨Ã¦Â Â¼Ã¥Â­ÂÃ¤Â¸Å Ã¦â€”Â¶Ã¯Â¼Å’Ã¦ËœÂ¾Ã§Â¤ÂºÃ¦Å’â€°Ã©â€™Â®Ã¦Â Â */
.gallery-item:hover .gallery-item-actions {
    display: flex;
    animation: fadeIn 0.2s;
}

/* Ã¥Ââ€¢Ã¤Â¸ÂªÃ¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
.gallery-action-btn {
    background: none;
    border: none;
    color: #fff;
    font-size: 11px;
    cursor: pointer;
    padding: 0 8px;
    height: 100%;
    display: flex;
    align-items: center;
    gap: 4px;
    transition: all 0.2s;
    font-weight: 500;
}

/* Ã§â€¹Â¬Ã§Â«â€¹Ã¦Å’â€°Ã©â€™Â®Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥ÂËœÃ¨â€œÂ */
.gallery-action-btn.detach:hover {
    color: #40a9ff;
    background: rgba(255,255,255,0.1);
}

/* è®¾ä¸ºé¢„è§ˆå›¾ï¼šæ‚¬åœå˜ç»¿ */
.gallery-action-btn.set-preview:hover {
    color: #52c41a;
    background: rgba(255,255,255,0.1);
}

/* Ã¥Ë†Â Ã©â„¢Â¤Ã¦Å’â€°Ã©â€™Â®Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥ÂËœÃ§ÂºÂ¢ */
.gallery-action-btn.del:hover {
    color: #ff4d4f;
    background: rgba(255,255,255,0.1);
}

/* Ã§Â®â‚¬Ã¥Ââ€¢Ã§Å¡â€žÃ¦Â·Â¡Ã¥â€¦Â¥Ã¥Å Â¨Ã§â€Â» */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¦Â â€¡Ã©Â¢ËœÃ¥ÂÂ¯Ã§Â¼â€“Ã¨Â¾â€˜Ã¦Â Â·Ã¥Â¼Â */
.node-header > span:first-child,
.group-title {
    /* cursor: text;  <-- Ã¥Â»ÂºÃ¨Â®Â®Ã¦â€Â¹Ã¦Å½â€°Ã¯Â¼Å¡Ã¥Â¹Â³Ã¦â€”Â¶Ã§Å“â€¹Ã¨ÂµÂ·Ã¦ÂÂ¥Ã¥Æ’ÂÃ¨Æ’Â½Ã¦â€¹â€“Ã¦â€¹Â½Ã¯Â¼Å’Ã¥ÂÅ’Ã¥â€¡Â»Ã¦â€°ÂÃ¥ÂËœÃ¨Â¾â€œÃ¥â€¦Â¥Ã¦Â¡â€  */
    cursor: pointer;
    transition: color 0.2s;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: inline-block;
    vertical-align: middle;

    /* Ã°Å¸â€Â¥Ã°Å¸â€Â¥Ã°Å¸â€Â¥ Ã¦Â Â¸Ã¥Â¿Æ’Ã¤Â¿Â®Ã¥Â¤ÂÃ¤Â»Â£Ã§Â ÂÃ¥Â¼â‚¬Ã¥Â§â€¹ Ã°Å¸â€Â¥Ã°Å¸â€Â¥Ã°Å¸â€Â¥ */
    user-select: none;          /* Ã§Â¦ÂÃ¦Â­Â¢Ã¦â€“â€¡Ã¥Â­â€”Ã¨Â¢Â«Ã©â‚¬â€°Ã¤Â¸Â­ */
    -webkit-user-select: none;  /* Safari/Chrome Ã¥â€¦Â¼Ã¥Â®Â¹ */
    -webkit-user-drag: none;    /* Ã§Â¦ÂÃ¦Â­Â¢Ã¥Å½Å¸Ã§â€Å¸Ã¦â€¹â€“Ã¦â€¹Â½ */
    /* Ã°Å¸â€Â¥Ã°Å¸â€Â¥Ã°Å¸â€Â¥ Ã¦Â Â¸Ã¥Â¿Æ’Ã¤Â¿Â®Ã¥Â¤ÂÃ¤Â»Â£Ã§Â ÂÃ§Â»â€œÃ¦ÂÅ¸ Ã°Å¸â€Â¥Ã°Å¸â€Â¥Ã°Å¸â€Â¥ */
}
.node-header > span:first-child:hover,
.group-title:hover {
    color: #1890ff; /* Ã©Â¼Â Ã¦Â â€¡Ã¦â€šÂ¬Ã¥ÂÅ“Ã¥ÂËœÃ¨â€œÂÃ¯Â¼Å’Ã¦ÂÂÃ§Â¤ÂºÃ¥ÂÂ¯Ã§â€šÂ¹Ã¥â€¡Â» */
    background: rgba(0,0,0,0.02);
    border-radius: 4px;
    padding: 0 4px;
    margin: 0 -4px; /* Ã¦Å ÂµÃ¦Â¶Ë†paddingÃ¤Â¿ÂÃ¦Å’ÂÃ¤Â½ÂÃ§Â½Â® */
}

/* Ã§Â¼â€“Ã¨Â¾â€˜Ã¦â€”Â¶Ã§Å¡â€žÃ¨Â¾â€œÃ¥â€¦Â¥Ã¦Â¡â€ Ã¦Â Â·Ã¥Â¼Â */
.node-title-edit-input {
    font-size: 14px;
    font-weight: bold;
    padding: 2px 4px;
    border: 1px solid #1890ff;
    border-radius: 4px;
    outline: none;
    width: 200px;
    color: #333;
    font-family: inherit;
}

/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¦â„¢ÂºÃ¨Æ’Â½Ã¨Â¾â€¦Ã¥Å Â©Ã§ÂºÂ¿Ã¦Â Â·Ã¥Â¼Â === */
#guide-layer {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    pointer-events: none; /* Ã¥Â¿â€¦Ã©Â¡Â»Ã§Â©Â¿Ã©â‚¬ÂÃ¯Â¼Å’Ã¤Â¸ÂÃ¦Å’Â¡Ã©Â¼Â Ã¦Â â€¡ */
    z-index: 999; /* Ã¥Å“Â¨Ã¨Å â€šÃ§â€šÂ¹Ã¤Â¹â€¹Ã¤Â¸â€¹Ã¯Â¼Å’Ã¨Â¿Å¾Ã§ÂºÂ¿Ã¤Â¹â€¹Ã¤Â¸Å Ã¯Â¼Å’Ã¦Ë†â€“Ã¨â‚¬â€¦Ã¦Å“â‚¬Ã©Â¡Â¶Ã¥Â±â€šÃ¨Â§â€ Ã¦Æ’â€¦Ã¥â€ ÂµÃ¨â‚¬Å’Ã¥Â®Å¡ */
}

.guide-line {
    position: absolute;
    background-color: #ff00cc; /* Ã©â€ â€™Ã§â€ºÂ®Ã§Å¡â€žÃ¦Â´â€¹Ã§ÂºÂ¢Ã¨â€°Â² */
    z-index: 999;
}

/* Ã¥Å¾â€šÃ§â€ºÂ´Ã¨Â¾â€¦Ã¥Å Â©Ã§ÂºÂ¿ */
.guide-line-v {
    width: 1px;
    border-left: 1px dashed #ff00cc;
    background: none;
}

/* Ã¦Â°Â´Ã¥Â¹Â³Ã¨Â¾â€¦Ã¥Å Â©Ã§ÂºÂ¿ */
.guide-line-h {
    height: 1px;
    border-top: 1px dashed #ff00cc;
    background: none;
}

/* Ã¥ÂÂ¸Ã©â„¢â€žÃ¦â€”Â¶Ã§Å¡â€žÃ¦â€¢Â°Ã¥â‚¬Â¼Ã¦ÂÂÃ§Â¤Âº (Ã¥ÂÂ¯Ã©â‚¬â€°) */
.guide-label {
    position: absolute;
    background: #ff00cc;
    color: white;
    font-size: 10px;
    padding: 2px 4px;
    border-radius: 2px;
}

/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¥Âºâ€¢Ã©Æ’Â¨Ã¦ÂµÂ®Ã¥Å Â¨Ã¥Â·Â¥Ã¥â€¦Â·Ã¦Â ÂÃ¦Â Â·Ã¥Â¼Â === */
#node-floating-toolbar {
    position: absolute; /* Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¦â€Â¹Ã¤Â¸ÂºÃ§Â»ÂÃ¥Â¯Â¹Ã¥Â®Å¡Ã¤Â½ÂÃ¯Â¼Å’Ã§â€ºÂ¸Ã¥Â¯Â¹Ã¤ÂºÅ½Ã§Ë†Â¶Ã¨Å â€šÃ§â€šÂ¹ */
    bottom: -60px;      /* Ã¦Å’â€šÃ¥Å“Â¨Ã¨Å â€šÃ§â€šÂ¹Ã¥Âºâ€¢Ã©Æ’Â¨Ã¤Â¸â€¹Ã¦â€“Â¹ */
    left: 50%;
    transform: translateX(-50%); /* Ã¦Â°Â´Ã¥Â¹Â³Ã¥Â±â€¦Ã¤Â¸Â­ */

    background: white;
    padding: 6px 12px;
    border-radius: 50px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);

    display: none;      /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”Â */
    z-index: 100;       /* Ã¤Â¿ÂÃ¨Â¯ÂÃ¥Å“Â¨Ã¨Å â€šÃ§â€šÂ¹Ã¥Â±â€šÃ§ÂºÂ§Ã¤Â¹â€¹Ã¤Â¸Å  */

    border: 1px solid #eee;
    gap: 8px;
    align-items: center;
    white-space: nowrap;

    /* Ã¥Â¢Å¾Ã¥Å Â Ã¤Â¸â‚¬Ã¤Â¸ÂªÃ¥Â°ÂÃ¤Â¸â€°Ã¨Â§â€™Ã§Â®Â­Ã¥Â¤Â´Ã¦Å’â€¡Ã¥Ââ€˜Ã¤Â¸Å Ã©ÂÂ¢Ã¯Â¼Å’Ã¥Â¢Å¾Ã¥Å Â Ã¤Â¸â‚¬Ã¤Â½â€œÃ¦â€žÅ¸ */
    pointer-events: auto;
}
/* Ã¥Â¢Å¾Ã¥Å Â Ã¤Â¸â‚¬Ã¤Â¸ÂªÃ¥Â°ÂÃ§Â®Â­Ã¥Â¤Â´ */
#node-floating-toolbar::before {
    content: '';
    position: absolute;
    top: -6px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid white;
}

#node-floating-toolbar.visible {
    display: flex;
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

.float-tool-btn {
    background: #f9f9f9;
    border: 1px solid #e0e0e0;
    color: #333;
    padding: 5px 16px;
    border-radius: 20px;
    font-size: 13px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s;
    white-space: nowrap;
}

.float-tool-btn:hover {
    background: #e7e7e7;
    border-color: #c5c5c5;
    color: #161616;
    /* transform: translateY(-2px); */
    /* box-shadow: 0 4px 8px rgba(24, 144, 255, 0.15); */
}

.float-tool-btn.loading {
    cursor: wait;
    opacity: 0.8;
    pointer-events: none;
}

.toolbar-divider {
    width: 1px;
    height: 20px;
    background: #eee;
    margin: 0 2px;
}




/* ========================================= */
/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¥Ââ€¡Ã§ÂºÂ§Ã§â€°Ë†Ã£â‚¬â€˜Ã¥Â±â‚¬Ã©Æ’Â¨Ã©â€¡ÂÃ§Â»ËœÃ§Â¼â€“Ã¨Â¾â€˜Ã¥â„¢Â¨Ã¦Â Â·Ã¥Â¼Â */
/* ========================================= */
/* ========================================= */
/* Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦Å“â‚¬Ã§Â»Ë†Ã§â€°Ë†Ã£â‚¬â€˜Ã¥Â±â‚¬Ã©Æ’Â¨Ã©â€¡ÂÃ§Â»ËœÃ§Â¼â€“Ã¨Â¾â€˜Ã¥â„¢Â¨Ã¦Â Â·Ã¥Â¼Â */
/* ========================================= */
#paint-modal {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: #1f1f1f; /* Ã¦â€ºÂ´Ã¤Â¸â€œÃ¤Â¸Å¡Ã§Å¡â€žÃ¦Â·Â±Ã§ÂÂ°Ã¥Âºâ€¢ */
    z-index: 100000;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    user-select: none;
    overflow: hidden;
}

/* Ã©Â¡Â¶Ã©Æ’Â¨Ã¥Â·Â¥Ã¥â€¦Â·Ã¦Â Â */
.paint-toolbar {
    background: #2b2b2b;
    padding: 8px 15px;
    margin-top: 10px;
    border-radius: 8px;
    display: flex;
    gap: 12px;
    align-items: center;
    color: #e0e0e0;
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
    z-index: 100002;
    border: 1px solid #444;
}

/* Ã¥Âºâ€¢Ã©Æ’Â¨ AI Ã¨Â¾â€œÃ¥â€¦Â¥Ã¦Â Â */
.paint-bottom-bar {
    background: #2b2b2b;
    padding: 10px 15px;
    margin-bottom: 20px;
    border-radius: 12px;
    display: flex;
    gap: 10px;
    align-items: center;
    width: 60%;
    min-width: 400px;
    box-shadow: 0 -4px 10px rgba(0,0,0,0.3);
    z-index: 100002;
    border: 1px solid #444;
}

.paint-input {
    flex: 1;
    background: #1f1f1f;
    border: 1px solid #444;
    color: white;
    padding: 10px;
    border-radius: 6px;
    outline: none;
}
.paint-input:focus { border-color: #1890ff; }

/* Ã§â€Â»Ã§Â¬â€Ã¦Â»â€˜Ã¥Ââ€” */
input[type=range] { width: 80px; cursor: pointer; }

/* Ã¦Å’â€°Ã©â€™Â®Ã©â‚¬Å¡Ã§â€Â¨ */
.paint-btn {
    padding: 0;
    width: 30px;
    height: 30px;
    display: flex;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 16px;
    transition: all 0.2s;
    display: flex;
    align-items: center;
    gap: 4px;
    color: #ccc;
    background: #444;
    justify-content: center;
    align-content: center;
}

#btn-undo i,#btn-redo i {
    font-size: 12px;
}

.paint-btn i {
    font-size: 18px;
}
.paint-btn:hover { background: #555; color: white; }
.paint-btn:active { transform: translateY(1px); }
.paint-btn:disabled { opacity: 0.5; cursor: not-allowed; }
/* Ã°Å¸â€Â¥ Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¦Å’â€°Ã©â€™Â®Ã¦Â¿â‚¬Ã¦Â´Â»/Ã©â‚¬â€°Ã¤Â¸Â­Ã§Å Â¶Ã¦â‚¬Â */
.paint-btn.active {
    background: #1890ff !important;
    color: white !important;
    border-color: #1890ff !important;
}

.btn-save { background: #237804; color: #fff; }
.btn-save:hover { background: #389e0d; }

.btn-ai-run { background: #1890ff; color: white; }

#paint-ai-run-btn {
    display: flex;
    flex-wrap: nowrap;
    flex-direction: row;
    width: 100px;
    font-size: 14px;
}
.btn-ai-run:hover { background: #40a9ff; }

/* Ã§â€Â»Ã¥Â¸Æ’Ã¥Â®Â¹Ã¥â„¢Â¨ (Ã¨Â§â€ Ã¥ÂÂ£) */
.canvas-viewport {
    position: relative;
    flex: 1; /* Ã¥ÂÂ Ã¦ÂÂ®Ã¥â€°Â©Ã¤Â½â„¢Ã§Â©ÂºÃ©â€”Â´ */
    width: 100%;
    overflow: hidden; /* Ã¨Â£ÂÃ¥â€°ÂªÃ¨Â¶â€¦Ã¥â€¡ÂºÃ©Æ’Â¨Ã¥Ë†â€  */
    background: url('data:image/svg+xml;utf8,<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h10v10H0zm10 10h10v10H10z" fill="%23333" fill-opacity="0.2"/></svg>');
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: none; /* Ã°Å¸â€Â¥ Ã©Å¡ÂÃ¨â€”ÂÃ©Â»ËœÃ¨Â®Â¤Ã©Â¼Â Ã¦Â â€¡Ã¯Â¼Å’Ã¤Â½Â¿Ã§â€Â¨Ã¨â€¡ÂªÃ¥Â®Å¡Ã¤Â¹â€°Ã¥â€¦â€°Ã¦Â â€¡ */
}

/* Ã¥Â®Å¾Ã©â„¢â€¦Ã§â€Â»Ã¥Â¸Æ’ (Ã¤Â¼Å¡Ã¨Â¢Â«Ã§Â¼Â©Ã¦â€Â¾Ã¥Â¹Â³Ã§Â§Â») */
#paint-canvas {
    /* Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¨Â¿â„¢Ã¤Â¸â‚¬Ã¥Â±â€šÃ¥Â¿â€¦Ã©Â¡Â»Ã©â‚¬ÂÃ¦ËœÅ½Ã¯Â¼Å’Ã¤Â¸ÂÃ¨Â¦ÂÃ¨Â®Â¾Ã§Â½Â® background */
    transform-origin: 0 0; /* Ã¥ÂËœÃ¦ÂÂ¢Ã¥Å¸ÂºÃ§â€šÂ¹Ã¨Â®Â¾Ã¤Â¸ÂºÃ¥Â·Â¦Ã¤Â¸Å Ã¨Â§â€™Ã¯Â¼Å’Ã¦â€“Â¹Ã¤Â¾Â¿Ã¥ÂÅ’Ã¦Â­Â¥ */
    will-change: transform;
}
#paint-bg-image {
    transform-origin: 0 0;
    will-change: transform;
    box-shadow: 0 0 20px rgba(0,0,0,0.5); /* Ã©ËœÂ´Ã¥Â½Â±Ã¥Å Â Ã¥Å“Â¨Ã¥Âºâ€¢Ã¥â€ºÂ¾Ã¤Â¸Å  */
}

/* Ã°Å¸â€Â¥ Ã¨â€¡ÂªÃ¥Â®Å¡Ã¤Â¹â€°Ã§â€Â»Ã§Â¬â€Ã¥â€¦â€°Ã¦Â â€¡ (Ã§Â©ÂºÃ¥Â¿Æ’Ã¥Å“â€ ) */
#brush-cursor {
    position: fixed;
    border: 2px solid rgba(255, 255, 255, 0.8); /* Ã§â„¢Â½Ã¥Å“Ë† */
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.8); /* Ã©Â»â€˜Ã©ËœÂ´Ã¥Â½Â±Ã¯Â¼Å’Ã¤Â¿ÂÃ¨Â¯ÂÃ¥Å“Â¨Ã§â„¢Â½Ã¥Âºâ€¢Ã¤Â¹Å¸Ã¨Æ’Â½Ã§Å“â€¹Ã¨Â§Â */
    border-radius: 50%;
    pointer-events: none; /* Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¨Â®Â©Ã©Â¼Â Ã¦Â â€¡Ã¤Âºâ€¹Ã¤Â»Â¶Ã§Â©Â¿Ã©â‚¬ÂÃ¥Â®Æ’ */
    z-index: 100005;
    transform: translate(-50%, -50%); /* Ã¥Â±â€¦Ã¤Â¸Â­ */
    display: none;
}

/* Ã°Å¸â€Â¥ Ã¥Å Â Ã¨Â½Â½Ã©ÂÂ®Ã§Â½Â©Ã¥Â±â€š (Ã¨Â½Â¬Ã¥Å“Ë†Ã¥Å“Ë†) */
#paint-loading-overlay {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0,0,0,0.6);
    z-index: 100004;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: white;
    backdrop-filter: blur(2px);
}

/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Â»Ã¥Â¸Æ’Ã§Â¼Â©Ã§â€¢Â¥Ã¥â€ºÂ¾Ã¥Â¯Â¼Ã¨Ë†ÂªÃ¦Â Â·Ã¥Â¼Â === */
#canvas-minimap {
    position: fixed;
    bottom: 90px;
    right: 30px;
    z-index: 998;
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.15);
    border: 1px solid #e8e8e8;
    overflow: hidden;
    transition: all 0.3s ease;
    width: 200px;
}

#canvas-minimap.collapsed {
    width: 120px;
    border-radius: 20px;
}

#canvas-minimap.collapsed .minimap-content {
    display: none;
}

#canvas-minimap.collapsed .minimap-header span {
    font-size: 11px;
}

.minimap-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    background: #ffffff;
    color: #3d3d3d;
    font-size: 12px;
    font-weight: 600;
    cursor: move;
    user-select: none;
}

.minimap-header span {
    display: flex;
    align-items: center;
    gap: 5px;
}

#minimap-toggle {
    width: 20px;
    height: 20px;
    border: none;
    background: rgba(255, 255, 255, 0.2);
    color: #c3c3c3;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
}

#minimap-toggle:hover {
    background: rgba(255, 255, 255, 0.35);
}

.minimap-content {
    padding: 0 10px 10px;
    background: #ffffff;
}

.minimap-canvas {
    position: relative;
    width: 180px;
    height: 120px;
    background: #fff;
    border: 1px solid #ededed;
    border-radius: 6px;
    overflow: hidden;
    cursor: crosshair;
}

#minimap-svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

#minimap-svg rect.minimap-node {
    fill: #d9d9d9;
    stroke: #bfbfbf;
    stroke-width: 0.5;
    rx: 1;
    ry: 1;
}

#minimap-svg line.minimap-connection {
    stroke: #d9d9d9;
    stroke-width: 0.5;
}

#minimap-viewport {
    position: absolute;
    border: none;
    background: rgba(0, 0, 0, 0.08);
    border-radius: 2px;
    cursor: grab;
    transition: none;
}

#minimap-viewport:hover {
    background: rgba(0, 0, 0, 0.12);
}

#minimap-viewport:active {
    cursor: grabbing;
    background: rgba(0, 0, 0, 0.15);
}

/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã§â€Â»Ã¥Â¸Æ’Ã§Â¼Â©Ã¦â€Â¾Ã¦Å½Â§Ã¥Ë†Â¶Ã¦Â ÂÃ¦Â Â·Ã¥Â¼Â === */
/* === Ã°Å¸â€Â¥ Ã¦Å“â‚¬Ã§Â»Ë†Ã¤Â¼ËœÃ¥Å’â€“Ã§â€°Ë† CSS === */
#canvas-view-controls.zoom-capsule {
    position: fixed;
    bottom: 30px;
    right: 30px;
    z-index: 999;
    background: #ffffff;
    border-radius: 50px;
    padding: 8px 16px 8px 8px; /* Ã¨Â°Æ’Ã¦â€¢Â´Ã¥â€ â€¦Ã¨Â¾Â¹Ã¨Â·Â */
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.12); /* Ã¦â€ºÂ´Ã¦Å¸â€Ã¥â€™Å’Ã§Å¡â€žÃ©ËœÂ´Ã¥Â½Â± */
    border: 1px solid #f0f0f0;
    display: flex;
    align-items: center;
    gap: 8px;
    user-select: none;
    transition: transform 0.2s;
}

#canvas-view-controls.zoom-capsule .control-btn {
    position: absolute;
    left: -96px;
    width: 42px;
    height: 42px;
    background: #fff;
    border: none;
    border-radius: 50%;
    cursor: pointer;
}

#canvas-view-controls.zoom-capsule .control-btn i {
    font-size: 14px;
}

#canvas-view-controls.zoom-capsule #canvas-redo-btn {
    left: -48px;
}

#canvas-view-controls.zoom-capsule:hover {

}

/* Ã¥Â·Â¦Ã¤Â¾Â§Ã¥Â¤ÂÃ¤Â½ÂÃ¦Å’â€°Ã©â€™Â® */
#btn-canvas-reset {
    width: 24px;
    height: 24px;
    border: none;
    background: #f7f7f7;
    color: #666;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
    flex-shrink: 0;
}

#btn-canvas-reset:hover {
    background: #e6f7ff;
    color: #1890ff;
}
#btn-canvas-reset i{
    font-size: 20px;
}


/* Ã¦Â»â€˜Ã¥Ââ€”Ã¥Â¤â€“Ã¥Â±â€šÃ¥Â®Â¹Ã¥â„¢Â¨ (Ã§â€Â¨Ã¤ÂºÅ½Ã¥Â®Å¡Ã¤Â½ÂÃ¦Â°â€Ã¦Â³Â¡) */
.zoom-slider-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    width: 120px; /*Ã§Â¨ÂÃ¥Â¾Â®Ã¥Å Â Ã¥Â®Â½Ã¤Â¸â‚¬Ã§â€šÂ¹ */
    height: 4px;
    border-radius: 4px;
}

/* Ã¦Â°â€Ã¦Â³Â¡Ã¦ÂÂÃ§Â¤Âº */
#zoom-tooltip {
    position: absolute;
    top: -40px; /* Ã¥Å“Â¨Ã¤Â¸Å Ã¦â€“Â¹ */
    left: 0; /* JS Ã¥Å Â¨Ã¦â‚¬ÂÃ¦Å½Â§Ã¥Ë†Â¶ */
    transform: translateX(-50%) scale(0.8);
    background: #333;
    color: #fff;
    padding: 4px 8px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: bold;
    pointer-events: none;
    opacity: 0; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”Â */
    transition: opacity 0.2s, transform 0.2s;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}

/* Ã¥Â°ÂÃ¤Â¸â€°Ã¨Â§â€™Ã§Â®Â­Ã¥Â¤Â´ */
#zoom-tooltip::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 4px solid #333;
}

/* Ã¦ËœÂ¾Ã§Â¤ÂºÃ§Å Â¶Ã¦â‚¬Â */
#zoom-tooltip.show {
    opacity: 1;
    transform: translateX(-50%) scale(1);
}

/* --- Range Slider Ã¦Â Â·Ã¥Â¼Â --- */
input[type=range]#canvas-zoom-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 100%; /* Ã¥ÂÂ Ã¦Â»Â¡Ã¥Â®Â¹Ã¥â„¢Â¨Ã¦â€“Â¹Ã¤Â¾Â¿Ã§â€šÂ¹Ã¥â€¡Â» */
    background: transparent;
    cursor: pointer;
    margin: 0;
    z-index: 2;
    border-radius: 4px;
}



/* Ã¥Å“â€ Ã©â€™Â® */
input[type=range]#canvas-zoom-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 18px;
    width: 18px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.3);
    margin-top: -0px; /* Ã¥Å¾â€šÃ§â€ºÂ´Ã¥Â±â€¦Ã¤Â¸Â­ */
    transition: transform 0.1s;
    border: 2px solid #555;
}

input[type=range]#canvas-zoom-slider:hover::-webkit-slider-thumb {
    transform: scale(1.15);

}



/* === Ã°Å¸â€Â¥Ã£â‚¬ÂÃ¦â€“Â°Ã¥Â¢Å¾Ã£â‚¬â€˜Ã¥Â·Â¦Ã¤Â¸Å Ã¨Â§â€™Ã§â€Â¨Ã¦Ë†Â·Ã¤Â¿Â¡Ã¦ÂÂ¯Ã¥ÂÂ¡Ã§â€°â€¡Ã¦Â Â·Ã¥Â¼Â === */
#user-profile-card {z-index: 10; /* Ã¤Â¿ÂÃ¨Â¯ÂÃ¥Å“Â¨Ã§â€Â»Ã¥Â¸Æ’Ã¥â€™Å’Ã¨Â¿Å¾Ã§ÂºÂ¿Ã¤Â¹â€¹Ã¤Â¸Å  */ /* Ã§Â£Â¨Ã§Â â€šÃ§Å½Â»Ã§â€™Æ’Ã¦â€¢Ë†Ã¦Å¾Å“ */ /* Ã¨Æ’Â¶Ã¥â€ºÅ Ã¥Â½Â¢Ã§Å Â¶ */display: flex; /* Ã©Â»ËœÃ¨Â®Â¤Ã©Å¡ÂÃ¨â€”ÂÃ¯Â¼Å’AJAXÃ¥Å Â Ã¨Â½Â½Ã¦Ë†ÂÃ¥Å Å¸Ã¥ÂÅ½Ã¦ËœÂ¾Ã§Â¤Âº */align-items: center;gap: 10px;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;transition: transform 0.2s, box-shadow 0.2s;user-select: none;max-width: 260px;flex-wrap: nowrap;align-content: center;justify-content: flex-start;}

#user-profile-card > a {
    display: flex;
    align-items: center;
    justify-content: center;
    align-content: center;
}

#user-profile-card:hover {}

.user-avatar {width: 30px;height: 30px;border-radius: 50%;object-fit: cover;box-shadow: 0 2px 8px rgba(0,0,0,0.1);background-color: #f0f0f0;margin-right: 6px;}

.user-info-col {display: flex;flex-direction: row;justify-content: center;gap: 2px;}

.user-name-row {font-size: 14px;color: #555;display: flex;gap: 8px;}

.user-name-row span {
    display: block;
}

.user-id-badge {font-size: 10px;color: #999;background: #f5f5f5;padding: 1px 4px;border-radius: 4px;font-weight: normal;display: none !important;}

.user-integral-row { /* Ã©â€¡â€˜Ã¥Â¸Â/Ã§Â§Â¯Ã¥Ë†â€ Ã©Â¢Å“Ã¨â€°Â² */height: 100%;display: block;padding: 0 10px;border-radius: 15px;/* border: 1px solid #dddddd; */font-size: 14px;color: #222;-webkit-transition: .2s;-moz-transition: .2s;transition: .2s;}

.user-integral-row > a {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    align-content: center;
    height: 100%;
}

.user-integral-row > a i {
    font-size: 22px;
}

/* === Ã°Å¸â€Â¥ Ã¥â€¦Â¨Ã¥Â±â‚¬Ã¤Â¿ÂÃ¥Â­ËœÃ¥Å Â Ã¨Â½Â½Ã©ÂÂ®Ã§Â½Â©Ã¥Â±â€š === */
#save-loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgb(255 255 255 / 70%);
    backdrop-filter: blur(4px);
    z-index: 99999;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #fff;
    user-select: none;
}

/* Ã¥Â¤Â§Ã¥ÂÂ·Ã¨Â½Â¬Ã¥Å“Ë†Ã¥Å“Ë†Ã¥Å Â¨Ã§â€Â» */
.big-spinner {
    width: 50px;
    height: 50px;
    border: 5px solid rgb(177 177 177 / 30%);

    border-top: 5px solid #1890ff; /* Ã¨â€œÂÃ¨â€°Â²Ã©Â«ËœÃ¤ÂºÂ® */
    border-radius: 50%;
    animation: big-spin 1s linear infinite;
    margin-bottom: 15px;
}

@keyframes big-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loading-text-large {
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 1px;
    color: #666;
}






/* === Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼Å¡Ã¦â€°Â©Ã¥â€ºÂ¾Ã¥Â·Â¥Ã¤Â½Å“Ã¥Å’ÂºÃ¦Â Â·Ã¥Â¼Â === */
#outpaint-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #1e1e1e; /* Ã¦Â·Â±Ã¨â€°Â²Ã¨Æ’Å’Ã¦â„¢Â¯Ã¦â€ºÂ´Ã¤Â¸â€œÃ¤Â¸Å¡ */
    z-index: 10000;
    flex-direction: column;
}

.outpaint-header {
    height: 50px;
    background: #252526;
    border-bottom: 1px solid #333;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 20px;
    color: #fff;
}

.outpaint-workspace {
    flex: 1;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #1e1e1e; /* Ã°Å¸â€Â¥ Ã¦â€Â¹Ã¦Ë†ÂÃ§ÂºÂ¯Ã¦Â·Â±Ã§ÂÂ°Ã¨Æ’Å’Ã¦â„¢Â¯Ã¯Â¼Å’Ã¤Â¸ÂÃ¥â€ ÂÃ§â€Â¨Ã¦Â Â¼Ã¥Â­Â */
    padding: 20px; /* Ã§Â»â„¢Ã¥â€ºâ€ºÃ¥â€˜Â¨Ã§â€¢â„¢Ã§â€šÂ¹Ã§Â©ÂºÃ©Å¡â„¢ */
}

/* Ã§â€Â»Ã¥Â¸Æ’Ã©ËœÂ´Ã¥Â½Â± */
#outpaint-canvas {
    background-image:
            linear-gradient(45deg, #2a2a2a 25%, transparent 25%),
            linear-gradient(-45deg, #2a2a2a 25%, transparent 25%),
            linear-gradient(45deg, transparent 75%, #2a2a2a 75%),
            linear-gradient(-45deg, transparent 75%, #2a2a2a 75%);
    background-color: #333; /* Ã¦Â Â¼Ã¥Â­ÂÃ§Å¡â€žÃ¥Âºâ€¢Ã¨â€°Â² */
    background-size: 20px 20px;
    background-position: 0 0, 0 10px, 10px -10px, -10px 0px;

    /* Ã°Å¸â€Â¥ Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¦Â·Â»Ã¥Å Â Ã§â„¢Â½Ã¨â€°Â²Ã§Â»â€ Ã¨Â¾Â¹Ã¦Â¡â€ Ã¥â€™Å’Ã©Â»â€˜Ã¨â€°Â²Ã¦Å â€¢Ã¥Â½Â±Ã¯Â¼Å’Ã¨Â®Â©Ã¥Â®Æ’Ã¢â‚¬Å“Ã¦ÂµÂ®Ã¢â‚¬ÂÃ¨ÂµÂ·Ã¦ÂÂ¥ */
    border: 1px solid rgba(255,255,255,0.3);
    box-shadow: 0 0 50px rgba(0,0,0,0.8);

    /* Ã§Â¡Â®Ã¤Â¿ÂÃ¥Â¤Â§Ã¥â€ºÂ¾Ã¨Æ’Â½Ã§Â¼Â©Ã¦â€Â¾Ã¦ËœÂ¾Ã§Â¤ÂºÃ¥Å“Â¨Ã¥Â±ÂÃ¥Â¹â€¢Ã¥â€ â€¦ */
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    cursor: grab;
}
#outpaint-canvas.grabbing {
    cursor: grabbing;
}

.outpaint-controls {
    height: 60px;
    background: #252526;
    border-top: 1px solid #333;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
}

.op-btn {
    background: #333;
    color: #ccc;
    border: 1px solid #444;
    padding: 6px 14px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 13px;
    transition: all 0.2s;
}
.op-btn:hover { background: #444; color: #fff; }
.op-btn.active { background: #1890ff; color: #fff; border-color: #1890ff; }

.op-run-btn {
    background: #1890ff;
    color: #fff;
    border: none;
    padding: 8px 24px;
    font-weight: bold;
    box-shadow: 0 2px 10px rgba(24,144,255,0.3);
}
.op-run-btn:hover { opacity: 0.9; transform: translateY(-1px); }

/* === Ã¥ÂÂ¸Ã§Â®Â¡Ã¨Â¿Å¾Ã§ÂºÂ¿Ã¦Â¨Â¡Ã¥Â¼ÂÃ¤Â¸â€œÃ§â€Â¨Ã¦Â Â·Ã¥Â¼Â === */
body.is-pipette-active {
    cursor: crosshair !important; /* Ã©Â¼Â Ã¦Â â€¡Ã¥ÂËœÃ¤Â¸ÂºÃ¥ÂÂÃ¥Â­â€”Ã¥â€¡â€ Ã¦ËœÅ¸ */
}
body.is-pipette-active .node {
    cursor: crosshair !important;
}


/* Ã¥ÂÂ¸Ã§Â®Â¡Ã¦Å’â€°Ã©â€™Â®Ã¦Â Â·Ã¥Â¼Â */
.pipette-trigger-btn {
    background: #f0f0f0;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 2px 8px;
    font-size: 12px;
    cursor: pointer;
    color: #555;
    margin-left: auto; /* Ã©ÂÂ Ã¥ÂÂ³Ã¥Â¯Â¹Ã©Â½Â */
    transition: all 0.2s;
    display: flex;
    align-items: center;
    gap: 4px;
}
.pipette-trigger-btn:hover {
    background: #e6f7ff;
    color: #1890ff;
    border-color: #1890ff;
}
.pipette-trigger-btn.active {
    background: #1890ff;
    color: #fff;
    border-color: #1890ff;
}

#auto-save-status{
    color:#999;
    font-size: 12px;
    min-width:80px;
    text-align:right;
    display: flex;
    align-items: center;
    align-content: center;
    justify-content: center;
    position: relative;
    top: -1px;
}
#auto-save-status i{
    width: 5px;
    height: 5px;
    border-radius: 50%;
    display: block;
    margin-right: 4px;
    position: relative;
}

#workflow-list-modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background: rgb(0 0 0 / 23%);z-index:9999;justify-content:center;align-items:center;}
#workflow-list-modal > div{box-shadow:0 4px 12px rgba(0,0,0,0.2);background:#fff;width: 92%;max-width: 1600px;max-height: 70%;border-radius: 10px;padding: 0;display:flex;flex-direction:column;box-sizing: border-box;}
#workflow-list-modal .list-modal-title{display:flex;justify-content:space-between;align-items:center;border-bottom: 1px solid #e7e7e7;background: #efefef;border-radius: 10px 10px 0 0;padding: 10px 24px;box-sizing: border-box;}
#workflow-list-modal .list-modal-title h3{margin:0;font-size:18px;display: flex;align-items: center;justify-content: flex-start;align-content: center;}

#workflow-list-modal .list-modal-title h3 i {
    font-size: 24px;
    margin-right: 4px;
}
#workflow-list-modal .list-modal-title span{cursor:pointer; font-size:20px;}
#workflow-list-modal #workflow-list-container{overflow-y:auto;display: flex;flex-wrap: wrap;flex-direction: row;align-content: flex-start;justify-content: flex-start;align-items: flex-start;gap: 24px;padding: 24PX;}
#workflow-list-modal .workflow-list-con-loading{text-align:center; color:#999; margin-top:50px;}
#workflow-list-modal .workflow-item{display:flex;padding: 0;box-sizing: border-box;width: calc((100% - 24px * 4) / 4);flex-direction: row;flex-wrap: wrap;}
#workflow-list-modal .workflow-item .share-btn{}
#workflow-list-modal .workflow-item-top{display:flex;align-items:center;gap:12px;width: 100%;flex-wrap: wrap;}
#workflow-list-modal .workflow-item-img{border:1px solid #eee;width: 100%;min-height: 100px;border-radius:6px;background-size:cover;background-position:center;aspect-ratio: 4 / 2.6;position: relative;}
#workflow-list-modal .workflow-item-content{
    width: 100%;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
}
#workflow-list-modal .workflow-item-title{font-size: 14px;color:#333;width: 100%;display: flex;justify-content: space-between;align-content: center;align-items: center;padding: 3px 0 10px;}

#workflow-list-modal .workflow-item-title h2 {
    align-items: center;
    text-overflow: ellipsis;
    white-space: nowrap;
    width: 75%;
    overflow: hidden;
    font-size: 16px;
}

.workflow-switch-open-btn {
    display: flex;
    flex-wrap: nowrap;
    align-content: center;
    justify-content: center;
    align-items: center;
}
#workflow-list-modal .workflow-item-tips{font-size:12px; color:#999; margin-top:6px; display:flex; align-items:center; gap:6px;}
#workflow-list-modal .batch-toggle-wrapper{}
#workflow-list-modal .workflow-item-tips span{}
#workflow-list-modal .workflow-item-time{position: absolute;top: 4px;left: 4px;background: #ffffff;padding: 4px;border-radius: 6px;font-size: 12px;}
#workflow-list-modal .workflow-item-bottom{display:flex; align-items:center;}
#workflow-list-modal .workflow-item-bottom button{margin-right:5px;height: 30px;border: 1px solid #e9e9e9;background: #fff;border-radius: 19px;padding: 0 16px;font-size: 13px;cursor: pointer;transition: 0.168s;}
#workflow-list-modal .list-modal-other{margin-top:15px; text-align:right; border-top:1px solid #eee; padding-top:10px;}
#workflow-list-modal #import-local-json-btn{float:left; background:#f0f0f0; border:none; padding:6px 12px; border-radius:4px; cursor:pointer;}
#workflow-list-modal .close-modal-btn{color: #414141;border:none;padding:6px 20px;border-radius:4px;cursor:pointer;}


/* =====================================================
   Ã°Å¸â€œÅ  AI Ã¨Â°Æ’Ã§â€Â¨Ã¨Â®Â°Ã¥Â½â€¢Ã¥Â¼Â¹Ã§Âªâ€”Ã¦Â Â·Ã¥Â¼Â
   ===================================================== */
.ai-logs-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgb(0 0 0 / 50%);
    z-index: 10000;
    justify-content: center;
    align-items: center;
}

.ai-logs-container {
    background: #fff;
    width: 95%;
    max-width: 1200px;
    max-height: 90vh;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.ai-logs-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 24px 0;
    background: #ffffff;
    color: #343434;
    /* border-bottom: 1px solid #f1f1f1; */
}

.ai-logs-header h3 {
    margin: 0;
    font-size: 18px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.ai-logs-header h3 i {
    font-size: 22px;
}

.close-ai-logs-btn {
    cursor: pointer;
    font-size: 24px;
    opacity: 0.8;
    transition: opacity 0.2s;
}

.close-ai-logs-btn:hover {
    opacity: 1;
}

/* Ã§Â»Å¸Ã¨Â®Â¡Ã¥ÂÂ¡Ã§â€°â€¡ */
.ai-logs-stats {
    display: flex;
    gap: 16px;
    padding: 20px 24px 10px;
    /* border-bottom: 1px solid #eee; */
}

.stat-card {
    flex: 1;
    background: #fff;
    padding: 16px;
    border-radius: 10px;
    /* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); */
    text-align: center;
    border: 2px solid #f5f5f5;
}

.stat-label {
    font-size: 13px;
    color: #888;
    margin-bottom: 8px;
}

.stat-value {
    font-size: 28px;
    font-weight: 700;
    color: #333;
    background: linear-gradient(135deg, #3c3c3c, #000000);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.stat-sub {
    font-size: 12px;
    color: #999;
    margin-top: 4px;
}

.stat-sub span {
   font-size: 28px;
    font-weight: 700;
    color: #333;
    background: linear-gradient(135deg, #3c3c3c, #000000);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    
}

/* Ã§Â­â€ºÃ©â‚¬â€°Ã¦ÂÂ¡Ã¤Â»Â¶ */
.ai-logs-filters {
    display: flex;
    gap: 12px;
    padding: 16px 24px;
    background: #fff;
    /* border-bottom: 1px solid #eee; */
    flex-wrap: wrap;
}

.ai-logs-filters select,
.ai-logs-filters input {
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    transition: border-color 0.2s;
}

.ai-logs-filters select:focus,
.ai-logs-filters input:focus {
    border-color: #667eea;
}

.ai-logs-filters input[type="text"] {
    min-width: 180px;
}

.filter-btn {
    padding: 8px 16px;
    border: none;
    border-radius: 6px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
    background: #147efb;
    color: #fff;
}

.filter-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}

.filter-btn.filter-reset {
    background: #f0f0f0;
    color: #666;
}

.filter-btn.filter-reset:hover {
    background: #e0e0e0;
    box-shadow: none;
}

/* Ã¨Â®Â°Ã¥Â½â€¢Ã¥Ë†â€”Ã¨Â¡Â¨ */
.ai-logs-list {
    flex: 1;
    overflow-y: auto;
    padding: 10px 24px;
    min-height: 300px;
}

.ai-logs-loading {
    text-align: center;
    padding: 60px;
    color: #999;
}

.ai-log-item {
    display: flex;
    align-items: center;
    padding: 14px 16px;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    margin-bottom: 12px;
    transition: all 0.2s;
    cursor: pointer;
}

.ai-log-item:hover {
    border-color: #efefef;
    /* box-shadow: 0 4px 12px rgb(77 77 77 / 15%); */
    /* transform: translateY(-2px); */
    background: #f5f5f5;
}

.ai-log-time {
    min-width: 140px;
    font-size: 13px;
    color: #666;
}

.ai-log-type {
    min-width: 90px;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 12px;
    text-align: center;
    margin-right: 12px;
}

.ai-log-type.text {
    background: #e3f2fd;
    color: #1976d2;
}

.ai-log-type.image {
    background: #fce4ec;
    color: #c2185b;
}

.ai-log-type.gemini_image {
    background: #fff3e0;
    color: #e65100;
}

.ai-log-model {
    min-width: 120px;
    font-size: 13px;
    color: #333;
    font-weight: 500;
}

.ai-log-prompt {
    flex: 1;
    font-size: 13px;
    color: #666;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0 16px;
}

.ai-log-status {
    min-width: 60px;
    text-align: center;
}

.ai-log-status.success {
    color: #27ae60;
}

.ai-log-status.failed {
    color: #e74c3c;
}

.ai-log-status.pending {
    color: #f39c12;
}

.ai-log-cost {
    min-width: 70px;
    text-align: right;
    font-size: 13px;
    color: #e67e22;
    font-weight: 600;
}

.ai-log-time-cost {
    min-width: 80px;
    text-align: right;
    font-size: 12px;
    color: #999;
}

/* Ã¥Ë†â€ Ã©Â¡Âµ */
.ai-logs-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 16px;
    padding: 16px 24px;
    background: #f8f9fa;
    border-top: 1px solid #eee;
}

.ai-logs-pagination button {
    padding: 8px 20px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.2s;
}

.ai-logs-pagination button:hover:not(:disabled) {
    border-color: #667eea;
    color: #667eea;
}

.ai-logs-pagination button:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

#logs-page-info {
    font-size: 13px;
    color: #666;
}

/* Ã¨Â¯Â¦Ã¦Æ’â€¦Ã¥Â¼Â¹Ã§Âªâ€” */
.ai-log-detail-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    z-index: 10001;
    justify-content: center;
    align-items: center;
}

.ai-log-detail-container {
    background: #fff;
    width: 90%;
    max-width: 700px;
    max-height: 80vh;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

.ai-log-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 24px;
    background: #f8f9fa;
    border-radius: 12px 12px 0 0;
    border-bottom: 1px solid #eee;
}

.ai-log-detail-header h3 {
    margin: 0;
    font-size: 16px;
}

.close-detail-btn {
    cursor: pointer;
    font-size: 20px;
    color: #666;
}

.close-detail-btn:hover {
    color: #333;
}

.ai-log-detail-content {
    padding: 24px;
    overflow-y: auto;
}

.detail-row {
    display: flex;
    margin-bottom: 16px;
    font-size: 14px;
}

.detail-label {
    min-width: 100px;
    color: #888;
}

.detail-value {
    flex: 1;
    color: #333;
    word-break: break-all;
}

.detail-value.prompt-content,
.detail-value.response-content {
    background: #f8f9fa;
    padding: 12px;
    border-radius: 8px;
    max-height: 200px;
    overflow-y: auto;
    white-space: pre-wrap;
    font-family: 'Monaco', 'Consolas', monospace;
    font-size: 13px;
    line-height: 1.5;
}

.detail-value img {
    max-width: 100%;
    border-radius: 8px;
    margin-top: 8px;
}

/* Ã§Â©ÂºÃ§Å Â¶Ã¦â‚¬Â */
.ai-logs-empty {
    text-align: center;
    padding: 60px 20px;
    color: #999;
}

.ai-logs-empty i {
    font-size: 48px;
    display: block;
    margin-bottom: 16px;
    opacity: 0.5;
}

/* ========================================= */
/* Ã¥Â·Â¦Ã¤Â¾Â§Ã¦â€šÂ¬Ã¦ÂµÂ®Ã¥Â¿Â«Ã¦ÂÂ·Ã¥Â¯Â¼Ã¨Ë†ÂªÃ¯Â¼Ë†Ã¦â€“Â°Ã¥Â¢Å¾Ã¯Â¼â€° */
/* ========================================= */
#left-quick-nav{
    position: fixed;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 10px;
    border-radius: 36px;
    background: rgba(255,255,255,0.92);
    border: 1px solid rgba(0,0,0,0.08);
    box-shadow: 7px 3px 12px rgb(89 89 89 / 12%);
    z-index: 3000;
    backdrop-filter: blur(8px);
}

#left-quick-nav .lqn-btn{
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
    user-select: none;
}

#left-quick-nav .lqn-btn i {
    font-size: 22px;
}

#left-quick-nav #lqn-add i {
    font-size: 18px !important;
}

#left-quick-nav .lqn-btn:hover{
    border-color: #efefef;
    background: #efefef;
}

#left-quick-nav .lqn-btn:active{
    transform: translateY(0);
    box-shadow: none;
}

.lqn-panel{
    position: fixed;
    left: 78px;
    top: 50%;
    transform: translateY(-50%);
    width: 260px;
    background: rgba(255,255,255,0.96);
    border: 1px solid rgba(0,0,0,0.08);
    box-shadow: 0 12px 34px rgba(0,0,0,0.14);
    border-radius: 14px;
    z-index: 3000;
    backdrop-filter: blur(8px);
    padding: 12px;
}

.lqn-panel .lqn-panel-title{
    font-size: 14px;
    font-weight: 700;
    color: #222;
    margin-bottom: 6px;
}

.lqn-panel .lqn-panel-desc{
    font-size: 12px;
    color: #666;
    margin-bottom: 10px;
    line-height: 1.4;
}

.lqn-panel .lqn-panel-item{
    width: 100%;
    height: 40px;
    border-radius: 10px;
    border: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    font-size: 13px;
    color: #222;
    text-align: left;
    padding: 0 12px;
    margin-bottom: 10px;
    transition: background .12s ease, border-color .12s ease;
}

.lqn-panel .lqn-panel-item:hover{
    background: #efefef;
    border-color: #efefef;
}

.lqn-panel .lqn-panel-item:last-child{ margin-bottom: 0; }

.lqn-gallery-panel{
    width: 380px;
    height: 72vh; /* Ã¢Å“â€¦ Ã§Â»â„¢ flex Ã¥Â®Â¹Ã¥â„¢Â¨Ã§Â¡Â®Ã¥Â®Å¡Ã©Â«ËœÃ¥ÂºÂ¦Ã¯Â¼Å’Ã¤Â¿ÂÃ¨Â¯ÂÃ¥â€ â€¦Ã©Æ’Â¨Ã¦Â»Å¡Ã¥Å Â¨Ã¥Â®Â¹Ã¥â„¢Â¨Ã¨Æ’Â½Ã¨Â§Â¦Ã¥Ââ€˜ scroll */
    max-height: 56vh;
    display: flex;
    flex-direction: column;
    padding: 12px;
    overflow: hidden;
}

.lqn-panel-header{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 6px;
}

.lqn-gallery-tabs{
    display: flex;
    gap: 6px;
    padding: 4px;
    border-radius: 10px;
    background: rgba(0,0,0,0.04);
    margin-bottom: 8px;
}

.lqn-gallery-tab{
    flex: 1 1 auto;
    height: 30px;
    border-radius: 8px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 12px;
    font-weight: 700;
    color: #555;
    transition: background .12s ease, color .12s ease, box-shadow .12s ease;
}

.lqn-gallery-tab.is-active{
    background: #fff;
    color: #141414;
}

.lqn-close-btn{
    width: 32px;
    height: 32px;
    border-radius: 10px;
    border: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
}

/* ========================================= */
/* æ¨¡æ¿åº“é¢æ¿ */
/* ========================================= */
.lqn-template-panel{
    width: 420px;
    height: 70vh;
    max-height: 70vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.lqn-template-toolbar{
    display: flex;
    gap: 8px;
    align-items: center;
    margin-bottom: 10px;
}

#lqn-template-search{
    flex: 1 1 auto;
    height: 34px;
    border-radius: 10px;
    border: 1px solid #eee;
    padding: 0 10px;
    font-size: 12px;
    outline: none;
}

#lqn-template-search:focus{
    border-color: rgba(24,144,255,0.65);
    box-shadow: 0 0 0 3px rgba(24,144,255,0.12);
}

.lqn-template-btn{
    height: 34px;
    border-radius: 10px;
    border: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    padding: 0 10px;
    transition: background .12s ease, border-color .12s ease;
}

.lqn-template-btn:hover{
    background: #efefef;
    border-color: #efefef;
}

.lqn-template-list{
    flex: auto;
    overflow: auto;
    padding-right: 4px;
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    gap: 10px;
}

.lqn-template-item{
    padding: 0;
    background: #fff;
    width: calc((100% - 10px) / 2);
    box-sizing: border-box;
}

.lqn-template-item-title{
    font-size: 13px;
    font-weight: 800;
    color: #222;
    margin-bottom: 4px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.lqn-template-item-meta{
    font-size: 12px;
    color: #666;
    line-height: 1.4;
    margin-bottom: 8px;
    display: none;
}

.lqn-template-cover{
    width: 100%;
    aspect-ratio: 3 / 4;
    border-radius: 10px;
    border: 1px solid #eee;
    background: #fafafa;
    background-size: cover;
    background-position: center;
    margin-bottom: 8px;
    position: relative;
    overflow: hidden;
}

.lqn-template-cover-empty{
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #999;
    font-size: 12px;
    background: repeating-linear-gradient(
        45deg,
        rgba(0,0,0,0.02),
        rgba(0,0,0,0.02) 8px,
        rgba(0,0,0,0.04) 8px,
        rgba(0,0,0,0.04) 16px
    );
}

.lqn-template-item-actions{
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.lqn-template-item-actions button{
    height: 30px;
    border-radius: 10px;
    border: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    font-size: 12px;
    padding: 0 10px;
    transition: background .12s ease, border-color .12s ease;
}

.lqn-template-item-actions button:hover{
    background: #efefef;
    border-color: #efefef;
}

.lqn-template-badge{
    font-size: 12px;
    color: #555;
    background: rgb(255 255 255);
    border: 1px solid rgba(0,0,0,0.08);
    padding: 2px 8px;
    border-radius: 5px;
    white-space: nowrap;
    position: absolute;
    top: 4px;
    left: 4px;
}

/* ========================================= */
/* æ¨¡æ¿ä¿å­˜å¼¹çª—ï¼ˆç®¡ç†å‘˜ï¼‰ */
/* ========================================= */
.tpl-save-modal-card{
    width: min(720px, 92vw);
    max-height: 86vh;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 18px 50px rgba(0,0,0,0.22);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tpl-save-modal-header{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 16px;
    border-bottom: 1px solid #eee;
    background: #f6f7f9;
}

.tpl-save-modal-title{
    font-size: 15px;
    font-weight: 800;
    color: #222;
    display: flex;
    align-items: center;
    gap: 8px;
}

.tpl-save-modal-close{
    width: 34px;
    height: 34px;
    border-radius: 10px;
    border: 1px solid #e9e9e9;
    background: #fff;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
}

.tpl-save-modal-body{
    padding: 14px 16px;
    overflow: auto;
}

.tpl-save-grid{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.tpl-save-field{ display: flex; flex-direction: column; gap: 6px; }
.tpl-save-field-full{ grid-column: 1 / -1; }

.tpl-save-field label{
    font-size: 12px;
    color: #555;
    font-weight: 700;
}

.tpl-save-required{ color: #ff4d4f; font-weight: 900; }

.tpl-save-field input,
.tpl-save-field textarea{
    border: 1px solid #e6e6e6;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 13px;
    outline: none;
    box-sizing: border-box;
}

.tpl-save-field input:focus,
.tpl-save-field textarea:focus{
    border-color: rgba(24,144,255,0.65);
    box-shadow: 0 0 0 3px rgba(24,144,255,0.12);
}

.tpl-save-cover-row{
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 12px;
    align-items: start;
}

.tpl-save-cover{
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 12px;
    border: 1px dashed #cfcfcf;
    background: #fafafa;
    overflow: hidden;
    position: relative;
    cursor: pointer;
}

.tpl-save-cover img{
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: none;
}

.tpl-save-cover-loading{
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    color: #999;
    padding: 10px;
    text-align: center;
}

.tpl-save-cover-actions{
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tpl-save-cover-hint{
    font-size: 12px;
    color: #888;
    line-height: 1.4;
}

.tpl-save-modal-footer{
    padding: 12px 16px;
    border-top: 1px solid #eee;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    background: #fff;
}

.tpl-btn{
    height: 34px;
    border-radius: 10px;
    border: 1px solid #e6e6e6;
    background: #fff;
    cursor: pointer;
    font-size: 13px;
    padding: 0 12px;
    transition: background .12s ease, border-color .12s ease, opacity .12s ease;
}

.tpl-btn:hover{ background: #efefef; border-color: #efefef; }
.tpl-btn:disabled{ cursor: not-allowed; opacity: 0.6; }

.tpl-btn-ghost{
    background: #fff;
}

.tpl-btn-primary{
    border: none;
    background: #1890ff;
    color: #fff;
    font-weight: 800;
}

.tpl-btn-primary:hover{
    background: #1777d7;
}

@media (max-width: 720px){
    .tpl-save-grid{ grid-template-columns: 1fr; }
    .tpl-save-cover-row{ grid-template-columns: 1fr; }
}

.lqn-close-btn:hover{
    background: #fafafa;
}

.lqn-gallery-grid{
    overflow-y: auto;
    padding-top: 0;
    flex: 1 1 auto;
    min-height: 0; /* Ã¢Å“â€¦ Ã¥â€¦Â³Ã©â€Â®Ã¯Â¼Å¡Ã¨Â®Â©Ã¦Â»Å¡Ã¥Å Â¨Ã¥Â®Â¹Ã¥â„¢Â¨Ã¥Å“Â¨ flex Ã©â€¡Å’Ã¥ÂÂ¯Ã¦Â»Å¡Ã¥Å Â¨Ã¯Â¼Å’Ã¤Â¸ÂÃ¦Å’Â¤Ã¥Å½â€¹Ã¥ÂÂ Ã¥Â±â€š */
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Ã¦â€”Â¥Ã¦Å“Å¸Ã¥Ë†â€ Ã§Â»â€ž */
.lqn-gallery-group{ display: flex; flex-direction: column; gap: 10px; }
.lqn-gallery-date{
    position: sticky;
    top: -1px;
    z-index: 2;
    font-size: 12px;
    font-weight: 800;
    color: #555;
    padding: 6px 8px;
    border-radius: 0;
    background: rgb(255 255 255);
}
.lqn-gallery-group-grid{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.lqn-gallery-item{
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid #eee;
    background: #f3f3f3;
    aspect-ratio: 1 / 1;
    cursor: pointer;
}

.lqn-gallery-thumb{
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    transition: transform .16s ease;
}

.lqn-gallery-item:hover .lqn-gallery-thumb{
    transform: scale(1.05);
}

.lqn-gallery-actions{
    position: absolute;
    top: 6px;
    right: 6px;
    display: flex;
    gap: 2px;
    opacity: 0;
    transition: opacity .12s ease;
}

.lqn-gallery-item:hover .lqn-gallery-actions{
    opacity: 1;
}

.lqn-gallery-action-btn{
    width: 20px;
    height: 20px;
    border-radius: 10px;
    border: none;
    background: rgb(255 255 255 / 68%);
    color: #040404;
    cursor: pointer;
    font-size: 12px;
    line-height: 1;
}

.lqn-gallery-action-btn:hover{
    background: rgb(255 255 255);
}

/* Ã¦â€Â¶Ã¨â€”Â / Ã¥Ë†Â Ã©â„¢Â¤Ã¦Å’â€°Ã©â€™Â®Ã§Å¡â€žÃ©Â¢Å“Ã¨â€°Â²Ã¥Å’ÂºÃ¥Ë†â€  */
.lqn-gallery-action-btn.lqn-ga-fav{
    font-size: 12px;
}
.lqn-gallery-action-btn.lqn-ga-fav.is-fav{
    background: rgba(255, 193, 7, 0.92);
    color: #1a1a1a;
}
.lqn-gallery-action-btn.lqn-ga-fav.is-fav:hover{
    background: rgba(255, 193, 7, 1);
}
.lqn-gallery-action-btn.lqn-ga-del{
}
.lqn-gallery-action-btn.lqn-ga-del:hover{
    background: rgba(220, 53, 69, 0.95);
}







