/* Вспомогательные классы под CSP без inline style в разметке */
.toast-notification {
    position: fixed;
    top: 20px;
    right: 20px;
    padding: 12px 20px;
    border-radius: 4px;
    z-index: 9999;
    opacity: 0;
    transform: translateX(100%);
    transition: all 0.3s ease;
}

.card-min-w-200 {
    min-width: 200px;
}

.table-operations {
    width: 100%;
}

.log-col-time { min-width: 140px; }
.log-col-user { min-width: 100px; }
.log-col-action { min-width: 100px; }
.log-col-entity { min-width: 100px; }
.log-col-id { min-width: 60px; }
.log-col-ip { min-width: 120px; }
.log-col-details { min-width: 300px; }
.log-detail-cell { max-width: 450px; word-wrap: break-word; }

.contract-col-expand { width: 30px; }

.qr-bordered {
    border: 1px solid #ddd;
    padding: 10px;
}

.th-income-group,
.th-salary-group {
    text-align: center;
}

.th-expense-group {
    text-align: center;
}

.th-total-pivot {
    text-align: center;
    vertical-align: middle;
}

.toast-notification.toast-err {
    background-color: #dc3545;
    color: white;
}
.toast-notification.toast-ok {
    background-color: #28a745;
    color: white;
}
.toast-notification.toast-info {
    background-color: #17a2b8;
    color: white;
}

.toast-notification.toast-warn {
    background-color: #ffc107;
    color: #000;
}

.text-nowrap-cell {
    white-space: nowrap;
}
