:root {
    --app-bg: #f3f6fb;
    --app-surface: #ffffff;
    --app-surface-soft: #f7f9fc;
    --app-surface-muted: #eef3f9;
    --app-border: #dce4ef;
    --app-border-strong: #c8d4e3;
    --app-text: #172033;
    --app-muted: #66758b;
    --app-primary: #2d57ad;
    --app-primary-dark: #21458f;
    --app-primary-soft: #eaf0ff;
    --app-accent: #0f766e;
    --app-accent-soft: #e5f6f3;
    --app-success: #16803d;
    --app-success-soft: #eaf7ee;
    --app-warning: #b75d08;
    --app-warning-soft: #fff4df;
    --app-danger: #c9303e;
    --app-danger-soft: #fff0f1;
    --app-info: #176b87;
    --app-info-soft: #e9f7fb;
    --app-sidebar-start: #101c38;
    --app-sidebar-end: #1e3d70;
    --app-navbar-height: 64px;
    --app-sidebar-width: 264px;
    --app-radius-sm: 10px;
    --app-radius: 16px;
    --app-radius-lg: 22px;
    --app-shadow: 0 8px 28px rgba(30, 45, 75, .07);
    --app-shadow-hover: 0 16px 38px rgba(30, 45, 75, .12);
    --bs-primary: var(--app-primary);
    --bs-primary-rgb: 45, 87, 173;
    --bs-success: var(--app-success);
    --bs-success-rgb: 22, 128, 61;
    --bs-warning: var(--app-warning);
    --bs-warning-rgb: 183, 93, 8;
    --bs-danger: var(--app-danger);
    --bs-danger-rgb: 201, 48, 62;
    --bs-info: var(--app-info);
    --bs-info-rgb: 23, 107, 135;
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    color: var(--app-text);
    background:
        radial-gradient(circle at 92% -8%, rgba(45, 87, 173, .09), transparent 31rem),
        var(--app-bg);
    font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
}

a {
    text-underline-offset: .18em;
}

.skip-link {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: 2000;
    padding: .65rem 1rem;
    border-radius: var(--app-radius-sm);
    color: #fff;
    background: var(--app-primary-dark);
    box-shadow: var(--app-shadow-hover);
    transform: translateY(-180%);
    transition: transform .15s ease;
}

.skip-link:focus {
    color: #fff;
    transform: translateY(0);
}

