:root {
    --app-primary: #198754;
    --app-primary-dark: #146c43;
    --app-primary-darker: #0f5132;
    --app-primary-light: #d1e7dd;
    --app-sidebar: #14532d;
    --app-sidebar-hover: #198754;
    --bs-primary: #198754;
    --bs-primary-rgb: 25, 135, 84;
    --bs-link-color: #198754;
    --bs-link-hover-color: #146c43;
}

body {
    font-size: .95rem;
    min-height: 100vh;
}

a {
    color: var(--app-primary);
}

a:hover {
    color: var(--app-primary-dark);
}

.bg-primary {
    background-color: var(--app-primary) !important;
}

.text-primary {
    color: var(--app-primary) !important;
}

.border-primary {
    border-color: var(--app-primary) !important;
}

.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--app-primary);
    --bs-btn-border-color: var(--app-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--app-primary-dark);
    --bs-btn-hover-border-color: var(--app-primary-dark);
    --bs-btn-focus-shadow-rgb: 25, 135, 84;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--app-primary-darker);
    --bs-btn-active-border-color: var(--app-primary-darker);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--app-primary);
    --bs-btn-disabled-border-color: var(--app-primary);
}

.btn-outline-primary {
    --bs-btn-color: var(--app-primary);
    --bs-btn-border-color: var(--app-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--app-primary);
    --bs-btn-hover-border-color: var(--app-primary);
    --bs-btn-focus-shadow-rgb: 25, 135, 84;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--app-primary-dark);
    --bs-btn-active-border-color: var(--app-primary-dark);
    --bs-btn-disabled-color: var(--app-primary);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--app-primary);
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: #75b798;
    box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .2);
}

.form-check-input:checked {
    background-color: var(--app-primary);
    border-color: var(--app-primary);
}

.navbar.bg-primary {
    background: linear-gradient(135deg, var(--app-sidebar), var(--app-primary)) !important;
}

.navbar-brand {
    font-weight: 700;
    letter-spacing: .01em;
}

aside.bg-dark {
    background-color: var(--app-sidebar) !important;
}

aside .list-group-item {
    border: 0;
    border-radius: 0;
    background-color: transparent;
    color: rgba(255, 255, 255, .88);
    padding: .85rem 1rem;
}

aside .list-group-item:hover,
aside .list-group-item:focus {
    background-color: var(--app-sidebar-hover);
    color: #fff;
}

aside .list-group-item.active {
    background-color: var(--app-primary);
    border-color: var(--app-primary);
    color: #fff;
}

.card {
    border: 0;
    border-radius: .8rem;
}

.card-header {
    font-weight: 700;
}

.table th {
    white-space: nowrap;
}

.table-dark {
    --bs-table-bg: var(--app-primary-darker);
    --bs-table-striped-bg: #174d36;
    --bs-table-hover-bg: #1b5a3f;
    --bs-table-border-color: #376b52;
}

.badge.bg-primary {
    background-color: var(--app-primary) !important;
}

.page-link {
    color: var(--app-primary);
}

.page-link:hover {
    color: var(--app-primary-dark);
}

.active > .page-link,
.page-link.active {
    background-color: var(--app-primary);
    border-color: var(--app-primary);
}

.btn {
    border-radius: .45rem;
}

.footer a:hover {
    color: var(--app-primary-dark) !important;
}

@media (max-width: 991.98px) {
    aside.bg-dark {
        min-height: auto !important;
    }
}

/* Version 2.5.1 responsive layout */
html {
    overflow-x: hidden;
}

body {
    overflow-x: hidden;
}

.min-width-0 {
    min-width: 0;
}

.app-navbar {
    z-index: 1040;
}

.app-menu-toggle {
    width: 2.65rem;
    height: 2.4rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}

.app-sidebar {
    background-color: var(--app-sidebar);
    min-height: calc(100vh - 56px);
    position: sticky;
    top: 56px;
    align-self: flex-start;
    max-height: calc(100vh - 56px);
    overflow-y: auto;
}

.app-offcanvas {
    --bs-offcanvas-width: min(86vw, 320px);
    background-color: var(--app-sidebar);
}

.app-menu .list-group-item {
    min-height: 3rem;
    display: flex;
    align-items: center;
}

