/* Effective config sections – mobile-first, touch-friendly. Use ::deep so styles apply to EffectiveConfigSectionPanel (child component) markup. */ /* Wrapper: border and grouping around all sections. Margin-top separates from config files list above. */ .ec-container { margin-top: 0.75rem; border: 1px solid var(--bs-border-color, #dee2e6); border-radius: 0.5rem; padding: 1rem; background-color: var(--bs-secondary-bg, #f8f9fa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); min-width: 0; overflow: visible; } /* Toolbar: single row, search left and actions right. Use ::deep so styles apply to EffectiveConfigToolbar (child) markup. */ ::deep .ec-toolbar { display: flex; flex-wrap: nowrap; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; min-width: 0; } ::deep .ec-toolbar-search { flex: 1 1 auto; min-width: 0; max-width: 24rem; } ::deep .ec-toolbar-actions { display: flex; flex-wrap: nowrap; flex-shrink: 0; align-items: center; gap: 0.5rem; margin-left: auto; } ::deep .ec-toolbar-changes-link { cursor: pointer; } ::deep .ec-toolbar-changes-link:hover { text-decoration: underline; } .ec-sections { display: flex; flex-direction: column; gap: 0; min-width: 0; } ::deep .ec-section { border-bottom: 1px solid var(--bs-border-color, #dee2e6); } ::deep .ec-section:last-child { border-bottom: none; } /* Section header: clear separation from background, touch-friendly (min 44px), distinct so search jumps are obvious */ ::deep .ec-section-header { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 2.75rem; padding: 0.625rem 1rem; margin: 0; border: none; border-left: 3px solid var(--bs-border-color, #dee2e6); border-radius: 0.25rem; background-color: var(--bs-body-bg, #fff); color: inherit; text-align: left; cursor: pointer; font-size: inherit; line-height: 1.3; -webkit-tap-highlight-color: transparent; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; } ::deep .ec-section-header:hover { color: var(--bs-primary, #0d6efd); background-color: var(--bs-secondary-bg, rgba(0, 0, 0, 0.04)); border-left-color: var(--bs-primary, #0d6efd); } ::deep .ec-section-header:focus-visible { outline: 2px solid var(--bs-primary, #0d6efd); outline-offset: 2px; } /* Open state: header reads as "active", left border accent */ ::deep .ec-section-open .ec-section-header { background-color: var(--bs-body-bg, #fff); color: var(--bs-emphasis-color, inherit); font-weight: 600; border-left-color: var(--bs-primary, #0d6efd); box-shadow: 0 1px 0 var(--bs-border-color, #dee2e6); } ::deep .ec-section-open .ec-section-header:hover { background-color: var(--bs-secondary-bg, rgba(0, 0, 0, 0.04)); color: var(--bs-primary, #0d6efd); } ::deep .ec-section-title { flex: 1; min-width: 0; } ::deep .ec-section-chevron { flex-shrink: 0; font-size: 0.8rem; opacity: 0.8; margin-left: 0.35rem; transition: opacity 0.2s ease; } ::deep .ec-section-open .ec-section-chevron { opacity: 1; } /* Animated expand/collapse: grid 0fr → 1fr */ ::deep .ec-section-collapse { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.25s ease-out; } ::deep .ec-section-collapse-open { grid-template-rows: 1fr; } ::deep .ec-section-collapse-inner { min-height: 0; overflow: hidden; } ::deep .ec-section-body { padding: 0.25rem 1rem 0.5rem 1rem; padding-left: 1rem; border-left: 2px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.075)); margin-left: 0; min-width: 0; overflow: visible; overflow-wrap: break-word; word-break: break-word; } /* Long paths/values wrap on small screens; badges stay inline */ ::deep .ec-section-body ul { overflow-wrap: break-word; word-break: break-word; } ::deep .ec-section-body li { overflow-wrap: break-word; word-break: break-word; } /* Field row: label + value + optional badge. Same structure for custom and default displays. */ ::deep .ec-field { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; margin-bottom: 0.35rem; } /* Option label + field-level badges (editable / ok / cancel) on one row */ ::deep .ec-field-label-row { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; flex: 0 1 auto; min-width: 0; } ::deep .ec-field:last-child { margin-bottom: 0; } ::deep .ec-field-label { flex-shrink: 0; min-width: 0; } /* Clickable label: open full option help on click (hover tooltip unchanged) */ ::deep .ec-field-label-help { cursor: pointer; text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 2px; } ::deep .ec-field-label-help:hover { color: var(--bs-primary, #0d6efd); } ::deep .ec-field-value { display: flex; flex-wrap: wrap; align-items: center; flex: 1 1 auto; min-width: 0; overflow-wrap: break-word; word-break: break-word; gap: 0.25rem; } /* When a field is active: value + badges in one block so any click inside (checkbox, input, ok/cancel) doesn't deactivate */ ::deep .ec-field-value-when-editing { display: inline-flex; flex-wrap: nowrap; align-items: center; gap: 0.25rem; min-width: 0; max-width: 100%; } /* Edit wrapper (checkbox/input) shrinks to content */ ::deep .ec-field-edit-wrapper { flex: 0 1 auto; display: inline-flex; align-items: center; min-width: 0; max-width: 100%; } /* Input/select in value area can shrink so the editable badge stays on the same line */ ::deep .ec-field-value > .form-control, ::deep .ec-field-value > .form-select { flex: 1 1 auto; min-width: 0; } /* Multi-value: full width below label, indented ordered list. min-width: 0 so flex doesn't prevent wrapping. */ ::deep .ec-field-value-multi { flex-basis: 100%; min-width: 0; padding-left: 1.25rem; margin-top: 0.15rem; overflow-wrap: break-word; word-break: break-word; } ::deep .ec-field-value-list { margin: 0; padding-left: 1.25rem; list-style-type: decimal; min-width: 0; } ::deep .ec-field-value-list li { margin-bottom: 0.2rem; min-width: 0; overflow-wrap: break-word; word-break: break-word; } ::deep .ec-field-value-list li:last-child { margin-bottom: 0; } ::deep .ec-field-value-list li.ec-multi-list-empty-hint { list-style: none; margin-left: -1.25rem; } /* Shared with default and custom (e.g. domain) multi-value editors */ ::deep .ec-field-value-list li.ec-multi-list-add-item { list-style: none; margin-left: -1.25rem; margin-top: 0.25rem; padding-top: 0.25rem; border-top: 1px dashed var(--bs-border-color, #dee2e6); } ::deep .ec-field-value-list li.ec-multi-list-add-item > .ec-multi-list-row-controls > .status-badge-inline { margin-left: auto; } /* Long paths/URLs wrap; allow break anywhere so nothing is clipped */ ::deep .ec-field-value-item { display: inline; overflow-wrap: break-word; word-break: break-word; } ::deep .ec-field-value-sep { margin-right: 0.25rem; } /* StatusBadge inside field rows: alignment; spacing comes from StatusBadge .status-badge-inline */ ::deep .ec-field .status-badge, ::deep .ec-field-value-item .status-badge { display: inline-flex; align-items: center; line-height: 1; } /* Only when field is in edit mode: push ok/cancel/revert to end and allow them to wrap first on narrow widths */ ::deep .ec-field-value-when-editing > .status-badge-inline { flex: 0 0 auto; white-space: nowrap; margin-left: auto; } @media (max-width: 575.98px) { ::deep .ec-field-value-when-editing { flex-wrap: wrap; } ::deep .ec-field-value-when-editing > .status-badge-inline { flex-basis: 100%; margin-left: 0; margin-top: 0.15rem; } } @media (max-width: 767.98px) { ::deep .ec-section-header { padding-left: 0.75rem; padding-right: 0.75rem; } ::deep .ec-section-body { padding-left: 0.75rem; padding-right: 0.75rem; } }