@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600&family=Prata&display=swap');:root{--ivory:#f8f5ef;--sand:#ece3d5;--gold:#b88e3a;--green:#355248;--ink:#3f3d3a;--line:rgba(63,61,58,.16)}body{font-family:Manrope,sans-serif;background:var(--ivory);color:var(--ink);font-weight:400}.brand,h1,h2{font-family:Prata,serif}.brand{letter-spacing:.03em;color:var(--green)!important}.navbar{height:72px}.sidebar{position:fixed;top:72px;bottom:0;width:245px;border-right:1px solid var(--line);background:var(--ivory);z-index:1030}.sidebar a{display:block;padding:12px 14px;margin:3px 0;text-decoration:none;color:var(--ink);border-radius:7px}.sidebar a:hover{background:var(--sand);color:var(--green)}.sidebar i{width:24px;display:inline-block}.content{margin-left:245px;min-height:100vh}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:38px}.page-head h1{font-size:clamp(2rem,4vw,3.6rem);margin:0}.page-head p{color:#777}.eyebrow{text-transform:uppercase;letter-spacing:.17em;font-size:.72rem;color:var(--gold);margin-bottom:12px}.card-clean,.group-card,.article-card{display:block;background:rgba(255,255,255,.48);border:1px solid var(--line);border-radius:8px;padding:26px;text-decoration:none;color:inherit;box-shadow:none}.metric{background:rgba(255,255,255,.45);border:1px solid var(--line);border-radius:8px;padding:22px;display:grid;grid-template-columns:auto 1fr;gap:5px 14px}.metric i{grid-row:1/3;font-size:1.8rem;color:var(--green)}.metric strong{font-size:2rem;font-weight:500}.metric span{color:#777}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-title h2{font-size:1.35rem;margin:0}.list-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-top:1px solid var(--line);gap:15px}.list-row:first-of-type{border-top:0}.list-row div span{display:block;color:#777;font-size:.9rem;margin-top:4px}.tag{display:inline-block;border:1px solid rgba(53,82,72,.3);color:var(--green);border-radius:99px;padding:4px 9px;font-size:.76rem;margin:2px}.tag.muted,.group-card.closed{filter:grayscale(1);opacity:.58}.announcement h3{font-family:Prata;font-size:1.1rem;margin:6px 0}.group-card h2,.article-card h2{font-size:1.45rem;margin:28px 0 8px}.group-card:hover,.article-card:hover{border-color:var(--gold);transform:translateY(-2px);transition:.5s}.group-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:18px;margin-top:28px;color:#777}.btn{border-radius:7px}.btn-primary{background:var(--green);border-color:var(--green)}.btn-primary:hover{background:#263f37;border-color:#263f37}.form-control,.form-select{border:1px solid var(--line);border-radius:7px;padding:12px 14px;background:rgba(255,255,255,.5)}.form-card{max-width:760px}.form-card p{margin-bottom:18px}.form-card label{margin-bottom:7px}.searchbar{border:1px solid var(--line);background:rgba(255,255,255,.5);border-radius:8px;padding:4px 16px;display:flex;align-items:center;max-width:680px}.searchbar input{border:0;background:transparent;width:100%;padding:14px;outline:0}.table>:not(caption)>*>*{background:transparent;border-color:var(--line);padding:15px}.timeline-row{display:flex;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}.date-box{border-right:1px solid var(--line);padding-right:20px;text-align:center}.date-box strong{font:2rem Prata;display:block}.attendance-row{display:grid;grid-template-columns:1.2fr 1fr 1.5fr;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.article-page{max-width:820px;margin:auto}.article-page h1{font-size:clamp(2.4rem,6vw,5rem);margin:20px 0 35px}.article-page .lead{font-size:1.1rem;line-height:1.9}.comment{border-top:1px solid var(--line);padding:18px 0}.comment small{margin-left:10px;color:#777}.profile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}.profile-grid span{display:block;color:#777;font-size:.85rem;margin-bottom:7px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:25px;background:var(--ivory)}.login-card{width:min(100%,430px);padding:45px;background:rgba(255,255,255,.5);border:1px solid var(--line);border-radius:8px}.empty{padding:35px;text-align:center;color:#888}.ornament{position:fixed;border:1px solid rgba(184,142,58,.12);width:280px;height:280px;transform:rotate(45deg);right:-180px;top:20%;z-index:-1}@media(max-width:991.98px){.sidebar{top:0}.content{margin-left:0}.navbar{height:64px}.page-head{align-items:flex-start;gap:20px}.actions{flex-direction:column}.card-clean{padding:20px}.attendance-row{grid-template-columns:1fr}.profile-grid{grid-template-columns:1fr}.login-card{padding:30px}.content .container-fluid{padding-bottom:90px!important}}
/* Исправленное адаптивное меню */
@media (min-width: 992px) {
    .sidebar.offcanvas {
        visibility: visible !important;
        transform: none !important;
        position: fixed;
        top: 72px;
        left: 0;
        bottom: 0;
        width: 245px;
        border-right: 1px solid var(--line);
    }
    .sidebar .offcanvas-header { display: none; }
    .sidebar .offcanvas-body { overflow-y: auto; }
}
@media (max-width: 991.98px) {
    .sidebar.offcanvas {
        top: 0;
        width: min(86vw, 320px);
        background: var(--ivory);
        z-index: 1055;
    }
    .sidebar .offcanvas-header { border-bottom: 1px solid var(--line); padding: 20px; }
    .sidebar .offcanvas-body { padding: 16px !important; }
    .sidebar a { width: 100%; padding: 14px; }
}

