/* =============================================
   EDUTECHCPT - Blazor Uygulama Stilleri
   ============================================= */

:root {
    --sidebar-bg: #1e1b2e;
    --sidebar-active: #312d52;
    --sidebar-hover: #2a2548;
    --sidebar-text: rgba(255,255,255,0.82);
    --sidebar-sub-hover: #c4b5fd;
    --sidebar-group-title: rgba(255,255,255,0.38);
    --sidebar-divider: rgba(255,255,255,0.18);
    --sidebar-category-bg: rgba(255,255,255,0.025);
    --sidebar-category-hover: rgba(255,255,255,0.055);
    --primary-color: #0E66AE;
    --primary-hover: #02AEC2;
    --accent-color: #02AEC2;
    --body-bg: #f5f7fd;
}

.nav-menu-container {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1;
    background: var(--sidebar-bg);
    color: var(--sidebar-text);
    overflow: hidden;
}

/* /dashboard (edu-dash) paleti: koyu lacivert zemin, mavi/cyan vurgular. */
.nav-menu-container.nav-theme-ink {
    --sidebar-bg: #050d1c;
    --sidebar-active: rgba(25,118,255,0.24);
    --sidebar-hover: rgba(95,187,255,0.12);
    --sidebar-text: #eef4ff;
    --sidebar-sub-hover: #7fd3ff;
    --sidebar-group-title: rgba(158,196,255,0.78);
    --sidebar-divider: rgba(132,191,255,0.16);
    --sidebar-category-bg: rgba(132,191,255,0.04);
    --sidebar-category-hover: rgba(132,191,255,0.10);
    --sidebar-submenu-bg: rgba(3,9,22,0.45);
    /* Zemin .sidebar uzerindeki dashboard gradyanindan gelsin, menu ayri bir blok gibi durmasin. */
    background: transparent;
}

.nav-menu-container.nav-theme-soft {
    --sidebar-bg: #f4f5f8;
    --sidebar-active: #e2e8f0;
    --sidebar-hover: #edf1f7;
    --sidebar-text: rgba(30,36,48,0.82);
    --sidebar-sub-hover: #0f172a;
    --sidebar-group-title: rgba(30,36,48,0.5);
    --sidebar-divider: rgba(30,36,48,0.18);
    --sidebar-category-bg: rgba(15,23,42,0.02);
    --sidebar-category-hover: rgba(15,23,42,0.06);
}

.nav-menu-container.nav-theme-indigo {
    --sidebar-bg: #1e1b2e;
    --sidebar-active: #312d52;
    --sidebar-hover: #2a2548;
    --sidebar-text: rgba(255,255,255,0.82);
    --sidebar-sub-hover: #c4b5fd;
    --sidebar-group-title: rgba(255,255,255,0.38);
    --sidebar-divider: rgba(255,255,255,0.18);
    --sidebar-category-bg: rgba(255,255,255,0.025);
    --sidebar-category-hover: rgba(255,255,255,0.055);
}

html, body {
    font-family: "Source Sans Pro", sans-serif;
    background-color: var(--body-bg);
    height: 100%;
    margin: 0;
    padding: 0;
}

.container-scroller {
    display: flex;
    min-height: 100vh;
}

.page-body-wrapper {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 0;
    min-height: 100vh;
}

/* SIDEBAR */
.sidebar {
    height: 100vh;
    width: 255px;
    background: var(--sidebar-bg);
    color: var(--sidebar-text);
    flex-shrink: 0;
    z-index: 11;
    position: sticky;
    top: 0;
    display: flex;
    flex-direction: column;
    transition: width 0.25s ease;
}

.sidebar .sidebar-brand-wrapper {
    padding: 20px 25px;
    border-bottom: 1px solid var(--sidebar-divider);
}

/* Logo koyu kenar cubugu icin hazir beyaz varyant oldugundan filtreye gerek yok;
   filtre kalsa cok renkli logoyu duz siluete cevirirdi. */
.sidebar .sidebar-brand-wrapper img {
    max-width: 172px;
    height: auto;
    display: block;
}

.sidebar .nav-scrollable {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.15) transparent;
}

.sidebar .nav-scrollable::-webkit-scrollbar {
    width: 4px;
}

.sidebar .nav-scrollable::-webkit-scrollbar-track {
    background: transparent;
}

.sidebar .nav-scrollable::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,0.2);
    border-radius: 2px;
}