.app-navbar {
    position: sticky;
    top: 0;
    z-index: 1030;
    min-height: var(--app-navbar-height);
    padding-block: .55rem;
    background: linear-gradient(105deg, #0c172f 0%, #162a50 58%, #193966 100%) !important;
    box-shadow: 0 5px 22px rgba(12, 23, 47, .19);
}

.app-navbar .container-fluid {
    padding-inline: clamp(.8rem, 2vw, 1.5rem);
}

.navbar-brand {
    display: inline-flex;
    align-items: center;
    font-size: 1.04rem;
    font-weight: 750;
    letter-spacing: .01em;
}

.navbar-brand i {
    color: #9dc1ff;
}

.app-brand-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.app-brand-logo.has-custom {
    width: 138px;
    height: 42px;
    padding: 4px 8px;
    border-radius: 10px;
    background: #fff;
}

.app-brand-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.app-brand-default {
    display: inline-flex;
    align-items: center;
    color: #fff;
}

.app-menu-toggle,
.app-account-toggle {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 12px;
    color: #fff;
    background: rgba(255, 255, 255, .08);
    font-size: 1.3rem;
}

.app-menu-toggle:hover,
.app-account-toggle:hover,
.app-menu-toggle:focus-visible,
.app-account-toggle:focus-visible {
    color: #fff;
    background: rgba(255, 255, 255, .16);
    border-color: rgba(255, 255, 255, .32);
}

.app-account-link {
    max-width: min(48vw, 380px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-navbar .dropdown-menu {
    padding: .55rem;
    border: 1px solid var(--app-border);
    border-radius: 14px;
    box-shadow: var(--app-shadow-hover);
}

.app-navbar .dropdown-item {
    padding: .65rem .8rem;
    border-radius: 9px;
}

.sidebar,
.offcanvas-menu {
    color: #fff;
    background: linear-gradient(165deg, var(--app-sidebar-start), var(--app-sidebar-end)) !important;
}

.sidebar {
    position: sticky;
    top: var(--app-navbar-height);
    flex: 0 0 var(--app-sidebar-width);
    width: var(--app-sidebar-width);
    height: calc(100vh - var(--app-navbar-height));
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    scrollbar-color: rgba(255, 255, 255, .2) transparent;
}

.sidebar::before {
    content: "";
    display: block;
    height: 3px;
    background: linear-gradient(90deg, #72a5ff, #55c8bb);
}

.sidebar .nav-link,
.offcanvas-menu .nav-link {
    display: flex;
    align-items: center;
    min-height: 44px;
    margin: 3px 9px;
    padding: .65rem .8rem;
    border: 1px solid transparent;
    border-radius: 11px;
    color: rgba(255, 255, 255, .78);
    font-size: .9rem;
    font-weight: 600;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, transform .15s ease;
}

.sidebar .nav-link i,
.offcanvas-menu .nav-link i {
    flex: 0 0 22px;
    width: 22px;
    margin-right: .6rem;
    color: #a9c8ff;
    font-size: 1.02rem;
    text-align: center;
}

.sidebar .nav-link:hover,
.sidebar .nav-link.active,
.offcanvas-menu .nav-link:hover,
.offcanvas-menu .nav-link.active {
    color: #fff;
    background: rgba(255, 255, 255, .12);
    border-color: rgba(255, 255, 255, .12);
}

.sidebar .nav-link:hover {
    transform: translateX(2px);
}

.sidebar .nav-link.active,
.offcanvas-menu .nav-link.active {
    background: linear-gradient(90deg, rgba(103, 155, 246, .25), rgba(79, 194, 181, .13));
    box-shadow: inset 3px 0 #77a9ff;
}

.offcanvas-menu {
    max-width: min(88vw, 350px);
}

.offcanvas-menu .offcanvas-header {
    min-height: var(--app-navbar-height);
}

.offcanvas-menu .menu-title {
    padding: 1rem 1.25rem .35rem;
    color: rgba(255, 255, 255, .48);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.main-content {
    min-width: 0;
    min-height: calc(100vh - var(--app-navbar-height));
    background: transparent;
}

.content-shell {
    width: 100%;
    max-width: 1680px;
    margin-inline: auto;
}

.content-shell > .d-flex.justify-content-between {
    flex-wrap: wrap;
    gap: .9rem;
}

.page-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.page-heading__content {
    display: flex;
    min-width: 0;
    align-items: center;
    gap: .9rem;
}

.page-heading__icon {
    display: grid;
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    place-items: center;
    border: 1px solid #cfdbf1;
    border-radius: 14px;
    color: var(--app-primary);
    background: linear-gradient(145deg, #f8fbff, var(--app-primary-soft));
    font-size: 1.25rem;
    box-shadow: 0 5px 16px rgba(45, 87, 173, .08);
}

.page-heading__eyebrow {
    margin-bottom: .15rem;
    color: var(--app-primary);
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.page-heading__title {
    margin: 0;
    color: var(--app-text);
    font-size: clamp(1.3rem, 2vw, 1.75rem);
    font-weight: 750;
    letter-spacing: -.02em;
}

.page-heading__subtitle {
    max-width: 720px;
    margin: .25rem 0 0;
    color: var(--app-muted);
    font-size: .92rem;
}

.card {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface);
    box-shadow: var(--app-shadow);
}

.card-header,
.card-footer {
    border-color: var(--app-border);
}

.card-header {
    min-height: 54px;
    padding: .85rem 1rem;
    background: linear-gradient(180deg, #fff, var(--app-surface-soft));
    font-weight: 700;
}

.card-header.d-flex {
    flex-wrap: wrap;
    gap: .65rem;
}

.card-footer {
    padding: .85rem 1rem;
    background: var(--app-surface-soft);
}

.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-danger,
.card-header.bg-info {
    color: #fff;
    background-image: none;
}

.card-header.bg-warning {
    color: #1f2937;
    background-image: none;
}

.section-card {
    overflow: hidden;
}

.section-card > .card-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .65rem;
}

.course-card,
.group-card,
.stat-card {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.course-card:hover,
.group-card:hover,
.stat-card:hover {
    transform: translateY(-2px);
    border-color: var(--app-border-strong);
    box-shadow: var(--app-shadow-hover);
}

.course-card {
    overflow: hidden;
}

.course-card::before {
    content: "";
    display: block;
    height: 4px;
    background: linear-gradient(90deg, var(--app-primary), var(--app-accent));
}

.group-card {
    border-left: 4px solid var(--group-color, var(--app-primary));
}

.stat-card {
    --stat-color: var(--app-primary);
    --stat-soft: var(--app-primary-soft);
    position: relative;
    height: 100%;
    overflow: hidden;
}

.stat-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: var(--stat-color);
}

.stat-card::after {
    content: "";
    position: absolute;
    top: -45px;
    right: -38px;
    width: 128px;
    height: 128px;
    border-radius: 50%;
    background: var(--stat-soft);
    opacity: .75;
}

.stat-card.primary { --stat-color: var(--app-primary); --stat-soft: var(--app-primary-soft); }
.stat-card.success { --stat-color: var(--app-success); --stat-soft: var(--app-success-soft); }
.stat-card.warning { --stat-color: var(--app-warning); --stat-soft: var(--app-warning-soft); }
.stat-card.danger { --stat-color: var(--app-danger); --stat-soft: var(--app-danger-soft); }

.stat-card .card-body {
    position: relative;
    z-index: 1;
    padding: 1.25rem 1.25rem 1.2rem 1.35rem;
}

.stat-card__label,
.stat-card h6 {
    margin-bottom: .4rem;
    color: var(--app-muted);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.stat-card__value,
.stat-card h3 {
    margin: 0;
    color: var(--app-text);
    font-size: clamp(1.55rem, 3vw, 2rem);
    font-weight: 760;
    letter-spacing: -.035em;
}

.stat-card__icon {
    display: grid;
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    place-items: center;
    border-radius: 14px;
    color: var(--stat-color);
    background: var(--stat-soft);
    font-size: 1.35rem;
}

.stat-card .opacity-50 i {
    color: var(--stat-color);
    font-size: 2.35rem !important;
}

.profile-summary {
    height: 100%;
    background: linear-gradient(145deg, #fff, #f5f8ff);
}

.profile-summary__list {
    display: grid;
    gap: .7rem;
    margin: 0;
}

.profile-summary__item {
    display: grid;
    grid-template-columns: minmax(110px, .8fr) 1.2fr;
    gap: .75rem;
    padding-bottom: .6rem;
    border-bottom: 1px dashed var(--app-border);
}

.profile-summary__item:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}

.profile-summary__item dt {
    color: var(--app-muted);
    font-size: .84rem;
    font-weight: 650;
}

.profile-summary__item dd {
    margin: 0;
    font-weight: 650;
}

.quick-actions {
    display: grid;
    gap: .65rem;
}

.quick-actions .btn {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-height: 44px;
    padding-inline: .9rem;
    text-align: left;
}

.quick-actions .btn i {
    width: 22px;
    text-align: center;
}

.selection-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding: 1rem 1.1rem;
    border: 1px solid #c9e3ec;
    border-radius: var(--app-radius);
    color: #17485b;
    background: linear-gradient(120deg, #eefaff, #f4fbff);
    box-shadow: 0 6px 20px rgba(23, 107, 135, .06);
}

.selection-banner__content {
    display: flex;
    min-width: 0;
    align-items: flex-start;
    gap: .75rem;
}

.selection-banner__icon {
    color: var(--app-info);
    font-size: 1.25rem;
}

.empty-state {
    padding: 2.4rem 1.2rem;
    color: var(--app-muted);
    text-align: center;
}

.empty-state i {
    display: block;
    margin-bottom: .55rem;
    color: #9ba9bc;
    font-size: 1.8rem;
}

.form-label,
legend.form-label {
    margin-bottom: .4rem;
    color: #35445a;
    font-size: .86rem;
    font-weight: 700;
}

.form-control,
.form-select,
.input-group-text {
    min-height: 43px;
    border-color: var(--app-border-strong);
    border-radius: var(--app-radius-sm);
}

.form-control,
.form-select {
    color: var(--app-text);
    background-color: #fff;
}

.form-control::placeholder {
    color: #99a5b5;
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 .2rem rgba(45, 87, 173, .14);
}

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

[data-liste-form] {
    position: relative;
}

[data-liste-form]::before {
    content: "Filtreler";
    position: absolute;
    top: -.15rem;
    right: .1rem;
    color: #98a5b7;
    font-size: .68rem;
    font-weight: 750;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.btn {
    border-radius: 9px;
    font-weight: 650;
    transition: transform .13s ease, box-shadow .13s ease, color .13s ease, background-color .13s ease, border-color .13s ease;
}

.btn:hover {
    transform: translateY(-1px);
}

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

.btn-primary { background: var(--app-primary); border-color: var(--app-primary); }
.btn-primary:hover { background: var(--app-primary-dark); border-color: var(--app-primary-dark); }
.btn-success { background: var(--app-success); border-color: var(--app-success); }
.btn-danger { background: var(--app-danger); border-color: var(--app-danger); }
.btn-warning { color: #1f2937; background: #f2b84b; border-color: #f2b84b; }
.btn-warning:hover { color: #172033; background: #e5a934; border-color: #e5a934; }
.btn-outline-info { color: var(--app-info); border-color: #67a6b9; }
.btn-outline-info:hover { color: #fff; background: var(--app-info); border-color: var(--app-info); }

.btn-icon {
    display: inline-grid;
    width: 36px;
    height: 36px;
    padding: 0;
    place-items: center;
}

.table-responsive {
    border-radius: inherit;
    scrollbar-color: #a8b5c6 transparent;
    scrollbar-width: thin;
}

.table-responsive > .table {
    min-width: 680px;
}

.table {
    --bs-table-bg: transparent;
    margin-bottom: 0;
}

.table > :not(caption) > * > * {
    padding: .82rem .9rem;
    border-color: #e6ebf2;
}

.table thead th {
    border-bottom-width: 1px;
    color: #516075;
    background: #f7f9fc;
    font-size: .73rem;
    font-weight: 750;
    letter-spacing: .045em;
    text-transform: uppercase;
    white-space: nowrap;
}

.table tbody tr:last-child td {
    border-bottom: 0;
}

.table td {
    vertical-align: middle;
}

.table-hover > tbody > tr:hover > * {
    --bs-table-bg-state: #f2f6fc;
}

th.sortable {
    cursor: pointer;
    user-select: none;
}

th.sortable::after {
    content: " ⇅";
    color: #96a2b3;
    font-size: .85em;
}

th.sortable.asc::after { content: " ↑"; color: var(--app-primary); }
th.sortable.desc::after { content: " ↓"; color: var(--app-primary); }

th.sortable:focus-visible {
    outline: 3px solid rgba(45, 87, 173, .24);
    outline-offset: -3px;
}

.badge {
    padding: .42em .68em;
    border-radius: 999px;
    font-weight: 650;
    letter-spacing: .01em;
}

.bg-warning,
.text-bg-warning {
    color: #362100 !important;
}

.alert {
    border: 1px solid transparent;
    border-radius: 13px;
    box-shadow: 0 4px 15px rgba(30, 45, 75, .035);
}

.alert-success { border-color: #bfe3c9; background: var(--app-success-soft); }
.alert-danger { border-color: #f2c9cd; background: var(--app-danger-soft); }
.alert-warning { border-color: #eed49b; background: var(--app-warning-soft); }
.alert-info { border-color: #c8e5ed; background: var(--app-info-soft); }
.alert-primary { border-color: #ccdaf7; background: var(--app-primary-soft); }

.list-group-item {
    border-color: var(--app-border);
}

.pagination {
    flex-wrap: wrap;
    gap: .25rem;
    margin-top: 1.25rem;
}

.page-link {
    min-width: 38px;
    border-radius: 8px !important;
    color: var(--app-primary);
    text-align: center;
}

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

.app-confirm-modal {
    overflow: hidden;
    border: 0;
    border-radius: var(--app-radius-lg);
    box-shadow: 0 24px 70px rgba(15, 23, 42, .22);
}

.app-confirm-icon {
    display: grid;
    width: 62px;
    height: 62px;
    margin: 0 auto;
    place-items: center;
    border-radius: 50%;
    color: var(--app-primary);
    background: var(--app-primary-soft);
    font-size: 1.65rem;
}

.app-confirm-message {
    color: #46556a;
    line-height: 1.6;
}

.auth-page {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: clamp(1rem, 4vw, 3rem);
    background:
        radial-gradient(circle at 8% 10%, rgba(106, 160, 255, .2), transparent 28rem),
        radial-gradient(circle at 92% 86%, rgba(72, 190, 174, .15), transparent 26rem),
        linear-gradient(135deg, #0d1932, #193760 62%, #164c59);
}

.auth-shell {
    width: min(100%, 880px);
}

.auth-card {
    display: grid;
    grid-template-columns: minmax(280px, .9fr) minmax(360px, 1.1fr);
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 26px;
    background: #fff;
    box-shadow: 0 28px 90px rgba(3, 10, 24, .38);
}

.auth-brand-panel {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 500px;
    padding: clamp(2rem, 5vw, 3.2rem);
    color: #fff;
    background:
        linear-gradient(160deg, rgba(255, 255, 255, .08), transparent 48%),
        linear-gradient(145deg, #18356a, #1d5e69);
}

.auth-brand-icon {
    display: grid;
    width: 72px;
    height: 72px;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 21px;
    background: rgba(255, 255, 255, .1);
    box-shadow: inset 0 1px rgba(255, 255, 255, .16);
    font-size: 2.2rem;
}

.auth-institution-logo {
    display: flex;
    align-items: center;
}

.auth-institution-logo.has-custom {
    width: 100%;
    min-height: 164px;
    padding: .65rem 1rem;
    border: 1px solid rgba(255, 255, 255, .32);
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 16px 34px rgba(2, 15, 38, .22);
}

.auth-institution-logo img {
    display: block;
    width: 100%;
    max-height: 148px;
    object-fit: contain;
}

.institution-system-brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    color: var(--app-primary);
}

.institution-system-brand i {
    display: grid;
    width: 76px;
    height: 76px;
    place-items: center;
    border-radius: 22px;
    color: #fff;
    background: linear-gradient(145deg, #18356a, #1d5e69);
    font-size: 2.25rem;
}

.institution-logo-preview {
    display: grid;
    place-items: center;
    min-height: 210px;
    padding: 1.5rem;
    border: 1px solid var(--app-border);
    border-radius: 18px;
    background: linear-gradient(135deg, #f5f8fc, #fff);
}

.institution-logo-preview img {
    width: min(100%, 560px);
    max-height: 190px;
    object-fit: contain;
}

.auth-eyebrow {
    margin-bottom: .7rem;
    color: #b9d5ff;
    font-size: .74rem;
    font-weight: 750;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.auth-title {
    margin-bottom: .75rem;
    font-size: clamp(1.8rem, 4vw, 2.45rem);
    font-weight: 760;
    letter-spacing: -.035em;
}

.auth-subtitle {
    margin: 0;
    color: rgba(255, 255, 255, .72);
    line-height: 1.65;
}

.auth-form-panel {
    align-self: center;
    padding: clamp(2rem, 5vw, 3.2rem);
}

.auth-form-panel .input-group-text {
    border-right: 0;
    color: var(--app-muted);
    background: var(--app-surface-soft);
}

.auth-form-panel .input-group .form-control {
    border-left: 0;
}

.btn-login {
    min-height: 48px;
    box-shadow: 0 8px 18px rgba(45, 87, 173, .2);
}

.auth-footer {
    color: var(--app-muted);
    line-height: 1.55;
}

.zorunlu-ders {
    background-color: #dfeaff !important;
}

.secmeli-ders {
    background-color: #ddf3ed !important;
}

.program-table {
    min-width: 900px !important;
}

.program-time-column {
    width: 90px;
}

.selection-column {
    width: 40px;
}

.selection-column--compact {
    width: 30px;
}

.group-member-scroll,
.group-candidate-scroll {
    overflow-y: auto;
    overscroll-behavior: contain;
}

.group-member-scroll {
    max-height: 500px;
}

.group-candidate-scroll {
    max-height: 400px;
}

.student-picker-scroll {
    max-height: 420px;
    overflow: auto;
    overscroll-behavior: contain;
}

.app-state-icon {
    font-size: 4rem;
    line-height: 1;
}

.app-state-icon--large {
    font-size: 5rem;
}

.program-table td {
    height: 82px;
    vertical-align: middle;
}

.program-table thead th,
.program-table .table-dark th {
    color: #344157 !important;
    background: #e9eef5 !important;
}

.ders-hucre {
    padding: .5rem;
    border-radius: 8px;
    font-size: .84rem;
}

.toast-container {
    z-index: 1100;
}

.participation-tabs {
    display: flex;
    gap: .45rem;
    padding: .4rem;
    overflow-x: auto;
    border: 1px solid var(--app-border);
    border-radius: 14px;
    background: var(--app-surface);
    box-shadow: var(--app-shadow);
}

.participation-tabs .nav-link {
    flex: 0 0 auto;
    padding: .65rem .9rem;
    border-radius: 10px;
    color: var(--app-muted);
    font-weight: 650;
}

.participation-tabs .nav-link.active {
    color: var(--app-primary-dark);
    background: var(--app-primary-soft);
}

.participation-type-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: .8rem;
}

.participation-type-card {
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: 14px;
    background: var(--app-surface);
}

.participant-picker {
    max-height: 430px;
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid var(--app-border);
    border-radius: 14px;
    background: var(--app-surface-soft);
}

.participant-picker__row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: .75rem;
    align-items: center;
    padding: .8rem .9rem;
    border-bottom: 1px solid var(--app-border);
}

.participant-picker__row:last-child {
    border-bottom: 0;
}

.participation-timeline {
    position: relative;
    display: grid;
    gap: .8rem;
    margin: 0;
    padding: 0 0 0 1.7rem;
    list-style: none;
}

.participation-timeline::before {
    position: absolute;
    top: .45rem;
    bottom: .45rem;
    left: .46rem;
    width: 2px;
    content: "";
    background: var(--app-border-strong);
}

.participation-timeline__item {
    position: relative;
    padding: .85rem 1rem;
    border: 1px solid var(--app-border);
    border-radius: 12px;
    background: var(--app-surface);
}

.participation-timeline__item::before {
    position: absolute;
    top: 1rem;
    left: -1.66rem;
    width: .82rem;
    height: .82rem;
    border: 3px solid var(--app-surface);
    border-radius: 50%;
    content: "";
    background: var(--app-primary);
    box-shadow: 0 0 0 1px var(--app-primary);
}

.year-chart {
    display: grid;
    gap: .75rem;
}

.year-chart__row {
    display: grid;
    grid-template-columns: 4.25rem minmax(0, 1fr) 3rem;
    gap: .75rem;
    align-items: center;
}

.year-chart__track {
    height: 1.05rem;
    overflow: hidden;
    border-radius: 999px;
    background: var(--app-surface-muted);
}

.year-chart__bar {
    width: max(3px, var(--bar-size, 0%));
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--app-primary), #5b7fd0);
}

.year-chart__bar--accent {
    background: linear-gradient(90deg, var(--app-accent), #35a69b);
}

.stage-chart__legend {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1rem;
    margin-bottom: 1rem;
}

.stage-chart__legend-item {
    display: inline-flex;
    gap: .45rem;
    align-items: center;
    color: var(--app-muted);
    font-size: .875rem;
    font-weight: 600;
}

.stage-chart__swatch {
    width: .85rem;
    height: .85rem;
    border-radius: .25rem;
}

.stage-chart__legend-result {
    color: #855d0b;
}

.stage-chart__scroller {
    overflow-x: auto;
    padding: 2.25rem .25rem .35rem;
    scrollbar-gutter: stable;
}

.stage-chart {
    display: grid;
    grid-template-columns: repeat(var(--year-count), minmax(9rem, 1fr));
    gap: 1rem;
    min-width: max(100%, calc(var(--year-count) * 9rem));
    min-height: 22rem;
    padding: 1rem 1rem 0;
    border-bottom: 1px solid var(--app-border);
    background-image: repeating-linear-gradient(
        to top,
        transparent 0,
        transparent calc(25% - 1px),
        color-mix(in srgb, var(--app-border) 65%, transparent) 25%
    );
    background-size: 100% calc(100% - 3rem);
    background-position: top;
    background-repeat: no-repeat;
}

.stage-chart__year {
    display: grid;
    grid-template-rows: minmax(17rem, 1fr) 2.5rem;
    min-width: 0;
}

.stage-chart__bars {
    display: flex;
    gap: .35rem;
    align-items: end;
    min-width: 0;
}

.stage-chart__column {
    position: relative;
    display: flex;
    flex: 1 1 0;
    flex-direction: column;
    justify-content: end;
    align-items: center;
    height: 100%;
    min-width: 1.6rem;
}

.stage-chart__bar {
    display: block;
    width: min(100%, 2.45rem);
    height: max(2px, var(--bar-height));
    min-height: 2px;
    border-radius: .45rem .45rem 0 0;
    box-shadow: inset 0 1px 0 rgb(255 255 255 / .25);
}

.stage-chart__value {
    margin-bottom: .2rem;
    color: var(--app-text);
    font-size: .82rem;
}

.stage-chart__result-count {
    position: absolute;
    bottom: calc(var(--bar-height) + 1.45rem);
    z-index: 1;
    padding: .08rem .3rem;
    border: 1px solid #e5ba42;
    border-radius: 999px;
    color: #72500a;
    background: #fff6d7;
    font-size: .68rem;
    font-weight: 800;
    line-height: 1.25;
    white-space: nowrap;
}

.stage-chart__column-label {
    position: absolute;
    top: calc(100% + .25rem);
    left: 50%;
    max-width: 5.4rem;
    transform: translateX(-50%);
    color: var(--app-muted);
    font-size: .65rem;
    font-weight: 600;
    line-height: 1.05;
    text-align: center;
    overflow-wrap: anywhere;
}

.stage-chart__year-label {
    align-self: end;
    padding-top: 1.15rem;
    text-align: center;
}

.stage-chart__series--0 { background: #3157a4; }
.stage-chart__series--1 { background: #16858f; }
.stage-chart__series--2 { background: #7b52a1; }
.stage-chart__series--3 { background: #d07a20; }
.stage-chart__series--4 { background: #aa3f62; }

@media (max-width: 575.98px) {
    .stage-chart {
        grid-template-columns: repeat(var(--year-count), minmax(8rem, 1fr));
        min-width: calc(var(--year-count) * 8rem);
        padding-inline: .5rem;
    }

    .stage-chart__bars { gap: .2rem; }
    .stage-chart__column-label { font-size: .6rem; }
}

@media print {
    .stage-chart__scroller { overflow: visible; }
    .stage-chart { min-width: 0; }
}

/* Kurum evrakları */
.document-card {
    border-color: rgba(36, 83, 145, .14);
    overflow: hidden;
}

.document-card::before {
    content: "";
    display: block;
    height: 4px;
    background: linear-gradient(90deg, #305fba, #33a69a);
}

.document-card--passive {
    opacity: .72;
    filter: grayscale(.12);
}

.document-card__icon {
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    color: #b4232f;
    background: #fff0f1;
    font-size: 1.45rem;
}

.document-meta {
    display: grid;
    gap: .55rem;
    font-size: .86rem;
    color: var(--bs-secondary-color);
}

.document-meta > div {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
}

.document-meta > div > i {
    flex: 0 0 18px;
    color: #315fae;
    text-align: center;
}

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

.achievement-chip {
    display: inline-flex;
    gap: .35rem;
    align-items: center;
    padding: .35rem .65rem;
    border: 1px solid #e7c467;
    border-radius: 999px;
    color: #704b00;
    background: #fff8df;
    font-size: .82rem;
    font-weight: 650;
}

@media (max-width: 991.98px) {
    .main-content {
        padding: 1.25rem !important;
    }

    .app-navbar .navbar-collapse {
        position: absolute;
        top: calc(100% + .4rem);
        right: .8rem;
        width: min(90vw, 330px);
        padding: .6rem;
        border: 1px solid var(--app-border);
        border-radius: 14px;
        background: #fff;
        box-shadow: var(--app-shadow-hover);
    }

    .app-navbar .navbar-collapse .nav-link {
        color: var(--app-text);
    }

    .app-navbar .dropdown-menu {
        position: static;
        border: 0;
        box-shadow: none;
    }

    .btn-pdf-download {
        display: block;
        width: 100%;
        margin-bottom: .65rem;
    }
}

@media (max-width: 767.98px) {
    .auth-card {
        grid-template-columns: 1fr;
        max-width: 500px;
        margin-inline: auto;
    }

    .auth-brand-panel {
        min-height: 0;
        gap: 1.5rem;
        padding: 1.6rem;
    }

    .auth-brand-icon {
        width: 56px;
        height: 56px;
        border-radius: 17px;
        font-size: 1.65rem;
    }

    .auth-institution-logo.has-custom {
        min-height: 124px;
        padding: .6rem;
    }

    .auth-institution-logo img {
        max-height: 112px;
    }

    .auth-form-panel {
        padding: 1.6rem;
    }

    .row.g-4 {
        --bs-gutter-y: 1rem;
    }

    .page-heading {
        align-items: flex-start;
    }

    .page-heading > .btn,
    .page-heading > .d-flex {
        width: 100%;
    }

    .page-heading > .d-flex .btn {
        flex: 1 1 auto;
    }

    .selection-banner {
        align-items: stretch;
        flex-direction: column;
    }

    .selection-banner .btn {
        width: 100%;
    }

    .profile-summary__item {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
}

@media (max-width: 575.98px) {
    .auth-page {
        display: block;
        padding: .75rem;
    }

    .auth-card {
        border-radius: 19px;
    }

    .auth-brand-panel,
    .auth-form-panel {
        padding: 1.25rem;
    }

    .auth-subtitle {
        display: none;
    }

    .app-navbar {
        min-height: 60px;
    }

    .app-navbar .container-fluid {
        flex-wrap: nowrap;
    }

    .navbar-brand {
        margin-right: .25rem;
    }

    .main-content {
        padding: .85rem !important;
    }

    .page-heading {
        margin-bottom: 1.1rem;
    }

    .page-heading__content {
        align-items: flex-start;
    }

    .page-heading__icon {
        flex-basis: 42px;
        width: 42px;
        height: 42px;
        border-radius: 12px;
    }

    .page-heading__subtitle {
        font-size: .85rem;
    }

    h1, h2, h3, h4 {
        line-height: 1.25;
    }

    h4 {
        font-size: 1.18rem;
    }

    .card {
        border-radius: 13px;
    }

    .card-body {
        padding: 1rem;
    }

    .card-header,
    .card-footer {
        padding-inline: .9rem;
    }

    .btn:not(.btn-sm):not(.btn-close):not(.app-menu-toggle):not(.app-account-toggle) {
        min-height: 43px;
    }

    .content-shell > .d-flex.justify-content-between > .d-flex {
        width: 100%;
    }

    .content-shell > .d-flex.justify-content-between > .d-flex > .btn,
    .content-shell > .d-flex.justify-content-between > .btn {
        flex: 1 1 auto;
    }

    [data-liste-form]::before {
        display: none;
    }

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

    .pagination {
        justify-content: center;
    }

    .selection-banner {
        padding: .9rem;
    }
}

@media (max-width: 479.98px) {
    [data-liste-form] > .col-6 {
        flex: 0 0 auto;
        width: 100%;
    }

    [data-liste-form] .d-flex.gap-2 {
        flex-wrap: wrap;
    }

    [data-liste-form] .d-flex.gap-2 > .btn {
        flex: 1 1 auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* Rol bazlı, iki seviyeli menü */
.role-menu { gap: .18rem; }
.menu-group { margin: 0; }
.menu-group > summary { display:flex; align-items:center; gap:.78rem; padding:.72rem .9rem; color:rgba(255,255,255,.78); border-radius:.72rem; cursor:pointer; list-style:none; font-weight:600; transition:background-color .18s,color .18s; }
.menu-group > summary::-webkit-details-marker { display:none; }
.menu-group > summary:hover,.menu-group[open] > summary { color:#fff; background:rgba(255,255,255,.09); }
.menu-group > summary > i:first-child { width:1.2rem; text-align:center; }
.menu-group .menu-chevron { margin-left:auto; font-size:.72rem; transition:transform .18s; }
.menu-group[open] .menu-chevron { transform:rotate(180deg); }
.menu-group > ul { margin:.2rem 0 .4rem 1rem; padding-left:.65rem; border-left:1px solid rgba(255,255,255,.15); }
.menu-group > ul .nav-link { padding:.55rem .75rem; font-size:.91rem; }

/* Faaliyet ve veli formu */
.activity-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:1.25rem; }
.activity-card { overflow:hidden; height:100%; transition:transform .2s ease,box-shadow .2s ease; }
.activity-card:hover { transform:translateY(-3px); box-shadow:0 18px 40px rgba(20,42,80,.12); }
.activity-card__image { width:100%; aspect-ratio:16/9; object-fit:cover; background:#eaf0f8; }
.activity-hero { position:relative; overflow:hidden; min-height:280px; border-radius:1.2rem; background:#eaf0f8; }
.activity-hero > img { width:100%; height:clamp(280px,35vw,460px); object-fit:cover; }
.activity-hero__overlay { position:absolute; inset:auto 0 0; padding:3.5rem 2rem 1.5rem; color:#fff; background:linear-gradient(transparent,rgba(6,25,54,.88)); }
.activity-hero__overlay h2 { margin:0 0 .35rem; }
.activity-hero__overlay p { margin:0; max-width:760px; }
.activity-meta { display:grid; gap:.42rem; color:#5d6b7d; font-size:.87rem; }
.activity-meta span { display:flex; align-items:flex-start; gap:.48rem; }
.activity-banner-preview { width:100%; aspect-ratio:16/9; object-fit:cover; border-radius:.8rem; background:linear-gradient(135deg,#e8eef8,#f7f9fc); border:1px solid #dce4ef; }
.activity-stat-filter { width:100%; padding:0; color:inherit; text-align:left; cursor:pointer; transition:transform .16s ease,box-shadow .16s ease,outline-color .16s ease; }
.activity-stat-filter:hover { transform:translateY(-2px); box-shadow:var(--app-shadow-hover); }
.activity-stat-filter.active { outline:3px solid color-mix(in srgb,currentColor 48%,transparent); outline-offset:2px; }
.activity-stat-filter:focus-visible { outline:3px solid #75a7ff; outline-offset:2px; }
.activity-stat-filter .stat-card__label,.activity-stat-filter .stat-card__value { display:block; }
.student-picker-scroll { max-height:430px; overflow:auto; }
.permission-student-picker { max-height:540px; }
.student-quick-select { display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; padding:.75rem; border-radius:.8rem; background:#f4f7fb; }
.form-builder-row { display:grid; grid-template-columns:150px 150px minmax(220px,2fr) minmax(160px,1fr) auto auto; gap:.7rem; align-items:start; padding:1rem 0; border-bottom:1px solid #e6ebf2; }
.form-step { display:none; }
.form-step.active { display:block; animation:form-step-in .2s ease-out; }
@keyframes form-step-in { from{opacity:0;transform:translateY(5px)} to{opacity:1;transform:none} }
.form-stepper { display:flex; overflow-x:auto; gap:.55rem; padding:.2rem; }
.form-stepper span { flex:1 0 120px; padding:.62rem .8rem; border-radius:999px; background:#e9eef5; color:#68778a; text-align:center; font-size:.86rem; font-weight:700; }
.form-stepper span.active { background:#174b8c; color:#fff; }
.form-step-actions { display:flex; flex-wrap:wrap; gap:.65rem; align-items:center; }
.participation-choice { display:grid; grid-template-columns:repeat(3,1fr); gap:.8rem; }
.participation-choice input { position:absolute; opacity:0; }
.participation-choice span { display:flex; align-items:center; justify-content:center; gap:.5rem; min-height:68px; padding:.8rem; border:2px solid #dce4ee; border-radius:.9rem; cursor:pointer; font-weight:700; }
.participation-choice input:checked + span { border-color:#1769aa; color:#125a93; background:#eef7ff; box-shadow:0 0 0 3px rgba(23,105,170,.1); }
.check-list { padding:0; list-style:none; display:grid; gap:.45rem; }
.check-list li { display:flex; gap:.5rem; align-items:flex-start; }
.check-list i { color:#198754; }
.response-details summary { color:#175fa6; cursor:pointer; font-weight:700; white-space:nowrap; }
.response-details dl { min-width:280px; margin:.75rem 0 0; }
.response-details dl div { padding:.5rem 0; border-top:1px solid #e5eaf1; }
.response-details dt { font-size:.78rem; color:#68778a; }
.response-details dd { margin:0; white-space:normal; }
@media (max-width:991.98px){.form-builder-row{grid-template-columns:1fr 1fr}.form-builder-row__question{grid-column:1/-1}}
@media (max-width:575.98px){.activity-grid{grid-template-columns:1fr}.participation-choice{grid-template-columns:1fr}.form-step-actions .btn{flex:1 1 auto}}

@media print {
    @page {
        size: A4 landscape;
        margin: 5mm;
    }

    body {
        display: block;
        background: #fff;
    }

    .app-navbar,
    .sidebar,
    .offcanvas,
    .skip-link,
    form[data-liste-form],
    .pagination {
        display: none !important;
    }

    .no-print,
    .print-actions {
        display: none !important;
    }

    .main-content {
        min-height: 0;
        padding: 0 !important;
        background: #fff;
    }

    .content-shell {
        max-width: none;
    }

    .card {
        break-inside: avoid;
        border: 1px solid #bbb;
        box-shadow: none;
    }

    .print-report {
        max-width: none;
        box-sizing: border-box;
        padding: 5mm;
    }

    .print-report .table {
        font-size: .82rem;
    }

    .print-report tr {
        break-inside: avoid;
    }
}