/* Русские списки с флажками */
.checkbox-list { list-style: none; padding: 0; margin: 8px 0 0; }
.checkbox-list > div, .checkbox-list > label { margin-bottom: 9px; }
.checkbox-list input { margin-right: 8px; }

/* Цветная таблица посещаемости */
.attendance-table-wrap { max-height: 620px; }
.attendance-table th:first-child, .attendance-table td:first-child { position: sticky; left: 0; background: var(--ivory); z-index: 2; min-width: 210px; }
.attendance-cell { min-width: 62px; font-weight: 600; border-left: 3px solid var(--ivory) !important; }
.attendance-present { background: rgba(67, 145, 93, .22) !important; color: #22643a; }
.attendance-absent { background: rgba(190, 64, 64, .20) !important; color: #8d2929; }
.attendance-excused { background: rgba(217, 143, 43, .24) !important; color: #8a5615; }
.brand-lockup{display:flex;align-items:center;gap:10px;text-decoration:none}.brand-lockup img{width:46px;height:46px;object-fit:contain}.offcanvas-header .brand-lockup img{width:50px;height:50px}.login-shell{min-height:calc(100vh - 3rem);display:grid;grid-template-columns:1fr 1fr;max-width:1100px;margin:auto;border:1px solid var(--line);background:rgba(255,255,255,.52);border-radius:12px;overflow:hidden}.login-brand-panel{background:var(--sand);padding:60px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}.login-brand-panel img{width:min(320px,80%);height:auto}.login-brand-panel h1{font-size:3rem;color:var(--green)}.login-brand-panel p{max-width:430px;line-height:1.8}.login-form-panel{display:grid;place-items:center;padding:45px}.login-logo{width:100px;height:100px;object-fit:contain}.login-card{border:0;background:transparent;padding:0}.article-thumb{width:100%;height:230px;object-fit:cover;border-radius:6px;margin-bottom:20px}.article-hero{width:100%;max-height:480px;object-fit:cover;border-radius:8px;margin:5px 0 30px}.article-page h1{font-size:clamp(2rem,4vw,3.4rem);margin:14px 0 25px}.article-body{font-size:1.05rem;line-height:1.9}.progress-chart svg{width:100%;height:auto;min-height:230px}.chart-axis{stroke:var(--line);stroke-width:2}.chart-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.chart-juz{stroke:var(--green)}.chart-pages{stroke:var(--gold);stroke-dasharray:8 7}.chart-legend{display:flex;gap:22px;flex-wrap:wrap}.chart-legend i{display:inline-block;width:24px;height:3px;margin-right:7px;vertical-align:middle}.legend-juz{background:var(--green)}.legend-pages{background:var(--gold)}.progress-group-card{display:block;border:1px solid var(--line);padding:18px;border-radius:8px;text-decoration:none;color:inherit}.progress-group-card span,.progress-group-card small{display:block;color:#777;margin-top:5px}.mini-bar{height:8px;background:var(--sand);border-radius:10px;overflow:hidden;margin:14px 0 8px}.mini-bar i{display:block;height:100%;background:var(--green)}.pagination .page-link{color:var(--green);border-color:var(--line);background:rgba(255,255,255,.55)}.pagination .active .page-link{background:var(--green);border-color:var(--green);color:white}
@media(max-width:767.98px){.login-shell{grid-template-columns:1fr}.login-brand-panel{padding:25px}.login-brand-panel img{width:150px}.login-brand-panel p{display:none}.login-brand-panel h1{font-size:2rem}.login-form-panel{padding:28px}.brand-lockup img{width:38px;height:38px}.navbar-brand span{font-size:1rem}}


/* =========================================================
   Недельное расписание
   ========================================================= */

.schedule-page-head {
    margin-bottom: 24px;
}

.schedule-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-bottom: 22px;
    color: #777;
    font-size: 0.88rem;
}

.schedule-legend span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.schedule-legend i {
    color: var(--green);
}

.weekly-schedule-wrapper {
    width: 100%;
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.4);
}

.weekly-schedule-table {
    width: 100%;
    min-width: 1100px;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
}

.weekly-schedule-table th,
.weekly-schedule-table td {
    padding: 12px;
    border-right: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    vertical-align: top;
}

.weekly-schedule-table th:last-child,
.weekly-schedule-table td:last-child {
    border-right: 0;
}

.weekly-schedule-table tbody tr:last-child th,
.weekly-schedule-table tbody tr:last-child td {
    border-bottom: 0;
}

.weekly-schedule-table thead th {
    position: sticky;
    top: 0;
    z-index: 4;
    padding: 15px 10px;
    background: var(--sand);
    color: var(--green);
    text-align: center;
    font-weight: 600;
}

.weekly-schedule-table tbody td {
    min-height: 110px;
}

.schedule-time-column {
    position: sticky;
    left: 0;
    z-index: 3;
    width: 85px;
    min-width: 85px;
    background: var(--ivory) !important;
    text-align: center;
    color: var(--green);
    font-weight: 600;
}

.weekly-schedule-table thead .schedule-time-column {
    z-index: 5;
    background: var(--sand) !important;
}

.schedule-lesson-card {
    display: block;
    margin-bottom: 9px;
    padding: 12px;
    border: 1px solid rgba(53, 82, 72, 0.22);
    border-left: 3px solid var(--green);
    border-radius: 7px;
    background: rgba(255, 255, 255, 0.68);
    color: var(--ink);
    text-decoration: none;
    transition:
        border-color 0.35s ease,
        background 0.35s ease,
        transform 0.35s ease;
}

.schedule-lesson-card:last-child {
    margin-bottom: 0;
}

.schedule-lesson-card:hover {
    color: var(--ink);
    border-color: var(--gold);
    background: rgba(236, 227, 213, 0.7);
    transform: translateY(-2px);
}

.schedule-lesson-time {
    margin-bottom: 6px;
    color: var(--gold);
    font-size: 0.78rem;
    font-weight: 600;
}

.schedule-lesson-card strong {
    display: block;
    margin-bottom: 5px;
    color: var(--green);
    font-size: 0.94rem;
    line-height: 1.35;
}

.schedule-lesson-card span {
    display: block;
    font-size: 0.8rem;
    line-height: 1.4;
}

.schedule-lesson-card small {
    display: inline-block;
    margin-top: 7px;
    padding: 3px 7px;
    border: 1px solid var(--line);
    border-radius: 99px;
    color: #777;
    font-size: 0.68rem;
}

.schedule-empty-cell {
    display: block;
    padding-top: 18px;
    color: #b3ada5;
    text-align: center;
}

.weekday-short {
    display: none;
}

/* Тёмная тема, если она включена через класс */
body.dark .weekly-schedule-wrapper,
body.dark .schedule-lesson-card {
    background: rgba(255, 255, 255, 0.04);
}

body.dark .schedule-time-column {
    background: var(--ivory) !important;
}

/* Планшеты и телефоны */
@media (max-width: 991.98px) {
    .schedule-legend {
        margin-bottom: 16px;
    }

    .weekly-schedule-wrapper {
        border-radius: 7px;
    }

    .weekly-schedule-table {
        min-width: 900px;
    }

    .weekly-schedule-table th,
    .weekly-schedule-table td {
        padding: 9px;
    }

    .schedule-time-column {
        width: 70px;
        min-width: 70px;
    }

    .schedule-lesson-card {
        padding: 10px;
    }

    .weekday-full {
        display: none;
    }

    .weekday-short {
        display: inline;
    }
}

@media (max-width: 575.98px) {
    .weekly-schedule-table {
        min-width: 760px;
    }

    .schedule-time-column {
        width: 62px;
        min-width: 62px;
    }

    .schedule-lesson-card strong {
        font-size: 0.85rem;
    }

    .schedule-lesson-card span {
        font-size: 0.74rem;
    }
}

/* =========================================================
   Фильтры и категории групп
   ========================================================= */

.group-filter-panel {
    margin-bottom: 26px;
    padding: 22px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background:
        linear-gradient(
            135deg,
            rgba(255, 255, 255, 0.72),
            rgba(236, 227, 213, 0.34)
        );
}

.group-filter-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 20px;
}

.group-filter-heading h2 {
    margin: 3px 0 0;
    font-size: 1.15rem;
}

.group-filter-eyebrow {
    color: var(--gold);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.13em;
    text-transform: uppercase;
}

.group-filter-reset {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: #81786d;
    font-size: 0.82rem;
    text-decoration: none;
}

.group-filter-reset:hover {
    color: var(--green);
}

.group-filter-controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 24px;
}