.sidebar .nav {
    display: flex;
    flex-direction: column;
    padding: 10px 0;
    margin: 0;
    list-style: none;
}

.sidebar .nav .nav-item {
    position: relative;
}

.sidebar .nav .nav-item .nav-link {
    display: flex;
    align-items: center;
    padding: 12px 25px;
    color: var(--sidebar-text);
    text-decoration: none;
    white-space: nowrap;
    transition: background 0.25s ease;
    cursor: pointer;
}

.sidebar .nav .nav-item .nav-accordion-toggle {
    width: 100%;
    background: transparent;
    border: 0;
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    text-align: left;
}

.sidebar .nav-category {
    margin: 0;
    border-top: 1px solid var(--sidebar-divider);
    border-bottom: 1px solid var(--sidebar-divider);
    background: var(--sidebar-category-bg);
}

.sidebar .nav-category .nav-accordion-toggle {
    padding: 14px 25px;
    min-height: 56px;
    text-transform: capitalize;
    letter-spacing: 0.6px;
}

.sidebar .nav-category .nav-accordion-toggle .menu-icon {
    font-size: 1.05rem;
    margin-right: 12px;
    opacity: 0.95;
}

.sidebar .nav .nav-item .nav-accordion-toggle .menu-title {
    font-size: 0.95rem;
    font-weight: 700;
}

.sidebar .nav-category .nav-accordion-toggle .menu-title {
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.7px;
    color: var(--sidebar-text);
    opacity: 0.95;
}

.sidebar .nav-category .nav-accordion-toggle .menu-arrow {
    color: var(--sidebar-text);
    opacity: 0.8;
}

.sidebar .nav-category .nav-accordion-toggle:hover,
.sidebar .nav-category .nav-accordion-toggle.expanded {
    background: var(--sidebar-category-hover);
}

.sidebar .nav .nav-item .nav-link:hover,
.sidebar .nav .nav-item.active > .nav-link {
    background: var(--sidebar-active);
    color: var(--sidebar-text);
}

.sidebar .nav .nav-item .nav-link .menu-icon {
    font-size: 1.125rem;
    margin-right: 12px;
    color: var(--sidebar-text);
    line-height: 1;
}

.sidebar .nav .nav-item .nav-link .menu-title {
    font-size: calc(0.9rem - 2px);
    font-weight: 600;
    line-height: 1;
    color: var(--sidebar-text);
}

.sidebar .nav .nav-item .nav-link .menu-arrow {
    margin-left: auto;
    transition: transform 0.2s ease;
    font-size: 1rem;
}

.sidebar .nav .nav-item .nav-link.expanded .menu-arrow {
    transform: rotate(90deg);
}

.sidebar .sub-menu {
    list-style: none;
    padding: 5px 0 10px 2ch;
    background: var(--sidebar-submenu-bg, rgba(0,0,0,0.15));
    margin: 0;
}

.sidebar .sub-menu .nav-item {
    position: relative;
    padding: 0;
}