.app-main {
    min-width: 0;
}

.table-responsive {
    -webkit-overflow-scrolling: touch;
}

.table {
    vertical-align: middle;
}

.table td,
.table th {
    padding: .75rem;
}

.card-body {
    min-width: 0;
}

.form-control,
.form-select,
.btn {
    min-height: 2.75rem;
}

.btn-sm {
    min-height: 2.15rem;
}

textarea.form-control {
    min-height: 7rem;
}

.modal-dialog {
    margin: .75rem;
}

.footer {
    margin-top: auto !important;
}

@media (max-width: 767.98px) {
    body {
        font-size: .94rem;
    }

    .app-main {
        padding: 1rem !important;
    }

    h1,
    .h1 {
        font-size: 1.65rem;
    }

    h2,
    .h2 {
        font-size: 1.4rem;
    }

    h3,
    .h3 {
        font-size: 1.2rem;
    }

    .d-flex.justify-content-between.align-items-center.mb-4,
    .d-flex.justify-content-between.mb-3 {
        align-items: stretch !important;
        flex-direction: column;
        gap: .75rem;
    }

    .d-flex.justify-content-between.align-items-center.mb-4 > .btn,
    .d-flex.justify-content-between.mb-3 > .btn,
    .d-flex.justify-content-between.align-items-center.mb-4 > a,
    .d-flex.justify-content-between.mb-3 > a {
        width: 100%;
    }

    .btn-group {
        display: flex;
        flex-wrap: wrap;
        gap: .35rem;
    }

    .btn-group > .btn {
        border-radius: .45rem !important;
        flex: 1 1 auto;
    }

    .card {
        border-radius: .65rem;
    }

    .card-body {
        padding: 1rem;
    }

    .table td,
    .table th {
        padding: .65rem;
    }

    .footer .container-fluid {
        padding-left: 1rem !important;
        padding-right: 1rem !important;
    }

    .modal-dialog {
        margin: .5rem;
    }

    .modal-content {
        border-radius: .75rem;
    }
}

@media (max-width: 575.98px) {
    .navbar-brand {
        max-width: 52vw;
        font-size: 1rem;
    }

    .alert {
        padding: .8rem;
    }

    .card-header,
    .card-footer {
        padding: .8rem 1rem;
    }

    input[type="date"],
    input[type="time"],
    input[type="datetime-local"] {
        min-width: 0;
    }
}


/* Version 2.5.3 error pages */
.error-card { max-width: 46rem; margin-inline: auto; }
.error-card .display-1 { line-height: 1; }