.group-filter-section {
    min-width: 0;
}

.group-filter-label {
    display: block;
    margin-bottom: 10px;
    color: #756f66;
    font-size: 0.8rem;
    font-weight: 600;
}

.group-filter-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.group-filter-button,
.group-category-filter {
    display: inline-flex;
    min-height: 38px;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 8px 14px;
    border: 1px solid var(--line);
    border-radius: 99px;
    background: rgba(255, 255, 255, 0.58);
    color: var(--ink);
    font-size: 0.82rem;
    font-weight: 500;
    text-decoration: none;
    transition:
        color 0.25s ease,
        border-color 0.25s ease,
        background 0.25s ease,
        transform 0.25s ease;
}

.group-filter-button:hover,
.group-category-filter:hover {
    color: var(--green);
    border-color: rgba(53, 82, 72, 0.42);
    transform: translateY(-1px);
}

.group-filter-button.active {
    border-color: var(--green);
    background: var(--green);
    color: #fff;
}

/* Общие стили категорий */

.group-category-filter,
.group-category-badge {
    --category-color: var(--green);
    --category-soft: rgba(53, 82, 72, 0.12);
}

.group-category-filter {
    width: 38px;
    min-width: 38px;
    padding-right: 0;
    padding-left: 0;
    border-color: color-mix(
        in srgb,
        var(--category-color) 40%,
        transparent
    );
    color: var(--category-color);
    background: var(--category-soft);
}