.sidebar .sub-menu .nav-item::before {
    content: "";
    width: 5px;
    height: 5px;
    position: absolute;
    left: -14px;
    top: 50%;
    transform: translateY(-50%);
    border-radius: 50%;
    background: var(--sidebar-text);
}

    /* COMPACT WORKSPACE UTILITIES */
    .compact-workspace-page {
        min-height: calc(100vh - 6.5rem);
        min-height: calc(100dvh - 6.5rem);
    }

    .compact-toolbar {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        align-items: center;
        gap: 0.5rem 1rem;
    }

    .compact-toolbar > * {
        min-width: 0;
    }

    .compact-toolbar-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.5rem;
    }

    .compact-workspace-page .alert {
        margin-bottom: 0.75rem;
        padding-top: 0.6rem;
        padding-bottom: 0.6rem;
    }

    .compact-workspace-page .card-header,
    .compact-workspace-page .card-body,
    .compact-workspace-page .card-footer {
        --compact-card-padding-y: 0.75rem;
    }

    .compact-workspace-page .card-header {
        padding-top: var(--compact-card-padding-y);
        padding-bottom: calc(var(--compact-card-padding-y) - 0.2rem);
    }

    .compact-workspace-page .card-body {
        padding-top: var(--compact-card-padding-y);
        padding-bottom: var(--compact-card-padding-y);
    }

    .compact-workspace-page .card-footer {
        padding-top: calc(var(--compact-card-padding-y) - 0.1rem);
        padding-bottom: calc(var(--compact-card-padding-y) - 0.1rem);
    }

    .compact-workspace-page .row {
        --bs-gutter-y: 0.75rem;
    }

    .compact-workspace-page .table-responsive,
    .compact-workspace-page .viewport-scroll-region,
    .compact-workspace-page .report-table-card.table-responsive,
    .compact-workspace-page .list-group.compact-scroll {
        max-height: calc(100vh - 15rem);
        max-height: calc(100dvh - 15rem);
        overflow: auto;
        min-height: 0;
    }

    .compact-workspace-page .d-flex.justify-content-between.align-items-center.flex-wrap,
    .compact-workspace-page .d-flex.justify-content-between.align-items-start.flex-wrap {
        gap: 0.5rem 1rem;
    }

    .compact-workspace-page .d-flex.flex-wrap {
        align-items: center;
    }

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

    /* AI model yönetimi: grid üstü alanı dikeyde daralt */
    .ai-model-notes > summary {
        cursor: pointer;
        list-style: none;
        display: inline-flex;
        align-items: center;
        gap: 0.35rem;
        font-weight: 600;
    }

    .ai-model-notes > summary::-webkit-details-marker {
        display: none;
    }

    .ai-model-notes > summary::before {
        content: "▸";
        font-size: 0.75em;
        line-height: 1;
    }

    .ai-model-notes[open] > summary::before {
        content: "▾";
    }

    /* Sağlayıcı özet kartlarının yoğunluğu AiModelManagement.razor içindeki stil bloğunda tanımlı. */

    /* YOĞUN LİSTE TABLOSU
       Ekrana daha çok satır sığsın diye yazıyı ve satır yüksekliğini küçültür.
       Bootstrap'in .table > :not(caption) > * > * kuralını ezmek için .table ile birlikte yazıldı. */
    .compact-data-table {
        font-size: 0.72rem;
        line-height: 1.2;
    }

    .table.compact-data-table > :not(caption) > * > * {
        padding: 0.2rem 0.4rem;
        vertical-align: middle;
    }

        .compact-data-table .small,
        .compact-data-table small {
            font-size: 0.68rem;
        }

        .compact-data-table .badge {
            font-size: 0.62rem;
            padding: 0.12rem 0.3rem;
        }

        .compact-data-table .btn-sm {
            padding: 0.1rem 0.35rem;
            font-size: 0.7rem;
            line-height: 1.25;
        }

        .compact-data-table .form-select-sm,
        .compact-data-table .form-control-sm {
            font-size: 0.7rem;
            padding-top: 0.1rem;
            padding-bottom: 0.1rem;
        }

        .compact-data-table .form-check-input {
            margin-top: 0;
        }

        /* Satır içi buton öbekleri aralarındaki boşlukla satırı uzatmasın. */
        .compact-data-table .gap-2 {
            gap: 0.25rem !important;
        }

    .compact-data-table code {
        font-size: inherit;
    }

    /* STANDART LİSTE SATIRI
       Yönetim listelerinde satır yüksekliğini /admin/questions sayfasıyla aynı tutar:
       Bootstrap varsayılan hücre dolgusu (0.5rem) + 0.88rem yazı boyutu.
       Bootstrap'in .table > :not(caption) > * > * kuralını ezmek için .table ile birlikte yazıldı. */
    .standard-row-table {
        font-size: 0.88rem;
    }

    .table.standard-row-table > :not(caption) > * > * {
        padding: 0.5rem 0.5rem;
        vertical-align: middle;
    }

        .standard-row-table .badge {
            font-size: 0.7rem;
        }

    /* BELİRGİN SATIR AYRACI
       Çok satırlı hücrelerde kayıtlar birbirine karışmasın diye kalın alt çizgi ve çizginin
       hemen üstünde hafif bir gölge. Gölge box-shadow yerine degrade ile veriliyor; Bootstrap
       hover/şerit vurgusunu hücrede inset box-shadow ile çizdiği için onu ezmemek gerekiyor. */
    .row-separated-table > tbody > tr > td {
        border-bottom: 2px solid rgba(23, 32, 42, 0.2);
        background-image: linear-gradient(to top, rgba(23, 32, 42, 0.06), rgba(23, 32, 42, 0) 6px);
        background-repeat: no-repeat;
    }

        .row-separated-table > tbody > tr:last-child > td {
            border-bottom-width: 1px;
            background-image: none;
        }

    .compact-workspace-page .table-responsive:has(.ai-model-table) {
        max-height: calc(100vh - 11rem);
        max-height: calc(100dvh - 11rem);
    }

    @media (max-width: 991.98px) {
        .compact-workspace-page .table-responsive,
        .compact-workspace-page .viewport-scroll-region,
        .compact-workspace-page .report-table-card.table-responsive,
        .compact-workspace-page .list-group.compact-scroll {
            max-height: calc(100vh - 18rem);
            max-height: calc(100dvh - 18rem);
        }
    }

