/* Partposter layout and application widgets on Bootstrap 5. */
:root { --bs-body-font-size: .875rem; }
body { font-size: .875rem; }
.navbar-brand { font-size: 1.15rem; }
.navbar-top .navbar-nav { align-items: center; }
.navbar-top .dropdown-menu { font-size: .875rem; }
.navbar-top .nav-link { white-space: nowrap; }
.navbar-top .navbar-nav > li > form { margin: 0; padding: 0; }
.navbar-top .navbar-nav > li > form > .btn { font-size: inherit; }
.container-wide { width: 94%; max-width: 1800px; }
.wrap > .container, .container-wide { padding-top: 85px; }
.form-group { margin-bottom: 1rem; }
.form-label { margin-bottom: .35rem; font-weight: 600; }
.form-control, .form-select, .btn, .input-group-text { font-size: inherit; }
.input-group-buttons { display: flex; }
.input-group-buttons > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; height: 100%; }
.form-inline { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.form-inline .form-group { margin-bottom: 0; }
.help-block { display: block; font-size: .875em; color: var(--bs-secondary-color); }
.has-error .form-control, .has-error .form-select { border-color: var(--bs-danger); }
.has-error .help-block { color: var(--bs-danger); }
.has-success .form-control { border-color: var(--bs-success); }
/* Existing delivery method selectors wrap a real radio inside the label. */
[data-pp-toggle="buttons"] > .btn { position: relative; }
[data-pp-toggle="buttons"] > .btn > input[type="radio"] { position: absolute; opacity: 0; width: 1px; height: 1px; }
[data-pp-toggle="buttons"] > .btn:has(input:focus-visible) { outline: 3px solid rgba(13,110,253,.4); outline-offset: 2px; }
[data-pp-toggle="buttons"] > .btn.active { color: #fff; background: var(--bs-secondary); border-color: var(--bs-secondary); }
.card { margin-bottom: 1rem; }
.card-header .card-title { margin-bottom: 0; }
.kv-panel-before, .kv-panel-after { padding: .75rem 1rem; }
.kv-panel-before::after, .kv-panel-after::after { display: block; clear: both; content: ""; }
.grid-view .card-header, .grid-view .card-footer { padding: .75rem 1rem; }
.grid-view .table { margin-bottom: 0; }
.grid-view .table > :not(caption) > * > * { vertical-align: middle; }
.grid-view .filters .form-control, .grid-view .filters .form-select { padding: .25rem .5rem; min-height: 30px; }
.grid-view .pagination { margin: 0; }
.grid-view .table tr.warning > * { --bs-table-bg: var(--bs-warning-bg-subtle); }
.grid-view .table tr.danger > * { --bs-table-bg: var(--bs-danger-bg-subtle); }
.grid-view .table tr.success > * { --bs-table-bg: var(--bs-success-bg-subtle); }
a.asc::after, a.desc::after { font-family: FontAwesome; }
a.asc::after, .sort-numerical a.asc::after, .sort-ordinal a.asc::after { content: "\f0de"; }
a.desc::after, .sort-numerical a.desc::after, .sort-ordinal a.desc::after { content: "\f0dd"; }
.page-header { padding-bottom: .5rem; border-bottom: 1px solid var(--bs-border-color); }
.modal-header.card-header { display: flex; }
.modal-title { font-size: 1.1rem; }
.modal-content.border-info > .modal-header { background: var(--bs-info-bg-subtle); }
.modal-content.border-danger > .modal-header { background: var(--bs-danger-bg-subtle); }
.modal-content.border-warning > .modal-header { background: var(--bs-warning-bg-subtle); }
.modal-content.border-success > .modal-header { background: var(--bs-success-bg-subtle); }
.modal-content.border-primary > .modal-header { background: var(--bs-primary-bg-subtle); }
.modal .btn-close { flex-shrink: 0; }
#modalContent .row { --bs-gutter-x: 1.25rem; }
#modalContent .kv-form-horizontal .form-group { margin-bottom: .75rem; }
.popover { font-size: .875rem; }
.kv-editable-popover { max-width: min(95vw, 600px); }
@media (max-width: 991.98px) {
    .navbar-top .navbar-nav { align-items: stretch; }
    .navbar-top .navbar-collapse { max-height: 80vh; overflow-y: auto; }
    .navbar-top .navbar-nav .dropdown-menu { position: static; }
    .container-wide { width: 100%; padding-left: 12px; padding-right: 12px; }
}
@media (max-width: 575.98px) {
    .modal-dialog { margin: .5rem; }
    .form-inline { align-items: stretch; }
    .form-inline .input-group { width: 100% !important; }
}
/* Keep the existing Font Awesome 4 icon set; Krajee's BS5 defaults use fas. */
.fas, .far { display: inline-block; font-family: FontAwesome; font-style: normal; font-weight: normal; line-height: 1; }
.fa-calendar-alt::before { content: "\f073"; }
.fa-file-export::before { content: "\f019"; }
.fa-file-alt::before { content: "\f0f6"; }
.fa-file-excel::before { content: "\f1c3"; }
.fa-file-pdf::before { content: "\f1c1"; }
.fa-file-code::before { content: "\f1c9"; }
.fa-external-link-alt::before { content: "\f08e"; }
.fa-sync::before, .fa-sync-alt::before { content: "\f021"; }
.fa-arrows-alt-v::before { content: "\f07d"; }
.fa-trash-alt::before { content: "\f014"; }
.fa-pencil-alt::before { content: "\f040"; }

.navbar-top .dropdown-menu form .dropdown-item { margin-left: 0; }

/* Keep the site's circular PJAX loader; hide Kartik's second dot loader. */
.partposter-cabinet .kv-grid-loading .kv-loader-overlay { display: none; }
.partposter-cabinet [data-pjax-container].kv-grid-loading {
    overflow: visible;
    max-height: none;
}

/* Compact operational UI: BS5 rem-based defaults must not enlarge the cabinet. */
body.partposter-cabinet {
    --bs-body-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    --bs-body-font-size: 14px;
    --bs-body-line-height: 1.42857143;
    font-family: var(--bs-body-font-family);
    font-size: 14px;
    line-height: 1.42857143;
}
/* Keep the grid width stable when a PJAX filter changes the page height. */
html:has(body.partposter-cabinet .grid-view) { scrollbar-gutter: stable; }
.partposter-cabinet [data-pjax-container]:has(.grid-view) { overflow-anchor: none; }
.partposter-cabinet .grid-view { font-size: 14px; }
.partposter-cabinet .grid-view .card-title,
.partposter-cabinet .grid-view .card-header h5 {
    margin: 0;
    font-size: 16px;
    font-weight: 500;
    line-height: 24px;
}
.partposter-cabinet .btn,
.partposter-cabinet .form-control,
.partposter-cabinet .form-select,
.partposter-cabinet .input-group-text {
    font-size: 14px;
    line-height: 20px;
}
.partposter-cabinet .btn:not(.btn-sm):not(.btn-lg) { padding: 6px 12px; }
.partposter-cabinet input.form-control,
.partposter-cabinet select.form-control,
.partposter-cabinet .form-select { min-height: 34px; }
.partposter-cabinet .grid-view .table .btn-link { padding: 0 2px; }
.partposter-cabinet .grid-view .table .btn-link .fa { vertical-align: baseline; }
/* Yii GridView and other plain Html selects still emit form-control. */
select.form-control:not(.form-select):not([multiple]):not([size]),
select.form-control:not(.form-select)[size="1"] { appearance: auto; padding-right: 2rem; }
.partposter-cabinet .grid-view .filters select { padding-right: 1.75rem; }
.partposter-cabinet .grid-view .filters .form-control,
.partposter-cabinet .grid-view .filters .form-select { min-height: 30px; font-size: 12px; }
/* The old col-sm-3 input groups acquired width:100% in BS5. Lay out the
   actual form-field wrapper and its button as a single compact control. */
.partposter-cabinet .kv-panel-before {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}
.partposter-cabinet .kv-panel-before::after { display: none; }
.partposter-cabinet .kv-panel-before > .filter { flex: 1 1 240px; min-width: 0; }
.partposter-cabinet .kv-panel-before > .float-end { order: 2; margin-left: 0 !important; flex: 0 0 70px; }
.partposter-cabinet .kv-panel-before > .filter .input-group { width: 320px; max-width: 100%; }
.partposter-cabinet .grid-view .filter form,
.partposter-cabinet .grid-view .card-footer form { margin: 0; }
.partposter-cabinet .grid-view .filter .input-group,
.partposter-cabinet .grid-view .card-footer .input-group { flex-wrap: nowrap; }
.partposter-cabinet .grid-view .card-footer .input-group { width: 280px; max-width: 100%; }
.partposter-cabinet .grid-view .input-group > .form-group,
.partposter-cabinet .grid-view .input-group > .mb-3 { flex: 1 1 auto; min-width: 0; margin-bottom: 0 !important; }
.partposter-cabinet .grid-view .input-group > .form-group > .form-control,
.partposter-cabinet .grid-view .input-group > .form-group > .form-select,
.partposter-cabinet .grid-view .input-group > .mb-3 > .form-control,
.partposter-cabinet .grid-view .input-group > .mb-3 > .form-select { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.partposter-cabinet .grid-view .input-group-buttons { flex: 0 0 auto; }
.partposter-cabinet .grid-view .input-group-buttons > .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 34px; white-space: nowrap; }
.partposter-cabinet .grid-view .dropdown-menu { max-height: 65vh; overflow-y: auto; font-size: 14px; }
.partposter-cabinet .grid-view .dropdown-header { font-size: 12px; font-weight: 600; }
@media (max-width: 575.98px) {
    .partposter-cabinet .kv-panel-before > .filter { flex-basis: 100%; order: 3; }
    .partposter-cabinet .kv-panel-before > .filter .input-group { width: 100%; }
}

/* Modal typography follows the cabinet's 14px controls, including AJAX forms. */
.partposter-cabinet .modal-title,
.partposter-cabinet #modalHeaderTitle h4 { margin: 0; font-size: 18px; line-height: 1.35; font-weight: 500; }
.partposter-cabinet .modal .card-title { font-size: 16px; line-height: 1.4; font-weight: 500; }
.partposter-cabinet .modal-header { padding: 12px 16px; }
.partposter-cabinet .parcels-form legend { float: none; width: 100%; margin: 4px 0 12px; padding-bottom: 5px; border-bottom: 1px solid var(--bs-border-color); font-size: 18px; line-height: 1.4; }
.partposter-cabinet .parcels-form .form-label { font-weight: 600; }
.partposter-cabinet .parcels-form .input-group { flex-wrap: nowrap; }
.partposter-cabinet .parcels-form .input-group > .form-control { min-width: 0; }
.partposter-cabinet #parcelsForm .input-group > .form-control:last-of-type { border-top-right-radius: var(--bs-border-radius); border-bottom-right-radius: var(--bs-border-radius); }
.partposter-cabinet #parcelsForm .input-group > .form-control:has(~ .input-group-text),
.partposter-cabinet #parcelsForm .input-group > .form-control:has(~ .input-group-btn),
.partposter-cabinet #parcelsForm .input-group > .form-control:has(~ .btn) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.partposter-cabinet .parcels-form .input-group-text { padding: 6px 10px; }
.partposter-cabinet .parcels-form .field-parcels-cpi .input-group-text { padding: 6px 10px; }
.partposter-cabinet .parcels-form .input-group-text .form-check-input { margin: 0; float: none; }
.partposter-cabinet .parcel-shipping-cost { display: flex; align-items: flex-start; gap: 8px; }
.partposter-cabinet .parcel-shipping-cost > .form-group,
.partposter-cabinet .parcel-shipping-cost > .mb-3 { flex: 1 1 auto; min-width: 70px; }
.partposter-cabinet .parcel-calculate { flex: 0 0 auto; }
.partposter-cabinet .parcel-calculate .btn { white-space: nowrap; }
.partposter-cabinet .parcel-calculate .dropdown-toggle-split { padding-right: 8px; padding-left: 8px; }
.partposter-cabinet .parcel-service-options { align-items: flex-start; }
.partposter-cabinet .parcel-service-check .form-check { display: flex; align-items: center; gap: 6px; padding-left: 0; min-height: 34px; }
.partposter-cabinet .parcel-service-check .form-check-input { float: none; margin: 0; flex-shrink: 0; }
.partposter-cabinet .parcel-service-check .form-check-label { white-space: nowrap; }
.partposter-cabinet .parcels-form [data-pp-toggle="buttons"] { flex-wrap: wrap; }
.partposter-cabinet .parcels-view .nav-stacked { flex-direction: column; }
.partposter-cabinet .parcels-view .nav-stacked > li { white-space: nowrap; }
@media (max-width: 767.98px) {
    .partposter-cabinet .parcels-form .row > [class*="col-sm-"] { width: 100%; }
    .partposter-cabinet .parcels-view > .row > .col-sm-2 { width: 100%; }
    .partposter-cabinet .parcels-view > .row > .col-sm-10 { width: 100%; }
}

.partposter-cabinet .parcels-form .field-parcels-id { display: none; }

/* DaData inserts a zero-height inline wrapper after each input. As an inline
   box after a block input it creates a whole empty text line in BS5. */
.partposter-cabinet .parcels-form .suggestions-wrapper { display: block; }

/* Shared action spacing on detail pages, including their AJAX modal versions. */
.partposter-cabinet .view-actions { clear: both; margin-top: 16px; margin-bottom: 0; }

/* Account settings: compact headings and readable checkbox labels. */
.partposter-cabinet .settings-index .card-title { font-size: 16px; line-height: 24px; font-weight: 500; }
.partposter-cabinet .settings-form legend { float: none; margin: 0 0 12px; padding-bottom: 5px; border-bottom: 1px solid var(--bs-border-color); font-size: 18px; line-height: 1.4; }
.partposter-cabinet .settings-form .checkbox { position: relative; padding-left: 22px; }
.partposter-cabinet .settings-form .checkbox-input { position: absolute; left: 0; top: 4px; margin: 0; }
.partposter-cabinet .settings-form .checkbox-label { display: block; margin-bottom: 0; font-weight: 500; }
.partposter-cabinet .settings-form .help-block { margin-top: 4px; }

.partposter-cabinet #select-pvz { white-space: nowrap; }

.partposter-cabinet .grid-view .input-group-buttons > .btn > .fa { flex: 0 0 auto; line-height: 1; }

/* Recipient picker is a separate modal, outside the parcel form wrapper. */
.partposter-cabinet #parcel-address-book-modal { font-size: 14px; line-height: 20px; }
.partposter-cabinet #parcel-address-book-list-title { margin: 20px 0 10px; font-size: 16px; line-height: 22px; font-weight: 600; }
.partposter-cabinet #parcel-address-book-message { margin: 0 0 12px; font-size: 14px; line-height: 20px; }
.partposter-cabinet #parcel-address-book-message:empty { display: none; }
.partposter-cabinet #parcel-address-book-modal .modal-footer { padding: 12px 16px; gap: 8px; }
.partposter-cabinet #parcel-address-book-modal .modal-footer > * { margin: 0; }

/* Carrier service choices retain native checkbox inputs and their order. */
.partposter-cabinet .sender-services-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 24px; }
.partposter-cabinet .sender-services-list > .checkbox,
.partposter-cabinet .sender-services-list > .form-check { margin: 0; min-width: 0; }
@media (max-width: 575.98px) {
    .partposter-cabinet .sender-services-list { grid-template-columns: minmax(0, 1fr); }
}

/* One continuous 1px rule around table sections, including rowspan headers. */
.partposter-cabinet .grid-view .table > thead { border-bottom: 1px solid var(--bs-border-color); background: var(--bs-tertiary-bg); }
.partposter-cabinet .grid-view .table > thead > tr > * {
    border-bottom-width: 0 !important;
    --bs-table-bg: var(--bs-tertiary-bg);
}
.partposter-cabinet .grid-view .table > .kv-page-summary-container { border-top: 1px solid var(--bs-border-color); background: var(--bs-tertiary-bg); }
.partposter-cabinet .grid-view .kv-page-summary > * {
    --bs-table-bg: var(--bs-tertiary-bg);
    --bs-table-bg-type: transparent;
    --bs-table-bg-state: transparent;
    border-top: 0;
    border-bottom: 0;
}

/* Remaining cabinet forms use the same compact section scale. */
.partposter-cabinet .company-form legend,
.partposter-cabinet .addressbook-form legend { float: none; margin: 4px 0 12px; padding-bottom: 5px; border-bottom: 1px solid var(--bs-border-color); font-size: 18px; line-height: 1.4; }
.partposter-cabinet .cabinet-heading { margin: 0 0 20px; font-size: 20px; line-height: 28px; }
.partposter-cabinet .cabinet-home .card-title { margin: 0; font-size: 16px; line-height: 24px; font-weight: 500; }
.partposter-cabinet .cabinet-home .nav-link { padding: 6px 0; }
.partposter-cabinet .cabinet-home .nav-link .fa { width: 25px; text-align: center; }
.partposter-cabinet .parcels-combine-form .twitter-typeahead { width: 100%; min-width: 0; }
.partposter-cabinet .parcels-combine-form .input-group > .twitter-typeahead .form-control { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.partposter-cabinet .parcels-combine-form [data-pp-toggle="buttons"] { gap: 0; }
.partposter-cabinet .company-form .input-group { flex-wrap: nowrap; }
.partposter-cabinet .company-form .input-group > .form-control { min-width: 0; }

.partposter-cabinet .parcels-combine-form .input-group > div:has(> .twitter-typeahead) { flex: 1 1 auto; width: 1%; min-width: 0; }

.partposter-cabinet .parcel-combine-options { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; }
.partposter-cabinet .parcel-combine-options .checkbox { padding-top: 6px; }
.partposter-cabinet .company-form .suggestions-wrapper { display: block; }
.partposter-cabinet #companyForm .input-group > input.form-control:last-of-type { border-top-right-radius: var(--bs-border-radius); border-bottom-right-radius: var(--bs-border-radius); }
