/* /Layout/Diagrams/Palettes/EquipmentPalette.razor.rz.scp.css */
/* =========================================
   EQUIPMENT PALETTE - STYLESHEET
   ========================================= */

.floating-palette-panel.narrow[b-15o3dpkblm] {
    position: absolute !important;
    top: 120px;
    left: 20px;
    z-index: 2000 !important; /* Elevamos la paleta sobre el lienzo */
    width: 135px;
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(4px);
    border: 1px solid #CBD5E0;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
    border-radius: 8px;
    display: flex;
    flex-direction: column;
}

.panel-header[b-15o3dpkblm] {
    background: #F1F5F9;
    padding: 8px;
    border-bottom: 1px solid #E2E8F0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    cursor: move;
}

.drag-handle[b-15o3dpkblm] {
    width: 35px;
    height: 3px;
    background: #94A3B8;
    border-radius: 2px;
}

.panel-title[b-15o3dpkblm] {
    font-size: 8.5px;
    font-weight: 900;
    color: #475569;
    letter-spacing: 0.8px;
    text-transform: uppercase;
}

.panel-body[b-15o3dpkblm] {
    padding: 10px 8px;
    /* 🚩 CLAVE: Quitamos el scroll automático para que no recorte el tooltip */
    overflow: visible !important;
    max-height: 80vh;
}

.group-header[b-15o3dpkblm] {
    display: block;
    font-size: 7.5px;
    font-weight: 800;
    color: #94A3B8;
    margin-bottom: 6px;
    text-transform: uppercase;
}

.fundamentals-row[b-15o3dpkblm] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}

.group-divider[b-15o3dpkblm] {
    height: 1px;
    background: #F1F5F9;
    margin: 12px -8px;
}

.equipment-grid-3cols[b-15o3dpkblm] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 5px;
}

.palette-button[b-15o3dpkblm] {
    background: #FFFFFF;
    border: 1px solid #E2E8F0;
    border-radius: 4px;
    padding: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: grab;
    transition: all 0.15s ease;
    position: relative;
}

    .palette-button:hover[b-15o3dpkblm] {
        background: #F8FAFC;
        border-color: #3B82F6;
        transform: translateY(-1px);
        box-shadow: 0 2px 4px rgba(0,0,0,0.05);
        /* 🚩 CLAVE: El botón sobre el que estamos gana prioridad absoluta */
        z-index: 5000 !important;
    }

    .palette-button.disabled[b-15o3dpkblm] {
        opacity: 0.3;
        cursor: not-allowed;
        filter: grayscale(1);
    }

/* =========================================
   🚩 TOOLTIP DINÁMICO (Ubicación a la derecha)
   ========================================= */

.port-tooltip-fixed[b-15o3dpkblm] {
    position: absolute;
    left: calc(100% + 12px);
    top: 50%;
    transform: translateY(-50%);
    background-color: #F8FAFC;
    color: #4A5568;
    font-family: 'Consolas', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 3px 6px;
    border: 1px solid #E2E8F0;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
    box-shadow: 4px 4px 12px rgba(0,0,0,0.08);
    z-index: 10000 !important;
}

    .port-tooltip-fixed[b-15o3dpkblm]::after {
        content: "";
        position: absolute;
        top: 50%;
        right: 100%;
        transform: translateY(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: transparent #E2E8F0 transparent transparent;
    }

/* ==================== PALETTE - ESTADOS DESHABILITADOS ==================== */
.palette-button.disabled[b-15o3dpkblm] {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

    .palette-button.disabled svg[b-15o3dpkblm] {
        filter: grayscale(100%);
    }

    .palette-button.disabled:hover .port-tooltip-fixed[b-15o3dpkblm] {
        background-color: #f59e0b !important; /* Amber para warning */
        color: #1f2937 !important;
    }

.port-tooltip-fixed.warning[b-15o3dpkblm] {
    background-color: #f59e0b !important;
    color: #1f2937 !important;
    font-weight: 500;
}

/* Banner de advertencia */
.thermo-warning-banner[b-15o3dpkblm] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 8px 12px;
    background-color: #fff7ed; /* Amber muy claro */
    border: 1px solid #fcd34d;
    border-radius: 6px;
    margin-top: 12px;
}

    .thermo-warning-banner a[b-15o3dpkblm] {
        color: #b45309 !important;
        font-weight: 600;
        text-decoration: none;
    }

        .thermo-warning-banner a:hover[b-15o3dpkblm] {
            text-decoration: underline;
        }

/* Icono deshabilitado */
.icon-disabled[b-15o3dpkblm] {
    opacity: 0.6;
}
/* /Layout/Diagrams/PfdCanvas.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: PFD CANVAS (MOTOR GRÁFICO)
   ========================================= */

.pfd-workspace[b-mc8ioovq6s] {
    position: relative;
    width: 100%;
    height: 85vh;
    background-color: #E2E8F0;
    overflow: hidden;
    outline: none;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.02);
    cursor: grab; /* Indica que se puede agarrar el fondo para mover la cámara */
}

    .pfd-workspace.is-panning[b-mc8ioovq6s] {
        cursor: grabbing !important;
    }

        .pfd-workspace.is-panning *[b-mc8ioovq6s] {
            /* Desactiva temporalmente clics en hijos para que el pan sea súper fluido */
            pointer-events: none !important;
        }

.camera-layer[b-mc8ioovq6s] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform-origin: 0 0;
    will-change: transform;
    /* 🚩 Deja pasar el clic hasta el papel */
    pointer-events: none;
}

/* 🚩 LA HOJA DE PAPEL ELÁSTICA */
.diagram-paper[b-mc8ioovq6s] {
    position: absolute;
    top: 0;
    left: 0;
    background-color: #F1F5F9;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
    border: 1px solid #CBD5E1;
    /* 🚩 El papel SÍ recibe los clics para el paneo */
    pointer-events: auto;
    min-width: 100vw;
    min-height: 100vh;
    background-image: linear-gradient(to right, rgba(203, 213, 225, 0.5) 1px, transparent 1px), linear-gradient(to bottom, rgba(203, 213, 225, 0.5) 1px, transparent 1px), linear-gradient(to right, rgba(203, 213, 225, 0.2) 1px, transparent 1px), linear-gradient(to bottom, rgba(203, 213, 225, 0.2) 1px, transparent 1px);
    background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
    transition: width 0.3s ease, height 0.3s ease;
}

/* =========================================
   CAPA DE TUBERÍAS (SVG)
   ========================================= */
.pipes-layer[b-mc8ioovq6s] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    pointer-events: none;
}

/* =========================================
   TÍTULOS Y LEYENDAS
   ========================================= */
.canvas-title[b-mc8ioovq6s] {
    position: absolute;
    top: 16px;
    left: 16px;
    font-size: 0.8rem;
    color: #94A3B8;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    z-index: 5;
    pointer-events: none;
}

.zoom-to-fit-btn[b-mc8ioovq6s] {
    position: absolute;
    bottom: 24px;
    right: 24px;
    width: 40px;
    height: 40px;
    background-color: #FFFFFF;
    color: #4A5568;
    border: 1px solid #CBD5E1;
    border-radius: 8px;
    font-size: 1.2rem;
    cursor: pointer;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    z-index: 100;
    transition: all 0.2s ease;
    display: flex;
    justify-content: center;
    align-items: center;
}

    .zoom-to-fit-btn:hover[b-mc8ioovq6s] {
        background-color: #F8FAFC;
        color: #0EA5E9;
        border-color: #0EA5E9;
        transform: translateY(-2px);
    }
/* /Layout/MainLayout.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: INDUSTRIAL LAYOUT
   ========================================= */

[b-tmopy668it] .industrial-layout {
    height: 100vh;
    overflow: hidden;
}

/* --- HEADER --- */
[b-tmopy668it] .top-header {
    background-color: #202A36 !important;
    z-index: 1301 !important;
}

.logo-icon[b-tmopy668it] {
    font-size: 1.2rem;
    color: #00D26A;
}

.app-title[b-tmopy668it] {
    font-weight: 600;
    color: #FFFFFF;
}

[b-tmopy668it] .main-content-area {
    /* 🚩 ESTO ES VITAL: Sirve de ancla para la paleta 🚩 */
    position: relative !important;
    height: 100vh;
    padding: 0 !important;
    overflow: hidden;
    background-color: #F4F5F7;
    /* 🚩 PUNTO 7: Empujamos el contenido a la derecha para respetar la paleta flotante. 
       El ancho de la paleta es 135px + 20px de margen = 155px. 
       Le damos 175px para que respire. */
    margin-left: 175px;
}

/* --- SIDEBAR --- */
[b-tmopy668it] .sidebar-panel {
    z-index: 1300 !important;
    border-right: 1px solid #E2E8F0;
}

.panel-header[b-tmopy668it] {
    padding: 16px;
    border-bottom: 1px solid #E2E8F0;
    background-color: #F4F5F7;
}

    .panel-header h2[b-tmopy668it] {
        font-size: 0.75rem;
        color: #5C6A7A;
        font-weight: 700;
        text-transform: uppercase;
        margin: 0;
    }
/* --- MainLayout.razor.css --- */

/* /Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-9qkkwgv1yd] {
    background-color: rgba(255, 255, 255, 0.1);
}

.top-row[b-9qkkwgv1yd] {
    min-height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-9qkkwgv1yd] {
    font-size: 1.1rem;
}

.bi[b-9qkkwgv1yd] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill-nav-menu[b-9qkkwgv1yd] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-plus-square-fill-nav-menu[b-9qkkwgv1yd] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested-nav-menu[b-9qkkwgv1yd] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.nav-item[b-9qkkwgv1yd] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-9qkkwgv1yd] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-9qkkwgv1yd] {
        padding-bottom: 1rem;
    }

    .nav-item[b-9qkkwgv1yd]  a {
        color: #d7d7d7;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
    }

.nav-item[b-9qkkwgv1yd]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-9qkkwgv1yd]  a:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

@media (min-width: 641px) {
    .navbar-toggler[b-9qkkwgv1yd] {
        display: none;
    }

    .collapse[b-9qkkwgv1yd] {
        /* Never collapse the sidebar for wide screens */
        display: block;
    }

    .nav-scrollable[b-9qkkwgv1yd] {
        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}
/* /Layout/Shapes/CanvasEquipmentWrapper.razor.rz.scp.css */
/* =============================================================================
   CANVAS EQUIPMENT WRAPPER - FULL STYLESHEET
   Arquitectura: Posiciones dictadas por C#, Tooltip Port estático.
   ============================================================================= */

/* 1. CONTENEDOR PRINCIPAL */
.equipment-container[b-ksteybi8tj] {
    position: absolute;
    cursor: grab;
    display: flex;
    justify-content: center;
    align-items: center;
    outline: none;
    user-select: none;
    transition: filter 0.2s ease;
}

    .equipment-container:hover[b-ksteybi8tj],
    .equipment-container:focus-within[b-ksteybi8tj] {
        z-index: 5000 !important;
    }

    .equipment-container:active[b-ksteybi8tj] {
        cursor: grabbing;
    }

    /* 🎯 TRUCO UX: Si el mouse está sobre un puerto, el tooltip grande desaparece instantáneamente */
    .equipment-container:has(.port:hover) .equipment-tooltip[b-ksteybi8tj] {
        opacity: 0 !important;
        visibility: hidden !important;
        pointer-events: none !important;
        transition: none !important;
    }

/* 2. CAPA DE GRÁFICOS (LA QUE ROTA) */
.equipment-graphics-rotate[b-ksteybi8tj] {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    transform-origin: center center;
    will-change: transform;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    border-radius: 2px;
}

/* 3. ETIQUETA DEL EQUIPO (NOMBRE) */
.equipment-label[b-ksteybi8tj] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    padding: 2px 8px;
    background-color: #FFFFFF;
    color: #2D3748;
    font-size: 0.7rem;
    font-weight: 800;
    border: 1px solid #E2E8F0;
    border-radius: 4px;
    pointer-events: none;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    white-space: nowrap;
    z-index: 10;
}

/* 4. MINI TOOLBAR (GIRO / ESPEJO) */
.mini-toolbar[b-ksteybi8tj] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 12px;
    opacity: 0;
    visibility: hidden;
    transition: all 0.2s ease;
    z-index: 100;
}

.equipment-container:hover .mini-toolbar[b-ksteybi8tj] {
    opacity: 1;
    visibility: visible;
}

.mini-toolbar button[b-ksteybi8tj] {
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 18px;
    color: #4A5568;
    padding: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.2s ease, transform 0.1s ease;
    position: relative;
}

    /* El nuevo Tooltip elegante */
    .mini-toolbar button[b-ksteybi8tj]::after {
        content: attr(data-title);
        position: absolute;
        bottom: calc(100% + 2px);
        left: 50%;
        transform: translateX(-50%);
        background-color: #F8FAFC;
        color: #4A5568;
        font-family: 'Consolas', monospace;
        font-size: 0.65rem;
        font-weight: 700;
        padding: 4px 8px;
        border: 1px solid #E2E8F0;
        border-radius: 4px;
        white-space: nowrap;
        pointer-events: none;
        box-shadow: 2px 2px 5px rgba(0,0,0,0.06);
        z-index: 10000;
        opacity: 0;
        visibility: hidden;
        transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
    }

    .mini-toolbar button:hover[b-ksteybi8tj]::after {
        opacity: 1;
        visibility: visible;
    }

/* 5. TOOLTIP (EXPANSIÓN) */
.equipment-tooltip[b-ksteybi8tj] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    background: #FFFFFF !important;
    opacity: 1 !important;
    color: #2D3748;
    padding: 12px;
    border-radius: 8px;
    font-size: 0.75rem;
    z-index: 4000;
    pointer-events: none;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.2);
    border: 1px solid #E2E8F0;
    border-top: 4px solid #4299E1;
    min-width: 185px;
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

.tooltip-header[b-ksteybi8tj] {
    font-weight: 900;
    margin-bottom: 8px;
    text-transform: uppercase;
    border-bottom: 1px solid #F1F5F9;
    padding-bottom: 6px;
}

.tooltip-row[b-ksteybi8tj] {
    display: flex;
    justify-content: space-between;
    align-items: center; /* 🚩 Centrado vertical perfecto */
    gap: 16px; /* Reducimos el gap para un look más compacto */
    margin-bottom: 6px;
}

    .tooltip-row .label[b-ksteybi8tj] {
        color: #718096;
        font-weight: 600;
        white-space: nowrap; /* 🚩 Evita que la etiqueta se parta */
    }

    .tooltip-row .value[b-ksteybi8tj] {
        color: #2B6CB0;
        font-family: 'Consolas', monospace;
        font-weight: 700;
        text-align: right; /* Mantiene los valores alineados a la derecha */
        white-space: nowrap; /* 🚩 Evita que "<Not Defined>" salte a otra línea */
    }

/* 6. PUERTOS DE CONEXIÓN (ACTUALIZADO FASE 2) */
.connection-ports[b-ksteybi8tj] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease;
}

    /* 🚩 LA CLAVE: Solo se vuelven visibles si el Manager activa el modo conexión */
    .connection-ports.connection-mode[b-ksteybi8tj] {
        opacity: 1;
    }

.port[b-ksteybi8tj] {
    position: absolute;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    z-index: 9999;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
    opacity: 0;
}

