.inventory-dashboard {
    padding-bottom: 2rem;
}

/* Страница авторизации */
.login-page {
    min-height: 100vh;
    color: #24343a;
    background:
        radial-gradient(circle at 12% 15%, rgba(195, 220, 218, .55), transparent 28rem),
        radial-gradient(circle at 88% 82%, rgba(216, 225, 239, .65), transparent 30rem),
        #f5f7f8;
}

.login-page-main {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 100vh;
    padding: 2.5rem 1.25rem 4.5rem;
    overflow: hidden;
}

.login-page-main::before,
.login-page-main::after {
    content: '';
    position: absolute;
    border: 1px solid rgba(93, 126, 132, .12);
    border-radius: 50%;
    pointer-events: none;
}

.login-page-main::before {
    width: 28rem;
    height: 28rem;
    top: -17rem;
    right: -8rem;
}

.login-page-main::after {
    width: 20rem;
    height: 20rem;
    bottom: -13rem;
    left: -6rem;
}

.login-card {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.06fr) minmax(24rem, .94fr);
    width: min(100%, 62rem);
    min-height: 37rem;
    overflow: hidden;
    border: 1px solid rgba(74, 97, 104, .12);
    border-radius: 1.75rem;
    background: #fff;
    box-shadow: 0 1.75rem 5rem rgba(42, 64, 71, .14);
}