.sidebar .sub-menu .nav-item .nav-link {
    padding: 8px 15px;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--sidebar-text);
}

.sidebar .sub-menu .nav-item .nav-link:hover {
    color: var(--sidebar-sub-hover);
    background: transparent;
}

.sidebar .category-submenu .nav-group-title {
    padding: 0;
}

.sidebar .category-submenu .nav-group-title::before {
    display: none;
}

.sidebar .category-submenu .nav-group-title .group-label {
    padding: 10px 0 4px;
}

/* NAV GROUP TITLE */
.sidebar .nav-group-title {
    padding: 0;
    margin-top: 6px;
}

.sidebar .nav-group-title .group-label {
    display: block;
    padding: 10px 25px 4px;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.7px;
    text-transform: capitalize;
    color: var(--sidebar-group-title, rgba(255,255,255,0.34));
    pointer-events: none;
    white-space: nowrap;
}

.sidebar .nav-section {
    padding: 0;
    margin: 4px 0 0;
}

.sidebar .nav-section .section-label {
    display: block;
    padding: 8px 25px 4px;
    font-size: calc(0.68rem - 2px);
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--sidebar-group-title, rgba(255,255,255,0.34));
    pointer-events: none;
    white-space: nowrap;
}

.sidebar .logout-section {
    flex-shrink: 0;
    margin: auto 14px 14px;
    padding: 0;
    position: sticky;
    bottom: 14px;
    z-index: 2;
}

.sidebar .logout-section .logout-link {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 0;
    padding: 12px 14px;
    border: 1px solid rgba(255, 130, 130, 0.26);
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(255, 120, 120, 0.10), rgba(255, 120, 120, 0.04));
    color: rgba(255, 228, 228, 0.92);
    text-decoration: none;
    cursor: pointer;
    transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
    box-shadow: 0 10px 24px rgba(0,0,0,0.16);
}

.sidebar .logout-section .logout-link:hover {
    background: linear-gradient(180deg, rgba(255, 120, 120, 0.18), rgba(255, 120, 120, 0.08));
    border-color: rgba(255, 150, 150, 0.42);
    transform: translateY(-1px);
}

.sidebar .logout-section .logout-link .menu-icon {
    font-size: 1.125rem;
    margin-right: 12px;
    color: rgba(255, 200, 200, 0.95);
    line-height: 1;
}

.sidebar .logout-section .logout-link .menu-title {
    font-size: calc(0.9rem - 2px);
    font-weight: 700;
    line-height: 1;
    color: rgba(255, 236, 236, 0.96);
}

.sidebar .user-name-item .nav-link {
    padding: 15px 25px;
    border-bottom: 1px solid rgba(255,255,255,0.15);
    font-size: 0.875rem;
    cursor: default;
}

.sidebar .user-name-item .nav-link:hover {
    background: transparent;
}

/* MAIN PANEL */
.main-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: var(--body-bg);
}

.main-content {
    flex: 1;
    padding: 25px;
}

/* TOP NAVBAR */
.top-navbar {
    background: #ffffff;
    border-bottom: 1px solid #e8eaf6;
    padding: 12px 25px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    box-shadow: 0 2px 4px rgba(0,0,0,.06);
}

.top-navbar .page-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--sidebar-bg);
    margin: 0;
}