/* 🚩 SOLO LOS LIBRES: Brillan y aceptan clics cuando Ctrl está oprimido */
.connection-ports.connection-mode .port.port-free[b-ksteybi8tj] {
    opacity: 1;
    pointer-events: auto;
    cursor: crosshair;
    background: #10B981; /* Verde esmeralda */
    border: 2px solid #FFFFFF;
    box-shadow: 0 0 12px 3px rgba(16, 185, 129, 0.6);
    transform: translate(-50%, -50%) scale(1.1);
}

/* Los ocupados se quedan casi transparentes para no estorbar */
.connection-ports.connection-mode .port.port-connected[b-ksteybi8tj] {
    opacity: 0.15;
    background: #6B7280;
    border: 1px solid #9CA3AF;
    pointer-events: none;
}

/* 7. TOOLTIP DEL PUERTO (ESTÁTICO, NO ROTA) */
.port-tooltip-fixed[b-ksteybi8tj] {
    position: absolute;
    background-color: #F8FAFC;
    color: #4A5568;
    font-family: 'Consolas', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 3px 6px;
    border: 1px solid #E2E8F0;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
    box-shadow: 2px 2px 5px rgba(0,0,0,0.06);
    z-index: 10000;
    max-width: 110px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 8. ESTADO SELECCIONADO */
.equipment-container.selected .equipment-graphics-rotate[b-ksteybi8tj] {
    filter: drop-shadow(0 0 4px rgba(14, 165, 233, 0.5));
    outline: 1.5px dashed #0EA5E9;
    outline-offset: 6px;
    border-radius: 1px;
}
/* Agrega esto a tus clases de puertos */
.connection-ports.connection-mode .port.port-valid-target[b-ksteybi8tj] {
    opacity: 1;
    pointer-events: auto;
    cursor: pointer;
    background: #00D26A; /* Verde brillante */
    border: 2px solid #FFFFFF;
    box-shadow: 0 0 18px 6px rgba(0, 210, 106, 0.8);
    transform: translate(-50%, -50%) scale(1.4);
    animation: glow-target-b-ksteybi8tj 1.2s ease-in-out infinite alternate;
}
/*Nuevos*/







/* ─────────────────────────────────────────────────────────
   ETAPA 2: Feedback Guiado (Origen, Válidos, Inválidos)
   ───────────────────────────────────────────────────────── */

/* Origen seleccionado: Fijo y destacado */
.connection-ports.connection-mode .port.port-source[b-ksteybi8tj] {
    opacity: 1;
    background: #0EA5E9; /* Azul eléctrico */
    border: 2px solid #FFFFFF;
    box-shadow: 0 0 15px 4px rgba(14, 165, 233, 0.7);
    transform: translate(-50%, -50%) scale(1.3);
    pointer-events: none; /* Ya no es clickeable */
    animation: pulse-source-b-ksteybi8tj 1.5s infinite;
}

/* Destinos válidos: Brillan intensamente invitando al clic */


/* Puertos inválidos en Etapa 2: Se atenúan fuertemente */
.connection-ports.connection-mode .port.port-dimmed[b-ksteybi8tj] {
    opacity: 0.1;
    background: #6B7280;
    border: 1px solid #9CA3AF;
    pointer-events: none; /* No aceptan clic */
    transform: translate(-50%, -50%) scale(0.8);
    filter: grayscale(100%);
}

/* ─────────────────────────────────────────────────────────
   ANIMACIONES
   ───────────────────────────────────────────────────────── */

@keyframes pulse-source-b-ksteybi8tj {
    0%, 100% {
        box-shadow: 0 0 15px 4px rgba(14, 165, 233, 0.7);
    }

    50% {
        box-shadow: 0 0 20px 6px rgba(14, 165, 233, 0.9);
    }
}

@keyframes glow-target-b-ksteybi8tj {
    from {
        box-shadow: 0 0 15px 5px rgba(0, 210, 106, 0.7);
    }

    to {
        box-shadow: 0 0 22px 8px rgba(0, 210, 106, 0.95);
    }
}
/**nuevo aqui*/
/* 5. TOOLTIP (EXPANSIÓN) */






    

    
/* /Layout/Shapes/CanvasPipeWrapper.razor.rz.scp.css */
/* Hitbox para doble clic */
.pipe-hitbox[b-0cw9g7dn86] {
    cursor: pointer;
    pointer-events: stroke;
}

    .pipe-hitbox:hover ~ path[stroke="#1F2937"][b-0cw9g7dn86] {
        stroke: #0EA5E9; /* Azul eléctrico en hover */
        stroke-width: 2;
    }

    .pipe-hitbox:hover ~ .pipe-label-group .pipe-label-bg[b-0cw9g7dn86] {
        stroke: #0EA5E9;
    }

/* Animación del borrador */
@keyframes flowDash-b-0cw9g7dn86 {
    to {
        stroke-dashoffset: -20;
    }
}

.draft-pipe[b-0cw9g7dn86] {
    animation: flowDash-b-0cw9g7dn86 0.8s linear infinite;
    pointer-events: none;
}

/* Leyenda Técnica */
.pipe-label-group[b-0cw9g7dn86] {
    cursor: pointer;
}

.pipe-label-bg[b-0cw9g7dn86] {
    fill: #F8FAFC; /* Mismo fondo de las tarjetas */
    stroke: #E2E8F0;
    stroke-width: 1;
    transition: stroke 0.2s ease;
}

.pipe-label-text[b-0cw9g7dn86] {
    font-family: 'Consolas', monospace;
    font-size: 10px;
    font-weight: 700;
    fill: #4A5568;
    text-anchor: middle;
    pointer-events: none;
}
/* /Layout/Shapes/ColumnElement.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: COLUMN UI (TORRE DE DESTILACIÓN)
   ========================================= */

.column-svg[b-4oeywpcz0f] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2)); /* Sombra técnica */
    transition: transform 0.2s ease-out;
}

    /* Animación sutil al hacer hover sobre la columna */
    .column-svg:hover[b-4oeywpcz0f] {
        transform: scale(1.02);
    }

.column-dynamic-fill[b-4oeywpcz0f] {
    /* Transición suave para cambios de estado (idéntica a la bomba) */
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.column-part[b-4oeywpcz0f] {
    pointer-events: none; /* Dejamos que el wrapper maneje los clics */
}

/* Detalles específicos de la torre */
.column-plates[b-4oeywpcz0f] {
    stroke: #334155;
    stroke-width: 1px;
    opacity: 0.3;
}

.column-nozzle[b-4oeywpcz0f] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .column-nozzle[b-4oeywpcz0f] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/ControlValveUI.razor.rz.scp.css */
.cv-svg[b-06pokvptiz] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .cv-svg:hover[b-06pokvptiz] {
        transform: scale(1.05);
    }

.cv-dynamic-fill[b-06pokvptiz] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.cv-part[b-06pokvptiz] {
    pointer-events: none;
    stroke: #334155;
    stroke-width: 1.5px;
}

.cv-nozzle[b-06pokvptiz] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
}
/* /Layout/Shapes/FlashTankUI.razor.rz.scp.css */
.flash-svg[b-5j3wvxr4u6] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 6px rgba(0, 0, 0, 0.25));
}

.flash-nozzle[b-5j3wvxr4u6] {
    fill: #94A3B8; /* Gris metálico de las boquillas */
    stroke: #334155;
    stroke-width: 1.2px;
    pointer-events: none;
}

/* El líquido tiene una transición suave si llegamos a animar el nivel */
.flash-liquid[b-5j3wvxr4u6] {
    transition: height 0.6s ease-in-out, y 0.6s ease-in-out;
}
/* /Layout/Shapes/HeatExchangerUI.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: HEAT EXCHANGER UI
   ========================================= */

.hx-svg[b-c7a6bg6yec] {
    display: block;
    overflow: visible; /* Vital para que las boquillas no se corten */
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .hx-svg:hover[b-c7a6bg6yec] {
        transform: scale(1.02);
    }

.hx-dynamic-fill[b-c7a6bg6yec] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.hx-part[b-c7a6bg6yec] {
    pointer-events: none;
}

/* Detalles internos: líneas de los tubos y deflectores (baffles) */
.hx-internals[b-c7a6bg6yec] {
    stroke: #334155;
    stroke-width: 1px;
    opacity: 0.35;
}

/* Boquillas metálicas */
.hx-nozzle[b-c7a6bg6yec] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .hx-nozzle[b-c7a6bg6yec] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/InstrumentUI.razor.rz.scp.css */
.inst-svg[b-wm6vkex6xl] {
    overflow: visible;
    cursor: pointer;
    filter: drop-shadow(0px 2px 3px rgba(0,0,0,0.15));
}

.inst-circle[b-wm6vkex6xl] {
    fill: white;
    stroke: #334155;
    stroke-width: 1.5px;
    transition: fill 0.3s;
}

.inst-container:hover .inst-circle[b-wm6vkex6xl] {
    fill: #F8FAFC;
}

.inst-tag-text[b-wm6vkex6xl] {
    font-size: 8px;
    font-weight: bold;
    fill: #334155;
    text-anchor: middle;

    pointer-events: none;
}

.inst-value-label[b-wm6vkex6xl] {
    font-size: 10px;
    fill: #1E40AF; /* Azul oscuro informativo */
    font-weight: 700;
    text-anchor: start;
}

.inst-stem[b-wm6vkex6xl] {
    stroke: #334155;
    stroke-width: 1.2px;
}
/* /Layout/Shapes/MaterialStreamElement.razor.rz.scp.css */
.stream-svg[b-nkjf9ju14y] {
    overflow: visible;
    /* Sombra técnica proyectada */
    filter: drop-shadow(0px 3px 4px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-in-out;
    cursor: pointer;
}

    /* Feedback visual al pasar el mouse */
    .stream-svg:hover[b-nkjf9ju14y] {
        transform: scale(1.05);
        filter: drop-shadow(0px 5px 6px rgba(0, 0, 0, 0.25));
    }

.stream-dynamic-fill[b-nkjf9ju14y] {
    /* Transición suave para cuando cambia la fase del fluido (ej. de líquido a vapor) */
    transition: stroke 0.5s ease, fill 0.5s ease;
}
/* /Layout/Shapes/MixerUI.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: MIXER UI
   ========================================= */

.mix-svg[b-qwwdk782ak] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .mix-svg:hover[b-qwwdk782ak] {
        transform: scale(1.02);
    }

.mix-dynamic-fill[b-qwwdk782ak] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.mix-part[b-qwwdk782ak] {
    pointer-events: none;
}

.mix-nozzle[b-qwwdk782ak] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .mix-nozzle[b-qwwdk782ak] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/OffPageConnectorUI.razor.rz.scp.css */
/* OffPageConnectorUI.razor.css */
.opc-svg[b-54jwthxsx9] {
    cursor: pointer;
    transition: transform 0.1s ease-in-out;
}

    .opc-svg:hover[b-54jwthxsx9] {
        transform: scale(1.05); /* Pequeño feedback visual de que es clickeable */
    }
/* /Layout/Shapes/PlateExchangerUI.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: PLATE EXCHANGER UI
   ========================================= */

.phe-svg[b-cdffwbk581] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .phe-svg:hover[b-cdffwbk581] {
        transform: scale(1.02);
    }

.phe-dynamic-fill[b-cdffwbk581] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.phe-part[b-cdffwbk581] {
    pointer-events: none;
}

.phe-internals[b-cdffwbk581] {
    stroke: #334155;
    stroke-width: 1px;
    opacity: 0.4;
}

.phe-flow-lines[b-cdffwbk581] {
    stroke: #334155;
    stroke-width: 1.5px;
    stroke-dasharray: 4, 3; /* Línea punteada para la "X" de flujo */
    opacity: 0.6;
}

.phe-nozzle[b-cdffwbk581] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .phe-nozzle[b-cdffwbk581] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/PumpElement.razor.rz.scp.css */
.pump-svg[b-zhop2io0rs] {
    display: block;
    overflow: visible;
    /* Sombra técnica más profunda */
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    /* Animación sutil al hacer hover sobre la bomba específicamente */
    .pump-svg:hover[b-zhop2io0rs] {
        transform: scale(1.02);
    }

.pump-dynamic-fill[b-zhop2io0rs] {
    /* Transición suave para cambios de estado de la simulación */
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Mejoramos la visibilidad de las partes del SVG */
.pump-part[b-zhop2io0rs] {
    pointer-events: none; /* Dejamos que el wrapper maneje los clics */
}
/* /Layout/Shapes/ReboilerUI.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: REBOILER UI
   ========================================= */

.reb-svg[b-gppre26uvx] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .reb-svg:hover[b-gppre26uvx] {
        transform: scale(1.02);
    }

.reb-dynamic-fill[b-gppre26uvx] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.reb-part[b-gppre26uvx] {
    pointer-events: none;
}

.reb-internals[b-gppre26uvx] {
    stroke: #334155;
    stroke-width: 1.5px;
    opacity: 0.35;
}

.reb-nozzle[b-gppre26uvx] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .reb-nozzle[b-gppre26uvx] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/SplitterUI.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: SPLITTER UI
   ========================================= */

.spl-svg[b-z3uwijahti] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.2));
    transition: transform 0.2s ease-out;
}

    .spl-svg:hover[b-z3uwijahti] {
        transform: scale(1.02);
    }

.spl-dynamic-fill[b-z3uwijahti] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.spl-part[b-z3uwijahti] {
    pointer-events: none;
}

.spl-nozzle[b-z3uwijahti] {
    fill: #94A3B8;
    stroke: #334155;
    stroke-width: 1.2px;
    transition: filter 0.2s;
}

.equipment-container:hover .spl-nozzle[b-z3uwijahti] {
    filter: brightness(1.1);
}
/* /Layout/Shapes/SVGDrawings/ControlValveSvg.razor.rz.scp.css */
/* =================================================================
   ControlValveSvg.razor.css
   ================================================================= */

/* Transición suave para los cambios de estado (Gris -> Naranja -> Azul -> Verde) */
.cv-dynamic-fill[b-wb7aaor0bl] {
    transition: fill 0.3s ease-in-out;
}

/* Transición para los bordes y trazos */
.cv-part[b-wb7aaor0bl] {
    transition: all 0.2s ease-in-out;
}

/* Evitamos que el usuario seleccione las partes del SVG por accidente */
.cv-svg[b-wb7aaor0bl] {
    user-select: none;
    -webkit-user-select: none;
    overflow: visible;
}

    /* Un ligero feedback visual al pasar el ratón (opcional, el Wrapper ya hace algo de esto) */
    .cv-svg:hover .cv-dynamic-fill[b-wb7aaor0bl] {
        filter: brightness(0.95);
    }
/* /Layout/Shapes/SVGDrawings/MixerSvg.razor.rz.scp.css */
body[b-h7bci6b0ps] {
}
/* /Layout/Shapes/SVGDrawings/OffPageConnectorSvg.razor.rz.scp.css */
/* =================================================
   OffPageConnectorSvg.razor.css
   Estilos visuales para los portales (OPC)
   ================================================= */

.opc-container[b-wst2i919r5] {
    display: block;
    max-width: 100%;
    height: auto;
    /* 🚩 CLAVE: Evita que el usuario seleccione el texto "?" o "Area..." 
       accidentalmente al hacer doble clic o arrastrar */
    user-select: none;
    -webkit-user-select: none;
    overflow: visible;
}

/* Transiciones suaves para los bordes y colores */
.opc-body[b-wst2i919r5], .opc-port[b-wst2i919r5] {
    transition: all 0.2s ease-in-out;
}

/* Un ligero brillo al pasar el ratón para dar feedback visual */
.opc-container:hover .opc-body[b-wst2i919r5] {
    filter: brightness(0.96);
}

/* Que el clic siempre lo reciba la flecha, no el texto */
.opc-label[b-wst2i919r5] {
    pointer-events: none;
}
/* /Layout/Shapes/SVGDrawings/PumpSvg.razor.rz.scp.css */
/* =================================================
   PumpSvg.razor.css
   Estilos visuales del dibujo de la bomba
   ================================================= */

svg[b-f43l7mxsee] {
    /* Asegura que el SVG no deje espacios raros debajo y se adapte a su contenedor */
    display: block;
    max-width: 100%;
    height: auto;
    /* Un sombreado sutil para que el equipo "flote" un poco sobre el lienzo/diálogo */
    filter: drop-shadow(0px 4px 6px rgba(0, 0, 0, 0.08));
}

/* Transiciones suaves para cuando el equipo cambie de StatusColor (Ej: Verde a Rojo) */
.pump-part[b-f43l7mxsee] {
    transition: fill 0.3s ease-in-out, stroke 0.3s ease-in-out;
}

.pump-dynamic-fill[b-f43l7mxsee] {
    transition: fill 0.3s ease-in-out;
}

/* Efecto hover opcional: si quieres que el equipo brille un poco al pasar el mouse en el lienzo */
svg:hover .pump-dynamic-fill[b-f43l7mxsee] {
    filter: brightness(1.05);
}
/* /Layout/Shapes/VesselUI.razor.rz.scp.css */
.vessel-svg[b-6bmd3ms7ko] {
    display: block;
    overflow: visible;
    filter: drop-shadow(0px 4px 6px rgba(0, 0, 0, 0.25)); /* Sombra industrial consistente */
}

/* Transición suave cuando el tanque cambia de color (ej. alarma o estado) */
.vessel-dynamic-fill[b-6bmd3ms7ko] {
    transition: fill 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* El borde oscuro metálico exterior */
.vessel-border[b-6bmd3ms7ko] {
    stroke: #334155;
    stroke-width: 1.5px;
    pointer-events: none; /* Deja pasar los clics hacia el envoltorio */
}

/* Las conexiones de las tuberías */
.vessel-nozzle[b-6bmd3ms7ko] {
    fill: #CBD5E0;
    stroke: #334155;
    stroke-width: 1.5px;
    pointer-events: none;
}
/* /Pages/Configuration/SolverConfigurationDialog.razor.rz.scp.css */
body[b-dg3li78rwz] {
}
/* /Pages/Helpers/DynamicPortList.razor.rz.scp.css */
.port-list-container[b-rt8xabki0z] {
    display: flex;
    flex-direction: column;
    gap: 16px; /* Aumentamos el espacio para que respire */
}

.dynamic-port-item[b-rt8xabki0z] {
    display: flex;
    align-items: center; /* Alineación vertical perfecta */
    gap: 12px;
    width: 100%;
}

.port-connector-wrapper[b-rt8xabki0z] {
    flex: 1; /* El conector ocupa el espacio principal */
}

.port-extra-content[b-rt8xabki0z] {
    flex: 0 0 120px; /* El espacio para el porcentaje es fijo y preciso */
    display: flex;
    align-items: center;
}
/* /Pages/Home.razor.rz.scp.css */
/* =========================================
   SCOPED CSS: HOME (SISTEMA DE PESTAÑAS)
   ========================================= */

.area-tabs-container[b-mlpx6l4j4s] {
    display: flex;
    align-items: flex-end;
    background-color: #CBD5E1;
    padding: 6px 6px 0 6px;
    gap: 4px;
    height: 40px;
    /* 🚩 PUNTO 7 (A): Empujamos las pestañas a la derecha */
    padding-left: 175px;
}

.area-tab[b-mlpx6l4j4s] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    background-color: #E2E8F0; /* Color inactivo */
    color: #475569;
    border-radius: 6px 6px 0 0;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 500;
    transition: transform 0.2s, background-color 0.2s, opacity 0.2s;
    min-width: 100px;
    max-width: 200px;
}

    .area-tab:hover[b-mlpx6l4j4s] {
        background-color: #F1F5F9;
    }

    /* Pestaña Activa (Se funde con el color del Canvas) */
    .area-tab.active[b-mlpx6l4j4s] {
        background-color: #E2E8F0;
        color: #0F172A;
        font-weight: 700;
        box-shadow: 0 -2px 5px rgba(0,0,0,0.05);
    }



/* Input para cuando haces doble clic para renombrar */
.tab-rename-input[b-mlpx6l4j4s] {
    border: 1px solid #3B82F6;
    border-radius: 4px;
    padding: 2px 4px;
    font-size: 0.85rem;
    font-family: inherit;
    outline: none;
    width: 100%;
}

/* Botón de cerrar pestaña (X) */
.delete-tab-btn[b-mlpx6l4j4s] {
    background: transparent;
    border: none;
    color: #94A3B8;
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
    border-radius: 4px;
}

    .delete-tab-btn:hover[b-mlpx6l4j4s] {
        color: #EF4444; /* Alerta en rojo al pasar el mouse */
        background-color: #FEE2E2;
    }

/* Botón de agregar pestaña (+) */
.add-tab-btn[b-mlpx6l4j4s] {
    background: transparent;
    border: none;
    color: #475569;
    font-size: 1.5rem;
    cursor: pointer;
    padding: 0 12px;
    line-height: 1;
}

    .add-tab-btn:hover[b-mlpx6l4j4s] {
        color: #0F172A;
    }
/* ... (mismo contenido anterior) ... */



    /* Estado mientras se arrastra la pestaña */
    .area-tab.dragging[b-mlpx6l4j4s] {
        opacity: 0.4;
        cursor: move;
        background-color: #94A3B8;
    }

    /* Indicador de que una pestaña puede recibir el drop */
    .area-tab:not(.dragging):hover[b-mlpx6l4j4s] {
        background-color: #F1F5F9;
        border-bottom: 2px solid #3B82F6; /* Línea de guía visual */
    }

.tab-title[b-mlpx6l4j4s] {
    pointer-events: none; /* Evita que el texto interfiera con el drag del div padre */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    user-select: none;
}
/**nuevo*/
/* --- Home.razor.css --- */



/* Y EN TU PFD CANVAS CSS (PfdCanvas.razor.css) */
.pfd-workspace[b-mlpx6l4j4s] {
    position: relative;
    width: 100%; /* Volvemos al 100% */
    height: 85vh;
    background-color: #E2E8F0;
    overflow: hidden;
    outline: none;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.02);
    cursor: grab;
}
/* /Pages/UnitOperations/Columns/ColumnDialog.razor.rz.scp.css */
.column-canvas-layout[b-7mb3nbbion] {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    min-height: 450px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px;
    overflow-x: auto;
}

