/* ------------------------------------------------------------
   Shared buttons
   One primary button, one open button, one table-action cluster.
   Colors and heights come from brand/tokens.css.
------------------------------------------------------------ */
/* ------------------------------------------------------------
 * Dark theme: solid .btn-primary — override Bootstrap 5 --bs-btn-* so
 * filled primary buttons stay Kromeka red (no residual blue from variables).
 * ------------------------------------------------------------ */
[data-theme="dark"] .btn-primary,
[data-bs-theme="dark"] .btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--kromeka-red);
    --bs-btn-border-color: var(--kromeka-red);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--kromeka-red-dark);
    --bs-btn-hover-border-color: var(--kromeka-red-dark);
    --bs-btn-focus-shadow-rgb: 175, 22, 30;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--kromeka-red-dark);
    --bs-btn-active-border-color: var(--kromeka-red-dark);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.2);
    --bs-btn-disabled-color: rgba(255, 255, 255, 0.65);
    --bs-btn-disabled-bg: rgba(175, 22, 30, 0.5);
    --bs-btn-disabled-border-color: rgba(175, 22, 30, 0.35);
}

/* ------------------------------------------------------------
   Buttons — shared height, alignment, and action groups
   Label is vertically + horizontally centered (including <a class="btn">).
------------------------------------------------------------ */
.btn:not(.btn-link):not(.dropdown-toggle-split),
button.btn:not(.btn-link),
input.btn:not(.btn-link),
a.btn:not(.btn-link):not(.dropdown-toggle-split) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    vertical-align: middle;
}

.btn:not(.btn-sm):not(.btn-lg):not(.btn-link):not(.dropdown-toggle-split) {
    min-height: var(--kromeka-btn-height);
    gap: 0.4rem;
    padding-top: 0;
    padding-bottom: 0;
    --bs-btn-padding-y: 0;
    padding-left: var(--kromeka-btn-padding-x);
    padding-right: var(--kromeka-btn-padding-x);
    line-height: var(--kromeka-btn-line-height);
    --bs-btn-line-height: var(--kromeka-btn-line-height);
    font-size: var(--kromeka-btn-font-size);
    text-transform: none;
}

.btn-sm:not(.btn-link):not(.dropdown-toggle-split) {
    min-height: var(--kromeka-btn-height-sm);
    gap: 0.3rem;
    padding-top: 0;
    padding-bottom: 0;
    --bs-btn-padding-y: 0;
    line-height: 1;
    --bs-btn-line-height: 1;
    text-transform: none;
}

.btn-primary,
.btn-outline-secondary,
.btn-outline-danger {
    border-radius: var(--kromeka-btn-radius);
    font-weight: var(--kromeka-btn-font-weight);
}

.btn-primary {
    background-color: var(--kromeka-red);
    border-color: var(--kromeka-red);
    color: #ffffff;
}

.btn-primary:hover {
    background-color: var(--kromeka-red-dark);
    border-color: var(--kromeka-red-dark);
    color: #ffffff;
}

.btn-outline-secondary {
    color: var(--text-main);
    border-color: var(--border-color);
}

.btn-outline-secondary:hover {
    background-color: var(--hover-bg);
    color: var(--text-main);
    border-color: var(--text-main);
}

.kromeka-page-actions,
.kromeka-action-group,
.kromeka-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.kromeka-header-actions {
    justify-content: flex-start;
}

.kromeka-header-actions .btn {
    min-height: 34px;
}

.kromeka-page-actions > .btn,
.kromeka-action-group > .btn,
.kromeka-page-actions > .btn-group,
.kromeka-action-group > .btn-group {
    flex: 0 0 auto;
}

.modal-footer {
    align-items: center;
    gap: 8px;
}

/* One segmented toggle: Standard / Pre-Manufacturing, Active / Completed. */
.kromeka-segmented {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid var(--border-color);
    border-radius: var(--kromeka-btn-radius);
    overflow: hidden;
}

.kromeka-segmented__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    min-height: var(--kromeka-btn-height-sm);
    padding: 0 0.75rem;
    color: var(--text-main);
    background: transparent;
    text-decoration: none;
    border: 0;
    border-right: 1px solid var(--border-color);
    font-size: var(--kromeka-btn-font-size);
}

.kromeka-segmented__item:last-child {
    border-right: 0;
}

.kromeka-segmented__item.is-selected {
    background-color: var(--kromeka-red);
    color: #ffffff;
}

.kromeka-segmented__item:hover:not(.is-selected) {
    background-color: var(--hover-bg);
    color: var(--text-main);
}

/* Compact row-action groups — one shared horizontal icon cluster.
   Quality Nonconformity list keeps stacked workflow text buttons
   (see nonconformity_list_cell_actions.html); do not convert those. */
.table-action-buttons {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 0.25rem;
    min-width: 0;
    margin: 0;
}

.table-action-buttons > form {
    margin: 0;
    display: inline-flex;
    align-items: center;
}

.table-action-buttons--text {
    min-width: 5rem;
}

.table-action-buttons--stack {
    flex-direction: column;
    align-items: stretch;
    flex-wrap: wrap;
}

.btn.table-action-icon-btn {
    position: relative;
    z-index: 1;
    padding: 0.25rem 0.45rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    min-height: 2rem;
}

.btn.table-action-icon-btn .bi {
    font-size: 1rem;
    line-height: 1;
    color: inherit;
}

.table-action-file-btn {
    position: relative;
    overflow: hidden;
}

.table-action-file-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    font-size: 0;
    margin: 0;
}

.table-action-file-btn:focus-within {
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(245, 181, 31, 0.35);
}

/* Close control used inside compact badges and chips. */
.btn-close-sm {
    font-size: 0.65em;
    padding: 0.2em;
}

/* Wider action column for buttons like "Configure" */
.table-action-buttons-wider {
    min-width: 7.5rem;
}

/* Coarse pointers keep a 44px target in landscape, where width can
   exceed the phone breakpoint that used to enlarge only small buttons. */
@media (pointer: coarse) {
    .planning-v2-panel-toolbar .btn-sm,
    .planning-v2-filters .btn-sm,
    .planning-v2-filters-toggle,
    .project-planning-toolbar .btn-sm,
    .project-planning-nav .btn-sm,
    .pp-filters .btn-sm,
    .pp-filters-toggle,
    .spc-mobile-tab,
    .shipment-icon-btn,
    .btn.table-action-icon-btn {
        min-width: 2.75rem;
        min-height: 2.75rem;
    }
}
