/* Toolbar layout */ .rcm-toolbar { display: flex; gap: 1rem; align-items: center; justify-content: space-between; background: var(--mud-palette-surface, #ffffff); color: #e6e6e6; padding: 0.75rem 1rem; border-radius: 0.375rem; box-shadow: 0 2px 6px rgba(0,0,0,0.6); border: 1px solid rgba(255,255,255,0.04); } /* Content layout: take remaining height */ .rcm-content { height: calc(100vh - 90px); /* approximate toolbar + padding height; adjust if needed */ min-height: 0; /* allow flex children to shrink properly */ } /* Config list uses flexible basis and can shrink instead of forcing overflow */ .rcm-config-list { /* replace fixed width with flex basis + shrink */ flex: 0 1 35%; /* flex-grow:0, flex-shrink:1, flex-basis:35% */ min-width: 240px; /* allow smaller than before but keep readable */ display: flex; flex-direction: column; min-height: 0; } /* Config content uses remaining space and can shrink/grow */ .rcm-config-content { flex: 1 1 65%; /* flex-grow:1 to take remaining, flex-shrink:1 */ min-width: 220px; display: flex; flex-direction: column; } /* Make card body scrollable if content overflows */ .config-list .list-body, .rcm-config-content .card-body, .config-list .list-body ul { overflow: auto; } /* Ensure list-body and editor body expand to fill container */ .config-list .list-body { height: 100%; } .rcm-config-content .card-body { height: 100%; } /* Make config list body fill available height and scroll when content overflows */ .rcm-config-list .card-body.list-body { flex: 1 1 auto; /* expand to fill container */ min-height: 0; /* allow flex children to shrink in many browsers */ overflow: auto; /* enable scrolling when content overflows */ padding: 0.25rem 0.5rem; /* keep slight padding for list */ } /* Ensure the list itself doesn't add extra margins that affect scrolling */ .rcm-config-list .list-group { margin: 0; padding: 0; } /* Each list item keeps its padding but stays in flow */ .rcm-config-list .list-group-item { padding: 0.75rem 1rem; } /* List items spacing */ .list-group-item { cursor: pointer; } /* Left side controls (robot id + select) */ .rcm-toolbar-left { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; } /* Right side action buttons */ .rcm-toolbar-right { display: flex; align-items: center; } /* Group buttons with small spacing */ .rcm-action-group { display: flex; gap: 0.5rem; } /* Inputs sizing */ .rcm-input { width: 160px; background: #1a1a1a; border: 1px solid rgba(255,255,255,0.06); color: #e6e6e6; } .rcm-select-wrapper { position: relative; display: inline-flex; align-items: center; } /* Make select background brighter and match button gradients (blue tone similar to Update) */ .rcm-select { width: 180px; margin-left: 6px; /* bring select closer to left controls */ background: linear-gradient(180deg, #4aa0db, #2b87c9); border: 1px solid rgba(0,0,0,0.12); color: #fff; appearance: none; padding-right: 28px; /* space for icon */ box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset; } /* Hover effect: slightly brighter */ .rcm-select-wrapper:hover .rcm-select { background: linear-gradient(180deg, #5bb6ee, #399ad6); border-color: rgba(58,123,184,0.22); transform: translateY(-1px); } /* Select icon color to contrast with brighter select */ .rcm-select-icon { position: absolute; right: 6px; pointer-events: none; color: rgba(255,255,255,0.9); display: inline-flex; align-items: center; } /* Toolbar labels */ .rcm-label { font-size: 0.9rem; margin-right: 6px; color: #cfcfcf; } /* Minor button styling to match toolbar */ .rcm-btn { min-width: 84px; } /* Icon button styles */ .rcm-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 34px; padding: 0.25rem; border-radius: 6px; background: transparent; color: #e6e6e6; border: 1px solid rgba(255,255,255,0.04); } .rcm-icon-btn svg { display: block; } /* Icon button hover and focus states */ .rcm-icon-btn:hover, .rcm-icon-btn:focus { background: rgba(255,255,255,0.03); color: #fff; border-color: rgba(255,255,255,0.08); } .rcm-danger { color: #ffb3b3; border-color: rgba(255,100,100,0.18); } /* Adjust bootstrap button colors for dark toolbar when using outline variants */ .rcm-toolbar .btn-outline-primary { color: #cfe2ff; border-color: rgba(95,160,255,0.2); } .rcm-toolbar .btn-outline-success { color: #d4f5d4; border-color: rgba(60,200,120,0.18); } .rcm-toolbar .btn-outline-danger { color: #ffcfcf; border-color: rgba(255,100,100,0.18); } /* Specific styles for action buttons (Add, Update, Delete) */ .rcm-action-group button[aria-label="Add"] { background: linear-gradient(180deg, #4bb24b, #2f9a2f); /* bright green */ color: #fff; border: 1px solid rgba(0,0,0,0.08); box-shadow: 0 1px 0 rgba(255,255,255,0.06) inset; } .rcm-action-group button[aria-label="Add"]:hover { background: linear-gradient(180deg, #66d166, #3fb83f); transform: translateY(-1px); } .rcm-action-group button[aria-label="Add"]:focus { outline: none; box-shadow: 0 0 0 3px rgba(56,160,56,0.18); } .rcm-action-group button[aria-label="Update"] { background: linear-gradient(180deg, #4aa0db, #2b87c9); /* bright blue */ color: #fff; border: 1px solid rgba(0,0,0,0.08); box-shadow: 0 1px 0 rgba(255,255,255,0.08) inset; } .rcm-action-group button[aria-label="Update"]:hover { background: linear-gradient(180deg, #5bb6ee, #399ad6); transform: translateY(-1px); } .rcm-action-group button[aria-label="Update"]:focus { outline: none; box-shadow: 0 0 0 3px rgba(58,123,184,0.18); } .rcm-action-group button[aria-label="Delete"] { background: linear-gradient(180deg, #ff6b6b, #e04848); /* bright red */ color: #fff; border: 1px solid rgba(0,0,0,0.08); box-shadow: 0 1px 0 rgba(255,255,255,0.06) inset; } .rcm-action-group button[aria-label="Delete"]:hover { background: linear-gradient(180deg, #ff8282, #ec5b5b); transform: translateY(-1px); } .rcm-action-group button[aria-label="Delete"]:focus { outline: none; box-shadow: 0 0 0 3px rgba(224,72,72,0.18); } /* Ensure icons inside the action buttons remain visible */ .rcm-action-group button[aria-label="Add"] .mdi, .rcm-action-group button[aria-label="Update"] .mdi, .rcm-action-group button[aria-label="Delete"] .mdi { color: #fff; } /* Ensure dropdown options use dark theme matching select */ .rcm-select option { background-color: #141414 !important; color: #e6e6e6 !important; } /* Hover/active state inside dropdown */ .rcm-select option:hover, .rcm-select option:checked { background-color: #2b87c9 !important; /* match update button blue */ color: #fff !important; } /* Optgroup styling (if used) */ .rcm-select optgroup { color: #e6e6e6; background: #141414; } /* Tooltip for action buttons using data-tooltip attribute */ .rcm-action-group button[data-tooltip] { position: relative; } .rcm-action-group button[data-tooltip]::after { content: attr(data-tooltip); position: absolute; left: 50%; transform: translateX(-50%) translateY(8px); bottom: -9999px; /* hidden by default below flow */ background: rgba(20,20,20,0.98); color: #fff; padding: 6px 10px; border-radius: 6px; font-size: 0.85rem; white-space: nowrap; box-shadow: 0 2px 6px rgba(0,0,0,0.5); opacity: 0; pointer-events: none; transition: opacity 0.12s ease, transform 0.12s ease; z-index: 50; } /* Arrow below tooltip */ .rcm-action-group button[data-tooltip]::before { content: ""; position: absolute; left: 50%; transform: translateX(-50%); bottom: -9999px; width: 8px; height: 8px; background: rgba(20,20,20,0.98); transform-origin: center; rotate: 45deg; z-index: 49; } /* Show tooltip on hover */ .rcm-action-group button[data-tooltip]:hover::after, .rcm-action-group button[data-tooltip]:hover::before { bottom: -45px; /* reduced gap: place tooltip closer to the button */ opacity: 1; transform: translateX(-50%) translateY(0); } /* Adjust for danger button (slightly different color) */ .rcm-action-group button[data-tooltip].rcm-danger::after { background: rgba(224,72,72,0.95); } /* Slightly lift the button on hover to match tooltip */ .rcm-action-group button[data-tooltip]:hover { transform: translateY(-2px); } /* Tooltip backgrounds matching their buttons */ .rcm-action-group button[aria-label="Add"][data-tooltip]::after { background: linear-gradient(180deg, #4bb24b, #2f9a2f); } .rcm-action-group button[aria-label="Add"][data-tooltip]::before { background: #2f9a2f; } .rcm-action-group button[aria-label="Update"][data-tooltip]::after { background: linear-gradient(180deg, #4aa0db, #2b87c9); } .rcm-action-group button[aria-label="Update"][data-tooltip]::before { background: #2b87c9; } /* Delete already had a red variant, update the arrow to match precisely */ .rcm-action-group button[aria-label="Delete"][data-tooltip]::after, .rcm-action-group button[data-tooltip].rcm-danger::after { background: linear-gradient(180deg, #ff6b6b, #e04848); } .rcm-action-group button[aria-label="Delete"][data-tooltip]::before, .rcm-action-group button[data-tooltip].rcm-danger::before { background: #e04848; } /* Ensure tooltip text stays readable on gradients */ .rcm-action-group button[data-tooltip]::after { color: #fff; } /* Active badge in config list: make slightly larger and more visible */ .rcm-config-list .list-group-item .badge { font-size: 1.05rem; /* slightly larger */ padding: 0.45rem 0.8rem; border-radius: 0.5rem; line-height: 1; margin-left: 0.6rem; opacity: 0.98; display: inline-block; vertical-align: middle; } /* Overlay that blocks the whole viewport while loading */ .rcm-overlay { position: absolute; inset: 0; /* top:0; right:0; bottom:0; left:0; */ display: flex; align-items: center; justify-content: center; background: rgba(7, 10, 13, 0.55); z-index: 1050; /* above most UI layers */ pointer-events: auto; /* capture mouse interactions */ } /* inner content: spinner + optional message */ .rcm-overlay-content { display: inline-flex; align-items: center; gap: 0.6rem; background: rgba(20, 20, 20, 0.85); padding: 0.75rem 1rem; border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,0.45); color: #fff; font-weight: 500; transform: translateY(-6px); } /* message text */ .rcm-overlay-message { font-size: 0.95rem; color: #eef3ff; } /* ensure spinner is visible on dark overlay */ .rcm-overlay .spinner-border { width: 1.25rem; height: 1.25rem; border-width: 0.18rem; color: #ffffff; } /* Modal overlay (create dialog) */ .rcm-modal-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(7, 10, 13, 0.45); z-index: 1065; pointer-events: auto; } /* Modal container */ .rcm-modal { width: 820px; max-width: calc(100% - 40px); border-radius: 8px; box-shadow: 0 12px 40px rgba(0,0,0,0.5); background: var(--mud-palette-surface, #0f1720); color: #e6e6e6; } /* Ensure card inside modal uses default spacing already present */ .rcm-modal .card { background: #0f1720; border: 1px solid rgba(255,255,255,0.04); } /* Header styling */ .rcm-modal .card-header { padding: 0.6rem 0.9rem; background: rgba(255,255,255,0.02); border-bottom: 1px solid rgba(255,255,255,0.03); } /* Modal message / spinner adjustments (already defined for overlay) */ .rcm-overlay .spinner-border { width: 1.25rem; height: 1.25rem; border-width: 0.18rem; color: #ffffff; } /* Keep responsive layout for modal form inputs */ .rcm-modal .card-body { padding: 0.8rem; color: #e6e6e6; } /* --- Contrast adjustments for modal form elements --- */ /* Improve readability by increasing text contrast and adjusting input backgrounds */ .rcm-modal { color: #eaf4ff; /* default text inside modal */ } /* labels, headers and small notes */ .rcm-modal .form-label, .rcm-modal label, .rcm-modal .card-header strong, .rcm-modal .card-header, .rcm-modal .form-text, .rcm-modal .validation-message, .rcm-modal .text-muted { color: #cfe6ff; } /* form controls */ .rcm-modal .form-control, .rcm-modal .form-select, .rcm-modal input[type="text"], .rcm-modal input[type="number"], .rcm-modal textarea { /*background: rgba(255,255,255,0.03);*/ /* subtle contrast with modal bg */ /*color: #ffffff;*/ border: 1px solid rgba(255,255,255,0.08); box-shadow: none; caret-color: #ffffff; } /* placeholder text */ .rcm-modal .form-control::placeholder, .rcm-modal input::placeholder, .rcm-modal textarea::placeholder { color: rgba(255,255,255,0.55); } /* validation / summary messages */ .rcm-modal .validation-message, .rcm-modal .validation-summary-valid, .rcm-modal .validation-summary-errors, .rcm-modal .field-validation-error { color: #ffd2d2; } /* modal buttons */ .rcm-modal .btn-link { color: #cfcfcf; } /* keep modal small text readable */ .rcm-modal .card-body { font-size: 0.95rem; line-height: 1.4; }