/* Zonas laterales */
.port-zone[b-7mb3nbbion] {
    flex: 1 1 250px;
    display: flex;
    flex-direction: column;
}

.left-zone[b-7mb3nbbion] {
    justify-content: center;
    padding-right: 20px;
}

.right-zone[b-7mb3nbbion] {
    justify-content: space-between; /* Espacia Reflux, SideDraws y Reboiler */
    padding-left: 20px;
}

/* Zona Central (Destilación) */
.center-zone[b-7mb3nbbion] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
}

.equipment-drawing-zone[b-7mb3nbbion] {
    margin: 10px 0;
}

/* Contenedores de puertos estáticos */
.static-port-container[b-7mb3nbbion] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.static-right-port[b-7mb3nbbion] {
    display: flex;
    flex-direction: column;
    align-items: flex-end; /* Alinea a la derecha para que se pegue al borde */
    gap: 4px;
    margin: 10px 0;
}

.side-draws-container[b-7mb3nbbion] {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Etiquetas minimalistas */
.port-label[b-7mb3nbbion] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #64748b;
    letter-spacing: 0.05em;
}
/* /Pages/UnitOperations/DialogBase/EquipmentBaseCompositionGrid.razor.rz.scp.css */
/* =================================================
   EquipmentBaseComposition.razor.css
   Estilo Industrial Minimalista (Colgate-Palmolive)
   ================================================= */
