/* Shared FlexAdmin readability and compact, responsive business controls. */
:root:not([data-theme=dark]) {
  --accent-color: #08716f;
  --success-color: #15803d;
  --info-color: #036b9f;
  --light-color: #5f6e83;
  --sidebar-muted-color: #596c84;
  --input-border: #7f91a7;
  --webot-warning-ink: #92400e;
  --webot-filled-label: #fff;
  --bs-primary-rgb: 8, 113, 111;
  --bs-success-rgb: 21, 128, 61;
  --bs-info-rgb: 3, 107, 159;
  --bs-primary-text-emphasis: #086361;
  --bs-primary-bg-subtle: #dff3f1;
  --bs-primary-border-subtle: #9acbc7;
}
[data-theme=dark] {
  --light-color: #95aebe;
  --input-border: #597b92;
  --webot-warning-ink: #fbbf24;
  --webot-filled-label: #08141a;
  --bs-primary-rgb: 34, 211, 206;
  --bs-success-rgb: 74, 222, 128;
  --bs-info-rgb: 56, 189, 248;
  --bs-primary-text-emphasis: var(--accent-color);
  --bs-primary-bg-subtle: rgba(34, 211, 206, .14);
  --bs-primary-border-subtle: rgba(34, 211, 206, .4);
}
:root, [data-theme] { --bs-primary: var(--accent-color); }
.header .user-dropdown, .header .user-menu-info { min-width: 0; }
.header .user-trigger { max-width: 100%; }
.header .user-brief { max-width: clamp(7rem, 12vw, 11rem); }
.header .user-name { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.header :is(.user-menu-name, .user-menu-email) { overflow-wrap: anywhere; white-space: normal; }
.text-warning { color: var(--webot-warning-ink) !important; }
.badge-soft-warning, .badge-outline-warning { color: var(--webot-warning-ink); }
:root:not([data-theme=dark]) .badge-soft-danger { color: #b91c1c; }
:root:not([data-theme=dark]) :not(pre) > code:not(.badge) { color: #b91c1c; }
[data-theme=dark] :not(pre) > code:not(.badge) { color: #ff8fa1; }
:root:not([data-theme=dark]) .sidebar .nav-item > .nav-link.active :is(.nav-badge, .nav-badge-soft) { background: rgba(0, 0, 0, .12); }
.form-control::placeholder, input::placeholder, textarea::placeholder { color: var(--light-color); opacity: 1; }
/* Form boundaries and focus must remain distinguishable from their surface. */
.form-control, .form-select, .form-check-input { border-color: var(--input-border); }
[data-theme=dark] .form-check-input { border-color: var(--input-border); }
.form-check-input:disabled ~ .form-check-label { color: var(--muted-color); opacity: 1; }
:is(.form-control, .form-select, .form-check-input):focus-visible,
:is(a, button, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--accent-color);
  outline-offset: 2px;
}
.form-control:disabled, .form-control[readonly], .form-select:disabled { opacity: 1; color: var(--muted-color); }
.form-control[readonly] { cursor: text; }
.form-select option, .form-select optgroup { color: var(--default-color); background: var(--input-bg); }
[data-theme=dark] .form-select {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2395aebe' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
}
[data-theme=dark] .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%2308141a' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}
[data-theme=dark] .form-check-input[type=radio]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%2308141a'/%3e%3c/svg%3e");
}
[data-theme=dark] .form-switch .form-check-input:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2308141a'/%3e%3c/svg%3e");
}
/* Solid and selected outline controls use the ink appropriate for their fill. */
.btn-primary, .btn-accent, .btn-success, .btn-info, .btn-danger {
  --bs-btn-color: var(--webot-filled-label);
  --bs-btn-hover-color: var(--webot-filled-label);
  --bs-btn-active-color: var(--webot-filled-label);
  color: var(--webot-filled-label);
}
:is(.btn-primary, .btn-accent, .btn-success, .btn-info, .btn-danger):is(:hover, :active, .active),
:is(.btn-outline-primary, .btn-outline-success, .btn-outline-info, .btn-outline-danger):is(:hover, :active, .active),
.btn-check:checked + :is(.btn-outline-primary, .btn-outline-success, .btn-outline-info, .btn-outline-danger) {
  color: var(--webot-filled-label);
  --bs-btn-active-color: var(--webot-filled-label);
}
.btn-warning, .btn-warning:is(:hover, :active, .active),
.btn-outline-warning:is(:hover, :active, .active), .btn-check:checked + .btn-outline-warning {
  color: #08141a;
  --bs-btn-color: #08141a;
  --bs-btn-hover-color: #08141a;
  --bs-btn-active-color: #08141a;
}
.btn-outline-warning:not(:hover):not(:active):not(.active) { color: var(--webot-warning-ink); }
[data-theme=dark] :is(.btn-secondary, .btn-dark),
[data-theme=dark] :is(.btn-secondary, .btn-dark):is(:hover, :active, .active),
[data-theme=dark] .btn-outline-secondary:is(:hover, :active, .active),
[data-theme=dark] .btn-check:checked + .btn-outline-secondary { color: #08141a; }
.btn-outline-light, [data-theme=dark] .btn-outline-dark {
  color: var(--default-color);
  border-color: var(--input-border);
  --bs-btn-active-color: var(--default-color);
  --bs-btn-active-bg: var(--table-hover-bg);
}
.btn-outline-light:is(:hover, :active, .active), [data-theme=dark] .btn-outline-dark:is(:hover, :active, .active) {
  color: var(--heading-color);
  background: var(--table-hover-bg);
  border-color: var(--input-border);
}
[data-theme=dark] .list-group-item.active { color: #08141a; }
/* Keep nested icons from retaining unrelated text utility colors on solid controls. */
:is(.btn-primary, .btn-accent, .btn-success, .btn-info, .btn-danger, .btn-warning, .btn-secondary, .btn-dark) :is(span, i, svg) { color: inherit; }
.btn:disabled, .btn.disabled, [data-theme=dark] .btn:disabled {
  opacity: 1;
  color: var(--muted-color) !important;
  background-color: var(--background-color);
  border-color: var(--input-border);
}
.page-item.disabled .page-link { color: var(--muted-color); opacity: 1; }
.bg-warning, .text-bg-warning { color: #08141a !important; }
.text-bg-primary { background-color: var(--accent-color) !important; }
.text-bg-success { background-color: var(--success-color) !important; }
.text-bg-info { background-color: var(--info-color) !important; }
.text-bg-danger { background-color: var(--danger-color) !important; }
:is(.text-bg-primary, .text-bg-success, .text-bg-info, .text-bg-danger) { color: var(--webot-filled-label) !important; }
[data-theme=dark] :is(.badge.bg-primary, .badge.bg-success, .badge.bg-info, .badge.bg-danger) { color: #08141a; }
[data-theme=dark] .text-dark { color: var(--default-color) !important; }
[data-theme=dark] .bg-white { background-color: var(--surface-color) !important; }
[data-theme=dark] .bg-warning.text-dark { color: #08141a !important; }
[data-theme=dark] ::selection { background: var(--accent-color); color: #08141a; }
/* Flexible controls consume available width, with actions on the same line when they fit. */
.webot-filter-bar, .webot-native-content .filters-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: .75rem;
  min-width: 0;
  max-width: 100%;
}
.webot-filter-bar > *, .webot-native-content .filters-wrap > .filter-item {
  flex: 1 1 9rem;
  width: auto;
  min-width: 0;
  max-width: 100%;
  margin-bottom: 0;
}
.webot-filter-bar > .webot-filter-search { flex: 2 1 16rem; }
.webot-filter-bar > .webot-filter-actions,
.webot-native-content .filters-wrap > .btn-item {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem;
}
.webot-filter-bar label, .webot-native-content .filters-wrap label { display: block; margin-bottom: .375rem; }
.webot-filter-bar :is(input, select), .webot-native-content .filters-wrap :is(input, select) { width: 100%; min-width: 0; }
.webot-filter-actions .btn { white-space: nowrap; }
.webot-history-filters { max-width: 100%; }
.webot-history-filters > input[type=search] { flex: 1 1 13rem; width: auto; min-width: 0; }
.webot-history-filters > label { margin-bottom: 0; }
/* A table can be wider than its card; the document should not become wider. */
.main, .main-content, .webot-native-content,
.webot-native-content :is(.card, .card-body, .row > *, .dataTables_wrapper, .dt-container) { min-width: 0; }
.webot-native-content { max-width: 100%; }
.webot-native-content .d-flex > .form-control { min-width: 0; }
.webot-native-content .table-responsive { width: 100%; max-width: 100%; }
.webot-native-content .table > thead > tr > th { white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.webot-native-content .table td.text-break { max-width: 28rem; overflow-wrap: anywhere; }
.webot-native-content .table :is(th, td) > .btn { white-space: nowrap; }
.webot-native-content .table :is(th, td) > pre { max-width: 28rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.webot-native-content :is(.card-header, .page-header) { min-width: 0; flex-wrap: wrap; gap: .75rem; }
.webot-native-content :is(.card-header, .page-header) > :not(.btn) { min-width: 0; }
.webot-native-content :is(.card-title, .page-title, .modal-title) { overflow-wrap: anywhere; }
.webot-native-content :is(.card-header, .page-header) .btn { white-space: normal; }
.webot-native-content .pagination { flex-wrap: wrap; }
.webot-native-content .dataTables_wrapper :is(.dataTables_filter, .dataTables_length) { min-width: 0; margin-bottom: .75rem; }
.webot-native-content .dataTables_wrapper .dataTables_length { margin-top: 0; }
.webot-native-content .dataTables_wrapper:has(> .dataTables_filter) > .dataTables_length { grid-column: 1; }
.webot-native-content .dataTables_wrapper > .dataTables_filter { grid-column: 2; justify-self: end; align-self: center; }
.webot-native-content .dataTables_filter input { width: min(16rem, 100%); max-width: 100%; }
.webot-native-content .dataTables_filter label { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.webot-native-content .dataTables_filter input { margin-left: 0; }
.webot-native-content .dataTables_wrapper .dataTables_paginate { display: flex; flex-wrap: wrap; gap: .25rem; }
.webot-native-content .dataTables_wrapper .dataTables_paginate span { display: flex; flex-wrap: wrap; }
.webot-native-content .dataTables_wrapper .dataTables_paginate .paginate_button:not(.page-item) { color: var(--accent-color) !important; background: var(--surface-color); border: 1px solid var(--input-border); border-radius: var(--radius-sm); }
.webot-native-content .dataTables_wrapper .dataTables_paginate .paginate_button:not(.page-item):is(.current, :hover) { color: var(--webot-filled-label) !important; background: var(--accent-color); border-color: var(--accent-color); }
.webot-native-content .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:not(.page-item) { color: var(--muted-color) !important; background: var(--background-color); }
.webot-native-content table.dataTable > thead > tr > :is(.sorting, .sorting_asc, .sorting_desc)::before,
.webot-native-content table.dataTable > thead > tr > :is(.sorting, .sorting_asc, .sorting_desc)::after { opacity: .75; }
.webot-native-content table.dataTable > thead > tr > .sorting_asc::before,
.webot-native-content table.dataTable > thead > tr > .sorting_desc::after { color: var(--accent-color); opacity: 1; }
/* Vendor popups can be mounted outside the content root. */
.select2-container { max-width: 100%; min-width: 0; }
.select2-container--default :is(.select2-selection--single, .select2-selection--multiple),
.select2-dropdown, .select2-container--default .select2-search__field { background: var(--input-bg); color: var(--default-color); border-color: var(--input-border); }
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--default-color); }
.select2-container--default :is(.select2-selection__placeholder, .select2-search__field::placeholder) { color: var(--muted-color); }
.select2-container--default .select2-results__option--selected,
.select2-container--default .select2-selection--multiple .select2-selection__choice { background: var(--table-hover-bg); color: var(--default-color); border-color: var(--input-border); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--accent-color); color: var(--webot-filled-label); }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: var(--default-color); border-color: var(--input-border); }
.choices__placeholder { opacity: 1; color: var(--muted-color); }
.choices__list--dropdown .choices__item--selectable.is-highlighted { background: var(--table-hover-bg); color: var(--default-color); }
[data-theme=dark] .choices__list--multiple .choices__item { color: #08141a; }
.choices__list--multiple .choices__button { color: inherit; }
[data-theme=dark] .choices[data-type*=select-multiple] .choices__button {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3cpath stroke='%2308141a' stroke-width='2' d='m2 2 8 8m0-8-8 8'/%3e%3c/svg%3e");
  border-left-color: rgba(8, 20, 26, .35);
}
[data-theme=dark] .flatpickr-day:is(.selected, .startRange, .endRange),
[data-theme=dark] .flatpickr-day.today:hover { color: #08141a; }
[data-theme=dark] .flatpickr-day:is(.selected, .startRange, .endRange):hover,
[data-theme=dark] .flatpickr-day.today:hover { background: color-mix(in srgb, var(--accent-color), black 10%); }
.flatpickr-weekdays .flatpickr-weekday { color: var(--muted-color); }
.progress-bar { color: var(--webot-filled-label); }
.progress-bar-warning { color: #08141a; }
.progress-bar:is(.bg-secondary, .bg-dark) { color: #fff; }
:root:not([data-theme=dark]) .progress-bar-striped {
  background-image: linear-gradient(45deg, rgba(0, 0, 0, .12) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, .12) 50%, rgba(0, 0, 0, .12) 75%, transparent 75%, transparent);
}
[data-theme=dark] .choices[data-type*=select-one]::after { border-top-color: var(--muted-color); }
[data-theme=dark] .choices[data-type*=select-one].is-open::after { border-bottom-color: var(--muted-color); }
[data-theme=dark] .ql-snow :is(.ql-stroke, .ql-stroke-miter) { stroke: var(--default-color); }
[data-theme=dark] .ql-snow .ql-fill { fill: var(--default-color); }
[data-theme=dark] .ql-snow .ql-picker-options { background: var(--surface-color); color: var(--default-color); border-color: var(--input-border); }
[data-theme=dark] .ql-snow .ql-tooltip { background: var(--surface-color); color: var(--default-color); border-color: var(--input-border); }
[data-theme=dark] .ql-snow .ql-tooltip input[type=text] { background: var(--input-bg); color: var(--default-color); border-color: var(--input-border); }
.webot-heading-tooltip { --bs-tooltip-bg: var(--heading-color); --bs-tooltip-color: var(--surface-color); --bs-tooltip-opacity: 1; }
.webot-heading-tooltip .tooltip-inner { max-width: min(24rem, calc(100vw - 2rem)); white-space: normal; overflow-wrap: anywhere; }
@media (max-width: 575.98px) {
  .webot-filter-bar > *, .webot-native-content .filters-wrap > .filter-item { flex-basis: calc(50% - .375rem); }
  .webot-filter-bar > .webot-filter-search { flex-basis: 100%; }
  .webot-filter-bar > .webot-filter-actions, .webot-native-content .filters-wrap > .btn-item { flex-basis: auto; }
  .webot-native-content .dataTables_wrapper { display: block; }
  .webot-native-content .dataTables_wrapper :is(.dataTables_filter, .dataTables_length) { float: none; text-align: start; }
  .webot-native-content .dataTables_wrapper .dataTables_paginate { justify-content: center; }
  .webot-native-content .table > :not(caption) > * > * { padding: .625rem .75rem; }
}