/* Version 2.5.6 information architecture */
.app-user-panel { display:flex; align-items:center; gap:.75rem; padding:1rem; border-bottom:1px solid rgba(255,255,255,.12); }
.app-avatar { width:2.5rem; height:2.5rem; border-radius:50%; display:grid; place-items:center; flex:0 0 auto; color:#14532d; background:#fff; font-weight:800; }
.app-menu-section + .app-menu-section { margin-top:.65rem; }
.app-menu-heading { padding:.45rem 1rem .3rem; color:rgba(255,255,255,.55); font-size:.7rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.app-menu .list-group-item { border:0; border-left:3px solid transparent; border-radius:0; background:transparent; color:rgba(255,255,255,.86); padding:.72rem 1rem; display:flex; align-items:center; }
.app-menu .list-group-item:hover { background:rgba(255,255,255,.08); color:#fff; }
.app-menu .list-group-item.active { background:rgba(255,255,255,.13); border-left-color:#fff; color:#fff; font-weight:700; }
.app-breadcrumb { font-size:.84rem; }
.app-breadcrumb .breadcrumb-item a { text-decoration:none; }
.app-page-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; }
.app-stat-card { border:1px solid rgba(20,83,45,.08); }
.app-stat-icon { width:3rem; height:3rem; display:grid; place-items:center; border-radius:.75rem; background:var(--app-primary-light); color:var(--app-primary-darker); font-size:1.15rem; flex:0 0 auto; }
.card-header.bg-white { border-bottom:1px solid rgba(0,0,0,.07); }
@media (max-width:575.98px) { .app-page-heading { display:block; } .app-stat-card .card-body { padding:.9rem; gap:.65rem !important; } .app-stat-icon { width:2.4rem; height:2.4rem; } }
.assignment-card { cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease; } .assignment-card:has(.form-check-input:checked) { border-color: var(--app-primary); box-shadow: 0 0 0 .15rem rgba(25,135,84,.12); }

/* Version 2.6.1 dark mode */
html[data-bs-theme="dark"] {
    color-scheme: dark;
    --app-primary-light: #173c2a;
    --bs-body-bg: #111827;
    --bs-body-color: #e5e7eb;
    --bs-secondary-bg: #1f2937;
    --bs-tertiary-bg: #263244;
    --bs-border-color: #374151;
    --bs-emphasis-color: #f9fafb;
    --bs-secondary-color: rgba(229, 231, 235, .72);
    --bs-link-color: #65d69a;
    --bs-link-hover-color: #8ae5b1;
}

html[data-bs-theme="dark"] body.bg-light,
html[data-bs-theme="dark"] .bg-light {
    background-color: var(--bs-body-bg) !important;
}

html[data-bs-theme="dark"] .card,
html[data-bs-theme="dark"] .modal-content,
html[data-bs-theme="dark"] .dropdown-menu {
    background-color: #1f2937;
    border-color: #374151;
    color: var(--bs-body-color);
}

html[data-bs-theme="dark"] .card-header.bg-white,
html[data-bs-theme="dark"] .card-footer,
html[data-bs-theme="dark"] .modal-header,
html[data-bs-theme="dark"] .modal-footer {
    background-color: #1b2533 !important;
    border-color: #374151;
}

html[data-bs-theme="dark"] .table {
    --bs-table-color: #e5e7eb;
    --bs-table-bg: #1f2937;
    --bs-table-border-color: #374151;
    --bs-table-striped-bg: #253142;
    --bs-table-striped-color: #f3f4f6;
    --bs-table-hover-bg: #2a384b;
    --bs-table-hover-color: #fff;
}

html[data-bs-theme="dark"] .table-light {
    --bs-table-bg: #263244;
    --bs-table-color: #f3f4f6;
    --bs-table-border-color: #3b495c;
}

html[data-bs-theme="dark"] .form-control,
html[data-bs-theme="dark"] .form-select,
html[data-bs-theme="dark"] .input-group-text {
    background-color: #111827;
    border-color: #4b5563;
    color: #f3f4f6;
}

html[data-bs-theme="dark"] .form-control::placeholder {
    color: #9ca3af;
}

html[data-bs-theme="dark"] .form-control:disabled,
html[data-bs-theme="dark"] .form-select:disabled {
    background-color: #273244;
    color: #9ca3af;
}

html[data-bs-theme="dark"] .text-muted {
    color: #aeb8c6 !important;
}

html[data-bs-theme="dark"] .breadcrumb-item.active,
html[data-bs-theme="dark"] .form-text {
    color: #9ca3af;
}

html[data-bs-theme="dark"] .list-group-item:not(.app-menu .list-group-item) {
    background-color: #1f2937;
    border-color: #374151;
    color: #e5e7eb;
}

html[data-bs-theme="dark"] .alert-info {
    --bs-alert-bg: #15364a;
    --bs-alert-border-color: #245875;
    --bs-alert-color: #c8ebff;
}

html[data-bs-theme="dark"] .alert-warning {
    --bs-alert-bg: #443817;
    --bs-alert-border-color: #6d5920;
    --bs-alert-color: #ffe9a6;
}

html[data-bs-theme="dark"] .footer {
    background-color: #111827 !important;
    border-color: #374151 !important;
}

.app-theme-toggle {
    white-space: nowrap;
}

.app-login-theme-toggle {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 10;
    width: 2.75rem;
    padding-inline: 0;
}

@media (prefers-reduced-motion: no-preference) {
    body, .card, .form-control, .form-select, .table, .footer {
        transition: background-color .18s ease, color .18s ease, border-color .18s ease;
    }
}


/* Version 2.7.3 responsive fixed navigation */
:root {
    --app-navbar-height: 58px;
}

.app-shell {
    padding-top: var(--app-navbar-height);
}

.app-navbar {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    width: 100%;
    min-height: var(--app-navbar-height);
    z-index: 1080;
    background: linear-gradient(135deg, var(--app-sidebar), var(--app-primary)) !important;
}

.app-navbar .container-fluid {
    min-height: var(--app-navbar-height);
    gap: .35rem;
}

.app-navbar .navbar-brand {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-sidebar {
    top: var(--app-navbar-height);
    min-height: calc(100vh - var(--app-navbar-height));
    max-height: calc(100vh - var(--app-navbar-height));
    overscroll-behavior: contain;
    scrollbar-width: thin;
}

.app-offcanvas {
    top: var(--app-navbar-height);
    height: calc(100vh - var(--app-navbar-height));
    z-index: 1075;
}

.app-offcanvas .offcanvas-body {
    overflow-y: auto;
    overscroll-behavior: contain;
}

.app-main {
    scroll-margin-top: calc(var(--app-navbar-height) + 1rem);
}

html {
    scroll-padding-top: calc(var(--app-navbar-height) + 1rem);
}

@media (max-width: 991.98px) {
    .app-navbar {
        box-shadow: 0 .25rem .8rem rgba(0, 0, 0, .16) !important;
    }

    .app-navbar .navbar-brand {
        flex: 1 1 auto;
    }

    .app-menu-toggle,
    .app-theme-toggle {
        flex: 0 0 auto;
    }

    .app-main {
        width: 100%;
    }
}

@media (max-width: 575.98px) {
    :root {
        --app-navbar-height: 56px;
    }

    .app-navbar .container-fluid {
        padding-left: .6rem;
        padding-right: .6rem;
    }

    .app-menu-toggle {
        width: 2.45rem;
        min-width: 2.45rem;
        height: 2.35rem;
        padding: 0;
    }

    .app-theme-toggle {
        width: 2.45rem;
        min-width: 2.45rem;
        padding-left: 0;
        padding-right: 0;
    }

    .app-navbar .navbar-brand {
        max-width: none;
        margin-right: .25rem;
    }
}

/* Completed-clean photo gallery */
.clean-photo-thumb {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    background: var(--bs-tertiary-bg);
}

/* Version 2.8.9 breadcrumb and navigation alignment */
.app-page-context {
    min-height: 72px;
    display: flex;
    align-items: center;
    margin-bottom: 1rem;
    border-bottom: 1px solid rgba(20, 83, 45, .09);
}
.app-breadcrumb {
    margin: 0;
    line-height: 1.25;
}
.app-breadcrumb .breadcrumb {
    align-items: center;
}
.app-sidebar .app-user-panel {
    min-height: 72px;
}
html[data-bs-theme="dark"] .app-page-context {
    border-bottom-color: #374151;
}
@media (max-width: 991.98px) {
    .app-page-context {
        min-height: 44px;
        margin-bottom: .85rem;
    }
}

/* Version 2.9.0 calendar */
.app-calendar-weekdays,.app-calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));}
.app-calendar-weekdays>div{padding:.65rem;text-align:center;font-weight:700;background:var(--bs-tertiary-bg);border-bottom:1px solid var(--bs-border-color);}
.app-calendar-day{min-height:125px;padding:.45rem;border-right:1px solid var(--bs-border-color);border-bottom:1px solid var(--bs-border-color);background:var(--bs-body-bg);overflow:hidden;}
.app-calendar-day:nth-child(7n){border-right:0}.app-calendar-day.is-muted{opacity:.55}.app-calendar-date{font-weight:700;margin-bottom:.35rem}.app-calendar-event{display:flex;flex-direction:column;padding:.3rem .4rem;margin-bottom:.3rem;border-radius:.35rem;background:var(--bs-tertiary-bg);color:var(--bs-body-color);text-decoration:none;font-size:.82rem;line-height:1.2}.app-calendar-event:hover{background:var(--bs-secondary-bg);color:var(--bs-body-color)}
@media(max-width:767.98px){.app-calendar-weekdays{display:none}.app-calendar-days{display:block}.app-calendar-day{min-height:auto;border-right:0;padding:.7rem}.app-calendar-day.is-muted{display:none}.app-calendar-date{font-size:1rem}.app-calendar-event{font-size:.9rem;padding:.5rem}}