.top-navbar .top-navbar-user-panel {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.top-navbar .school-info {
    display: inline-flex;
    align-items: center;
    max-width: 320px;
    padding: 0.35rem 0.7rem;
    border: 1px solid #d7def8;
    border-radius: 999px;
    background: #f5f8ff;
    color: #3551a3;
    font-size: 0.8rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.top-navbar .user-info {
    display: inline-flex;
    align-items: center;
    font-size: 0.875rem;
    color: #555;
    white-space: nowrap;
}

/* =====================================================================
   LOGIN — ortalanmis cam kart
   Palet ve tipografi /management/student-test-results ekraniyla birebir;
   token'lar css/str-theme.css ile ayni degerlerdedir.
   Bu bloktaki .login-* siniflarini yalnizca Pages/Index.razor kullanir.
   ===================================================================== */
.login-wrapper {
    --lg-bg: #030914;
    --lg-bg2: #071326;
    --lg-text: #eff7ff;
    --lg-muted: #9eb3c9;
    --lg-cyan: #0bc6d8;
    --lg-cyan2: #66edf5;
    --lg-blue: #2f66ff;
    --lg-line: rgba(170, 205, 255, 0.15);
    --lg-line-strong: rgba(170, 205, 255, 0.28);
    --lg-input-bg: #091a31;

    position: relative;
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 40px 20px;
    overflow: hidden;
    font-family: Inter, "Segoe UI", Arial, sans-serif;
    color: var(--lg-text);
    line-height: 1.5;
    background: linear-gradient(160deg, var(--lg-bg2), var(--lg-bg) 72%);
}

/* Bulanik isik kureleri — yavas suzulur */
.login-orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    pointer-events: none;
}

.login-orb.o1 {
    width: 460px;
    height: 460px;
    top: -160px;
    right: -110px;
    background: rgba(47, 102, 255, 0.3);
    animation: login-orb-a 22s ease-in-out infinite alternate;
}

.login-orb.o2 {
    width: 380px;
    height: 380px;
    bottom: -150px;
    left: -110px;
    background: rgba(11, 198, 216, 0.22);
    animation: login-orb-b 26s ease-in-out infinite alternate;
}

.login-orb.o3 {
    width: 300px;
    height: 300px;
    top: 42%;
    left: 46%;
    background: rgba(118, 87, 255, 0.16);
    animation: login-orb-c 30s ease-in-out infinite alternate;
}

@keyframes login-orb-a { to { transform: translate3d(-40px, 46px, 0) scale(1.08); } }
@keyframes login-orb-b { to { transform: translate3d(52px, -38px, 0) scale(1.1); } }
@keyframes login-orb-c { to { transform: translate3d(-34px, -30px, 0) scale(0.92); } }

@media (prefers-reduced-motion: reduce) {
    .login-orb { animation: none !important; }
}

.login-box {
    position: relative;
    width: min(430px, 100%);
    max-width: 100%;
    padding: 40px 36px 34px;
    border-radius: 26px;
    border: 1px solid var(--lg-line-strong);
    background: linear-gradient(155deg, rgba(16, 33, 59, 0.82), rgba(7, 20, 40, 0.86));
    backdrop-filter: blur(22px);
    box-shadow: 0 28px 80px rgba(0, 0, 0, 0.35);
}

/* Ust kenarda ince isik cizgisi */
.login-box:before {
    content: "";
    position: absolute;
    left: 22%;
    right: 22%;
    top: -1px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--lg-cyan2), transparent);
}

.login-box .logo-wrapper {
    position: relative;
    margin: 0 auto 22px;
    display: flex;
    justify-content: center;
}

/* Logoyu cam zemine oturtan yumusak isik halesi */
.login-box .logo-wrapper:before {
    content: "";
    position: absolute;
    width: 230px;
    height: 130px;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    background: radial-gradient(ellipse, rgba(11, 198, 216, 0.18), transparent 68%);
    pointer-events: none;
}

.login-box .logo-wrapper img {
    position: relative;
    width: 215px;
    max-width: 80%;
    height: auto;
    display: block;
}

.login-title {
    margin: 0 0 5px;
    font-size: 22px;
    font-weight: 800;
    text-align: center;
    color: var(--lg-text);
}

.login-subtitle {
    margin: 0 0 26px;
    color: var(--lg-muted);
    font-size: 13px;
    text-align: center;
}

.login-field {
    margin-bottom: 14px;
}

.login-label {
    display: block;
    margin-bottom: 6px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--lg-muted);
}

.login-input-wrap {
    position: relative;
    display: flex;
    align-items: center;
}

.login-input-wrap > .login-input-icon {
    position: absolute;
    left: 14px;
    font-size: 18px;
    color: #6d84a0;
    pointer-events: none;
    transition: color 0.2s;
}

.login-box .form-control {
    width: 100%;
    padding: 13px 15px 13px 42px;
    border-radius: 14px;
    border: 1px solid var(--lg-line);
    background: var(--lg-input-bg);
    color: var(--lg-text);
    font: inherit;
    font-size: 14px;
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
}