.scrollable-container[b-q8d7292r6n] {
    overflow: auto;
    max-height: 500px;
    border: 1px solid var(--border-color, #b0b0b0);
    border-radius: 4px;
    background: #ffffff;
}

.data-grid.composition-grid[b-q8d7292r6n] {
    display: grid;
    grid-auto-rows: minmax(28px, auto);
    gap: 0;
    width: 100%;
    background-color: var(--border-color, #b0b0b0);
}

.grid-header[b-q8d7292r6n] {
    background-color: var(--header-bg, #e4e4e4) !important;
    font-weight: 600;
    color: #333333;
    padding: 6px 8px;
    border-bottom: 1px solid #999999;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    font-size: 12px;
}

/* ==================== CELDAS Y ETIQUETAS FIJAS ==================== */

.sticky-col-1[b-q8d7292r6n] {
    position: sticky;
    left: 0;
    z-index: 15;
    background-color: #ffffff !important;
    border-right: 1px solid #cccccc !important;
}

.sticky-col-2[b-q8d7292r6n] {
    position: sticky;
    left: 140px;
    z-index: 15;
    background-color: var(--label-bg, #f5f5f5) !important;
    border-right: 2px solid #888888 !important;
}

.sticky-header[b-q8d7292r6n] {
    position: sticky;
    top: 0;
    z-index: 40 !important;
    background-color: var(--header-bg, #e4e4e4) !important;
}

.port-header[b-q8d7292r6n] {
    position: sticky;
    top: 0;
    z-index: 20;
    border-right: 1px solid var(--border-color, #b0b0b0);
}

.sticky-header-filler[b-q8d7292r6n] {
    position: sticky;
    top: 0;
    z-index: 20;
}

.grid-cell[b-q8d7292r6n] {
    padding: 0;
    border-bottom: 1px solid var(--border-color, #b0b0b0);
    display: flex;
    align-items: center;
    font-size: 12px;
    background-color: #ffffff;
    border-right: 1px solid var(--border-color, #b0b0b0);
}

    .grid-cell.component-name[b-q8d7292r6n] {
        font-weight: 700;
        color: #222222;
        justify-content: center;
        text-align: center;
        padding: 4px 8px;
    }

    .grid-cell.label[b-q8d7292r6n] {
        color: #444444;
        font-weight: 500;
        padding: 4px 8px;
    }

        .grid-cell.label.special-gl[b-q8d7292r6n] {
            background-color: #e3f2fd !important;
            color: #0d47a1;
            font-weight: 600;
        }

    .grid-cell.value[b-q8d7292r6n] {
        justify-content: flex-end;
        font-family: 'Consolas', 'Courier New', monospace;
        position: relative;
    }

.readonly-value[b-q8d7292r6n] {
    user-select: all;
    padding: 4px 8px;
    width: 100%;
    text-align: right;
}

.editable-cell input[b-q8d7292r6n] {
    width: 100%;
    height: 100%;
    border: none;
    background: transparent;
    text-align: right;
    font-family: 'Consolas', 'Courier New', monospace;
    font-size: 12px;
    padding: 4px 8px;
    outline: none;
    color: #0056b3;
}

    .editable-cell input:focus[b-q8d7292r6n] {
        background-color: #f0f8ff;
        box-shadow: inset 0 0 0 1px #0056b3;
    }

    .editable-cell input[b-q8d7292r6n]::placeholder {
        color: #aaa;
        font-style: italic;
    }

    .editable-cell input[b-q8d7292r6n]::-webkit-outer-spin-button,
    .editable-cell input[b-q8d7292r6n]::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

/* ==================== ESTADOS SEMÁNTICOS (data-state) ==================== */

.grid-cell.value[data-state="editable"][b-q8d7292r6n] {
    background-color: #ffffff;
}

    .grid-cell.value[data-state="editable"]:hover[b-q8d7292r6n] {
        background-color: #fdfdfd;
        cursor: text;
    }

.grid-cell.value[data-state="calculated"][b-q8d7292r6n], .grid-cell.value.calculated[b-q8d7292r6n] {
    background-color: #fafafa;
    color: #666666;
}

.grid-cell.value[data-state="blocked"][b-q8d7292r6n] {
    background-color: #e9ecef;
    color: #adb5bd;
    cursor: not-allowed;
}

.grid-cell.value[data-state="empty"][b-q8d7292r6n], .grid-cell.value.empty[b-q8d7292r6n] {
    background-color: #fffaf0;
}

.grid-cell.value.special-gl-value[b-q8d7292r6n] {
    background-color: #f8fbff;
}

    .grid-cell.value.special-gl-value[data-state="calculated"][b-q8d7292r6n] {
        background-color: #fafafa;
        color: #666666;
        user-select: none;
    }

/* ==================== RELLENO Y PUERTOS VACÍOS ==================== */

.empty-port-column[b-q8d7292r6n] {
    background-color: #f0f0f0;
}

.grid-header.filler[b-q8d7292r6n], .grid-cell.filler[b-q8d7292r6n] {
    border-right: none;
    background-color: #ffffff;
}

/* ==================== TOOLTIP CUSTOMIZADO ==================== */
.tooltip-text[b-q8d7292r6n] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 9999;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
}

    .tooltip-text[b-q8d7292r6n]::after {
        content: "";
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-q8d7292r6n] {
    visibility: visible;
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
/* /Pages/UnitOperations/DialogBase/EquipmentBaseDialog.razor.rz.scp.css */
/* ==================== VARIABLES Y CONTENEDOR PRINCIPAL ==================== */
.equipment-dialog[b-5sn0knk32r] {
    --border-color: #b0b0b0;
    --header-bg: #e4e4e4;
    --label-bg: #f5f5f5;
    --user-blue: #4674a6;
    --calc-black: #333333;
    --font-family: "Segoe UI", Arial, sans-serif;
    font-family: var(--font-family);
    font-size: 12px;
    width: fit-content;
    min-width: 480px;
    max-width: 95vw;
    border-radius: 4px;
    border: 1px solid #888888;
    background-color: #ffffff;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    overflow: hidden;
}

/* ==================== HEADER DEL DIÁLOGO (AZUL) ==================== */
.dialog-header[b-5sn0knk32r] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--user-blue);
    color: white;
    padding: 6px 12px;
    font-weight: bold;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom: 1px solid #2e4d6e;
    box-shadow: inset 0 2px 2px rgba(255, 255, 255, 0.3);
}

.dialog-title[b-5sn0knk32r] {
    font-weight: bold;
    letter-spacing: 0.3px;
}

.close-button[b-5sn0knk32r] {
    background: none;
    border: none;
    color: white;
    font-size: 14px;
    cursor: pointer;
    transition: color 0.2s;
}

    .close-button:hover[b-5sn0knk32r] {
        color: #ffcccc;
    }

/* ==================== TABS ==================== */
.tabs-header[b-5sn0knk32r] {
    display: flex;
    background-color: #f0f0f0;
    border-bottom: 1px solid var(--border-color);
    box-shadow: inset 0 1px 0 #ffffff, 0 2px 4px rgba(0,0,0,0.05);
}

.tab[b-5sn0knk32r] {
    padding: 6px 16px;
    cursor: pointer;
    border-right: 1px solid var(--border-color);
    color: #555;
    user-select: none;
    transition: background-color 0.2s;
}

    .tab:hover:not(.disabled)[b-5sn0knk32r] {
        background-color: #e8e8e8;
    }

    .tab.active[b-5sn0knk32r] {
        background-color: #ffffff;
        border-bottom: 2px solid var(--user-blue);
        font-weight: bold;
        color: #333;
    }

/* ==================== CONTENIDO DE TABS ==================== */
.tab-content[b-5sn0knk32r] {
    padding: 10px;
    flex-grow: 1;
    min-height: 480px;
    width: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

    .tab-content.active[b-5sn0knk32r] {
        display: block;
    }

/* ==================== LAYOUT TAB MAIN (DIBUJO + PROPIEDADES) ==================== */
.main-tab-container[b-5sn0knk32r] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    height: 100%;
}

.main-slot-container[b-5sn0knk32r] {
    border: 1px solid var(--border-color);
    border-radius: 4px;
    overflow: hidden;
    background-color: #f8fafc;
}

.properties-section[b-5sn0knk32r] {
    background-color: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 4px;
    padding: 12px;
}

.properties-title[b-5sn0knk32r] {
    font-size: 0.85rem;
    font-weight: 600;
    color: #334155;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: 0;
    margin-bottom: 0.8rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid #e2e8f0;
}

/* ==========================================================
   LA MAGIA: Grid de Propiedades Industrial 
   ========================================================== */
/* ==========================================================
   LA MAGIA: Grid de Propiedades Industrial 
   ========================================================== */
.properties-grid[b-5sn0knk32r] {
    display: flex;
    flex-direction: column;
    gap: -1px; /* Colapsa los bordes para tabla perfecta */
}

/* Apuntamos exactamente a nuestra nueva clase */
[b-5sn0knk32r] .properties-grid .property-row {
    display: grid;
    /* 🔥 EL TRUCO ESTÁ VIVO: 
       160px para el Label.
       1fr para el Input.
       80px vacíos a la derecha (Colchón para que el menú de unidades no choque con la pared) */
    grid-template-columns: 160px 1fr 80px;
    border: 1px solid var(--border-color);
    background-color: #fff;
    overflow: visible !important; /* Muerte a la guillotina */
}

    /* Limpiamos los bordes internos duplicados */
    [b-5sn0knk32r] .properties-grid .property-row .grid-cell {
        border-bottom: none !important;
    }

        /* El input está en la posición 2, le quitamos el borde derecho 
   para que se fusione visualmente con el colchón de 80px */
        [b-5sn0knk32r] .properties-grid .property-row .grid-cell:nth-child(2) {
            border-right: none !important;
        }

/* ==================== STATUS BAR ==================== */
.status-bar[b-5sn0knk32r] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    margin-top: 10px;
    border-radius: 4px;
    font-family: var(--font-family);
    font-size: 12px;
    font-weight: 500;
}

.status-text[b-5sn0knk32r] {
    font-weight: 600;
}
/* /Pages/UnitOperations/DialogBase/EquipmentBaseStreamFacade.razor.rz.scp.css */
.group-spacer[b-l5jebsgy5z] {
    background: transparent !important;
    border-right: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    min-height: 28px;
}
/* /Pages/UnitOperations/DialogBase/EquipmentBaseStreams.razor.rz.scp.css */
/* =================================================
   EquipmentBaseStreams.razor.css
   Estilo Industrial Minimalista (Colgate-Palmolive)
   ================================================= */
.scrollable-container[b-mf64h3f3dq] {
    overflow: auto;
    max-height: 450px;
    border: 1px solid var(--border-color, #b0b0b0);
    border-radius: 4px;
    background: #ffffff;
}

.data-grid.equipment-streams-grid[b-mf64h3f3dq] {
    display: grid;
    grid-auto-flow: column;
    /* Las 22 filas exactas de nuestra arquitectura */
    grid-template-rows: repeat(22, auto);
    /* 👇 La regla grid-template-columns se eliminó de aquí porque se inyecta dinámicamente */
    grid-auto-columns: minmax(180px, 1fr);
    gap: 0;
    width: 100%;
    background-color: var(--border-color, #b0b0b0);
}

.grid-header[b-mf64h3f3dq] {
    background-color: var(--header-bg, #e4e4e4) !important;
    font-weight: 600;
    color: #333333;
    padding: 4px 8px;
    border-right: 1px solid var(--border-color, #b0b0b0);
    border-bottom: 1px solid var(--border-color, #b0b0b0);
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    font-size: 12px;
}

/* =================================================
   CLASES PARA FIJAR LA PRIMERA COLUMNA (STICKY)
   ================================================= */
.fixed-col[b-mf64h3f3dq] {
    position: sticky;
    left: 0;
    z-index: 10;
    background-color: var(--label-bg, #f5f5f5) !important;
    border-right: 2px solid #888888 !important; /* Borde más fuerte para separar del scroll visualmente */
}

.header-corner[b-mf64h3f3dq] {
    position: sticky;
    top: 0;
    left: 0;
    z-index: 30; /* El nivel más alto para la esquina superior izquierda */
    border-right: 2px solid #888888 !important;
}

.port-header[b-mf64h3f3dq] {
    position: sticky;
    top: 0;
    z-index: 20; /* Fija los encabezados de los puertos arriba al hacer scroll vertical */
}

/* =================================================
   CELDAS DE ETIQUETAS
   ================================================= */
.grid-cell.label[b-mf64h3f3dq] {
    background-color: var(--label-bg, #f5f5f5) !important;
    color: #444444;
    padding: 0 8px;
    border-bottom: 1px solid var(--border-color, #b0b0b0);
    display: flex;
    align-items: center;
    min-height: 28px;
    font-size: 12px;
}

    .grid-cell.label.group-title[b-mf64h3f3dq] {
        background-color: #e8e8e8 !important;
        font-weight: 600 !important;
        color: #222222;
    }

/* =================================================
   COLUMNAS DE PUERTOS VACÍOS (SIN CONECTAR)
   ================================================= */
.empty-port-column[b-mf64h3f3dq] {
    background-color: #f9f9f9 !important;
    border-right: 1px solid var(--border-color, #b0b0b0);
    border-bottom: 1px solid var(--border-color, #b0b0b0);
    min-height: 28px;
}
/* /Pages/UnitOperations/DialogBase/EquipmentPortConnector.razor.rz.scp.css */
/* =================================================
   CONTENEDOR PRINCIPAL: Estilo "Floating Legend"
   ================================================= */
.port-connector-container[b-vzxinibkac] {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 220px;
    background: #ffffff;
    border: 1px solid #b0bec5;
    border-radius: 4px;
    padding: 10px 6px 6px 6px;
    margin-top: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.03);
    transition: border-color 0.2s;
}

    .port-connector-container:focus-within[b-vzxinibkac] {
        border-color: #4674a6;
    }

.material-theme[b-vzxinibkac]::before {
    content: '';
    position: absolute;
    left: -1px;
    top: -1px;
    bottom: -1px;
    width: 4px;
    background-color: #2563eb;
    border-radius: 4px 0 0 4px;
}

/* =================================================
   CABECERA
   ================================================= */
.connector-header[b-vzxinibkac] {
    position: absolute;
    top: -9px;
    left: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    background: #ffffff;
    padding: 0 4px;
    z-index: 2;
}

.port-label[b-vzxinibkac] {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: #455a64;
    letter-spacing: 0.5px;
}

.status-badge[b-vzxinibkac] {
    font-size: 9px;
    padding: 1px 6px;
    border-radius: 12px;
    background: #10b981;
    color: white;
    text-transform: uppercase;
    font-weight: bold;
}

/* =================================================
   GRUPO DE ENTRADA Y BOTONES DE ACCIÓN
   ================================================= */
.input-group[b-vzxinibkac] {
    position: relative;
    display: flex;
    align-items: center;
    background: #fdfdfd;
    border: 1px solid #e0e0e0;
    border-radius: 3px;
    overflow: visible;
}

.port-input[b-vzxinibkac] {
    flex: 1;
    border: none;
    background: transparent;
    font-size: 13px;
    padding: 5px 8px;
    outline: none;
    color: #333;
    font-family: 'Consolas', monospace;
    min-width: 0;
}

    .port-input[b-vzxinibkac]::-webkit-calendar-picker-indicator {
        display: none !important;
    }

.btn-tooltip-container[b-vzxinibkac] {
    position: relative;
    display: flex;
    align-items: center;
}

/* Estilo base para todos los botones de acción */
.action-btn[b-vzxinibkac] {
    background: none;
    border: none;
    border-left: 1px solid #e0e0e0;
    padding: 2px 8px;
    height: 24px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
}

/* Variaciones de color según el estado (Semántica Visual) */
/* 1. Botón + (Autogenerar) */
.generate-btn[b-vzxinibkac] {
    color: #4674a6;
}

    .generate-btn:hover[b-vzxinibkac] {
        background: #f1f5f9;
        color: #2563eb;
    }

/* 2. Botón ✓ (Confirmar) */
.confirm-btn[b-vzxinibkac] {
    color: #10b981; /* Verde esmeralda */
}

    .confirm-btn:hover[b-vzxinibkac] {
        background: #ecfdf5;
        color: #059669;
    }

/* 3. Botón X (Desconectar) */
.disconnect-btn[b-vzxinibkac] {
    color: #ef4444; /* Rojo alerta */
}

    .disconnect-btn:hover[b-vzxinibkac] {
        background: #fef2f2;
        color: #dc2626;
    }

/* =================================================
   TOOLTIP PERSONALIZADO
   ================================================= */
.port-tooltip-fixed[b-vzxinibkac] {
    position: absolute;
    left: calc(100% + 12px);
    top: 50%;
    transform: translateY(-50%);
    background-color: #F8FAFC;
    color: #4A5568;
    font-family: 'Consolas', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 3px 6px;
    border: 1px solid #E2E8F0;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
    box-shadow: 4px 4px 12px rgba(0,0,0,0.08);
    z-index: 10000 !important;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.15s ease-in-out;
}

    .port-tooltip-fixed[b-vzxinibkac]::after {
        content: "";
        position: absolute;
        top: 50%;
        right: 100%;
        transform: translateY(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: transparent #E2E8F0 transparent transparent;
    }

.btn-tooltip-container:hover .port-tooltip-fixed[b-vzxinibkac] {
    opacity: 1;
    visibility: visible;
}
/* /Pages/UnitOperations/DialogBase/NewEquipmentBaseCompositionGrid.razor.rz.scp.css */
/* =================================================
   EquipmentBaseComposition.razor.css
   Estilo Industrial Minimalista (Colgate-Palmolive)
   ================================================= */
.scrollable-container[b-kgrrl2908s] {
    overflow: auto;
    max-height: 500px;
    border: 1px solid var(--border-color, #b0b0b0);
    border-radius: 4px;
    background: #ffffff;
}

.data-grid.composition-grid[b-kgrrl2908s] {
    display: grid;
    grid-auto-rows: minmax(28px, auto);
    gap: 0;
    width: 100%;
    background-color: var(--border-color, #b0b0b0);
}

.grid-header[b-kgrrl2908s] {
    background-color: var(--header-bg, #e4e4e4) !important;
    font-weight: 600;
    color: #333333;
    padding: 6px 8px;
    border-bottom: 1px solid #999999;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    font-size: 12px;
}

/* ==================== CELDAS Y ETIQUETAS FIJAS ==================== */

/* Columna 1: Component Name */
.sticky-col-1[b-kgrrl2908s] {
    position: sticky;
    left: 0;
    z-index: 15;
    background-color: #ffffff !important;
    border-right: 1px solid #cccccc !important;
}

/* Columna 2: Property (Mass, Mole, etc.) */
.sticky-col-2[b-kgrrl2908s] {
    position: sticky;
    left: 140px; /* Exactamente el ancho de la Columna 1 */
    z-index: 15;
    background-color: var(--label-bg, #f5f5f5) !important;
    border-right: 2px solid #888888 !important; /* Separador fuerte hacia los datos */
}

/* Esquinas de los Encabezados (Siempre por encima de todo) */
.sticky-header[b-kgrrl2908s] {
    position: sticky;
    top: 0;
    z-index: 40 !important;
    background-color: var(--header-bg, #e4e4e4) !important;
}

.port-header[b-kgrrl2908s] {
    position: sticky;
    top: 0;
    z-index: 20;
    border-right: 1px solid var(--border-color, #b0b0b0);
}

.sticky-header-filler[b-kgrrl2908s] {
    position: sticky;
    top: 0;
    z-index: 20;
}

.grid-cell[b-kgrrl2908s] {
    padding: 0; /* Quitamos padding para que el input ocupe el 100% */
    border-bottom: 1px solid var(--border-color, #b0b0b0);
    display: flex;
    align-items: center;
    font-size: 12px;
    background-color: #ffffff;
    border-right: 1px solid var(--border-color, #b0b0b0);
}

    .grid-cell.component-name[b-kgrrl2908s] {
        font-weight: 700;
        color: #222222;
        justify-content: center;
        text-align: center;
        padding: 4px 8px;
    }

    .grid-cell.label[b-kgrrl2908s] {
        color: #444444;
        font-weight: 500;
        padding: 4px 8px;
    }

        .grid-cell.label.special-gl[b-kgrrl2908s] {
            background-color: #e3f2fd !important;
            color: #0d47a1;
            font-weight: 600;
        }

    /* ==================== CELDAS DE VALORES E INPUTS ==================== */

    .grid-cell.value[b-kgrrl2908s] {
        justify-content: flex-end;
        font-family: 'Consolas', 'Courier New', monospace;
    }

.readonly-value[b-kgrrl2908s] {
    user-select: all;
    padding: 4px 8px;
    width: 100%;
    text-align: right;
}

/* Diseño del input integrado */
.editable-cell input[b-kgrrl2908s] {
    width: 100%;
    height: 100%;
    border: none;
    background: transparent;
    text-align: right;
    font-family: 'Consolas', 'Courier New', monospace;
    font-size: 12px;
    padding: 4px 8px;
    outline: none;
    color: #0056b3;
}

    .editable-cell input:focus[b-kgrrl2908s] {
        background-color: #f0f8ff;
        box-shadow: inset 0 0 0 1px #0056b3;
    }

    .editable-cell input[b-kgrrl2908s]::placeholder {
        color: #aaa;
        font-style: italic;
    }

    .editable-cell input[b-kgrrl2908s]::-webkit-outer-spin-button,
    .editable-cell input[b-kgrrl2908s]::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

/* ==================== ESTADOS SEMÁNTICOS (data-state) ==================== */

.grid-cell.value[data-state="editable"][b-kgrrl2908s] {
    background-color: #ffffff;
}

    .grid-cell.value[data-state="editable"]:hover[b-kgrrl2908s] {
        background-color: #fdfdfd;
        cursor: text;
    }

.grid-cell.value[data-state="calculated"][b-kgrrl2908s], .grid-cell.value.calculated[b-kgrrl2908s] {
    background-color: #fafafa;
    color: #666666;
}

.grid-cell.value[data-state="blocked"][b-kgrrl2908s] {
    background-color: #e9ecef;
    color: #adb5bd;
    cursor: not-allowed;
}

.grid-cell.value[data-state="empty"][b-kgrrl2908s], .grid-cell.value.empty[b-kgrrl2908s] {
    background-color: #fffaf0;
}

.grid-cell.value.special-gl-value[b-kgrrl2908s] {
    background-color: #f8fbff;
}

    .grid-cell.value.special-gl-value[data-state="calculated"][b-kgrrl2908s] {
        background-color: #fafafa;
        color: #666666;
        user-select: none;
    }

/* ==================== RELLENO Y PUERTOS VACÍOS ==================== */

.empty-port-column[b-kgrrl2908s] {
    background-color: #f0f0f0;
}

.grid-header.filler[b-kgrrl2908s], .grid-cell.filler[b-kgrrl2908s] {
    border-right: none;
    background-color: #ffffff;
}


/* AHORA (gris oscuro, igual que otras celdas calculadas): */
/* /Pages/UnitOperations/HeatExchangers/HeatExchangerDialog.razor.rz.scp.css */
.hx-canvas-layout[b-1nqhpe2cvw] {
    display: flex;
    justify-content: center;
    align-items: stretch;
    width: 100%;
    min-height: 350px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px 40px;
    gap: 40px;
}

/* Zona de Tubos (Izquierda) */
.tube-side-zone[b-1nqhpe2cvw] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    border-right: 2px dashed #cbd5e0;
    padding-right: 40px;
}

/* Zona de Coraza (Derecha con SVG) */
.shell-side-zone[b-1nqhpe2cvw] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
}

.top-ports[b-1nqhpe2cvw] {
    display: flex;
    justify-content: space-between;
    padding: 0 15px; /* Alineado al SVG */
    margin-bottom: 10px;
}

.bottom-ports[b-1nqhpe2cvw] {
    display: flex;
    justify-content: flex-end; /* Alineado a la derecha, bajo el Vent */
    padding-right: 15px;
    margin-top: 10px;
}

.equipment-drawing-zone[b-1nqhpe2cvw] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 10px 0;
}

.static-port-container[b-1nqhpe2cvw] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.port-label[b-1nqhpe2cvw] {
    font-size: 0.85rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #475569;
    margin-bottom: 20px;
    letter-spacing: 0.05em;
}

.sub-label[b-1nqhpe2cvw] {
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #64748b;
}
/* /Pages/UnitOperations/HeatExchangers/PlateExchangerDialog.razor.rz.scp.css */
.phe-canvas-layout[b-hu7v6t41n9] {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    min-height: 300px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 30px;
}

/* Zonas laterales */
.side-zone[b-hu7v6t41n9] {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding-top: 15px; /* Alineación con puertos superiores */
    padding-bottom: 15px; /* Alineación con puertos inferiores */
}

.left-zone[b-hu7v6t41n9] {
    align-items: flex-end;
    padding-right: 25px;
    border-right: 2px dashed #e2e8f0;
}

.right-zone[b-hu7v6t41n9] {
    align-items: flex-start;
    padding-left: 25px;
    border-left: 2px dashed #e2e8f0;
}

/* Zona Central */
.center-zone[b-hu7v6t41n9] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0 40px;
}

.equipment-drawing-zone[b-hu7v6t41n9] {
    margin: 15px 0;
    transform: scale(1.5); /* Lo agrandamos un poco para el diálogo porque es cuadrado y pequeño */
}

.static-port-container[b-hu7v6t41n9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

/* Etiquetas y Colores Térmicos */
.port-label[b-hu7v6t41n9] {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #475569;
    letter-spacing: 0.05em;
    margin-bottom: 20px;
}

.sub-label[b-hu7v6t41n9] {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
}

.hot-label[b-hu7v6t41n9] {
    color: #EF4444; /* Rojo para corrientes calientes */
}

.cold-label[b-hu7v6t41n9] {
    color: #3B82F6; /* Azul para corrientes frías */
}
/* /Pages/UnitOperations/HeatExchangers/ReboilerDialog.razor.rz.scp.css */
.reb-canvas-layout[b-c4lyqu5b2g] {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    min-height: 380px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 30px;
}

/* Zonas laterales (Izquierda y Derecha) */
.side-zone[b-c4lyqu5b2g] {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding-top: 45px; /* Alineado con la boquilla superior */
    padding-bottom: 25px; /* Alineado con la boquilla inferior */
}

.left-zone[b-c4lyqu5b2g] {
    align-items: flex-end;
    padding-right: 15px;
    border-right: 2px dashed #e2e8f0;
}

.right-zone[b-c4lyqu5b2g] {
    align-items: flex-start;
    padding-left: 15px;
    border-left: 2px dashed #e2e8f0;
}

/* Zona Central (Destilación / SVG) */
.center-zone[b-c4lyqu5b2g] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0 30px;
}

.equipment-drawing-zone[b-c4lyqu5b2g] {
    margin: 15px 0;
}

.static-port-container[b-c4lyqu5b2g] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

/* Etiquetas */
.port-label[b-c4lyqu5b2g] {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    color: #475569;
    letter-spacing: 0.05em;
    margin-bottom: 10px;
}

.sub-label[b-c4lyqu5b2g] {
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #64748b;
    text-align: center;
}
/* /Pages/UnitOperations/MaterialStreams/CompositionGrids/CompositionGrid.razor.rz.scp.css */
/* ==================== CONTENEDOR Y GRID BASE ==================== */
.scrollable-container[b-kahhl2h3qi] {
    overflow-x: auto;
    width: 100%;
    max-height: 400px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.data-grid[b-kahhl2h3qi] {
    display: grid;
    border-top: 1px solid #b0b0b0;
    border-left: 1px solid #b0b0b0;
    width: max-content;
    min-width: 100%;
}

.composition-grid[b-kahhl2h3qi] {
    grid-template-columns: 150px 130px 130px 130px 130px 130px;
}

.grid-header[b-kahhl2h3qi], .grid-cell[b-kahhl2h3qi] {
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 2px 6px;
    display: flex;
    align-items: center;
    min-height: 24px;
    box-sizing: border-box;
}

.grid-header[b-kahhl2h3qi] {
    background-color: #e0e0e0 !important;
    font-weight: bold;
    text-align: left;
    color: #333333;
}

.fixed-col[b-kahhl2h3qi] {
    position: sticky;
    left: 0;
    z-index: 10;
    background-color: #f5f5f5 !important;
    box-shadow: 2px 0 4px rgba(0,0,0,0.08);
}

.grid-header.fixed-col[b-kahhl2h3qi] {
    z-index: 11;
    background-color: #e0e0e0 !important;
}

.label[b-kahhl2h3qi] {
    background-color: #f5f5f5 !important;
    color: #333333;
}

.grid-cell.value[b-kahhl2h3qi] {
    background-color: #ffffff;
    padding: 0 !important;
}

    /* ==================== INPUTS Y SPANS (Reset y Alineación) ==================== */
    .grid-cell.value input[b-kahhl2h3qi],
    .grid-cell.value .readonly-value[b-kahhl2h3qi] {
        width: 100%;
        height: 100%;
        text-align: right;
        font-family: inherit;
        font-size: 12px;
        padding: 0 10px;
        box-sizing: border-box;
        border: none;
        outline: none;
        background: transparent;
        display: flex;
        align-items: center;
        justify-content: flex-end;
    }

        /* Quitar flechas de input number */
        .grid-cell.value input[type="number"][b-kahhl2h3qi]::-webkit-outer-spin-button,
        .grid-cell.value input[type="number"][b-kahhl2h3qi]::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }

        .grid-cell.value input[type="number"][b-kahhl2h3qi] {
            -moz-appearance: textfield;
        }

/* ==================== ESTADOS DE CELDA (DATA-STATE) ==================== */

/* 1. EMPTY (No definido - Gris unificado) */
.grid-cell[data-state="empty"] input[b-kahhl2h3qi] {
    color: #999999 !important;
    font-style: italic;
}

    .grid-cell[data-state="empty"] input[b-kahhl2h3qi]::placeholder {
        color: #999999 !important;
        font-style: italic !important;
        opacity: 1 !important; /* Fix del fantasma transparente */
    }

/* 2. EDITABLE (Ingresado por usuario - Azul) */
.grid-cell[data-state="editable"] input[b-kahhl2h3qi] {
    color: #4674a6 !important;
    font-weight: 500;
}

    /* Comportamiento al hacer Focus (sin importar si estaba empty o editable) */
    .grid-cell[data-state="empty"] input:focus[b-kahhl2h3qi],
    .grid-cell[data-state="editable"] input:focus[b-kahhl2h3qi] {
        color: #4674a6 !important;
        font-style: normal !important;
        font-weight: 500 !important;
        background-color: #eef5ff !important;
        box-shadow: inset 0 0 0 1px #4674a6 !important;
    }

.grid-cell.value input:focus[b-kahhl2h3qi]::placeholder {
    color: transparent !important;
    opacity: 0 !important;
}

.grid-cell.value input:hover:not(:read-only)[b-kahhl2h3qi] {
    background-color: #f8faff;
    cursor: text;
}

/* 3. CALCULATED (Calculado por sistema o interbloqueo - Gris oscuro) */
.grid-cell[data-state="calculated"][b-kahhl2h3qi] {
    background-color: #ffffff;
}

    .grid-cell[data-state="calculated"] .readonly-value[b-kahhl2h3qi] {
        color: #2a2f3a !important;
        font-weight: 600;
        cursor: help;
        user-select: none;
    }

/* 4. BLOCKED (No calculado aún, pero bloqueado por la otra columna) */
.grid-cell[data-state="blocked"] .readonly-value[b-kahhl2h3qi] {
    color: #999999 !important;
    font-style: italic;
    cursor: not-allowed;
}

/* SCROLLBARS */
[b-kahhl2h3qi]::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

[b-kahhl2h3qi]::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-left: 1px solid #b0b0b0;
}

[b-kahhl2h3qi]::-webkit-scrollbar-thumb {
    background: #c1c1c1;
    border-radius: 4px;
}

    [b-kahhl2h3qi]::-webkit-scrollbar-thumb:hover {
        background: #a1a1a1;
    }
/* ==================== °GL - ESTILOS CORREGIDOS ==================== */

/* °GL calculado: mismo estilo que celdas calculadas del grid (gris oscuro) */
.gl-value-readonly.calculated[b-kahhl2h3qi] {
    color: #2a2f3a !important; /* ← Gris oscuro, no azul */
    font-weight: 600;
    cursor: help;
    user-select: none;
    background-color: transparent;
}

/* °GL editable: azul como inputs editables */
.ethanol-water-gl-input:not(.state-readonly) input[b-kahhl2h3qi] {
    color: #4674a6 !important;
    font-weight: 500;
}

/* °GL no definido: gris claro italic */
.gl-value-not-defined[b-kahhl2h3qi] {
    color: #999999 !important;
    font-style: italic;
    cursor: pointer;
    padding: 0 10px;
}

    .gl-value-not-defined:hover[b-kahhl2h3qi] {
        color: #4674a6 !important;
    }
/* ==================== TOOLTIP CUSTOMIZADO ==================== */
.grid-cell.value[b-kahhl2h3qi] {
    position: relative;
}

.tooltip-text[b-kahhl2h3qi] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 1001;
    bottom: 110%;
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
}

    .tooltip-text[b-kahhl2h3qi]::after {
        content: "";
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-kahhl2h3qi] {
    visibility: visible;
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
/* /Pages/UnitOperations/MaterialStreams/EthanolWaterGlInput.razor.rz.scp.css */
/* ==================== PANEL PRINCIPAL ==================== */
.quick-entry-panel[b-te5z79k6xm] {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 12px 16px;
    margin: 10px 0 0 0;
    background-color: #f8faff;
    border: 1px solid #4674a6;
    border-radius: 4px;
    width: fit-content;
    box-sizing: border-box;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
    transition: opacity 0.2s ease, border-color 0.2s ease;
}

    .quick-entry-panel.state-editable[b-te5z79k6xm] {
        cursor: default;
    }

    .quick-entry-panel.state-readonly[b-te5z79k6xm] {
        opacity: 0.65;
        cursor: not-allowed;
        border-color: #ccc !important;
        background-color: #fafafa;
    }

.state-readonly .entry-label[b-te5z79k6xm] {
    color: #666 !important;
}

.state-readonly .entry-info[b-te5z79k6xm] {
    color: #999 !important;
}

/* ==================== LABEL ==================== */
.entry-label[b-te5z79k6xm] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #4674a6;
    white-space: nowrap;
    flex-shrink: 0;
}

/* ==================== INPUT CONTAINER ==================== */
.entry-input[b-te5z79k6xm] {
    display: flex;
    align-items: center;
    background: white;
    border: 1px solid #b0b0b0;
    border-radius: 3px;
    overflow: hidden;
    flex-shrink: 0;
    transition: border-color 0.2s, box-shadow 0.2s;
}

    /* 👇 Input editable */
    .entry-input input[b-te5z79k6xm] {
        width: 90px;
        height: 28px;
        border: none;
        outline: none;
        text-align: right;
        padding: 0 10px;
        font-weight: 600;
        font-family: inherit;
        font-size: 12px;
        color: #333;
        background-color: transparent;
        box-sizing: border-box;
    }

        /* 👇 Placeholder nativo */
        .entry-input input[b-te5z79k6xm]::placeholder {
            color: #999999 !important;
            font-style: italic;
            font-weight: 400;
            opacity: 1;
        }

        .entry-input input:focus[b-te5z79k6xm]::placeholder {
            color: transparent !important;
            opacity: 0 !important;
        }

        .entry-input input:focus[b-te5z79k6xm] {
            background-color: #eef5ff !important;
        }

    .entry-input:focus-within[b-te5z79k6xm] {
        border-color: #4674a6 !important;
        box-shadow: 0 0 0 2px rgba(70, 116, 166, 0.2);
    }

    /* 👇 Estilo adicional cuando tiene placeholder visible (para refuerzo visual) */
    .entry-input input.has-placeholder[b-te5z79k6xm] {
        color: #999999 !important;
        font-style: italic;
    }

    /* 👇 Valor readonly (calculado o por sistema) */
    .entry-input .gl-value-readonly[b-te5z79k6xm] {
        display: inline-flex;
        align-items: center;
        justify-content: flex-end;
        min-width: 90px;
        height: 28px;
        padding: 0 10px;
        box-sizing: border-box;
        font-weight: 600;
        font-size: 12px;
        color: #2a2f3a !important;
        cursor: help !important;
        user-select: none;
        -webkit-user-select: none;
        white-space: nowrap;
        gap: 6px;
    }

        /* 👇 Cuando es calculado por MolarFraction (editable pero readonly visual) */
        .entry-input .gl-value-readonly.calculated[b-te5z79k6xm] {
            color: #2a2f3a !important;
        }

        /* 👇 Badge "⚙ Auto" */
        .entry-input .gl-value-readonly .auto-badge[b-te5z79k6xm] {
            margin-left: 2px;
        }

.auto-badge[b-te5z79k6xm] {
    display: inline-flex;
    align-items: center;
    padding: 2px 6px;
    background-color: #eef5ff;
    color: #4674a6;
    font-size: 10px;
    font-weight: 600;
    border-radius: 3px;
    cursor: help;
    white-space: nowrap;
    transition: background-color 0.2s ease;
}

    .auto-badge:hover[b-te5z79k6xm] {
        background-color: #4674a6;
        color: #ffffff;
    }

.state-readonly .auto-badge[b-te5z79k6xm] {
    background-color: #e0e0e0;
    color: #666;
    cursor: not-allowed;
}

/* ==================== INFO TEXT ==================== */
.entry-info[b-te5z79k6xm] {
    font-size: 11px;
    color: #888;
    font-style: italic;
    margin-left: auto;
    white-space: nowrap;
    flex-shrink: 0;
    transition: color 0.2s ease;
}

/* ==================== QUITAR FLECHAS NUMBER INPUT ==================== */
.entry-input input[b-te5z79k6xm]::-webkit-outer-spin-button,
.entry-input input[b-te5z79k6xm]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.entry-input input[type=number][b-te5z79k6xm] {
    -moz-appearance: textfield;
}

.gl-value-not-defined[b-te5z79k6xm] {
    color: #94a3b8;
    font-style: italic;
    padding: 0.25rem 0.5rem;
}

.gl-value-readonly.calculated[b-te5z79k6xm] {
    color: #64748b;
    background: #f1f5f9;
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
}

.quick-entry-panel.state-editable input[b-te5z79k6xm] {
    border: 1px solid #3b82f6;
}

.quick-entry-panel.state-readonly[b-te5z79k6xm] {
    opacity: 0.8;
}

/* ==================== TOOLTIP CUSTOMIZADO ==================== */

/* ==================== TOOLTIP CUSTOMIZADO ==================== */
.gl-value-readonly[b-te5z79k6xm],
.editable-wrapper[b-te5z79k6xm] {
    position: relative;
    display: inline-flex;
    align-items: center;
    z-index: 1; /* Asegurar que el contenedor tenga z-index base */
}

.tooltip-text[b-te5z79k6xm] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 9999; /* 🔥 AUMENTADO: de 1001 a 9999 */
    bottom: calc(100% + 10px); /* 🔥 CAMBIADO: más arriba para que no se corte */
    left: 50%;
    transform: translateX(-50%);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
}

    .tooltip-text[b-te5z79k6xm]::after {
        content: "";
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-te5z79k6xm] {
    visibility: visible;
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* 🔥 NUEVO: Asegurar que el panel no corte el tooltip */
.quick-entry-panel[b-te5z79k6xm] {
    overflow: visible !important; /* Permitir que el tooltip sobresalga */
}
/* /Pages/UnitOperations/MaterialStreams/MaterialStreamDialog.razor.rz.scp.css */
/* ==================== MODAL OVERLAY Y HEADER ==================== */

.dialog-header[b-2w2wob8o99] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--user-blue);
    color: white;
    padding: 6px 12px;
    font-weight: bold;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom: 1px solid #2e4d6e;
    box-shadow: inset 0 2px 2px rgba(255, 255, 255, 0.3);
}

.close-button[b-2w2wob8o99] {
    background: none;
    border: none;
    color: white;
    font-size: 14px;
    cursor: pointer;
}

    .close-button:hover[b-2w2wob8o99] {
        color: #ffcccc;
    }

/* ==================== VARIABLES Y CONTENEDOR PRINCIPAL ==================== */
.stream-dialog[b-2w2wob8o99] {
    --border-color: #b0b0b0;
    --header-bg: #e4e4e4;
    --label-bg: #f5f5f5;
    --user-blue: #4674a6;
    --calc-black: #333333;
    --status-unsolved: #e0e0e0;
    --status-underspecified: #ffe082;
    --status-solved: #66bb6a;
    --font-family: "Segoe UI", Arial, sans-serif;
    font-family: var(--font-family);
    font-size: 12px;
    width: fit-content;
    min-width: 480px;
    max-width: 95vw;
    border-radius: 4px;
    border: 1px solid #888888;
    background-color: #ffffff;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    overflow: hidden;
}

/* ==================== TABS ==================== */
.tabs-header[b-2w2wob8o99] {
    display: flex;
    background-color: #f0f0f0;
    border-bottom: 1px solid var(--border-color);
    box-shadow: inset 0 1px 0 #ffffff, 0 2px 4px rgba(0,0,0,0.05);
}

.tab[b-2w2wob8o99] {
    padding: 6px 16px;
    cursor: pointer;
    border-right: 1px solid var(--border-color);
    color: #555;
    user-select: none;
}

    .tab.active[b-2w2wob8o99] {
        background-color: #ffffff;
        border-bottom: 2px solid var(--user-blue);
        font-weight: bold;
        color: #333;
    }

    .tab.disabled[b-2w2wob8o99] {
        color: #999 !important;
        cursor: not-allowed !important;
        background-color: #e8e8e8 !important;
    }

/* ==================== CONTENIDO DE TABS ==================== */
.tab-content[b-2w2wob8o99] {
    padding: 10px;
    flex-grow: 1;
    min-height: 480px;
    width: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

    .tab-content.active[b-2w2wob8o99] {
        display: block;
    }

/* ==================== GRIDS - SOLO DEFINICIONES DE LAYOUT ==================== */
.data-grid[b-2w2wob8o99] {
    display: grid;
    border-top: 1px solid var(--border-color);
    border-left: 1px solid var(--border-color);
    width: 100%;
    background-color: var(--border-color);
    gap: 0;
}

/* 👇 GRID ORIGINAL 3 COLUMNAS (para CompositionGrid) */
.conditions-grid[b-2w2wob8o99] {
    grid-template-columns: 160px 140px 1fr;
}

/* 👇 GRID COMPOSITION (5 columnas) */
.composition-grid[b-2w2wob8o99] {
    grid-template-columns: 150px 130px 130px 130px 130px;
}

/* Scrollable container para tabs con mucho contenido */
.scrollable-container[b-2w2wob8o99] {
    overflow-x: auto;
    width: 100%;
    max-height: 420px;
    overflow-y: auto;
    border: 1px solid var(--border-color);
    border-radius: 4px;
    background-color: #ffffff;
}

/* ==================== SCROLLBARS INDUSTRIALES ==================== */
[b-2w2wob8o99]::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

[b-2w2wob8o99]::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-left: 1px solid var(--border-color);
}

[b-2w2wob8o99]::-webkit-scrollbar-thumb {
    background: #c1c1c1;
    border-radius: 4px;
}

/* ==================== STATUS BAR ==================== */
.status-bar[b-2w2wob8o99] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    margin-top: 10px;
    border-radius: 4px;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
    font-weight: 500;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.status-icon[b-2w2wob8o99] {
    font-size: 14px;
    line-height: 1;
}

.status-text[b-2w2wob8o99] {
    font-weight: 600;
}

.status-subtext[b-2w2wob8o99] {
    font-size: 11px;
    font-weight: 400;
    opacity: 0.85;
}

/* ==================== ESTADOS SEMÁNTICOS ==================== */
.status-waiting[b-2w2wob8o99] {
    background-color: #f5f5f5 !important;
    color: #666666 !important;
    border-left: 4px solid #999999;
}

.status-idle[b-2w2wob8o99] {
    background-color: #fafafa !important;
    color: #888888 !important;
    border-left: 4px solid #cccccc;
}

.status-warning[b-2w2wob8o99] {
    background-color: #FFF7ED !important;
    color: #F59E0B !important;
    border-left: 4px solid #FFD180;
}

.status-success[b-2w2wob8o99] {
    background-color: #FEFCE8 !important;
    color: #CA8A04 !important;
    border-left: 4px solid #FFF59D;
}

.status-solved[b-2w2wob8o99] {
    background-color: #F3F4F6 !important;
    color: #1F2937 !important;
    border-left: 4px solid #374151;
}

.status-error[b-2w2wob8o99] {
    background-color: #fee2e2 !important;
    color: #dc2626 !important;
    border-left: 4px solid #ef4444;
}

/* ==================== ANIMACIÓN DE TRANSICIÓN ==================== */
.status-bar[b-2w2wob8o99] {
    animation: statusFadeIn-b-2w2wob8o99 0.3s ease-in-out;
}

@keyframes statusFadeIn-b-2w2wob8o99 {
    from {
        opacity: 0;
        transform: translateY(-4px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}
/* /Pages/UnitOperations/MaterialStreams/MaterialStreamMainData.razor.rz.scp.css */
/* ==================== GRID DE 3 COLUMNAS INDUSTRIAL ==================== */
.data-grid.conditions-grid-three-col[b-vaomnbk7qb] {
    display: grid !important;
    grid-template-columns: 180px 1fr ; /* Definición estricta de columnas */
    border-top: 1px solid #b0b0b0;
    border-left: 1px solid #b0b0b0;
    width: 100%;
    background-color: #b0b0b0; /* Color del borde para el gap */
    gap: 0;
}

/* Headers de la tabla */
.grid-header[b-vaomnbk7qb] {
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    background-color: #e4e4e4 !important;
    font-weight: bold;
    color: #333;
    font-size: 12px;
}

.unit-placeholder-header[b-vaomnbk7qb] {
    border-right: none !important;
}

/* Celdas comunes */
.grid-cell[b-vaomnbk7qb] {
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    box-sizing: border-box;
    background-color: #fff;
}

    /* Columna de etiquetas (Gris HYSYS) */
    .grid-cell.label[b-vaomnbk7qb] {
        background-color: #f5f5f5 !important;
        color: #333;
        font-weight: normal;
    }

    /* Columna de cierre (Gris HYSYS) */
    .grid-cell.unit-placeholder[b-vaomnbk7qb] {
        background-color: #f5f5f5 !important;
        border-right: none !important;
        pointer-events: none;
    }

    /* Estilo específico para la fila del Stream Name */
    .grid-cell.value[b-vaomnbk7qb] {
        padding: 0 !important;
        justify-content: flex-end;
        position: relative;
    }

        .grid-cell.value input[b-vaomnbk7qb] {
            width: 100%;
            height: 100%;
            border: none;
            background: transparent;
            padding: 0 8px;
            outline: none;
            font-family: inherit;
            font-size: inherit;
        }

            .grid-cell.value input:focus[b-vaomnbk7qb] {
                background-color: #f8faff;
                box-shadow: inset 0 0 0 2px #4674a6;
            }

.generate-name-btn[b-vaomnbk7qb] {
    background: none;
    border: none;
    cursor: pointer;
    margin-right: 4px;
    opacity: 0.6;
}

    .generate-name-btn:hover[b-vaomnbk7qb] {
        opacity: 1;
        color: #4674a6;
    }

/* ELIMINADA: La regla ::deep .variable-container.mode-compact { grid-column: span 2 } 
   que causaba el zigzag. Al eliminarla, Blazor coloca los hijos del componente 
   directamente en las columnas 1 y 2 del grid. */
/* /Pages/UnitOperations/MaterialStreams/MaterialStreamProperties.razor.rz.scp.css */
/* ==================== CONTENEDOR SCROLLABLE ==================== */
.scrollable-container[b-gxjd5tp5oz] {
    overflow-x: auto;
    overflow-y: auto;
    max-height: 420px;
    width: 100%;
    border: 1px solid #b0b0b0;
    border-radius: 4px;
    background-color: #ffffff;
    margin-top: 8px;
}

    /* Scrollbars personalizados industriales */
    .scrollable-container[b-gxjd5tp5oz]::-webkit-scrollbar {
        width: 6px;
        height: 6px;
    }

    .scrollable-container[b-gxjd5tp5oz]::-webkit-scrollbar-track {
        background: #f1f1f1;
    }

    .scrollable-container[b-gxjd5tp5oz]::-webkit-scrollbar-thumb {
        background: #c1c1c1;
        border-radius: 3px;
    }

        .scrollable-container[b-gxjd5tp5oz]::-webkit-scrollbar-thumb:hover {
            background: #a8a8a8;
        }

/* ==================== GRID 2 COLUMNAS (Sincronizado con Conditions) ==================== */
.data-grid.properties-grid-two-col[b-gxjd5tp5oz] {
    display: grid;
    grid-template-columns: 180px 1fr; /* 👈 Alineación perfecta con la otra pestaña */
    gap: 0;
    width: 100%;
    background-color: #b0b0b0;
}

/* Headers */
.grid-header[b-gxjd5tp5oz] {
    background-color: #e4e4e4 !important;
    font-weight: bold;
    text-align: left;
    color: #333333;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 2px 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
    box-sizing: border-box;
}

/* Títulos de Grupo (Span 2 columnas) */
.grid-cell.group-title[b-gxjd5tp5oz] {
    grid-column: span 2; /* 👈 CRÍTICO: Ahora son 2 columnas, no 3 */
    background-color: #e8e8e8 !important;
    font-weight: bold !important;
    padding: 4px 8px !important;
    border-bottom: 1px solid #b0b0b0;
    border-right: 1px solid #b0b0b0;
    color: #222 !important;
    font-size: 12px;
    letter-spacing: 0.3px;
    display: flex;
    align-items: center;
    min-height: 26px;
}
/* /Pages/UnitOperations/Mixers/MixerDialog.razor.rz.scp.css */
.mixer-canvas-layout[b-8ocuac654m] {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    min-height: 350px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px;
    overflow: hidden;
}

/* El SVG estático en el centro */
.equipment-drawing-zone[b-8ocuac654m] {
    flex: 0 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Zonas laterales que empujan los puertos hacia los bordes */
.port-zone[b-8ocuac654m] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.inlet-zone[b-8ocuac654m] {
    align-items: flex-start;
    padding-left: 20px;
}

.outlet-zone[b-8ocuac654m] {
    align-items: flex-end;
    padding-right: 20px;
}

/* Título para el puerto individual (Product) */
.port-list-title[b-8ocuac654m] {
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #475569;
    margin-bottom: 12px;
    letter-spacing: 0.05em;
}
/* /Pages/UnitOperations/Pumps/PumpDialog.razor.rz.scp.css */
/* =================================================================
   PumpDialog.razor.css (SOLO TOPOLOGÍA Y SVG)
   ================================================================= */

/* 1. EL LIENZO (CANVAS) */
.pump-canvas-layout[b-udhsjqb0jv] {
    position: relative;
    min-width: 600px;
    width: 100%;
    height: 350px;
    /* Recuperamos el fondo sutil para que parezca un área de trabajo */
    background-color: #f8fafc;
    border-radius: 4px;
    overflow: hidden;
}

/* 2. ZONA DEL DIBUJO (Desplazada 50px a la derecha) */
.equipment-drawing-zone[b-udhsjqb0jv] {
    position: absolute;
    top: 50%;
    /* 🔥 MAGIA: Movimos el centro exacto de la bomba 50px hacia la derecha */
    left: calc(50% + 50px);
    transform: translate(-50%, -50%);
    z-index: 1;
}

/* 3. PUERTOS DE CONEXIÓN */
.port-selector[b-udhsjqb0jv] {
    position: absolute;
    display: flex;
    flex-direction: column;
    z-index: 10;
    width: 220px;
}

/* SUCCIÓN: Acompaña el desplazamiento */
.suction-pos[b-udhsjqb0jv] {
    top: 50%;
    /* Al mover el centro 50px a la derecha, compensamos aquí para que siga pegado al tubo. 
       (95px originales - 50px de desplazamiento = 45px) */
    right: calc(50% + 45px);
    transform: translateY(-50%);
}

/* DESCARGA: Acompaña el desplazamiento */
.discharge-pos[b-udhsjqb0jv] {
    bottom: calc(50% + 95px);
    /* 🔥 Sigue al nuevo centro exacto de la bomba */
    left: calc(50% + 50px);
    transform: translateX(-50%);
}

/* 4. CORRECCIÓN DE TOOLTIPS (Para que el de descarga no choque) */
[b-udhsjqb0jv] .discharge-pos .port-tooltip-fixed {
    top: 50% !important;
    left: calc(100% + 12px) !important;
    transform: translateY(-50%) !important;
}

    [b-udhsjqb0jv] .discharge-pos .port-tooltip-fixed::after {
        top: 50% !important;
        bottom: auto !important;
        right: 100% !important;
        left: auto !important;
        transform: translateY(-50%) !important;
        border-width: 5px;
        border-style: solid;
        border-color: transparent #E2E8F0 transparent transparent !important;
    }
/* /Pages/UnitOperations/Splitters/SplitterDialog.razor.rz.scp.css */
.splitter-canvas-layout[b-6pw7fuorf5] {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    min-height: 350px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px;
    overflow: hidden;
}

/* El SVG se queda estático en el centro */
.equipment-drawing-zone[b-6pw7fuorf5] {
    flex: 0 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Zonas laterales que empujan los puertos hacia los bordes */
.port-zone[b-6pw7fuorf5] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.inlet-zone[b-6pw7fuorf5] {
    align-items: flex-start;
    padding-left: 20px;
}

.outlet-zone[b-6pw7fuorf5] {
    align-items: flex-end;
    padding-right: 20px;
}

/* Estilos de la tabla de fracciones (Minimalista Industrial) */
.property-table-wrapper[b-6pw7fuorf5] {
    margin-top: 16px;
    width: 100%;
}

.cp-table[b-6pw7fuorf5] {
    width: 100%;
    border-collapse: collapse;
}

    .cp-table th[b-6pw7fuorf5] {
        text-align: left;
        padding: 8px 12px;
        background-color: #f1f5f9;
        color: #475569;
        font-size: 0.8rem;
        font-weight: 600;
        text-transform: uppercase;
        border-bottom: 2px solid #cbd5e0;
    }

    .cp-table td[b-6pw7fuorf5] {
        padding: 8px 12px;
        border-bottom: 1px solid #e2e8f0;
        vertical-align: middle;
    }
/* Contenedor del componente inyectado */
.fraction-input-box[b-6pw7fuorf5] {
    display: grid;
    /* Ajusta estos anchos según tu diseño: 
       45px para el label "Split", 80px para la caja de texto */
    grid-template-columns: 45px 80px;
    align-items: center;
    gap: 8px;
}

/* Modificamos sutilmente las celdas inyectadas para que quepan en el diseño compacto */
[b-6pw7fuorf5] .fraction-input-box .grid-cell.label {
    font-size: 0.7rem;
    color: #64748b;
    font-weight: 600;
    text-transform: uppercase;
    text-align: right; /* Pegamos el texto hacia la caja */
}

[b-6pw7fuorf5] .fraction-input-box .simple-variable-row {
    margin: 0; /* Quitamos márgenes extra si los tuviera */
}
/* /Pages/UnitOperations/Valves/ControlValveDialog.razor.rz.scp.css */
/* =================================================================
   ControlValveDialog.razor.css (TOPOLOGÍA Y DISTRIBUCIÓN)
   ================================================================= */

.cv-canvas-layout[b-5xjbe8s25g] {
    position: relative;
    min-width: 600px;
    width: 100%;
    height: 350px;
    background-color: #f8fafc;
    border-radius: 4px;
    overflow: hidden;
}

/* 1. DIBUJO EN EL CENTRO EXACTO */
.equipment-drawing-zone[b-5xjbe8s25g] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
}

/* 2. ZONA DE LOS PUERTOS */
.port-selector[b-5xjbe8s25g] {
    position: absolute;
    display: flex;
    flex-direction: column;
    z-index: 10;
    width: 220px;
}

/* ENTRADA (A la izquierda del SVG) */
.inlet-pos[b-5xjbe8s25g] {
    top: 50%;
    right: calc(50% + 60px); /* Alejado del centro hacia la izq */
    transform: translateY(-50%);
}

/* SALIDA (A la derecha del SVG) */
.outlet-pos[b-5xjbe8s25g] {
    top: 50%;
    left: calc(50% + 60px); /* Alejado del centro hacia la der */
    transform: translateY(-50%);
}

/* 3. CORRECCIÓN DE TOOLTIPS (Para que la salida abra hacia afuera) */
[b-5xjbe8s25g] .outlet-pos .port-tooltip-fixed {
    top: 50% !important;
    left: calc(100% + 12px) !important;
    transform: translateY(-50%) !important;
}

    [b-5xjbe8s25g] .outlet-pos .port-tooltip-fixed::after {
        top: 50% !important;
        bottom: auto !important;
        right: 100% !important;
        left: auto !important;
        transform: translateY(-50%) !important;
        border-width: 5px;
        border-style: solid;
        border-color: transparent #E2E8F0 transparent transparent !important;
    }
/* /Pages/UnitOperations/Vessels/FlashTankDialog.razor.rz.scp.css */
.flash-canvas-layout[b-cshn9kruj0] {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    min-height: 400px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px;
    overflow-x: auto;
}

.port-zone[b-cshn9kruj0] {
    flex: 1 1 200px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.left-zone[b-cshn9kruj0] {
    padding-right: 20px;
}

.right-zone[b-cshn9kruj0] {
    padding-left: 20px;
    align-items: flex-end;
}

.center-zone[b-cshn9kruj0] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
}

.equipment-drawing-zone[b-cshn9kruj0] {
    margin: 20px 0;
}

.static-port-container[b-cshn9kruj0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

/* Espaciado para los dos líquidos de abajo */
.bottom-ports-container[b-cshn9kruj0] {
    display: flex;
    justify-content: space-around;
    width: 100%;
    margin-top: 5px;
}

.port-label[b-cshn9kruj0] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #64748b;
    letter-spacing: 0.05em;
}
/* /Pages/UnitOperations/Vessels/VesselDialog.razor.rz.scp.css */
.vessel-canvas-layout[b-avr7ir80ep] {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    min-height: 400px;
    background-color: #f8fafc;
    border-radius: 4px;
    padding: 20px;
    overflow-x: auto;
}

.port-zone[b-avr7ir80ep] {
    flex: 1 1 200px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.left-zone[b-avr7ir80ep] {
    padding-right: 20px;
}

.right-zone[b-avr7ir80ep] {
    padding-left: 20px;
    align-items: flex-end;
}

.center-zone[b-avr7ir80ep] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end; /* Para que el tanque y el Bottom descansen en la base */
}

.equipment-drawing-zone[b-avr7ir80ep] {
    margin-bottom: 10px;
}

.static-port-container[b-avr7ir80ep] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.port-label[b-avr7ir80ep] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #64748b;
    letter-spacing: 0.05em;
}
/* /Templates/Units/ThermoMethodSelector.razor.rz.scp.css */
/* ==================== ESTRUCTURA GRID ==================== */
:host[b-d6vi7g0ar2] {
    display: contents;
}

.grid-cell[b-d6vi7g0ar2] {
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 2px 6px;
    display: flex;
    align-items: center;
    min-height: 24px;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
    box-sizing: border-box;
}

.label[b-d6vi7g0ar2] {
    background-color: #f5f5f5 !important;
    color: #333333;
}

.value[b-d6vi7g0ar2] {
    background-color: #ffffff !important;
}

.empty[b-d6vi7g0ar2] {
    background-color: #f5f5f5 !important;
}

/* ==================== SELECT MINIMALISTA ==================== */
.form-select-minimal[b-d6vi7g0ar2] {
    width: 100%;
    height: 100%;
    border: none;
    background-color: transparent !important;
    font-family: inherit;
    font-size: inherit;
    outline: none;
    padding: 0 10px;
    margin: 0;
    box-sizing: border-box;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.2s, color 0.2s;
    /* Flecha SVG personalizada */
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e") !important;
    background-repeat: no-repeat !important;
    background-position: right 6px center !important;
    background-size: 12px !important;
    padding-right: 20px !important;
}

/* ==================== 🔹 ESTADOS POR METHOD SOURCE (UNIFICADOS) 🔹 ==================== */

/* 👇 NONE: No definido - Gris claro #999999, italic (REQUISITO #4) */
.source-none[b-d6vi7g0ar2] {
    background-color: #f9f9f9 !important;
}

    .source-none .form-select-minimal[b-d6vi7g0ar2] {
        color: #999999 !important; /* 👈 UNIFICADO: mismo gris que Conditions */
        font-style: italic !important;
        font-weight: 400 !important;
        cursor: pointer !important;
    }

    /* 👇 Placeholder option: siempre gris italic */
    .source-none .placeholder-option[b-d6vi7g0ar2] {
        color: #999999 !important;
        font-style: italic;
    }

/* 👇 USER INTERFACE: Definido por usuario - Azul #4674a6 */
.source-ui[b-d6vi7g0ar2] {
    background-color: #ffffff !important;
}

    .source-ui .form-select-minimal[b-d6vi7g0ar2] {
        color: #4674a6 !important;
        font-weight: 500;
    }

        .source-ui .form-select-minimal:focus[b-d6vi7g0ar2] {
            background-color: #eef5ff !important;
            box-shadow: inset 0 0 0 1px #4674a6 !important;
        }

/* 👇 OTHER: Calculado por sistema - Gris carbón #2a2f3a, readonly (REQUISITO #1 y #2) */
.source-other[b-d6vi7g0ar2] {
    background-color: #ffffff !important;
}

    .source-other .form-select-minimal[b-d6vi7g0ar2] {
        color: #2a2f3a !important; /* 👈 Gris carbón azulado oficial */
        font-weight: 600 !important;
        cursor: not-allowed !important;
        /* 👇 REQUISITO #1: Sin icono extra, solo estilo visual */
    }

        .source-other .form-select-minimal:disabled[b-d6vi7g0ar2] {
            opacity: 1 !important; /* Mantener opacidad completa para legibilidad */
            background-image: none !important; /* 👇 Sin flecha cuando es readonly */
            padding-right: 10px !important;
        }

/* ==================== INTERACCIÓN ==================== */
.form-select-minimal:focus[b-d6vi7g0ar2] {
    background-color: #eef5ff !important;
    box-shadow: inset 0 0 0 1px #4674a6 !important;
}

.form-select-minimal:hover:not(:disabled)[b-d6vi7g0ar2] {
    background-color: #f8faff !important;
}

/* ==================== TEXTO DE HERENCIA ==================== */
.inheritance-text[b-d6vi7g0ar2] {
    font-size: 11px;
    color: #777;
    font-style: italic;
    padding-left: 6px;
}

/* ==================== TOOLTIP NATIVO ==================== */
/* 👇 El navegador maneja el tooltip automáticamente con el atributo title */
/* 👇 cursor: help ya está aplicado en .source-other .form-select-minimal */
.source-other[title]:not([title=""])[b-d6vi7g0ar2] {
    cursor: help !important;
}
/* /Templates/Units/UIVariablePercentage/VariablePercentageRow.razor.rz.scp.css */
/* ============================================================
   1. COLORES POR ORIGEN (SOURCE)
   ============================================================ */
.source-userinterface[b-c11rax6ob9], .source-ui[b-c11rax6ob9] {
    color: #4674a6 !important;
    font-weight: 500;
}

.source-other[b-c11rax6ob9] {
    color: #2a2f3a !important;
    font-weight: 600;
}

.source-none[b-c11rax6ob9] {
    color: #999999 !important;
    font-style: italic;
}

.source-userinterface .value-text[b-c11rax6ob9] {
    color: #4674a6 !important;
}

.source-other .value-text[b-c11rax6ob9] {
    color: #2a2f3a !important;
}

/* ============================================================
   2. ESTRUCTURA BASE
   ============================================================ */
.variable-container[b-c11rax6ob9] {
    width: 100%;
    box-sizing: border-box;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
}

/* MODO STANDARD */
.variable-standard-grid[b-c11rax6ob9] {
    display: grid;
    grid-template-columns: 180px 1fr 80px;
    width: 100%;
    border-bottom: 1px solid #cbd5e0;
    border-right: 1px solid #cbd5e0;
    border-left: 1px solid #cbd5e0;
    background-color: #ffffff;
}

.variable-container.mode-standard:first-child .variable-standard-grid[b-c11rax6ob9] {
    border-top: 1px solid #cbd5e0;
}

.mode-standard .grid-cell[b-c11rax6ob9] {
    display: flex;
    align-items: center;
    min-height: 26px;
}

.mode-standard .label[b-c11rax6ob9] {
    background-color: #f8fafc !important;
    border-right: 1px solid #cbd5e0;
    padding: 0 8px;
    color: #475569;
}

.mode-standard .value-cell[b-c11rax6ob9] {
    border-right: 1px solid #cbd5e0;
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
}

/* MODO COMPACTO */
.variable-container.mode-compact[b-c11rax6ob9] {
    display: contents;
}

.mode-compact .grid-cell.label[b-c11rax6ob9] {
    background-color: #f5f5f5 !important;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    color: #333;
}

.mode-compact .integrated-cell[b-c11rax6ob9] {
    display: flex;
    align-items: center;
    background-color: #fff;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    min-height: 28px;
    padding: 0 !important;
    position: relative;
}

/* ============================================================
   3. VALOR (SIN UNIDAD)
   ============================================================ */
.value-container-compact[b-c11rax6ob9], .readonly-wrapper[b-c11rax6ob9] {
    flex-grow: 1;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 4px 0 8px;
    position: relative;
}

.compact-display-text[b-c11rax6ob9] {
    display: flex;
    align-items: center;
}

/* ============================================================
   4. TOOLTIP DE CÁLCULO
   ============================================================ */
.tooltip-text[b-c11rax6ob9] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 1001;
    bottom: 110%;
    right: 10%;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    transform: translateY(4px);
    pointer-events: none;
}

    .tooltip-text[b-c11rax6ob9]::after {
        content: "";
        position: absolute;
        top: 100%;
        right: 15px;
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-c11rax6ob9] {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
}

/* ============================================================
   5. INPUTS Y ESTADOS
   ============================================================ */
.compact-input[b-c11rax6ob9] {
    width: 100%;
    border: none;
    outline: none;
    background: #f8faff;
    text-align: right;
    font: inherit;
    color: inherit;
    padding: 0 4px;
}

.std-input[b-c11rax6ob9] {
    width: 100%;
    border: none;
    outline: none;
    background: transparent;
    text-align: right;
    padding: 0 8px;
}

.value-text[b-c11rax6ob9] {
    flex-grow: 1;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.is-readonly .integrated-cell[b-c11rax6ob9], .is-readonly .value-cell[b-c11rax6ob9] {
    background-color: #fafafa !important;
}
/* /Templates/Units/UIVariableUnitLess/VariableUnitLessRow.razor.rz.scp.css */
/* ============================================================
   1. COLORES POR ORIGEN (SOURCE)
   ============================================================ */
.source-userinterface[b-qwd9bpgzdo], .source-ui[b-qwd9bpgzdo] {
    color: #4674a6 !important;
    font-weight: 500;
}

.source-other[b-qwd9bpgzdo] {
    color: #2a2f3a !important;
    font-weight: 600;
}

.source-none[b-qwd9bpgzdo] {
    color: #999999 !important;
    font-style: italic;
}

.source-userinterface .value-text[b-qwd9bpgzdo] {
    color: #4674a6 !important;
}

.source-other .value-text[b-qwd9bpgzdo] {
    color: #2a2f3a !important;
}

/* ============================================================
   2. ESTRUCTURA BASE
   ============================================================ */
.variable-container[b-qwd9bpgzdo] {
    width: 100%;
    box-sizing: border-box;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
}

/* MODO STANDARD */
.variable-standard-grid[b-qwd9bpgzdo] {
    display: grid;
    grid-template-columns: 180px 1fr 80px;
    width: 100%;
    border-bottom: 1px solid #cbd5e0;
    border-right: 1px solid #cbd5e0;
    border-left: 1px solid #cbd5e0;
    background-color: #ffffff;
}

.variable-container.mode-standard:first-child .variable-standard-grid[b-qwd9bpgzdo] {
    border-top: 1px solid #cbd5e0;
}

.mode-standard .grid-cell[b-qwd9bpgzdo] {
    display: flex;
    align-items: center;
    min-height: 26px;
}

.mode-standard .label[b-qwd9bpgzdo] {
    background-color: #f8fafc !important;
    border-right: 1px solid #cbd5e0;
    padding: 0 8px;
    color: #475569;
}

.mode-standard .value-cell[b-qwd9bpgzdo] {
    border-right: 1px solid #cbd5e0;
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
}

/* MODO COMPACTO */
.variable-container.mode-compact[b-qwd9bpgzdo] {
    display: contents;
}

.mode-compact .grid-cell.label[b-qwd9bpgzdo] {
    background-color: #f5f5f5 !important;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    color: #333;
}

.mode-compact .integrated-cell[b-qwd9bpgzdo] {
    display: flex;
    align-items: center;
    background-color: #fff;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    min-height: 28px;
    padding: 0 !important;
    position: relative;
}

/* ============================================================
   3. VALOR (SIN UNIDAD)
   ============================================================ */
.value-container-compact[b-qwd9bpgzdo], .readonly-wrapper[b-qwd9bpgzdo] {
    flex-grow: 1;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 4px 0 8px;
    position: relative;
}

.compact-display-text[b-qwd9bpgzdo] {
    display: flex;
    align-items: center;
}

/* ============================================================
   4. TOOLTIP DE CÁLCULO
   ============================================================ */
.tooltip-text[b-qwd9bpgzdo] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 1001;
    bottom: 110%;
    right: 10%;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    transform: translateY(4px);
    pointer-events: none;
}

    .tooltip-text[b-qwd9bpgzdo]::after {
        content: "";
        position: absolute;
        top: 100%;
        right: 15px;
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-qwd9bpgzdo] {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
}

/* ============================================================
   5. INPUTS Y ESTADOS
   ============================================================ */
.compact-input[b-qwd9bpgzdo] {
    width: 100%;
    border: none;
    outline: none;
    background: #f8faff;
    text-align: right;
    font: inherit;
    color: inherit;
    padding: 0 4px;
}

.std-input[b-qwd9bpgzdo] {
    width: 100%;
    border: none;
    outline: none;
    background: transparent;
    text-align: right;
    padding: 0 8px;
}

.value-text[b-qwd9bpgzdo] {
    flex-grow: 1;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.is-readonly .integrated-cell[b-qwd9bpgzdo], .is-readonly .value-cell[b-qwd9bpgzdo] {
    background-color: #fafafa !important;
}
/* /Templates/Units/UIVariable/VariableAmountRow.razor.rz.scp.css */
/* ============================================================
   1. COLORES POR ORIGEN (SOURCE)
   ============================================================ */
.source-userinterface[b-e05edywtym], .source-ui[b-e05edywtym] {
    color: #4674a6 !important;
    font-weight: 500;
}

.source-other[b-e05edywtym] {
    color: #2a2f3a !important;
    font-weight: 600;
}

.source-none[b-e05edywtym] {
    color: #999999 !important;
    font-style: italic;
}

.source-userinterface .value-text[b-e05edywtym], .source-userinterface .unit-label-inline[b-e05edywtym] {
    color: #4674a6 !important;
}

.source-other .value-text[b-e05edywtym], .source-other .unit-label-inline[b-e05edywtym] {
    color: #2a2f3a !important;
}

/* ============================================================
   2. ESTRUCTURA BASE
   ============================================================ */
.variable-container[b-e05edywtym] {
    width: 100%;
    box-sizing: border-box;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
}

/* MODO STANDARD (Bomba) */
.variable-standard-grid[b-e05edywtym] {
    display: grid;
    grid-template-columns: 180px 1fr 80px;
    width: 100%;
    border-bottom: 1px solid #cbd5e0;
    border-right: 1px solid #cbd5e0;
    border-left: 1px solid #cbd5e0;
    background-color: #ffffff;
    position: relative;
}

.variable-container.mode-standard:first-child .variable-standard-grid[b-e05edywtym] {
    border-top: 1px solid #cbd5e0;
}

.mode-standard .grid-cell[b-e05edywtym] {
    display: flex;
    align-items: center;
    min-height: 26px;
}

.mode-standard .label[b-e05edywtym] {
    background-color: #f8fafc !important;
    border-right: 1px solid #cbd5e0;
    padding: 0 8px;
    color: #475569;
}

.mode-standard .unit-cell[b-e05edywtym] {
    justify-content: flex-end;
    padding-right: 4px;
    position: relative;
}

/* MODO COMPACTO (Stream) */
.variable-container.mode-compact[b-e05edywtym] {
    display: contents;
}

.mode-compact .grid-cell.label[b-e05edywtym] {
    background-color: #f5f5f5 !important;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    color: #333;
}

.mode-compact .integrated-cell[b-e05edywtym] {
    display: flex;
    align-items: center;
    background-color: #fff;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    min-height: 28px;
    padding: 0 !important;
    position: relative;
}

/* ============================================================
   3. VALOR Y UNIDAD
   ============================================================ */
.value-container-compact[b-e05edywtym], .readonly-wrapper[b-e05edywtym] {
    flex-grow: 1;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 4px 0 8px;
    position: relative;
}

.compact-display-text[b-e05edywtym] {
    display: flex;
    gap: 4px;
    align-items: baseline;
}

.unit-label-inline[b-e05edywtym] {
    font-size: 10px;
    color: inherit;
    opacity: 0.8;
}

/* 🔥 UNIFICADO: Trigger para dropdown (ambos modos) */
.unit-dropdown-trigger[b-e05edywtym] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 4px 8px;
    cursor: pointer;
    border-radius: 4px;
    transition: all 0.2s ease;
    background-color: transparent;
}

    .unit-dropdown-trigger:hover[b-e05edywtym] {
        background-color: #eef5ff;
    }

.unit-symbol[b-e05edywtym] {
    font-size: 11px;
    font-weight: 600;
    color: #475569;
}

.unit-symbol-static[b-e05edywtym] {
    font-size: 11px;
    font-weight: 600;
    color: #94a3b8;
}

/* 🔥 Chevron más grande (9px → 14px) */
.chevron-icon[b-e05edywtym] {
    font-size: 14px;
    color: #94a3b8;
    transition: transform 0.2s ease;
    line-height: 1;
}

.unit-dropdown-trigger:hover .chevron-icon[b-e05edywtym] {
    color: #4674a6;
    transform: rotate(180deg);
}

/* ============================================================
   4. TOOLTIP (SOBRE EL NÚMERO)
   ============================================================ */
.tooltip-text[b-e05edywtym] {
    visibility: hidden;
    position: absolute;
    background-color: #1e293b;
    color: #ffffff !important;
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    text-align: center;
    padding: 5px 10px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 1001;
    bottom: 110%;
    right: 50%;
    transform: translateX(50%) translateY(4px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
}

    .tooltip-text[b-e05edywtym]::after {
        content: "";
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        border-width: 5px;
        border-style: solid;
        border-color: #1e293b transparent transparent transparent;
    }

.has-tooltip:hover .tooltip-text[b-e05edywtym] {
    visibility: visible;
    opacity: 1;
    transform: translateX(50%) translateY(0);
}

/* ============================================================
   5. POPUP DE UNIDADES
   ============================================================ */
.unit-popup[b-e05edywtym] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 1000;
    background: white;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    min-width: 100px;
    max-height: 200px;
    overflow-y: auto;
}

.unit-popup-standard[b-e05edywtym] {
    top: auto;
    bottom: calc(100% + 4px);
    right: 4px;
}

.unit-popup[b-e05edywtym]::-webkit-scrollbar {
    width: 4px;
}

.unit-popup[b-e05edywtym]::-webkit-scrollbar-track {
    background: #f1f5f9;
    border-radius: 2px;
}

.unit-popup[b-e05edywtym]::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 2px;
}

    .unit-popup[b-e05edywtym]::-webkit-scrollbar-thumb:hover {
        background: #94a3b8;
    }

.unit-item[b-e05edywtym] {
    padding: 6px 12px;
    font-size: 11px;
    cursor: pointer;
    color: #475569;
    text-align: left;
    transition: background-color 0.15s ease;
}

    .unit-item:hover[b-e05edywtym] {
        background-color: #f1f5f9;
        color: #0f172a;
    }

    .unit-item.selected[b-e05edywtym] {
        background-color: #eef5ff;
        color: #4674a6;
        font-weight: 600;
    }

/* ============================================================
   6. INPUTS
   ============================================================ */
.compact-input[b-e05edywtym] {
    width: 100%;
    border: none;
    outline: none;
    background: #f8faff;
    text-align: right;
    font: inherit;
    color: inherit;
    padding: 0 4px;
}

.std-input[b-e05edywtym] {
    width: 100%;
    border: none;
    outline: none;
    background: transparent;
    text-align: right;
    padding: 0 8px;
    font: inherit;
    color: inherit;
}

.value-text[b-e05edywtym] {
    flex-grow: 1;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 🔥 CORREGIDO: Readonly solo afecta valor, NO el selector de unidades */
.is-readonly .integrated-cell[b-e05edywtym],
.is-readonly .value-cell[b-e05edywtym] {
    background-color: #fafafa !important;
    opacity: 0.7;
    /* cursor: not-allowed; ← ELIMINADO para no bloquear el dropdown */
}

/* 🔥 EL SELECTOR DE UNIDAD SIEMPRE DEBE PARECER CLICKEABLE */
.is-readonly .unit-dropdown-trigger[b-e05edywtym] {
    background-color: #fafafa !important;
    cursor: pointer !important;
    opacity: 1 !important;
}

    .is-readonly .unit-dropdown-trigger:hover[b-e05edywtym] {
        background-color: #eef5ff !important;
    }
/* /Templates/Units/UnifiedNameRow.razor.rz.scp.css */
/* ============================================================
   1. COLORES Y ESTILOS BASE
   ============================================================ */
.source-userinterface[b-ez3qq2f92z] {
    color: #4674a6;
    font-weight: 500;
}

.variable-container[b-ez3qq2f92z] {
    width: 100%;
    box-sizing: border-box;
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 12px;
}

/* MODO STANDARD */
.variable-standard-grid[b-ez3qq2f92z] {
    display: grid;
    grid-template-columns: 180px 1fr 80px;
    width: 100%;
    border-bottom: 1px solid #cbd5e0;
    border-right: 1px solid #cbd5e0;
    border-left: 1px solid #cbd5e0;
    background-color: #ffffff;
    transition: background-color 0.2s;
}

.variable-container.mode-standard:first-child .variable-standard-grid[b-ez3qq2f92z] {
    border-top: 1px solid #cbd5e0;
}

.mode-standard .grid-cell[b-ez3qq2f92z] {
    display: flex;
    align-items: center;
    min-height: 26px;
}

.mode-standard .label[b-ez3qq2f92z] {
    background-color: #f8fafc !important;
    border-right: 1px solid #cbd5e0;
    padding: 0 8px;
    color: #475569;
}

.mode-standard .value-cell[b-ez3qq2f92z] {
    border-right: 1px solid #cbd5e0;
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
}

/* MODO COMPACTO */
.variable-container.mode-compact[b-ez3qq2f92z] {
    display: contents;
}

.mode-compact .grid-cell.label[b-ez3qq2f92z] {
    background-color: #f5f5f5 !important;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    padding: 0 8px;
    display: flex;
    align-items: center;
    min-height: 28px;
    color: #333;
}

.mode-compact .integrated-cell[b-ez3qq2f92z] {
    display: flex;
    align-items: center;
    background-color: #fff;
    border-right: 1px solid #b0b0b0;
    border-bottom: 1px solid #b0b0b0;
    min-height: 28px;
    padding: 0 !important;
    position: relative;
    transition: background-color 0.2s;
}

.value-container-compact[b-ez3qq2f92z] {
    flex-grow: 1;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 4px 0 8px;
}

/* ============================================================
   2. ESTADOS DE VALIDACIÓN (ERROR / DUPLICADO)
   ============================================================ */
/* Fondo sutil rojizo y texto rojo alerta */
.is-invalid[b-ez3qq2f92z] {
    background-color: #fff4f4 !important;
}

    .is-invalid .name-input[b-ez3qq2f92z] {
        color: #dc2626 !important;
        font-weight: bold;
    }

/* ============================================================
   3. INPUTS
   ============================================================ */
.compact-input[b-ez3qq2f92z], .std-input[b-ez3qq2f92z] {
    width: 100%;
    border: none;
    outline: none;
    background: transparent;
    text-align: right;
    font: inherit;
    color: inherit;
    padding: 0 4px;
}

.std-input[b-ez3qq2f92z] {
    padding: 0 8px;
}

    .compact-input:focus[b-ez3qq2f92z], .std-input:focus[b-ez3qq2f92z] {
        background-color: #f0f7ff;
        color: #4674a6;
    }

.is-invalid .compact-input:focus[b-ez3qq2f92z], .is-invalid .std-input:focus[b-ez3qq2f92z] {
    background-color: #fee2e2;
    color: #dc2626;
}

/* ============================================================
   4. BOTÓN GENERAR (ACCIÓN 🔄)
   ============================================================ */
.action-cell[b-ez3qq2f92z] {
    justify-content: center;
    cursor: pointer;
    background-color: #fafafa;
    transition: background-color 0.2s;
}

.action-trigger[b-ez3qq2f92z] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 100%;
    cursor: pointer;
    border-left: 1px solid #eee;
    background-color: #fafafa;
    transition: background-color 0.2s;
}

    .action-cell:hover[b-ez3qq2f92z], .action-trigger:hover[b-ez3qq2f92z] {
        background-color: #eef5ff;
    }

.action-icon[b-ez3qq2f92z] {
    font-size: 12px;
    color: #64748b;
    transition: transform 0.3s, color 0.2s;
}

.action-cell:hover .action-icon[b-ez3qq2f92z], .action-trigger:hover .action-icon[b-ez3qq2f92z] {
    color: #4674a6;
    transform: rotate(180deg);
}
/* Gira al hacer hover */
