body { background: #f6f7f9; }
.card { border-color: #e4e7ec; }
.card-header { background: #fff; font-weight: 600; }
.stat .value { font-size: 1.6rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.stat .label { color: var(--bs-secondary-color); font-size: .85rem; }
.num, td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table > :not(caption) > * > * { padding: .45rem .6rem; }
.table-hover tbody tr[data-href] { cursor: pointer; }
.lines-table input, .lines-table select { font-size: .9rem; }
.lines-table td { vertical-align: top; }
.lines-table select.form-select { padding-left: .5rem; padding-right: 1.5rem; background-position: right .35rem center; min-width: 5.2rem; }
.lines-table .col-name { min-width: 16rem; }
.lines-table .col-qty { width: 6.5rem; }
.lines-table .col-unit { width: 6.5rem; }
.lines-table .col-price { width: 8rem; }
.lines-table .col-cat { width: 6rem; }
.lines-table .col-rate { width: 6.5rem; }
.lines-table .col-total { width: 8rem; }
.issues li { margin-bottom: .2rem; }
.xml-preview { max-height: 30rem; overflow: auto; font-size: .78rem; background: #0f172a; color: #e2e8f0; border-radius: .4rem; padding: 1rem; }
.timeline { list-style: none; padding-left: 0; font-size: .88rem; }
.timeline li { border-left: 2px solid #dee2e6; padding: 0 0 .6rem .8rem; position: relative; }
.timeline li::before { content: ""; position: absolute; left: -6px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #0d6efd; }
.auth-card { max-width: 440px; margin: 6vh auto; }
.auth-card input[type=password] { display: block; width: 100%; padding: .375rem .75rem; border: 1px solid #dee2e6; border-radius: .375rem; }
.form-label { font-size: .88rem; margin-bottom: .2rem; color: #444; }
.helptext, .form-text { font-size: .78rem; }