.group-category-filter:hover,
.group-category-filter.active {
    border-color: var(--category-color);
    background: var(--category-color);
    color: #fff;
}

/*
Категории приглушённые, чтобы не спорили
с зелёно-бежевой стилистикой сайта.
*/

.category-a {
    --category-color: #426c5d;
    --category-soft: rgba(66, 108, 93, 0.13);
}

.category-b {
    --category-color: #877342;
    --category-soft: rgba(135, 115, 66, 0.14);
}

.category-c {
    --category-color: #687a53;
    --category-soft: rgba(104, 122, 83, 0.14);
}

.category-d {
    --category-color: #77677e;
    --category-soft: rgba(119, 103, 126, 0.13);
}

.category-f {
    --category-color: #956858;
    --category-soft: rgba(149, 104, 88, 0.13);
}

/* Карточки */

.group-card {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.62);
}

.group-card::before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 4px;
    background: var(--group-category-color, var(--green));
    content: "";
}

.group-card-category-a {
    --group-category-color: #426c5d;
}

.group-card-category-b {
    --group-category-color: #877342;
}

.group-card-category-c {
    --group-category-color: #687a53;
}

.group-card-category-d {
    --group-category-color: #77677e;
}

.group-card-category-f {
    --group-category-color: #956858;
}

.group-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.group-category-badge {
    display: inline-flex;
    width: 32px;
    height: 32px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--category-color);
    border-radius: 50%;
    background: var(--category-soft);
    color: var(--category-color);
    font-size: 0.82rem;
    font-weight: 700;
}

.group-status-badge {
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border-radius: 99px;
    font-size: 0.7rem;
    font-weight: 600;
}

.group-status-badge.active {
    background: rgba(66, 108, 93, 0.12);
    color: #426c5d;
}

.group-status-badge.closed {
    background: rgba(116, 109, 100, 0.11);
    color: #756e65;
}