.login-box .form-control::placeholder {
    color: #5f7794;
    opacity: 1;
}

.login-box .form-control:focus {
    border-color: rgba(102, 237, 245, 0.5);
    box-shadow: 0 0 0 4px rgba(11, 198, 216, 0.13);
    background: #0b2039;
    outline: none;
}

.login-input-wrap:focus-within > .login-input-icon {
    color: var(--lg-cyan2);
}

.login-box .form-control.has-reveal {
    padding-right: 46px;
}

/* Tarayici otomatik doldurmasinda beyaz zemin donmesini engeller */
.login-box .form-control:-webkit-autofill,
.login-box .form-control:-webkit-autofill:hover,
.login-box .form-control:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--lg-text);
    -webkit-box-shadow: 0 0 0 1000px var(--lg-input-bg) inset;
    caret-color: var(--lg-text);
    transition: background-color 9999s ease-in-out 0s;
}

.login-reveal {
    position: absolute;
    right: 8px;
    border: 0;
    background: transparent;
    color: #6d84a0;
    cursor: pointer;
    padding: 8px 9px;
    border-radius: 10px;
    font-size: 17px;
    line-height: 1;
    transition: color 0.2s, background-color 0.2s;
}

.login-reveal:hover {
    color: var(--lg-cyan2);
    background: rgba(255, 255, 255, 0.05);
}

.login-reveal:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.btn-login {
    width: 100%;
    margin-top: 6px;
    padding: 14px 18px;
    border: 0;
    border-radius: 14px;
    font: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.02em;
    color: #fff;
    cursor: pointer;
    background: linear-gradient(135deg, var(--lg-cyan), var(--lg-blue));
    box-shadow: 0 14px 32px rgba(47, 102, 255, 0.3);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    transition: transform 0.18s, box-shadow 0.18s, filter 0.18s;
}

.btn-login:hover {
    transform: translateY(-1px);
    box-shadow: 0 18px 40px rgba(47, 102, 255, 0.38);
    filter: brightness(1.06);
}

.btn-login:active {
    transform: translateY(0);
}

.btn-login:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.login-spinner {
    display: inline-block;
    width: 15px;
    height: 15px;
    border: 2px solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 999px;
    animation: login-spin 0.75s linear infinite;
}

@keyframes login-spin {
    to { transform: rotate(360deg); }
}

.login-error {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 14px;
    padding: 11px 13px;
    border-radius: 13px;
    font-size: 12.5px;
    font-weight: 600;
    color: #ff8798;
    background: rgba(255, 102, 125, 0.12);
    border: 1px solid rgba(255, 102, 125, 0.25);
}

.login-back {
    margin-top: 18px;
    text-align: center;
    font-size: 12.5px;
}

.login-back a {
    color: var(--lg-cyan2);
    text-decoration: none;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.login-back a:hover {
    color: #a5f6fb;
    text-decoration: underline;
}

.login-badges {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--lg-line);
}

.login-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 800;
    color: #80eef7;
    background: rgba(11, 198, 216, 0.1);
    border: 1px solid rgba(11, 198, 216, 0.22);
}

@media (max-width: 480px) {
    .login-box {
        padding: 32px 24px 28px;
        border-radius: 22px;
    }
}

/* CARDS */
.card {
    border-radius: 6px;
    border: none;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    margin-bottom: 20px;
}

.card .card-body {
    padding: 20px;
}

.card .card-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sidebar-bg);
    margin-bottom: 15px;
}

/* TABLES */
.table thead th {
    background-color: var(--sidebar-bg);
    color: #fff;
    font-weight: 600;
    border: none;
}

.table tbody tr:hover {
    background-color: rgba(34,62,156,0.06);
}

/* BUTTONS */
.btn-primary-custom {
    background-color: var(--primary-color);
    color: #fff;
    border: none;
    padding: 8px 20px;
    border-radius: 4px;
    font-weight: 600;
    transition: background 0.2s;
}

.btn-primary-custom:hover {
    background-color: var(--primary-hover);
    color: #fff;
}

/* ERROR UI */
#blazor-error-ui {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0,0,0,0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

/* LOADING */
.loading-overlay {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
}

.spinner-edutechcpt {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(34,62,156,0.2);
    border-top-color: var(--sidebar-bg);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

@media (max-width: 991px) {
    .sidebar {
        width: 100%;
        min-height: auto;
    }
}
