/* START OF FILE style.css */

:root {
    --bg-color: #f0f2f5;
    --text-color: #212529;
    --card-bg: #ffffff;
    --card-border: #dee2e6;
    --input-bg: #fff;
    --input-border: #ced4da;
    --bs-body-bg: var(--bg-color);
    --primary-color: #0d6efd;
    --hover-bg: rgba(13, 110, 253, 0.05);
    --sidebar-width: 320px;
}
body.dark-mode {
    --bg-color: #121212;
    --text-color: #e0e0e0;
    --card-bg: #1e1e1e;
    --card-border: #333;
    --input-bg: #2a2a2a;
    --input-border: #444;
    --hover-bg: rgba(255, 255, 255, 0.05);
    --bs-body-color: var(--text-color);
    --bs-secondary-color: #aaa;
    --bs-tertiary-color: #888;
    --bs-body-bg: var(--bg-color);
    --bs-card-bg: var(--card-bg);
    --bs-list-group-bg: var(--card-bg);
    --bs-accordion-bg: var(--card-bg);
    --bs-accordion-border-color: var(--card-border);
    --bs-accordion-button-color: var(--text-color);
    --bs-accordion-active-bg: #bb00ff;
    --bs-accordion-active-color: #ffffff;
    --bs-border-color: var(--card-border);
    --bs-table-color: var(--text-color);
    --bs-table-striped-color: var(--text-color);
    color-scheme: dark;
}
body { background-color: var(--bg-color); color: var(--text-color); }
.app-wrapper { transition: padding-left .3s ease-in-out; }
.sidebar { width: var(--sidebar-width); flex-shrink: 0; background-color: var(--card-bg); border-right: 1px solid var(--card-border); height: 100vh; position: fixed; top: 0; left: 0; transition: margin-left .3s ease-in-out; z-index: 1045; }
.sidebar .offcanvas-body { padding: 0; }
.main-content { flex-grow: 1; padding: 1rem; padding-left: var(--sidebar-width); transition: padding-left .3s ease-in-out; }
.app-wrapper.sidebar-hidden .main-content { padding-left: 1rem; }
.app-wrapper.sidebar-hidden .sidebar { margin-left: calc(-1 * var(--sidebar-width)); }
.topbar { display: flex; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--card-border); }
.topbar-title { font-size: 1.25rem; margin: 0; margin-left: 1rem; }
.header-controls { display: flex; align-items: center; gap: 0.75rem; margin-left: auto; }
.list-group-item-action { border-radius: 0.375rem; margin: 0.125rem 0; border: none !important; }
.list-group-item-action:hover { background-color: var(--hover-bg); }
.list-group-item-action.active { background-color: var(--primary-color) !important; color: #fff !important; }
body.dark-mode .list-group-item-action.active { background-color: var(--primary-color) !important; color: #fff !important; }
.accordion-button:not(.collapsed) { color: var(--bs-accordion-active-color); background-color: var(--bs-accordion-active-bg); }
body.dark-mode .accordion-button { color: var(--text-color); background-color: var(--input-bg); }
body.dark-mode .accordion-button:not(.collapsed) { color: var(--bs-accordion-active-color) !important; background-color: var(--bs-accordion-active-bg) !important; box-shadow: none; }
body.dark-mode .accordion-button::after { filter: brightness(0) invert(1); }
body.dark-mode .accordion-button:not(.collapsed)::after { filter: none; }
body.dark-mode .accordion-button:focus { box-shadow: 0 0 0 0.25rem rgba(174, 0, 255, 0.25); }
@media (max-width: 991.98px) { .main-content { padding: 0.75rem; padding-left: 0.75rem !important; } .topbar-title { display: none; } .sidebar { margin-left: 0; } .app-wrapper.sidebar-hidden .sidebar { margin-left: 0; } }
.card { background-color: var(--card-bg); border-color: var(--card-border); border-radius: 0.5rem; }
#main-content > .card { border-top-left-radius: 0; border-top-right-radius: 0; }
.form-control, .form-select { background-color: var(--input-bg); border-color: var(--input-border); color: var(--text-color); }
.form-control::placeholder { color: #888; }
body.dark-mode .form-control::placeholder { color: #777; }
.form-control:focus, .form-select:focus { color: var(--text-color); background-color: var(--input-bg); border-color: var(--primary-color); box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); }
body.dark-mode .form-select {
    background-color: var(--input-bg) !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23e0e0e0' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%e");
}
body.dark-mode .form-select option {
    background-color: var(--card-bg);
    color: var(--text-color);
}
.nav-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; border-bottom-color: var(--card-border); }
.nav-tabs::-webkit-scrollbar { display: none; }
.nav-item { flex-shrink: 0; }
.nav-tabs .nav-link { color: var(--text-color); }
.nav-tabs .nav-link.active { background-color: var(--card-bg); border-color: var(--card-border); border-bottom-color: var(--card-bg); }
body.dark-mode .nav-tabs .nav-link.active { color: var(--text-color) !important; }
body.dark-mode .modal-content, body.dark-mode .list-group-item { background-color: var(--card-bg); color: var(--text-color); }
body.dark-mode .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }
body.dark-mode .badge.bg-secondary { background-color: #555 !important; color: #fff !important; }
body.dark-mode .badge.bg-light { background-color: #444 !important; color: #fff !important; }
body.dark-mode .badge.bg-dark { background-color: #6c757d !important; color: #fff !important; }
body.dark-mode .badge.bg-info { background-color: #0dcaf0 !important; color: #000 !important; }
body.dark-mode .btn-light { background-color: var(--input-bg); color: var(--text-color); border-color: var(--input-border); }
body.dark-mode .text-muted { color: var(--bs-secondary-color) !important; }
body.dark-mode input[type="datetime-local"]::-webkit-calendar-picker-indicator { filter: invert(1); }
body.dark-mode, body.dark-mode .form-label, body.dark-mode .form-check-label { color: var(--text-color); }
.result-pre { white-space: pre-wrap; word-wrap: break-word; max-height: 400px; overflow-y: auto; background-color: rgba(0,0,0,0.03); padding: 1rem; border-radius: 0.25rem; }
body.dark-mode .result-pre { background-color: rgba(0,0,0,0.2); }

/* --- ИЗМЕНЕНИЕ: Стиль для подсветки выбранных столов --- */
.btn-check:checked + .btn-outline-secondary {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: white !important;
    box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.3) !important;
}
/* --- КОНЕЦ ИЗМЕНЕНИЯ --- */


/* Стили для изображений в номенклатуре */
.nomenclature-image {
    width: 60px;
    height: 60px;
    object-fit: cover;
    border-radius: 8px;
    background-color: var(--input-bg);
}
.nomenclature-image-placeholder {
    width: 60px;
    height: 60px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--input-bg);
    color: var(--bs-secondary-color);
    font-size: 1.5rem;
    border: 1px dashed var(--input-border);
}
.table-mobile-cards th:first-child,
.table-mobile-cards td:first-child {
    width: 84px;
}
.group-parent .group-child {
    display: none;
}
.group-parent.is-open .group-child {
    display: table-row;
}
.group-header-row {
    cursor: pointer;
    background-color: var(--card-bg);
    border-top: 2px solid var(--card-border);
    border-bottom: 2px solid var(--card-border);
}
body.dark-mode .group-header-row:hover {
    background-color: #31363B;
}
body:not(.dark-mode) .group-header-row:hover {
    background-color: #f0f2f5;
}
.group-header-row td {
    font-weight: 600;
    font-size: 1.1em;
    padding: 0.75rem 1rem !important;
}
.group-toggle-icon {
    transition: transform 0.2s ease-in-out;
}
.group-parent.is-open .group-toggle-icon {
    transform: rotate(90deg);
}
.group-child td {
    border-top: none;
}
.table-striped > .group-parent:nth-of-type(odd) > .group-child {
    background-color: transparent;
}


@media (max-width: 767.98px) {
    .table-mobile-cards thead { display: none; }
    .table-mobile-cards .group-header-row { display: table-row; }
    .table-mobile-cards tr { display: block; width: 100%; margin-bottom: 1rem; border: 1px solid var(--card-border); border-radius: 0.5rem; padding: 0.5rem; background-color: var(--card-bg); }
    .table-mobile-cards .nomenclature-details-row { margin-bottom: 0; border: none; border-radius: 0; padding: 0; background-color: transparent; }
    .table-mobile-cards td { display: flex; justify-content: space-between; align-items: center; text-align: right; padding-left: 0.5rem; border: none; padding-top: 0.5rem; padding-bottom: 0.5rem; }
    .table-mobile-cards .group-header-row td { display: table-cell; }
    .table-mobile-cards td:not(:last-child) { border-bottom: 1px dashed var(--card-border); }
    .table-mobile-cards td:before { content: attr(data-label); font-weight: bold; text-align: left; padding-right: 1rem; }
    .nomenclature-details-row td:before { content: none; }
    
    .table-mobile-cards td:first-child {
        width: 100%; 
    }
    .table-mobile-cards td:first-child .nomenclature-image,
    .table-mobile-cards td:first-child .nomenclature-image-placeholder {
        width: 60px;
        flex-shrink: 0; 
    }
}

.search-select-wrapper { position: relative; }
.search-select-wrapper::before { font-family: "bootstrap-icons" !important; content: "\F52A"; position: absolute; top: 50%; left: 12px; transform: translateY(-50%); color: #6c757d; }
.search-select-input { padding-left: 35px !important; }
.search-select-list { display: none; position: absolute; top: 100%; left: 0; right: 0; background-color: var(--card-bg); border: 1px solid var(--card-border); border-top: none; max-height: 200px; overflow-y: auto; z-index: 1000; border-bottom-left-radius: 0.375rem; border-bottom-right-radius: 0.375rem; }
.search-select-list-item { padding: 0.5rem 0.75rem; cursor: pointer; }
.search-select-list-item:hover { background-color: var(--hover-bg); }
.search-select-list-item strong { display: block; font-size: 0.9em; }
.search-select-list-item small { font-size: 0.75em; color: var(--bs-secondary-color); }
body.dark-mode .search-select-list { background-color: #343a40; border-color: #495057; }
body.dark-mode .search-select-list-item:hover { background-color: #495057; }
body.dark-mode .search-select-list-item { border-bottom: 1px solid #495057; }
.hall-plan-wrapper { overflow-x: auto; padding: 1rem; background-color: var(--bg-color); }
.hall-plan { position: relative; border: 1px dashed var(--card-border); }
.hall-plan-table { position: absolute; background-color: var(--card-bg); border: 1px solid var(--primary-color); border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 0.8em; cursor: pointer; box-sizing: border-box; padding: 2px; }
[data-tooltip] { position: relative; cursor: pointer; }
[data-tooltip]::after { content: attr(data-tooltip); position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); margin-bottom: 5px; background-color: var(--card-bg); color: var(--text-color); border: 1px solid var(--card-border); padding: 4px 8px; border-radius: 4px; font-size: 0.8em; white-space: pre; visibility: hidden; opacity: 0; transition: opacity 0.2s, visibility 0.2s; z-index: 10; }
[data-tooltip]:hover::after { visibility: visible; opacity: 1; }
.monitoring-card .accordion-body { padding: 0.5rem; background-color: var(--bg-color); }
.accordion-body-inner { background-color: var(--card-bg); border-radius: 0.375rem; }
.accordion-body-inner .item-list { max-height: 250px; overflow-y: auto; }
.accordion-body-inner .list-group-item { padding: 0.5rem 0.75rem; background-color: transparent; border-bottom: 1px solid var(--card-border); }
.accordion-body-inner .list-group-item:last-child { border-bottom: none; }
.accordion-body-inner .btn { padding: 0.1rem 0.4rem; font-size: 0.75rem; }
body.dark-mode .monitoring-card .accordion-header .accordion-button { background-color: #2c3034; }
body.dark-mode .monitoring-card > .accordion-header .accordion-button { background-color: #212529; }
body.dark-mode .monitoring-card .accordion-body { background-color: #1a1d20; }
#nomenclatureTableBody td { vertical-align: middle; }
#nomenclatureTableBody .id-cell {
    max-width: 150px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#nomenclatureTableBody td:nth-child(5) { font-weight: 600; } 
.menu-item:hover, #reserve-menu-container .menu-item:hover, #monitoring-container .list-group-item:hover { background-color: var(--hover-bg); cursor: pointer; }
.accordion-button .btn { line-height: 1; padding: 0.25rem 0.5rem; }
.accordion-button .ms-auto { padding-right: 0.5rem; }
.fade-in-up {
    opacity: 0;
    transform: translateY(15px);
    transition: opacity 0.5s ease-out, transform 0.4s ease-out;
}
.fade-in-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}
.nomenclature-details-row {
    display: none;
}
.nomenclature-details-row > td {
    padding: 1rem !important;
    border: none !important;
}
.details-wrapper {
    overflow: visible;
}
.table-row-active + .nomenclature-details-row {
    display: table-row;
}
.table-row-active {
    background-color: var(--hover-bg) !important;
}
.table-row-clickable:focus, .table-row-clickable:focus-within {
    outline: none !important;
    box-shadow: none !important;
}
body.dark-mode .table-row-active {
    background-color: var(--hover-bg) !important;
}
.btn-json-toggle {
    width: 100%;
}
body.dark-mode .accordion-button {
    background-color: var(--input-bg) !important;
    color: var(--text-color) !important;
}

body.dark-mode .accordion-button:not(.collapsed) {
    background-color: #31363B !important; 
    color: #f8f9fa !important;
}
.force-hide {
    display: none !important;
}
.modifier-row td {
    border-top: none !important; /* Убирает верхнюю границу для строк модификаторов */
    padding-top: 0.1rem !important;
    padding-bottom: 0.1rem !important;
}
/* Чтобы найденные элементы отображались даже внутри закрытых групп при поиске (опционально), 
   или просто для корректной работы логики */
.group-child.search-match {
    display: table-row !important;
}
/* Стили для заголовков групп в таблице (Poster и iiko) */
.group-header-row td {
    background-color: rgba(255, 255, 255, 0.05) !important; /* Легкий серый на темном */
    border-top: 1px solid var(--card-border);
    border-bottom: 1px solid var(--card-border);
    font-size: 1.05rem;
}

/* При наведении */
.group-header-row:hover td {
    background-color: rgba(255, 255, 255, 0.1) !important;
}

/* Поворот стрелочки при открытии */
.group-parent.is-open .group-toggle-icon {
    transform: rotate(90deg);
    transition: transform 0.2s;
}