.group-card-closed {
    opacity: 0.72;
    background: rgba(235, 231, 224, 0.4);
}

.group-card-closed::after {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: rgba(245, 241, 234, 0.12);
    content: "";
}

.group-card-information {
    display: grid;
    gap: 8px;
    margin-top: 15px;
    color: #756f66;
    font-size: 0.82rem;
}

.group-card-information span {
    display: flex;
    align-items: center;
    gap: 8px;
}

.group-card-information i {
    color: var(--group-category-color, var(--green));
}

.group-card-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 18px;
    color: var(--group-category-color, var(--green));
    font-size: 0.82rem;
    font-weight: 600;
    text-decoration: none;
}

/* Мобильная версия */

@media (max-width: 767.98px) {
    .group-filter-panel {
        padding: 17px;
    }

    .group-filter-heading {
        margin-bottom: 17px;
    }

    .group-filter-controls {
        grid-template-columns: 1fr;
        gap: 18px;
    }
}

@media (max-width: 419.98px) {
    .group-filter-heading {
        display: block;
    }

    .group-filter-reset {
        margin-top: 10px;
    }

    .group-filter-button {
        padding-right: 12px;
        padding-left: 12px;
    }
}
.group-schedule-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 16px;
}

.group-schedule-row {
    display: grid;
    grid-template-columns: minmax(120px, 1fr) 140px;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--bs-border-color);
    border-radius: 12px;
    background: var(--bs-body-bg);
}

.group-schedule-row label {
    margin: 0;
    font-weight: 600;
}

.group-schedule-row input[type="time"] {
    width: 100%;
}

@media (max-width: 767.98px) {
    .group-schedule-form {
        grid-template-columns: 1fr;
    }

    .group-schedule-row {
        grid-template-columns: minmax(110px, 1fr) 130px;
    }
}

@media (max-width: 420px) {
    .group-schedule-row {
        grid-template-columns: 1fr;
    }
}
/* Мобильный выбор текущего джуза: прокручиваемая панель вместо длинного native select. */
.mobile-juz-trigger{display:none;width:100%;min-height:48px;padding:12px 42px 12px 14px;border:1px solid var(--line);border-radius:7px;background:rgba(255,255,255,.7);color:var(--ink);text-align:left;position:relative}
.mobile-juz-trigger::after{content:'⌄';position:absolute;right:15px;top:50%;transform:translateY(-55%);font-size:1.2rem;color:#777}
.mobile-juz-sheet{display:none;position:fixed;inset:0;z-index:2000;background:rgba(30,35,33,.42);padding:16px;align-items:flex-end}
.mobile-juz-sheet.open{display:flex}
.mobile-juz-sheet__panel{width:100%;max-height:min(78vh,620px);display:flex;flex-direction:column;background:var(--ivory);border-radius:20px 20px 12px 12px;box-shadow:0 -12px 40px rgba(0,0,0,.18);overflow:hidden}
.mobile-juz-sheet__head{display:flex;align-items:center;justify-content:space-between;padding:17px 18px;border-bottom:1px solid var(--line);flex:0 0 auto}
.mobile-juz-sheet__head strong{font-family:Prata,serif;font-size:1.05rem}
.mobile-juz-sheet__close{border:0;background:transparent;font-size:1.4rem;line-height:1;padding:5px}
.mobile-juz-sheet__options{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:12px 14px calc(20px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.mobile-juz-option{min-height:46px;border:1px solid var(--line);border-radius:11px;background:#fff;font-weight:600}
.mobile-juz-option.selected{background:var(--green);border-color:var(--green);color:#fff}
@media(max-width:767.98px){
  #id_current_juz.mobile-juz-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
  .mobile-juz-trigger{display:block}
}

.login-submit{padding:.65rem 2.2rem;min-width:150px}.schedule-export-clone{position:fixed!important;left:-10000px!important;top:0!important;z-index:-1!important;background:var(--ivory);padding:24px}.schedule-export-clone .weekly-schedule-table{min-width:1450px!important;width:1450px!important}.sticky-save{position:sticky;bottom:16px;z-index:10;display:flex;justify-content:flex-end;padding:12px;background:rgba(248,245,239,.92);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:8px}.work-time:disabled{opacity:.45}@media(max-width:767.98px){.login-submit{padding:.55rem 1.8rem;min-width:130px}.sticky-save .btn{width:100%}}
