Files
magistr/frontend/admin/css/department.css

344 lines
9.0 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===== Оверлей для модалок создания записей (к/ф) ===== */
.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;
}
/* ===== Контейнер занятий преподавателя в модалках ===== */
.cs-modal-table .lessons-container {
max-height: 50vh;
overflow-y: auto;
padding-right: 0.5rem;
scrollbar-width: thin;
scrollbar-color: rgba(99, 102, 241, 0.55) rgba(255, 255, 255, 0.06);
}
.cs-modal-table .lessons-container::-webkit-scrollbar {
width: 10px;
}
.cs-modal-table .lessons-container::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.06);
border-radius: 10px;
}
.cs-modal-table .lessons-container::-webkit-scrollbar-thumb {
background: rgba(99, 102, 241, 0.55);
border-radius: 10px;
border: 2px solid rgba(0, 0, 0, 0);
background-clip: padding-box;
}
.cs-modal-table .lessons-container::-webkit-scrollbar-thumb:hover {
background: rgba(99, 102, 241, 0.75);
}