.login-brand-panel {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 3.25rem;
    overflow: hidden;
    background: linear-gradient(145deg, #edf4f2 0%, #e6eef1 100%);
}

.login-brand-panel::after {
    content: '';
    position: absolute;
    width: 22rem;
    height: 22rem;
    right: -11rem;
    bottom: -12rem;
    border-radius: 50%;
    background: rgba(255, 255, 255, .5);
}

.login-logo-wrap {
    width: min(100%, 23rem);
    margin: -1.1rem 0 2.2rem;
}

.login-logo-wrap img {
    display: block;
    width: 100%;
    mix-blend-mode: multiply;
}

.login-brand-copy,
.login-features {
    position: relative;
    z-index: 1;
}

.login-eyebrow,
.login-product {
    display: inline-block;
    margin-bottom: .8rem;
    color: #52737a;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.login-brand-copy h2 {
    margin: 0 0 1.1rem;
    color: #263b42;
    font-size: clamp(2rem, 3vw, 2.65rem);
    font-weight: 600;
    line-height: 1.13;
    letter-spacing: -.035em;
}

.login-brand-copy p {
    max-width: 27rem;
    margin: 0;
    color: #65787e;
    font-size: 1rem;
    line-height: 1.65;
}

.login-features {
    display: grid;
    gap: .8rem;
    margin-top: auto;
    padding-top: 2rem;
}

.login-features span {
    display: flex;
    align-items: center;
    gap: .7rem;
    color: #466168;
    font-size: .9rem;
    font-weight: 500;
}

.login-features i {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: .65rem;
    color: #5d7f84;
    background: rgba(255, 255, 255, .72);
}

.login-features svg,
.login-note svg,
.login-submit svg {
    width: 1.15rem;
    height: 1.15rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.login-form-panel {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 4rem 3.75rem;
}

.login-form-heading h1 {
    margin: 0 0 .55rem;
    color: #25373d;
    font-size: 2rem;
    font-weight: 600;
    letter-spacing: -.025em;
}

.login-form-heading p {
    margin: 0 0 2rem;
    color: #78898e;
}

.login-form {
    display: grid;
    gap: 1.15rem;
}

.login-field label {
    display: block;
    margin-bottom: .45rem;
    color: #455a61;
    font-size: .86rem;
    font-weight: 600;
}

.login-field input {
    width: 100%;
    min-height: 3.15rem;
    padding: .72rem .95rem;
    border: 1px solid #d7e0e2;
    border-radius: .75rem;
    color: #263a40;
    background: #f9fbfb;
    outline: none;
    transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.login-field input:focus {
    border-color: #789ba0;
    background: #fff;
    box-shadow: 0 0 0 .22rem rgba(107, 148, 153, .15);
}

.login-field-error {
    margin-top: .35rem;
    color: #a34d52;
    font-size: .8rem;
}

.login-alert {
    margin: -1rem 0 1.2rem;
    padding: .75rem .9rem;
    border: 1px solid #efd2d2;
    border-radius: .7rem;
    color: #8b474c;
    background: #fbf2f2;
    font-size: .88rem;
}

.login-submit {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    min-height: 3.15rem;
    margin-top: .25rem;
    border: 0;
    border-radius: .75rem;
    color: #fff;
    background: #587c82;
    font-weight: 600;
    box-shadow: 0 .7rem 1.4rem rgba(72, 112, 119, .2);
}

.login-submit:hover,
.login-submit:focus {
    color: #fff;
    background: #496d73;
}

.login-note {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin-top: 1.5rem;
    color: #879499;
    font-size: .78rem;
    line-height: 1.4;
}

.login-note svg {
    flex: 0 0 auto;
    color: #789399;
}

.login-footer {
    position: absolute;
    z-index: 1;
    bottom: 1.25rem;
    margin: 0;
    color: #95a0a4;
    font-size: .72rem;
    letter-spacing: .08em;
}

@media (max-width: 800px) {
    .login-page-main {
        display: block;
        padding: 1rem 1rem 4rem;
    }

    .login-card {
        grid-template-columns: 1fr;
        max-width: 34rem;
        min-height: auto;
        margin: 0 auto;
        border-radius: 1.25rem;
    }

    .login-brand-panel {
        padding: 2rem 2rem 2.25rem;
    }

    .login-logo-wrap {
        width: 17rem;
        margin-bottom: 1rem;
    }

    .login-brand-copy h2 {
        font-size: 1.75rem;
    }

    .login-brand-copy p,
    .login-features {
        display: none;
    }

    .login-form-panel {
        padding: 2.5rem 2rem;
    }
}

@media (max-width: 420px) {
    .login-brand-panel,
    .login-form-panel {
        padding-right: 1.35rem;
        padding-left: 1.35rem;
    }
}

.inventory-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

.inventory-heading h1 {
    margin: 0 0 .3rem;
    font-size: 2rem;
    font-weight: 600;
}

.inventory-heading p {
    margin: 0;
    color: #6c757d;
}

.inventory-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .5rem;
}

.inventory-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.inventory-metrics.inventory-metrics-four {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.inventory-metric {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-height: 6.5rem;
    padding: 1.2rem;
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    background: #fff;
}

.inventory-metric-icon {
    display: grid;
    place-items: center;
    width: 3.5rem;
    height: 3.5rem;
    flex: 0 0 auto;
    border-radius: .5rem;
    color: #0d6efd;
    background: #e7f0ff;
}

.inventory-metric-icon svg {
    width: 2rem;
    height: 2rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.inventory-metric-warning .inventory-metric-icon {
    color: #b77900;
    background: #fff1cc;
}

.inventory-metric-success .inventory-metric-icon {
    color: #198754;
    background: #dff3e8;
}

.inventory-metric-purchase .inventory-metric-icon {
    color: #6741a5;
    background: #eee7f8;
}

.inventory-metric strong,
.inventory-metric small {
    display: block;
}

.inventory-metric strong {
    font-size: 2rem;
    line-height: 1;
    font-weight: 500;
}

.inventory-metric small {
    margin-top: .45rem;
    color: #6c757d;
    font-size: .95rem;
}

.inventory-filter-panel {
    padding: 1rem;
    margin-bottom: 1rem;
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    background: #f8f9fa;
}

.inventory-filter-grid {
    display: grid;
    grid-template-columns: minmax(220px, 1.25fr) repeat(2, minmax(170px, .7fr)) auto auto;
    gap: .65rem;
    align-items: center;
}

.inventory-filter-grid.catalog-filters {
    grid-template-columns: minmax(240px, 1.25fr) repeat(2, minmax(130px, .55fr)) minmax(190px, .8fr) auto auto;
}

.inventory-filter-grid.device-filters {
    grid-template-columns: minmax(250px, 1.4fr) repeat(3, minmax(150px, .7fr));
}

.inventory-filter-grid.site-filters {
    grid-template-columns: minmax(260px, 1fr) minmax(180px, .45fr) auto;
}

.inventory-filter-grid.stock-filters {
    grid-template-columns: minmax(260px, 1.35fr) minmax(180px, .65fr) minmax(210px, .75fr) auto;
}

.inventory-tabs {
    display: flex;
    align-items: flex-end;
    gap: 0;
    margin-bottom: 0;
    overflow-x: auto;
}

.inventory-tab {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .7rem 1rem;
    border: 1px solid #dee2e6;
    border-bottom: 0;
    color: #343a40;
    background: #fff;
    text-decoration: none;
    white-space: nowrap;
}

.inventory-tab:first-child {
    border-radius: .5rem 0 0 0;
}

.inventory-tab:last-child {
    border-radius: 0 .5rem 0 0;
}

.inventory-tab + .inventory-tab {
    border-left: 0;
}

.inventory-tab:hover {
    color: #0d6efd;
    background: #f7faff;
}

.inventory-tab.active {
    border-color: #0d6efd;
    color: #fff;
    background: #0d6efd;
}

.inventory-tab span {
    padding: .05rem .4rem;
    border-radius: 1rem;
    color: #495057;
    background: #e9ecef;
    font-size: .8rem;
}

.inventory-tab.active span {
    color: #0d6efd;
    background: #fff;
}

.inventory-filter-attached {
    border-radius: 0 .5rem .5rem .5rem;
}

.inventory-search-indicator {
    align-self: center;
    color: #6c757d;
    font-size: .85rem;
    white-space: nowrap;
}

.inventory-check {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-height: 2.4rem;
    white-space: nowrap;
}

.inventory-table-panel {
    overflow: hidden;
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    background: #fff;
}

.inventory-table-panel .table {
    margin-bottom: 0;
}

.inventory-table-panel thead th {
    padding: .75rem;
    color: #495057;
    background: #f8f9fa;
    white-space: nowrap;
}

.inventory-table-panel tbody td {
    padding: .75rem;
}

.inventory-row-attention > td {
    background: #fffaf0;
}

.inventory-item strong,
.inventory-item small {
    display: block;
}

.inventory-item small {
    margin-top: .15rem;
    color: #6c757d;
}

.inventory-kind {
    white-space: nowrap;
}

.inventory-color-dot {
    display: inline-block;
    width: .75rem;
    height: .75rem;
    margin-right: .4rem;
    border: 1px solid rgba(0, 0, 0, .18);
    border-radius: 50%;
    vertical-align: -.05rem;
}

.consumable-color-black { background: #212529; }
.consumable-color-cyan { background: #16a9e0; }
.consumable-color-magenta { background: #d51cc7; }
.consumable-color-yellow { background: #f5c400; }
.consumable-color-grey { background: #adb5bd; }
.consumable-color-grey-black { background: linear-gradient(90deg, #adb5bd 50%, #212529 50%); }
.consumable-color-magenta-blue { background: linear-gradient(90deg, #d51cc7 50%, #0d6efd 50%); }
.consumable-color-black-yellow { background: linear-gradient(90deg, #212529 50%, #f5c400 50%); }

.inventory-status {
    display: inline-block;
    padding: .25rem .55rem;
    border-radius: 1rem;
    color: #146c43;
    background: #dff3e8;
    font-size: .85rem;
    white-space: nowrap;
}

.inventory-status-warning {
    color: #805700;
    background: #fff1cc;
}

.inventory-status-danger {
    color: #9b2634;
    background: #f9dfe2;
}

.inventory-status-neutral {
    color: #495057;
    background: #e9ecef;
}

.inventory-progress {
    min-width: 130px;
}

.inventory-progress-values {
    display: flex;
    justify-content: space-between;
    margin-bottom: .3rem;
}

.inventory-progress-track {
    height: .4rem;
    overflow: hidden;
    border-radius: 1rem;
    background: #e9ecef;
}

.inventory-progress-fill {
    height: 100%;
    background: #e6a100;
}

.inventory-progress-fill.complete {
    background: #198754;
}

.inventory-model-tag {
    display: inline-block;
    padding: .2rem .45rem;
    margin: .12rem .2rem .12rem 0;
    border-radius: .25rem;
    color: #495057;
    background: #edf0f2;
    font-size: .85rem;
    white-space: nowrap;
}

.inventory-stock-table {
    min-width: 1260px;
}

.inventory-select-column {
    width: 3rem;
    text-align: center;
}

.inventory-models-cell {
    width: 260px;
    min-width: 260px;
    max-width: 340px;
    white-space: nowrap;
}

.inventory-model-more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    min-height: 1.7rem;
    padding: .15rem .45rem;
    border: 1px solid #b6d4fe;
    border-radius: 1rem;
    color: #0d6efd;
    background: #e7f1ff;
    font-size: .8rem;
    font-weight: 600;
    vertical-align: middle;
}

.inventory-model-more:hover,
.inventory-model-more:focus {
    border-color: #86b7fe;
    color: #0a58ca;
    background: #dbeafe;
    outline: 0;
}

.inventory-sort-button {
    appearance: none;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 700;
    padding: 0;
    text-align: left;
    white-space: nowrap;
}

.inventory-sort-button:hover,
.inventory-sort-button:focus,
.inventory-sort-button.active {
    color: var(--fg-accent, #65858d);
}

.inventory-sort-button span {
    display: inline-block;
    min-width: 0.8rem;
}

.inventory-count-model {
    min-width: 240px;
    white-space: nowrap;
}

.compatible-model-popover {
    --bs-popover-max-width: 360px;
}

.compatible-model-list {
    max-height: 15rem;
    margin: .5rem 0 0;
    padding-left: 1.15rem;
    overflow-y: auto;
}

.compatible-model-list li + li {
    margin-top: .3rem;
}

.inventory-row-actions {
    min-width: 138px;
    white-space: nowrap;
}

.inventory-selection-bar {
    position: sticky;
    bottom: 1rem;
    z-index: 5;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1rem;
    padding: .85rem 1rem;
    border: 1px solid #9ec5fe;
    border-radius: .5rem;
    color: #294663;
    background: #e7f1ff;
    box-shadow: 0 .25rem .75rem rgba(33, 37, 41, .08);
}

.inventory-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: .9rem;
    color: #6c757d;
}

@media (max-width: 991.98px) {
    .inventory-heading {
        flex-direction: column;
    }
    .inventory-actions {
        justify-content: flex-start;
    }
    .inventory-metrics {
        grid-template-columns: 1fr;
    }
    .inventory-metrics.inventory-metrics-four {
        grid-template-columns: 1fr 1fr;
    }
    .inventory-filter-grid,
    .inventory-filter-grid.catalog-filters,
    .inventory-filter-grid.device-filters,
    .inventory-filter-grid.site-filters {
        grid-template-columns: 1fr 1fr;
    }
    .inventory-filter-grid.stock-filters {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 575.98px) {
    .inventory-heading h1 {
        font-size: 1.65rem;
    }
    .inventory-actions {
        width: 100%;
    }
    .inventory-actions .btn {
        flex: 1 1 auto;
    }
    .inventory-filter-grid,
    .inventory-filter-grid.catalog-filters,
    .inventory-filter-grid.device-filters,
    .inventory-filter-grid.site-filters,
    .inventory-filter-grid.stock-filters,
    .inventory-metrics.inventory-metrics-four {
        grid-template-columns: 1fr;
    }
    .inventory-footer {
        align-items: flex-start;
        flex-direction: column;
    }
    .inventory-selection-bar {
        align-items: stretch;
        flex-direction: column;
    }
}

/* Единая мягкая тема приложения */
:root {
    --fg-ink: #263b42;
    --fg-muted: #6f8085;
    --fg-accent: #587c82;
    --fg-accent-dark: #496d73;
    --fg-accent-soft: #e6efee;
    --fg-surface: #ffffff;
    --fg-surface-soft: #f3f7f7;
    --fg-border: #d9e2e3;
    --fg-shadow: 0 .8rem 2.4rem rgba(42, 64, 71, .07);
}

body:not(.login-page) {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    color: var(--fg-ink);
    background:
        radial-gradient(circle at 7% 4%, rgba(210, 228, 225, .48), transparent 24rem),
        radial-gradient(circle at 96% 92%, rgba(222, 229, 239, .45), transparent 28rem),
        #f5f7f8;
    background-attachment: fixed;
}

body:not(.login-page) a:not(.btn) {
    color: #4d747b;
}

body:not(.login-page) a:not(.btn):hover {
    color: #385f66;
}

.site-navbar {
    min-height: 4.25rem;
    border-bottom: 1px solid rgba(85, 113, 119, .13);
    background: rgba(249, 251, 251, .94);
    box-shadow: 0 .35rem 1.4rem rgba(42, 64, 71, .06);
    backdrop-filter: blur(12px);
}

.site-brand {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    margin-right: 1.5rem;
    color: var(--fg-ink) !important;
}

.site-brand span {
    display: grid;
    place-items: center;
    width: 2.15rem;
    height: 2.15rem;
    border-radius: .7rem;
    color: #fff;
    background: linear-gradient(145deg, #6f9296, #4f7379);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .05em;
    box-shadow: 0 .35rem .8rem rgba(73, 109, 115, .2);
}

.site-brand strong {
    font-size: 1.08rem;
    font-weight: 650;
    letter-spacing: -.015em;
}

.site-navbar .nav-link {
    margin: 0 .08rem;
    padding: .5rem .7rem !important;
    border-radius: .6rem;
    color: #5e7075;
    font-size: .93rem;
    font-weight: 500;
}

.site-navbar .nav-link:hover,
.site-navbar .nav-link:focus {
    color: #3e6168;
    background: var(--fg-accent-soft);
}

.site-user {
    color: #5e7075;
    font-size: .9rem;
}

.btn-site-logout {
    border: 1px solid #b9cbce;
    border-radius: .6rem;
    color: #4f7076;
    background: rgba(255, 255, 255, .75);
}

.btn-site-logout:hover,
.btn-site-logout:focus {
    border-color: #789ba0;
    color: #fff;
    background: var(--fg-accent);
}

body:not(.login-page) main.container {
    flex: 1 0 auto;
    padding-bottom: 2.5rem;
}

.site-version-footer {
    flex: 0 0 auto;
    padding: 1rem 0 1.25rem;
    border-top: 1px solid rgba(85, 113, 119, .13);
    color: var(--fg-muted);
    font-size: .78rem;
    text-align: center;
}

body:not(.login-page) h1,
body:not(.login-page) h2,
body:not(.login-page) h3,
body:not(.login-page) h4,
body:not(.login-page) h5 {
    color: var(--fg-ink);
    letter-spacing: -.018em;
}

body:not(.login-page) .text-muted,
body:not(.login-page) .inventory-heading p,
body:not(.login-page) .inventory-item small,
body:not(.login-page) .inventory-footer,
body:not(.login-page) .inventory-search-indicator {
    color: var(--fg-muted) !important;
}

body:not(.login-page) .btn {
    border-radius: .65rem;
    font-weight: 500;
}

body:not(.login-page) .btn-primary {
    border-color: var(--fg-accent);
    color: #fff;
    background: var(--fg-accent);
    box-shadow: 0 .35rem .8rem rgba(72, 112, 119, .13);
}

body:not(.login-page) .btn-primary:hover,
body:not(.login-page) .btn-primary:focus,
body:not(.login-page) .btn-primary:active {
    border-color: var(--fg-accent-dark);
    color: #fff;
    background: var(--fg-accent-dark);
}

body:not(.login-page) .btn-outline-primary {
    border-color: #91aeb2;
    color: #4c7278;
    background: rgba(255, 255, 255, .55);
}

body:not(.login-page) .btn-outline-primary:hover,
body:not(.login-page) .btn-outline-primary:focus,
body:not(.login-page) .btn-outline-primary:active {
    border-color: var(--fg-accent);
    color: #fff;
    background: var(--fg-accent);
}

body:not(.login-page) .btn-outline-secondary {
    border-color: #c4d0d2;
    color: #65777c;
    background: rgba(255, 255, 255, .55);
}

body:not(.login-page) .btn-outline-secondary:hover,
body:not(.login-page) .btn-outline-secondary:focus {
    border-color: #9aadb0;
    color: #40575c;
    background: #eaf0f0;
}

body:not(.login-page) .form-control,
body:not(.login-page) .form-select,
body:not(.login-page) input[type="number"],
body:not(.login-page) textarea {
    border-color: #d2dddf;
    border-radius: .65rem;
    color: var(--fg-ink);
    background-color: rgba(255, 255, 255, .9);
}

body:not(.login-page) .form-control:focus,
body:not(.login-page) .form-select:focus,
body:not(.login-page) input[type="number"]:focus,
body:not(.login-page) textarea:focus {
    border-color: #789ba0;
    box-shadow: 0 0 0 .2rem rgba(107, 148, 153, .14);
}

body:not(.login-page) .inventory-metric,
body:not(.login-page) .inventory-filter-panel,
body:not(.login-page) .inventory-table-panel,
body:not(.login-page) .card,
body:not(.login-page) .home-panel,
body:not(.login-page) .receipt-common,
body:not(.login-page) .receipt-lines {
    border-color: var(--fg-border);
    border-radius: .9rem;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--fg-shadow);
}

body:not(.login-page) .inventory-filter-panel {
    padding: 1.1rem;
    background: rgba(240, 246, 245, .88);
    box-shadow: none;
}

body:not(.login-page) .inventory-metric {
    border-radius: .9rem;
}

body:not(.login-page) .inventory-metric-icon {
    border-radius: .8rem;
    color: var(--fg-accent);
    background: var(--fg-accent-soft);
}

body:not(.login-page) .inventory-metric-warning .inventory-metric-icon {
    color: #9a6f2d;
    background: #f7eddc;
}

body:not(.login-page) .inventory-metric-success .inventory-metric-icon {
    color: #4f7d69;
    background: #e2f0e9;
}

body:not(.login-page) .inventory-metric-purchase .inventory-metric-icon {
    color: #756589;
    background: #eee9f3;
}

body:not(.login-page) .inventory-table-panel thead th,
body:not(.login-page) .receipt-table thead th,
body:not(.login-page) .table thead th {
    border-bottom-color: var(--fg-border);
    color: #52666c;
    background: #edf3f2;
}

body:not(.login-page) .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--fg-ink);
    --bs-table-border-color: #e0e7e8;
    --bs-table-hover-bg: #f1f6f5;
    --bs-table-hover-color: var(--fg-ink);
}

body:not(.login-page) .inventory-tab {
    border-color: var(--fg-border);
    color: #52666c;
    background: rgba(255, 255, 255, .8);
}

body:not(.login-page) .inventory-tab:hover {
    color: #426970;
    background: #edf4f2;
}

body:not(.login-page) .inventory-tab.active {
    border-color: var(--fg-accent);
    color: #fff;
    background: var(--fg-accent);
}

body:not(.login-page) .inventory-tab.active span {
    color: var(--fg-accent-dark);
}

body:not(.login-page) .inventory-model-more {
    border-color: #b7cbce;
    color: #4d747b;
    background: #edf4f2;
}

body:not(.login-page) .inventory-model-more:hover,
body:not(.login-page) .inventory-model-more:focus {
    border-color: #82a2a7;
    color: #365e65;
    background: #dfeceb;
}

body:not(.login-page) .inventory-selection-bar {
    border-color: #aac2c5;
    color: #365960;
    background: #e6efee;
    box-shadow: 0 .5rem 1.4rem rgba(42, 64, 71, .09);
}

body:not(.login-page) .inventory-status {
    color: #376a59;
    background: #e2f0e9;
}

body:not(.login-page) .device-status-active {
    color: #256348;
    background: #dcefe5;
}

body:not(.login-page) .device-status-offline {
    color: #9a3541;
    background: #f7dfe2;
}

body:not(.login-page) .device-status-repair {
    color: #875c17;
    background: #f8e8c7;
}

body:not(.login-page) .device-status-awaiting-check {
    color: #765a15;
    background: #fff0b8;
}

body:not(.login-page) .device-status-warehouse {
    color: #35677e;
    background: #dcecf3;
}

body:not(.login-page) .device-status-decommissioned {
    color: #566066;
    background: #e1e5e7;
}

body:not(.login-page) .device-status-unknown {
    color: #69567d;
    background: #ebe3f2;
}

body:not(.login-page) .inventory-status-neutral,
body:not(.login-page) .inventory-model-tag {
    color: #5c6d72;
    background: #e9efef;
}

body:not(.login-page) .inventory-progress-track {
    background: #e2e9e9;
}

body:not(.login-page) .inventory-progress-fill.complete {
    background: #608b78;
}

body:not(.login-page) .pagination .page-link {
    border-color: var(--fg-border);
    color: #4d747b;
    background: rgba(255, 255, 255, .85);
}

body:not(.login-page) .pagination .page-item.active .page-link {
    border-color: var(--fg-accent);
    color: #fff;
    background: var(--fg-accent);
}

body:not(.login-page) .dropdown-menu,
body:not(.login-page) .popover,
body:not(.login-page) .modal-content {
    border-color: var(--fg-border);
    border-radius: .75rem;
    box-shadow: 0 1rem 2.6rem rgba(42, 64, 71, .13);
}

body:not(.login-page) .modal-header,
body:not(.login-page) .modal-footer {
    border-color: var(--fg-border);
    background: #f5f8f8;
}

body:not(.login-page) .dropdown-item:hover,
body:not(.login-page) .dropdown-item:focus {
    color: #385f66;
    background: #edf4f2;
}

body:not(.login-page) .home-kpi {
    border-color: var(--fg-border);
    border-radius: .9rem;
    color: var(--fg-ink);
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--fg-shadow);
}

body:not(.login-page) .home-kpi:hover {
    border-color: #a8bfc2;
    color: var(--fg-ink);
    box-shadow: 0 1rem 2.6rem rgba(42, 64, 71, .11);
}

body:not(.login-page) .home-kpi-icon,
body:not(.login-page) .home-site-icon {
    border-radius: .8rem;
    color: var(--fg-accent);
    background: var(--fg-accent-soft);
}

body:not(.login-page) .home-kpi strong {
    color: var(--fg-accent);
}

body:not(.login-page) .home-kpi-offline .home-kpi-icon,
body:not(.login-page) .home-attention-icon {
    color: #9a6f2d;
    background: #f7eddc;
}

body:not(.login-page) .home-kpi-offline strong {
    color: #b47b28;
}

body:not(.login-page) .home-kpi-warehouse .home-kpi-icon {
    color: #60727a;
    background: #e8eeee;
}

body:not(.login-page) .home-kpi-warehouse strong {
    color: #52666c;
}

body:not(.login-page) .home-kpi-repair .home-kpi-icon,
body:not(.login-page) .home-attention-danger .home-attention-icon {
    color: #9a555d;
    background: #f5e6e8;
}

body:not(.login-page) .home-kpi-repair strong {
    color: #a75b64;
}

body:not(.login-page) .home-attention-purchase .home-attention-icon {
    color: #587c82;
    background: #e6efee;
}

body:not(.login-page) .home-kpi small,
body:not(.login-page) .home-attention,
body:not(.login-page) .home-quick-grid a,
body:not(.login-page) .home-sites-grid a {
    color: var(--fg-ink);
}

body:not(.login-page) .home-attention:hover,
body:not(.login-page) .home-quick-grid a:hover,
body:not(.login-page) .home-sites-grid a:hover {
    border-color: #aac1c4;
    color: #3f6870;
    background: #f0f6f5;
}

body:not(.login-page) .home-quick-grid a,
body:not(.login-page) .home-sites-grid a {
    border-color: var(--fg-border);
    border-radius: .75rem;
    background: rgba(255, 255, 255, .62);
}

body:not(.login-page) .receipt-paste,
body:not(.login-page) .receipt-picker-selected td {
    border-left-color: var(--fg-accent);
    background: #edf4f2;
}

body:not(.login-page) .alert-info {
    border-color: #bfd3d5;
    color: #3d6269;
    background: #eaf2f1;
}

@media (max-width: 991.98px) {
    .site-navbar .navbar-nav {
        margin-top: .75rem;
    }
}

/* Переключатель темы */
.theme-toggle {
    display: inline-grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    flex: 0 0 auto;
    padding: 0;
    border: 1px solid #c4d0d2;
    border-radius: .7rem;
    color: #56747a;
    background: rgba(255, 255, 255, .72);
    transition: color .16s ease, border-color .16s ease, background-color .16s ease, transform .16s ease;
}

.theme-toggle:hover,
.theme-toggle:focus-visible {
    border-color: #88a5aa;
    color: #3e656c;
    background: #e8f0ef;
    outline: none;
    transform: translateY(-1px);
}

.theme-icon {
    width: 1.15rem;
    height: 1.15rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.theme-icon-sun {
    display: none;
}

html[data-theme="dark"] .theme-icon-moon {
    display: none;
}

html[data-theme="dark"] .theme-icon-sun {
    display: block;
}

.login-page .theme-toggle {
    position: fixed;
    z-index: 20;
    top: 1.25rem;
    right: 1.25rem;
}

/* Тёмная тема */
html[data-theme="dark"] {
    color-scheme: dark;
    --fg-ink: #dce7e8;
    --fg-muted: #99aaae;
    --fg-accent: #70979c;
    --fg-accent-dark: #82a8ad;
    --fg-accent-soft: #263e42;
    --fg-surface: #1c292e;
    --fg-surface-soft: #223238;
    --fg-border: #364a50;
    --fg-shadow: 0 .9rem 2.5rem rgba(0, 0, 0, .18);
}

html[data-theme="dark"] body:not(.login-page) {
    color: var(--fg-ink);
    background:
        radial-gradient(circle at 7% 4%, rgba(62, 92, 91, .28), transparent 25rem),
        radial-gradient(circle at 96% 92%, rgba(59, 67, 91, .25), transparent 28rem),
        #151f23;
}

html[data-theme="dark"] body:not(.login-page) a:not(.btn) {
    color: #8eb6bb;
}

html[data-theme="dark"] body:not(.login-page) a:not(.btn):hover {
    color: #afd0d4;
}

html[data-theme="dark"] .site-navbar {
    border-bottom-color: rgba(151, 177, 181, .13);
    background: rgba(27, 40, 45, .95);
    box-shadow: 0 .45rem 1.5rem rgba(0, 0, 0, .18);
}

html[data-theme="dark"] .site-version-footer {
    border-top-color: rgba(151, 177, 181, .13);
    color: var(--fg-muted);
}

html[data-theme="dark"] .site-brand,
html[data-theme="dark"] .site-navbar .nav-link,
html[data-theme="dark"] .site-user {
    color: #d6e2e3 !important;
}

html[data-theme="dark"] .site-navbar .nav-link:hover,
html[data-theme="dark"] .site-navbar .nav-link:focus {
    color: #f1f7f7 !important;
    background: #294146;
}

html[data-theme="dark"] .site-brand span {
    color: #f4f8f8;
    background: linear-gradient(145deg, #70979c, #50747a);
}

html[data-theme="dark"] .theme-toggle,
html[data-theme="dark"] .btn-site-logout {
    border-color: #496168;
    color: #b8cccf;
    background: rgba(38, 56, 62, .9);
}

html[data-theme="dark"] .theme-toggle:hover,
html[data-theme="dark"] .theme-toggle:focus-visible,
html[data-theme="dark"] .btn-site-logout:hover,
html[data-theme="dark"] .btn-site-logout:focus {
    border-color: #73979c;
    color: #fff;
    background: #4f747a;
}

html[data-theme="dark"] body:not(.login-page) h1,
html[data-theme="dark"] body:not(.login-page) h2,
html[data-theme="dark"] body:not(.login-page) h3,
html[data-theme="dark"] body:not(.login-page) h4,
html[data-theme="dark"] body:not(.login-page) h5 {
    color: #e0eaeb;
}

html[data-theme="dark"] body:not(.login-page) .btn-primary {
    border-color: #658e94;
    color: #fff;
    background: #5d858b;
    box-shadow: 0 .4rem 1rem rgba(0, 0, 0, .16);
}

html[data-theme="dark"] body:not(.login-page) .btn-primary:hover,
html[data-theme="dark"] body:not(.login-page) .btn-primary:focus,
html[data-theme="dark"] body:not(.login-page) .btn-primary:active {
    border-color: #79a0a5;
    color: #fff;
    background: #6d969b;
}

html[data-theme="dark"] body:not(.login-page) .btn-outline-primary {
    border-color: #587980;
    color: #9fc0c4;
    background: rgba(34, 50, 56, .65);
}

html[data-theme="dark"] body:not(.login-page) .btn-outline-primary:hover,
html[data-theme="dark"] body:not(.login-page) .btn-outline-primary:focus,
html[data-theme="dark"] body:not(.login-page) .btn-outline-primary:active {
    border-color: #71979c;
    color: #fff;
    background: #587f85;
}

html[data-theme="dark"] body:not(.login-page) .btn-outline-secondary {
    border-color: #465b61;
    color: #a9b9bc;
    background: rgba(32, 47, 52, .68);
}

html[data-theme="dark"] body:not(.login-page) .btn-outline-secondary:hover,
html[data-theme="dark"] body:not(.login-page) .btn-outline-secondary:focus {
    border-color: #627a80;
    color: #e4eded;
    background: #30454b;
}

html[data-theme="dark"] body:not(.login-page) .form-control,
html[data-theme="dark"] body:not(.login-page) .form-select,
html[data-theme="dark"] body:not(.login-page) input[type="number"],
html[data-theme="dark"] body:not(.login-page) textarea {
    border-color: #3c5056;
    color: #dce6e7;
    background-color: #1d2b30;
}

html[data-theme="dark"] body:not(.login-page) .form-control::placeholder,
html[data-theme="dark"] body:not(.login-page) textarea::placeholder {
    color: #7d9095;
}

html[data-theme="dark"] body:not(.login-page) .form-control:focus,
html[data-theme="dark"] body:not(.login-page) .form-select:focus,
html[data-theme="dark"] body:not(.login-page) input[type="number"]:focus,
html[data-theme="dark"] body:not(.login-page) textarea:focus {
    border-color: #6f969b;
    background-color: #223238;
    box-shadow: 0 0 0 .2rem rgba(111, 150, 155, .15);
}

html[data-theme="dark"] body:not(.login-page) .inventory-metric,
html[data-theme="dark"] body:not(.login-page) .inventory-filter-panel,
html[data-theme="dark"] body:not(.login-page) .inventory-table-panel,
html[data-theme="dark"] body:not(.login-page) .card,
html[data-theme="dark"] body:not(.login-page) .home-panel,
html[data-theme="dark"] body:not(.login-page) .receipt-common,
html[data-theme="dark"] body:not(.login-page) .receipt-lines {
    border-color: var(--fg-border);
    color: var(--fg-ink);
    background: rgba(28, 41, 46, .95);
}

html[data-theme="dark"] body:not(.login-page) .inventory-filter-panel {
    background: rgba(31, 48, 53, .9);
}

html[data-theme="dark"] body:not(.login-page) .inventory-table-panel thead th,
html[data-theme="dark"] body:not(.login-page) .receipt-table thead th,
html[data-theme="dark"] body:not(.login-page) .table thead th {
    border-bottom-color: #3b4e54;
    color: #b8c9cc;
    background: #26383e;
}

html[data-theme="dark"] body:not(.login-page) .table {
    --bs-table-bg: transparent;
    --bs-table-color: #d5e0e1;
    --bs-table-border-color: #34474d;
    --bs-table-hover-bg: #273a3f;
    --bs-table-hover-color: #edf3f4;
    --bs-table-striped-bg: rgba(92, 120, 125, .08);
    --bs-table-striped-color: #d5e0e1;
}

html[data-theme="dark"] body:not(.login-page) .inventory-tab {
    border-color: #3c5056;
    color: #adbec1;
    background: #1e2c31;
}

html[data-theme="dark"] body:not(.login-page) .inventory-tab:hover {
    color: #d6e5e6;
    background: #294046;
}

html[data-theme="dark"] body:not(.login-page) .inventory-tab.active {
    border-color: #658d92;
    color: #fff;
    background: #587f85;
}

html[data-theme="dark"] body:not(.login-page) .inventory-tab span,
html[data-theme="dark"] body:not(.login-page) .inventory-model-tag,
html[data-theme="dark"] body:not(.login-page) .inventory-status-neutral {
    color: #bac8ca;
    background: #314249;
}

html[data-theme="dark"] body:not(.login-page) .inventory-tab.active span {
    color: #456970;
    background: #eef4f4;
}

html[data-theme="dark"] body:not(.login-page) .inventory-model-more {
    border-color: #4d686e;
    color: #a6c4c8;
    background: #294046;
}

html[data-theme="dark"] body:not(.login-page) .inventory-selection-bar {
    border-color: #55777d;
    color: #c1d5d7;
    background: #294247;
    box-shadow: 0 .5rem 1.4rem rgba(0, 0, 0, .2);
}

html[data-theme="dark"] body:not(.login-page) .inventory-row-attention > td {
    background: #3a3224;
}

html[data-theme="dark"] body:not(.login-page) .inventory-status {
    color: #a8cfbe;
    background: #29473b;
}

html[data-theme="dark"] body:not(.login-page) .inventory-status-warning {
    color: #e1c28d;
    background: #493c28;
}

html[data-theme="dark"] body:not(.login-page) .inventory-status-danger {
    color: #e0aeb4;
    background: #4a2d32;
}

html[data-theme="dark"] body:not(.login-page) .device-status-active {
    color: #a8d8c2;
    background: #29483b;
}

html[data-theme="dark"] body:not(.login-page) .device-status-offline {
    color: #efb3ba;
    background: #522f35;
}

html[data-theme="dark"] body:not(.login-page) .device-status-repair {
    color: #e8ca91;
    background: #4b3d26;
}

html[data-theme="dark"] body:not(.login-page) .device-status-awaiting-check {
    color: #f0d98c;
    background: #51451f;
}

html[data-theme="dark"] body:not(.login-page) .device-status-warehouse {
    color: #afd4e3;
    background: #294653;
}

html[data-theme="dark"] body:not(.login-page) .device-status-decommissioned {
    color: #b8c2c5;
    background: #39464b;
}

html[data-theme="dark"] body:not(.login-page) .device-status-unknown {
    color: #d0bce2;
    background: #40354b;
}

html[data-theme="dark"] body:not(.login-page) .inventory-progress-track {
    background: #34474c;
}

html[data-theme="dark"] body:not(.login-page) .pagination .page-link {
    border-color: #3b4f55;
    color: #a5c1c5;
    background: #1e2d32;
}

html[data-theme="dark"] body:not(.login-page) .pagination .page-item.active .page-link {
    border-color: #658d92;
    color: #fff;
    background: #587f85;
}

html[data-theme="dark"] body:not(.login-page) .dropdown-menu,
html[data-theme="dark"] body:not(.login-page) .popover,
html[data-theme="dark"] body:not(.login-page) .modal-content {
    border-color: #3b4f55;
    color: #d8e2e3;
    background: #1d2b30;
}

html[data-theme="dark"] body:not(.login-page) .dropdown-item {
    color: #d2dedf;
}

html[data-theme="dark"] body:not(.login-page) .dropdown-item:hover,
html[data-theme="dark"] body:not(.login-page) .dropdown-item:focus {
    color: #edf4f4;
    background: #294046;
}

html[data-theme="dark"] body:not(.login-page) .modal-header,
html[data-theme="dark"] body:not(.login-page) .modal-footer {
    border-color: #3b4f55;
    background: #23343a;
}

html[data-theme="dark"] body:not(.login-page) .home-kpi,
html[data-theme="dark"] body:not(.login-page) .home-quick-grid a,
html[data-theme="dark"] body:not(.login-page) .home-sites-grid a {
    border-color: #394d53;
    color: #d9e4e5;
    background: rgba(28, 41, 46, .94);
}

html[data-theme="dark"] body:not(.login-page) .home-kpi:hover,
html[data-theme="dark"] body:not(.login-page) .home-attention:hover,
html[data-theme="dark"] body:not(.login-page) .home-quick-grid a:hover,
html[data-theme="dark"] body:not(.login-page) .home-sites-grid a:hover {
    border-color: #55747a;
    color: #e9f1f2;
    background: #263a3f;
}

html[data-theme="dark"] body:not(.login-page) .home-kpi small,
html[data-theme="dark"] body:not(.login-page) .home-attention {
    color: #d6e1e2;
}

html[data-theme="dark"] body:not(.login-page) .home-operation {
    color: #b5d0d4;
    background: #294249;
}

html[data-theme="dark"] body:not(.login-page) .home-operation-receipt {
    color: #aad0be;
    background: #29463b;
}

html[data-theme="dark"] body:not(.login-page) .home-operation-inventory {
    color: #c4b7d6;
    background: #3a3147;
}

html[data-theme="dark"] body:not(.login-page) .home-operation-write_off,
html[data-theme="dark"] body:not(.login-page) .home-operation-correction {
    color: #dfb0b5;
    background: #492f33;
}

html[data-theme="dark"] body:not(.login-page) .receipt-paste,
html[data-theme="dark"] body:not(.login-page) .receipt-picker-selected td {
    border-left-color: #6c959a;
    background: #263d42;
}

html[data-theme="dark"] body:not(.login-page) .alert-info {
    border-color: #45656b;
    color: #b8d2d5;
    background: #263d42;
}

html[data-theme="dark"] body:not(.login-page) .alert-success {
    border-color: #416553;
    color: #b0d3c2;
    background: #263d33;
}

html[data-theme="dark"] body:not(.login-page) .alert-warning {
    border-color: #6a5939;
    color: #e0c897;
    background: #403723;
}

html[data-theme="dark"] body:not(.login-page) .alert-danger {
    border-color: #70434a;
    color: #e2b5ba;
    background: #462d31;
}

html[data-theme="dark"] body.login-page {
    color: #dce7e8;
    background:
        radial-gradient(circle at 12% 15%, rgba(61, 93, 91, .42), transparent 28rem),
        radial-gradient(circle at 88% 82%, rgba(62, 69, 94, .43), transparent 30rem),
        #141e22;
}

html[data-theme="dark"] .login-page-main::before,
html[data-theme="dark"] .login-page-main::after {
    border-color: rgba(159, 190, 194, .1);
}

html[data-theme="dark"] .login-card {
    border-color: #354a50;
    background: #1b292e;
    box-shadow: 0 1.75rem 5rem rgba(0, 0, 0, .3);
}

html[data-theme="dark"] .login-brand-panel {
    background: linear-gradient(145deg, #253b3e 0%, #242f3a 100%);
}

html[data-theme="dark"] .login-brand-panel::after {
    background: rgba(116, 151, 155, .08);
}

html[data-theme="dark"] .login-logo-wrap {
    padding: .25rem .7rem;
    border-radius: .8rem;
    background: rgba(245, 248, 248, .92);
}

html[data-theme="dark"] .login-logo-wrap img {
    mix-blend-mode: multiply;
}

html[data-theme="dark"] .login-eyebrow,
html[data-theme="dark"] .login-product {
    color: #8eb2b6;
}

html[data-theme="dark"] .login-brand-copy h2,
html[data-theme="dark"] .login-form-heading h1 {
    color: #e1ebec;
}

html[data-theme="dark"] .login-brand-copy p,
html[data-theme="dark"] .login-form-heading p,
html[data-theme="dark"] .login-note,
html[data-theme="dark"] .login-footer {
    color: #99aaae;
}

html[data-theme="dark"] .login-features span,
html[data-theme="dark"] .login-field label {
    color: #b6c9cb;
}

html[data-theme="dark"] .login-features i {
    color: #a7c3c6;
    background: rgba(110, 147, 152, .14);
}

html[data-theme="dark"] .login-field input {
    border-color: #3c5157;
    color: #e0e9ea;
    background: #1c2a2f;
}

html[data-theme="dark"] .login-field input:focus {
    border-color: #72999e;
    background: #213238;
    box-shadow: 0 0 0 .22rem rgba(111, 150, 155, .14);
}

html[data-theme="dark"] .login-submit {
    color: #fff;
    background: #5c858a;
}

html[data-theme="dark"] .login-submit:hover,
html[data-theme="dark"] .login-submit:focus {
    background: #6b959a;
}

html[data-theme="dark"] .login-alert {
    border-color: #6c4147;
    color: #e3b2b7;
    background: #442c30;
}

/* Сервисные заявки vsDesk */
.service-heading,
.service-detail-heading {
    margin-bottom: 1.25rem;
}

.service-sync-note {
    color: var(--fg-muted);
    font-size: .82rem;
    white-space: nowrap;
}

.service-metric {
    color: var(--fg-ink) !important;
    text-decoration: none;
    transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease;
}

.service-metric:hover {
    border-color: #aec4c7 !important;
    transform: translateY(-2px);
}

.service-metric .inventory-metric-icon {
    font-size: 1.45rem;
    font-weight: 700;
}

.service-metric-progress .inventory-metric-icon {
    color: #9a6f2d !important;
    background: #f7eddc !important;
}

.service-metric-waiting .inventory-metric-icon {
    color: #756589 !important;
    background: #eee9f3 !important;
}

.service-metric-closed .inventory-metric-icon {
    color: #4f7d69 !important;
    background: #e2f0e9 !important;
}

.service-filter-grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.4fr) minmax(165px, .55fr) minmax(185px, .65fr) auto auto auto;
    gap: .65rem;
    align-items: center;
}

.service-table {
    min-width: 1120px;
}

.service-table tbody tr {
    cursor: pointer;
}

.service-table td small,
.service-last-message span,
.service-last-message small {
    display: block;
}

.service-table td small,
.service-last-message small {
    margin-top: .2rem;
    color: var(--fg-muted);
    font-size: .78rem;
}

.service-last-message {
    width: 28%;
    min-width: 260px;
}

.service-ticket-number {
    font-weight: 650;
    text-decoration: none;
}

.service-repair-note {
    color: #9a5d22 !important;
    font-weight: 650;
}

.service-status {
    display: inline-flex;
    align-items: center;
    max-width: 13rem;
    padding: .28rem .62rem;
    overflow: hidden;
    border-radius: 999px;
    font-size: .82rem;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.service-status-open {
    color: #35677e;
    background: #dcecf3;
}

.service-status-progress {
    color: #875c17;
    background: #f8e8c7;
}

.service-status-waiting {
    color: #69567d;
    background: #ebe3f2;
}

.service-status-closed {
    color: #376a59;
    background: #e2f0e9;
}

.service-breadcrumb {
    display: flex;
    gap: .7rem;
    margin-bottom: .75rem;
    color: var(--fg-muted);
    font-size: .88rem;
}

.service-title-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .8rem;
}

.service-title-line h1 {
    margin: 0;
}

.service-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 2.05fr) minmax(320px, 1fr);
    gap: 1rem;
    align-items: start;
}

.service-detail-main,
.service-detail-side {
    display: grid;
    gap: 1rem;
}

.service-card {
    padding: 1.25rem;
    border: 1px solid var(--fg-border);
    border-radius: .9rem;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--fg-shadow);
}

.service-card h2 {
    margin-bottom: 1rem;
    font-size: 1.08rem;
    font-weight: 650;
}

.maintenance-card-heading,
.maintenance-equipment-main {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.maintenance-card-heading h2 {
    margin-bottom: .2rem;
}

.maintenance-card-heading p,
.maintenance-card-heading > span {
    margin: 0;
    color: var(--fg-muted);
    font-size: .84rem;
}

.maintenance-card-heading > span {
    padding: .3rem .65rem;
    border-radius: 999px;
    background: var(--fg-surface-soft);
    white-space: nowrap;
}

.maintenance-equipment-list {
    display: grid;
    gap: .75rem;
}

.maintenance-equipment-item {
    padding: 1rem;
    border: 1px solid var(--fg-border);
    border-radius: .75rem;
    background: var(--fg-surface);
}

.maintenance-equipment-unmatched {
    border-style: dashed;
    border-color: #d3a65d;
}

.maintenance-equipment-main > div,
.maintenance-equipment-main small,
.maintenance-match-method {
    display: block;
}

.maintenance-device-name,
.maintenance-equipment-main strong {
    font-weight: 700;
    text-decoration: none;
}

.maintenance-equipment-main small,
.maintenance-match-method {
    margin-top: .2rem;
    color: var(--fg-muted);
    font-size: .78rem;
}

.maintenance-result {
    flex: 0 0 auto;
    padding: .28rem .6rem;
    border-radius: 999px;
    font-size: .78rem;
    white-space: nowrap;
}

.maintenance-result-repair {
    color: #875c17;
    background: #f8e8c7;
}

.maintenance-result-ok {
    color: #376a59;
    background: #e2f0e9;
}

.maintenance-issue-text {
    margin-top: .75rem;
    padding: .7rem .8rem;
    border-radius: .6rem;
    color: var(--fg-ink);
    background: var(--fg-surface-soft);
    line-height: 1.5;
}

.maintenance-equipment-edit,
.maintenance-add-equipment {
    margin-top: .75rem;
}

.maintenance-equipment-edit summary,
.maintenance-add-equipment summary {
    color: var(--fg-accent-dark);
    cursor: pointer;
    font-size: .84rem;
    font-weight: 650;
}

.service-device-form {
    display: grid;
    gap: .65rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--fg-border);
}

.service-device-form label {
    font-size: .86rem;
    font-weight: 650;
    color: var(--fg-muted);
}

.service-device-form select {
    width: 100%;
    min-width: 0;
    padding: .65rem .75rem;
    border: 1px solid var(--fg-border);
    border-radius: .65rem;
    color: var(--fg-ink);
    background: var(--fg-surface);
}

.service-description {
    color: var(--fg-ink);
    line-height: 1.65;
}

.service-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin-top: 1rem;
}

.service-tags span {
    padding: .3rem .65rem;
    border-radius: .55rem;
    color: #476c73;
    background: #e8f1f0;
    font-size: .82rem;
}

.service-tags .service-tag-priority {
    color: #875c17;
    background: #f8e8c7;
}

.service-data-list {
    display: grid;
    grid-template-columns: minmax(120px, .8fr) minmax(0, 1.2fr);
    gap: .55rem .8rem;
    margin: 0 0 1rem;
}

.service-data-list dt {
    color: var(--fg-muted);
    font-weight: 500;
}

.service-data-list dd {
    margin: 0;
    overflow-wrap: anywhere;
}

.service-timeline {
    display: grid;
    gap: .65rem;
}

.service-event {
    position: relative;
    display: grid;
    grid-template-columns: 2rem 8.5rem minmax(0, 1fr);
    gap: .7rem;
    align-items: start;
}

.service-event::before {
    content: '';
    position: absolute;
    top: 1.7rem;
    bottom: -.8rem;
    left: .95rem;
    width: 1px;
    background: #cbd9da;
}

.service-event:last-child::before {
    display: none;
}

.service-event-marker {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 1.9rem;
    height: 1.9rem;
    border: 1px solid #7dac9b;
    border-radius: 50%;
    color: #477b67;
    background: #eef7f2;
    font-size: .8rem;
    font-weight: 700;
}

.service-event-comment .service-event-marker {
    border-color: #779ba1;
    color: #4d747b;
    background: #edf4f3;
}

.service-event time {
    padding-top: .35rem;
    color: var(--fg-muted);
    font-size: .82rem;
}

.service-event-content {
    min-height: 2.8rem;
    padding: .7rem .85rem;
    border: 1px solid #dce6e6;
    border-radius: .65rem;
    background: #f8fbfa;
}

.service-event-content p {
    margin-bottom: .3rem;
}

.service-event-content small {
    display: block;
    margin-top: .25rem;
    color: var(--fg-muted);
}

.service-event-latest .service-event-content {
    border-color: #acc8cc;
    color: #3f6870;
    background: #edf5f4;
}

.service-readonly-note {
    margin-top: 1rem;
    padding-top: .85rem;
    border-top: 1px solid var(--fg-border);
    color: var(--fg-muted);
    font-size: .84rem;
}

.service-progress {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .25rem;
    margin-top: 1.25rem;
}

.service-progress span {
    position: relative;
    padding-top: 1.25rem;
    color: var(--fg-muted);
    font-size: .72rem;
    text-align: center;
}

.service-progress span::before {
    content: '';
    position: absolute;
    top: .3rem;
    right: 50%;
    left: -50%;
    height: 2px;
    background: #d5dfe0;
}

.service-progress span:first-child::before {
    left: 50%;
}

.service-progress span::after {
    content: '';
    position: absolute;
    top: 0;
    left: calc(50% - .32rem);
    width: .65rem;
    height: .65rem;
    border: 2px solid #b9c6c8;
    border-radius: 50%;
    background: #fff;
}

.service-progress span.done::before {
    background: #70a48d;
}

.service-progress span.done::after {
    border-color: #4c8b70;
    background: #dff1e8;
}

html[data-theme="dark"] .service-card {
    border-color: var(--fg-border);
    color: var(--fg-ink);
    background: rgba(28, 41, 46, .95);
}

html[data-theme="dark"] .service-event-content {
    border-color: #3b4e54;
    background: #223238;
}

html[data-theme="dark"] .service-event-latest .service-event-content {
    border-color: #55777d;
    color: #c6dcdf;
    background: #263d42;
}

html[data-theme="dark"] .service-event::before {
    background: #42565c;
}

html[data-theme="dark"] .service-event-marker {
    border-color: #628b78;
    color: #afd3c2;
    background: #29463b;
}

html[data-theme="dark"] .service-status-open {
    color: #afd4e3;
    background: #294653;
}

html[data-theme="dark"] .service-status-progress {
    color: #e8ca91;
    background: #4b3d26;
}

html[data-theme="dark"] .service-status-waiting {
    color: #d0bce2;
    background: #40354b;
}

html[data-theme="dark"] .service-status-closed {
    color: #a8cfbe;
    background: #29473b;
}

html[data-theme="dark"] .service-tags span {
    color: #afd0d4;
    background: #294046;
}

html[data-theme="dark"] .service-tags .service-tag-priority {
    color: #e8ca91;
    background: #4b3d26;
}

html[data-theme="dark"] .service-progress span::after {
    border-color: #52656a;
    background: #1c292e;
}

@media (max-width: 1199.98px) {
    .service-filter-grid {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

@media (max-width: 991.98px) {
    .service-detail-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 767.98px) {
    .service-filter-grid {
        grid-template-columns: 1fr;
    }
    .service-event {
        grid-template-columns: 2rem minmax(0, 1fr);
    }
    .service-event time {
        grid-column: 2;
        padding-top: 0;
    }
    .service-event-content {
        grid-column: 2;
    }
    .service-data-list {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
    .service-data-list dd {
        margin-bottom: .55rem;
    }
}

/* Журнал: документы, детали и связанные складские события. */
.journal-tabs { display:flex; flex-wrap:wrap; gap:.45rem; }
.journal-tabs a { color:#54727b; text-decoration:none; border:1px solid #d5e1e3; border-radius:.55rem; padding:.5rem .75rem; background:#fff; font-size:.9rem; }
.journal-tabs a.active { color:#fff !important; border-color:#607f87; background:#607f87; box-shadow:0 .3rem .8rem rgba(63,91,99,.16); }
.journal-tabs span { margin-left:.25rem; padding:.08rem .38rem; border-radius:1rem; color:inherit; background:rgba(255,255,255,.2); }
.journal-search-panel { padding:1rem; border:1px solid #dce7e8; border-radius:1rem; background:rgba(247,250,250,.85); }
.journal-search-main { display:grid; grid-template-columns:minmax(16rem,2fr) repeat(3,minmax(9rem,1fr)) auto; gap:.65rem; }
.journal-advanced-filters { margin-top:.75rem; color:#607b83; }
.journal-advanced-filters summary { width:max-content; cursor:pointer; font-weight:600; }
.journal-summary { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem; margin:.75rem 0 1rem; color:#6d8187; font-size:.9rem; }
.journal-summary > span:not(.journal-history) { padding-right:.75rem; border-right:1px solid #dbe5e6; }
.journal-history { display:inline-flex; overflow:hidden; margin-left:auto; border:1px solid #bfd0d3; border-radius:.5rem; }
.journal-history a { padding:.3rem .7rem; color:#476b75; font-weight:600; text-decoration:none; }
.journal-history a.active { color:#fff !important; background:#486b75; }
.journal-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(20rem,25rem); align-items:start; gap:1rem; }
.journal-date { display:flex; gap:.7rem; align-items:baseline; margin:1.1rem .25rem .55rem; color:#31454c; }
.journal-date span { color:#84949a; font-size:.875rem; }
.journal-card { position:relative; overflow:hidden; margin-bottom:.65rem; border:1px solid #dce7e8; border-radius:.85rem; background:#fff; box-shadow:0 .25rem 1rem rgba(48,76,83,.04); }
.journal-card.selected { border-color:#55aab0; box-shadow:0 .35rem 1.2rem rgba(58,135,141,.16); }
.journal-card-link { position:absolute; z-index:1; inset:0; }
.journal-card-top { position:relative; z-index:2; display:grid; grid-template-columns:2.5rem minmax(11rem,1.3fr) minmax(5.5rem,.65fr) minmax(13rem,1.25fr) minmax(5.5rem,.65fr) max-content; gap:.65rem; align-items:center; padding:.85rem 1rem; pointer-events:none; }
.journal-icon { display:grid; width:2.2rem; height:2.2rem; place-items:center; border-radius:.65rem; font-weight:700; font-size:1.15rem; }
.journal-icon svg { width:1.25rem; height:1.25rem; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.journal-icon.receipt { color:#397c57; background:#e1f3e7; }.journal-icon.issue { color:#bd632e; background:#fff0e6; }.journal-icon.transfer { color:#437da7; background:#e7f2fb; }.journal-icon.inventory { color:#7460a3; background:#eeeafb; }.journal-icon.technical { color:#5f6d74; background:#edf0f1; }.journal-icon.writeoff { color:#a15c56; background:#fae9e8; }
.journal-card-title { min-width:0; }.journal-card-title strong,.journal-card-title small { display:block; }.journal-card-title small { margin-top:.16rem; color:#829298; font-size:.78rem; }
.journal-card-meta { min-width:0; border-left:1px solid #e5edee; padding-left:.65rem; }.journal-card-meta small,.journal-card-meta strong { display:block; }.journal-card-meta small { color:#829298; font-size:.72rem; }.journal-card-meta strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#4a6068; font-size:.84rem; }
.journal-device-info strong { margin-top:.08rem; }.journal-device-info span { display:block; color:#4a6068; font-size:.84rem; font-weight:600; line-height:1.25; overflow-wrap:anywhere; }
.journal-quantity.receipt { color:#377e57; }.journal-quantity.issue,.journal-quantity.writeoff { color:#bd632e; }.journal-quantity.technical { color:#68767d; }
.journal-state { position:relative; z-index:2; justify-self:end; display:inline-block; width:max-content; padding:.28rem .48rem; border-radius:.45rem; color:#fff; font-size:.74rem; font-weight:700; white-space:nowrap; pointer-events:none; }.journal-state.success { background:#438c60; }.journal-state.warning { color:#765a13; background:#fae3a0; }.journal-state.danger { background:#d94f4b; }.journal-state.technical { background:#6d7880; }
.journal-card-comment { position:relative; z-index:2; padding:0 1rem .75rem 4.2rem; color:#7b8c92; font-size:.84rem; pointer-events:none; }
.journal-preview,.journal-related { position:relative; z-index:2; margin:0 .85rem .85rem; border-radius:.6rem; background:#f4f8f8; pointer-events:auto; }.journal-preview summary { padding:.55rem .7rem; cursor:pointer; color:#4d6871; font-size:.84rem; font-weight:600; }.journal-preview table { width:100%; border-collapse:collapse; font-size:.8rem; }.journal-preview td { padding:.35rem .7rem; border-top:1px solid #e0eaeb; }.journal-preview td:last-child { text-align:right; }.journal-preview > a { display:block; padding:.4rem .7rem .6rem; color:#3d7e8a; font-size:.8rem; text-decoration:none; }
.journal-related { padding:.55rem .7rem; background:#f0f2f3; }.journal-related strong,.journal-related a { display:block; font-size:.8rem; }.journal-related strong { color:#647178; }.journal-related a { margin-top:.3rem; color:#587582; text-decoration:none; }
.journal-card-receipt { border-left:4px solid #60a77a; }.journal-card-inventory { border-left:4px solid #8a78b5; }.journal-card-receipt .journal-preview,.journal-card-inventory .journal-preview { margin-left:1rem; }
.journal-detail-panel { position:sticky; top:1rem; overflow:hidden; border:1px solid #dce7e8; border-radius:.9rem; background:#fff; box-shadow:0 .35rem 1.4rem rgba(48,76,83,.08); }.journal-detail-panel section { padding:1rem; border-top:1px solid #e4ecec; }.journal-detail-panel h2 { margin:0 0 .75rem; color:#334a52; font-size:.95rem; font-weight:700; }.journal-detail-head { display:grid; grid-template-columns:2.3rem 1fr auto; gap:.6rem; align-items:center; padding:1rem; }.journal-detail-head strong,.journal-detail-head small { display:block; }.journal-detail-head small { color:#839398; font-size:.78rem; }
.journal-detail-grid { display:grid; grid-template-columns:6.4rem minmax(0,1fr); gap:.45rem .7rem; margin:0; font-size:.84rem; }.journal-detail-grid dt { color:#839398; font-weight:400; }.journal-detail-grid dd { margin:0; color:#465d66; font-weight:600; }
.journal-detail-lines > div { display:flex; justify-content:space-between; gap:.6rem; padding:.35rem 0; border-bottom:1px solid #edf2f2; font-size:.83rem; }.journal-detail-lines span { color:#506a73; }.journal-detail-panel section > a { display:block; margin-top:.7rem; color:#397e8c; font-size:.84rem; text-decoration:none; }.journal-related-link { padding:.4rem 0; border-top:1px solid #edf2f2; }.journal-admin-actions { display:grid; grid-template-columns:1fr; gap:.5rem; background:#f8fbfb; }.journal-admin-actions h2 { grid-column:1/-1; }.journal-empty-detail { padding:2rem 1.2rem; color:#7b8d92; text-align:center; }
html[data-theme="dark"] .journal-search-panel,html[data-theme="dark"] .journal-card,html[data-theme="dark"] .journal-detail-panel { border-color:#3d5258; background:#1d2b30; } html[data-theme="dark"] .journal-preview,html[data-theme="dark"] .journal-related,html[data-theme="dark"] .journal-admin-actions { background:#26373d; } html[data-theme="dark"] .journal-card-meta { border-color:#3b5056; } html[data-theme="dark"] .journal-tabs a { color:#b5d1d6; border-color:#415960; background:#24353a; }
@media (max-width: 1199.98px) { .journal-layout { grid-template-columns:1fr; }.journal-detail-panel { position:static; }.journal-search-main { grid-template-columns:repeat(3,1fr); }.journal-search-main input { grid-column:span 3; } }
@media (max-width: 767.98px) { .journal-search-main { grid-template-columns:1fr; }.journal-search-main input { grid-column:auto; }.journal-card-top { grid-template-columns:2.5rem 1fr auto; }.journal-card-meta { display:none; }.journal-state { grid-column:2; }.journal-history { width:100%; margin-left:0; }.journal-card-comment { padding-left:1rem; } }
