/* Shared component contract for Perfex admin, authentication and customer portal.
 * No overflow:hidden on panels/tables: it would clip menus and date pickers.
 * Native plugin markup, accessibility, colors of statuses and events are retained.
 */
:root{--cv-control-radius:8px;--cv-panel-radius:12px;--cv-component-border:#e6e3e8;--cv-component-muted:#f8f7f9;--cv-component-focus:#a85564}
body .btn,body .form-control,body .bootstrap-select>.dropdown-toggle,body .dt-button{border-radius:var(--cv-control-radius)}
body .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}
body .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}
body .btn-group>.btn:last-child:not(:first-child),body .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}
body .input-group>.form-control:not(:last-child),body .input-group>.input-group-addon:first-child,body .input-group>.input-group-btn:first-child>.btn{border-top-right-radius:0;border-bottom-right-radius:0}
body .input-group>.form-control:not(:first-child),body .input-group>.input-group-addon:last-child,body .input-group>.input-group-btn:last-child>.btn{border-top-left-radius:0;border-bottom-left-radius:0}
body .input-group-addon:first-child{border-radius:8px 0 0 8px}
body .input-group-addon:last-child{border-radius:0 8px 8px 0}
body .input-group .bootstrap-select:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}
body .input-group .bootstrap-select:not(:first-child)>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}
/* Searchable selects, including detached menus rendered on body. */
body .bootstrap-select .dropdown-menu,body .bs-container .dropdown-menu,body .select2-dropdown,body .ui-autocomplete{border:1px solid var(--cv-component-border);border-radius:10px;box-shadow:0 8px 28px #25132f12}
body .bootstrap-select .dropdown-menu.inner,body .bs-container .dropdown-menu.inner{border:0;box-shadow:none;border-radius:6px}
body .bootstrap-select .bs-searchbox input,body .select2-search__field{border:1px solid #dcd7e0;border-radius:7px;box-shadow:none}
body .bootstrap-select .dropdown-menu>li>a,body .bs-container .dropdown-menu>li>a{border-radius:6px;padding:8px 12px}
body .bootstrap-select .dropdown-menu>li>a:hover,body .bs-container .dropdown-menu>li>a:hover{background:#f5f3f6}
body .select2-container .select2-selection{border:1px solid #dcd7e0;border-radius:8px;min-height:38px}
body .select2-container .select2-selection--single .select2-selection__rendered{line-height:36px}
body .select2-container .select2-selection--single .select2-selection__arrow{height:36px}
/* Rounded table outlines without changing the plugin's column calculations. */
/* Perfex's full-width table uses negative margins. Keep it inside card padding. */
body .panel-table-full .dataTables_wrapper .table-responsive{margin-left:0;margin-right:0;margin-top:12px;margin-bottom:16px}
body table.table{border-radius:10px}
body table.table>thead:first-child>tr:first-child>th:first-child{border-top-left-radius:10px}
body table.table>thead:first-child>tr:first-child>th:last-child{border-top-right-radius:10px}
body table.table>tbody:last-child>tr:last-child>td:first-child{border-bottom-left-radius:10px}
body table.table>tbody:last-child>tr:last-child>td:last-child{border-bottom-right-radius:10px}
/* Read-only lists: one outline, horizontal separators. Keep invoice item editors,
 * summary/layout tables and calendar grids on their native geometry. */
body table.table:has(>thead):not(.items):not(.table-main-invoice-edit){border-collapse:separate;border-spacing:0;border:1px solid var(--cv-component-border);border-radius:12px;background:#fff}
body table.table:has(>thead):not(.items):not(.table-main-invoice-edit)>:is(thead,tbody,tfoot)>tr>:is(th,td){border-left:0;border-right:0;border-top:0;border-bottom:1px solid #eeebf0;padding:14px 16px;vertical-align:middle}
body table.table:has(>thead):not(.items):not(.table-main-invoice-edit)>thead>tr>th{background:#f8f7f9;color:#625b68;font-size:12px;font-weight:600}
body table.table:has(>thead):not(.items):not(.table-main-invoice-edit)>:last-child>tr:last-child>:is(th,td){border-bottom:0}
body table.table:has(>thead):not(.items):not(.table-main-invoice-edit)>tfoot>tr>:is(th,td){background:#faf9fb}
body table.table>tfoot:last-child>tr:last-child>:first-child{border-bottom-left-radius:11px}
body table.table>tfoot:last-child>tr:last-child>:last-child{border-bottom-right-radius:11px}
/* Responsive containers must not add a second frame around the table. */
body .table-responsive:has(>table.table),body .panel-table-full .dataTables_wrapper .table-responsive{border:0}
body .dataTables_wrapper .dataTables_length select,body .dataTables_wrapper .dataTables_filter input{border:1px solid #dcd7e0;border-radius:8px;box-shadow:none}
body .dt-button-collection{border:1px solid var(--cv-component-border);border-radius:10px;box-shadow:0 8px 28px #25132f12;padding:6px}
body .dataTables_processing{border:1px solid var(--cv-component-border);border-radius:10px;background:#fff;box-shadow:0 8px 28px #25132f12}
body .pagination>li:first-child>a,body .pagination>li:first-child>span{border-radius:8px 0 0 8px}
body .pagination>li:last-child>a,body .pagination>li:last-child>span{border-radius:0 8px 8px 0}
/* Date/time picker and calendar controls; retain selected-day/event semantics. */
body .xdsoft_datetimepicker,body .datepicker.dropdown-menu,body .bootstrap-datetimepicker-widget{border:1px solid var(--cv-component-border);border-radius:10px;box-shadow:0 8px 28px #25132f12;padding:8px}
body .xdsoft_datetimepicker .xdsoft_calendar td,body .datepicker table tr td,body .datepicker table tr th{border-radius:5px}
body .fc .fc-button{border-radius:8px;box-shadow:none}
body .fc .fc-button-group>.fc-button:not(:first-child):not(:last-child){border-radius:0}
body .fc .fc-button-group>.fc-button:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
body .fc .fc-button-group>.fc-button:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}
/* Uploads, tags, editors and secondary surfaces. */
body form.dropzone,body .dropzone-manual,body #dropzoneDragArea,body .dropzoneDragArea{border:1px dashed #c9c1cf;border-radius:12px;background:#faf9fb}
body form.dropzone:hover,body .dropzoneDragArea:hover{border-color:#a85564;background:#faf0f2}
body .dropzone .dz-preview .dz-image{border-radius:10px}
body ul.tagit{border-radius:8px}
body ul.tagit li.tagit-choice,body ul.tagit-autocomplete{border-radius:7px}
body .mce-tinymce,body .tox-tinymce{border:1px solid #dcd7e0!important;border-radius:10px!important}
body .mce-top-part,body .tox-editor-header{border-radius:10px 10px 0 0}
body .mce-statusbar,body .tox-statusbar{border-radius:0 0 10px 10px}
body .mce-window,body .tox-dialog,body .popover,body .sweet-alert,body .swal2-popup{border-radius:12px}
body .popover-title{border-radius:11px 11px 0 0}
body .list-group-item:first-child{border-top-left-radius:10px;border-top-right-radius:10px}
body .list-group-item:last-child{border-bottom-left-radius:10px;border-bottom-right-radius:10px}
body .well,body .panel,body .modal-content{border-radius:12px}
body .alert,body #toast-container>div{border-radius:9px}
body .label{border-radius:6px}
body .progress{border-radius:999px}
body .checkbox label:before{border-radius:4px}
body .btn:focus-visible,body .form-control:focus-visible,body .bootstrap-select>.dropdown-toggle:focus-visible,body .select2-selection:focus-visible{outline:2px solid var(--cv-component-focus);outline-offset:2px}
body .btn[disabled],body .btn.disabled{cursor:not-allowed}
@media(prefers-reduced-motion:reduce){body .btn,body .bootstrap-select>.dropdown-toggle{transition:none}}
