/* ===== Оверлей для модалок создания записей (к/ф) ===== */ .cs-overlay { display: none; position: fixed; inset: 0; z-index: 1000; background: rgba(0, 0, 0, 0.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .cs-overlay.open { display: block; } .cs-overlay-scroll { width: 100%; height: 100%; overflow-y: auto; padding: 2rem 1rem; display: flex; flex-direction: column; align-items: center; gap: 1rem; } /* Общие стили для обеих модалок */ .cs-modal { width: 100%; max-width: 1100px; position: relative; animation: csModalAppear 0.25s ease-out; } /* Модалка 1 (форма) всегда поверх модалки 2 (таблицы), чтобы выпадающие списки не уходили под таблицу */ .cs-modal-form { z-index: 2; } .cs-modal-table { z-index: 1; } @keyframes csModalAppear { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } } .cs-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .cs-modal-header h2 { margin: 0; } /* Кнопка закрытия */ .btn-close-panel { background: none; border: 1px solid var(--bg-card-border); border-radius: var(--radius-sm); font-size: 1.3rem; line-height: 1; padding: 0.25rem 0.6rem; color: var(--text-secondary); cursor: pointer; transition: color var(--transition), background var(--transition), border-color var(--transition); } .btn-close-panel:hover { color: var(--error); background: rgba(239, 68, 68, 0.1); border-color: var(--error); } .wrap{ max-width: 900px; margin: 0 auto; background: var(--bg-card); border: 1px solid var(--bg-card-border); border-radius: 12px; overflow: hidden; box-shadow: 0 6px 20px rgba(0,0,0,.06); } .header{ padding: 14px 16px; border-bottom: 1px solid var(--bg-card-border); font-weight: 700; color: var(--text-primary); } details.table-item{ border-top: 1px solid var(--bg-card-border); } details.table-item:first-of-type{ border-top:none; } summary{ list-style: none; cursor: pointer; user-select: none; padding: 12px 16px; display: flex; align-items: center; gap: 10px; } summary::-webkit-details-marker{ display:none; } .chev{ width: 28px; height: 28px; border: 1px solid var(--bg-card-border); border-radius: 10px; display: grid; place-items: center; flex: 0 0 auto; color: var(--text-secondary); background: var(--bg-input); transition: transform .18s ease, color .18s ease, border-color .18s ease, background .18s ease; } .chev-icon{ width: 16px; height: 16px; display: block; } summary:hover .chev{ background: var(--bg-hover); border-color: color-mix(in srgb, var(--accent) 22%, var(--bg-card-border)); color: var(--text-primary); } details[open] .chev{ transform: rotate(180deg); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 35%, var(--bg-card-border)); background: color-mix(in srgb, var(--accent) 10%, var(--bg-input)); } .meta{ color: var(--text-secondary); font-size: 12px; } .content{ padding: 0 16px 16px 16px; } .wrap table{ width: 100%; border-collapse: collapse; border: 1px solid var(--bg-card-border); border-radius: 10px; overflow: hidden; background: var(--bg-card); } .wrap thead th{ text-align: left; font-size: 13px; color: var(--text-secondary); background: var(--bg-input); border-bottom: 1px solid var(--bg-card-border); padding: 10px 12px; } .wrap tbody td{ padding: 10px 12px; border-bottom: 1px solid var(--bg-card-border); font-size: 14px; color: var(--text-primary); } .wrap tbody tr:hover{ background: var(--bg-hover); } .title-multiline{ display: flex; flex-direction: column; gap: 2px; line-height: 1.2; } .title-multiline .title-main{ font-weight: 700; color: var(--text-primary); } .title-multiline .title-sub{ font-weight: 500; font-size: 12px; color: var(--text-secondary); } .title-multiline b{ font-weight: 700; color: var(--text-primary); } /* summary = 3 колонки: [chev] [title] [meta] */ details.table-item > summary{ display: grid; grid-template-columns: 28px 1fr auto; gap: 12px; align-items: start; /* важно: всё прижимаем к верху */ padding: 12px 16px; } /* чтобы текст нормально переносился и не растягивал мету */ details.table-item > summary .title{ min-width: 0; /* важно для grid, иначе может распирать */ } /* "2 записи" всегда справа и сверху, аккуратно */ details.table-item > summary .meta{ justify-self: end; align-self: start; white-space: nowrap; padding-top: 4px; /* чуть опустить относительно первой строки */ font-size: 12px; color: var(--text-secondary); } /* стрелка тоже сверху */ details.table-item > summary .chev{ align-self: start; margin-top: 2px; } .records-search{ width: min(360px, 60vw); padding: 0.45rem 0.7rem; background: var(--bg-input); border: 1px solid var(--bg-card-border); border-radius: var(--radius-sm); color: var(--text-primary); font-size: 0.9rem; outline: none; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; } .records-search::placeholder{ color: var(--text-placeholder); } .records-search:focus{ background: var(--bg-input-focus); border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-glow); } /* Таблица внутри раскрывающегося блока */ details.table-item .content table{ width: 100%; border-collapse: separate; /* нужно для красивых линий */ border-spacing: 0; border: 1px solid var(--bg-card-border); border-radius: 12px; overflow: hidden; background: var(--bg-card); } /* Шапка */ details.table-item .content thead th{ position: sticky; /* опционально: шапка прилипает при скролле */ top: 0; z-index: 1; background: var(--bg-input); color: var(--text-secondary); border-bottom: 1px solid var(--bg-card-border); } /* Ячейки: одинаковые отступы */ details.table-item .content th, details.table-item .content td{ padding: 0.75rem 0.85rem; vertical-align: top; } /* Вертикальные разделители между колонками */ details.table-item .content th:not(:last-child), details.table-item .content td:not(:last-child){ border-right: 1px solid var(--bg-card-border); } /* Горизонтальные разделители между строками */ details.table-item .content tbody td{ border-bottom: 1px solid var(--bg-card-border); color: var(--text-primary); } /* У последней строки нет нижней линии */ details.table-item .content tbody tr:last-child td{ border-bottom: none; } /* "Зебра" для читабельности */ details.table-item .content tbody tr:nth-child(even){ background: color-mix(in srgb, var(--bg-card) 70%, var(--bg-hover)); } /* Ховер по строке */ details.table-item .content tbody tr:hover{ background: var(--bg-hover); } /* (Опционально) Чтобы длинный текст не ломал ширину */ details.table-item .content td{ word-break: break-word; } /* (Опционально) если таблица широкая — пусть скроллится горизонтально */ details.table-item .content{ overflow-x: auto; }