/* ===== Весёлая тема ===== */
:root {
    --fun-grad: linear-gradient(90deg, #7b2ff7 0%, #f107a3 55%, #ff8a00 100%);
    --fun-purple: #7b2ff7;
    --fun-pink: #f107a3;
    --fun-orange: #ff8a00;
}

body {
    background: linear-gradient(135deg, #fdf4ff 0%, #eef2ff 50%, #fff7ed 100%) fixed;
    min-height: 100vh;
}

/* Навбар с градиентом */
.navbar-fun {
    background: var(--fun-grad);
    box-shadow: 0 4px 14px rgba(123, 47, 247, 0.25);
}
.navbar-fun .navbar-brand { font-size: 1.55rem; }
.navbar-fun .nav-link {
    font-weight: 600;
    font-size: 1.12rem;
    padding-left: 0.7rem;
    padding-right: 0.7rem;
    transition: transform 0.12s ease;
}
.navbar-fun .nav-link:hover { transform: translateY(-2px); }

/* Скруглённые карточки */
.card {
    border: none;
    border-radius: 1rem;
    box-shadow: 0 6px 18px rgba(80, 40, 120, 0.08);
}

/* Кнопки чуть ярче и круглее */
.btn { border-radius: 0.6rem; font-weight: 600; }
.btn-success {
    background: linear-gradient(90deg, #22a06b, #16c79a);
    border: none;
}
.btn-warning {
    background: linear-gradient(90deg, #ffb300, #ff8a00);
    border: none;
    color: #fff;
}

/* ===== Рейтинг ===== */
.hero-fun {
    background: var(--fun-grad);
    color: #fff;
    border-radius: 1.25rem;
    box-shadow: 0 10px 30px rgba(241, 7, 163, 0.25);
}
.tier-card { transition: transform 0.15s ease; }
.tier-card:hover { transform: translateY(-4px); }
.tier-emoji { font-size: 2.4rem; line-height: 1; }
.tier-badge { color: #fff; font-size: 0.9rem; padding: 0.4em 0.7em; border-radius: 999px; }
.rating-table thead th { background: #f3e8ff; color: #5b21b6; }
.rating-table tbody tr:hover { background: #faf5ff; }
.points-pill {
    display: inline-block;
    background: linear-gradient(90deg, #ffd54f, #ffb300);
    color: #7a4f01;
    font-weight: 700;
    padding: 0.25em 0.7em;
    border-radius: 999px;
}

/* Прогресс-бар до зачёта */
.progress-fun {
    background: var(--fun-grad);
    transition: width 0.6s ease;
}

/* Бейджи-достижения */
.achv {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.85rem;
    border-radius: 999px;
    border: 2px solid transparent;
    font-weight: 600;
}
.achv-emoji { font-size: 1.4rem; line-height: 1; }
.achv-title { font-size: 0.9rem; }
.achv-on {
    background: linear-gradient(90deg, #fff7ed, #fdf4ff);
    border-color: var(--fun-pink);
    color: #7b2ff7;
    box-shadow: 0 3px 10px rgba(241, 7, 163, 0.15);
}
.achv-off {
    background: #f1f1f4;
    color: #b0b0b8;
    filter: grayscale(1);
    opacity: 0.75;
}

/* ===== Сетка посещаемости ===== */
.att-grid thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #d1e7dd;
}
.att-grid th.sticky-col { left: 0; z-index: 4; }
.att-grid td.sticky-col {
    position: sticky;
    left: 0;
    z-index: 1;
    background: #fff;
    min-width: 190px;
}
.att-cell { min-width: 4.6rem; }
.att-cell.cell-was { background: #d1e7dd; }
.att-cell.cell-miss { background: #f8d7da; }
.att-cell.cell-exc { background: #fff3cd; }
.att-cell.cell-none { background: #fff; }

/* ===== Служебное (из прошлой версии) ===== */
.criteria-badge {
    display: inline-block;
    min-width: 1.6rem;
    text-align: center;
}
.table-zachet td, .table-zachet th { vertical-align: middle; text-align: center; }
.table-zachet td.name-col, .table-zachet th.name-col { text-align: left; }
.code-pill { font-family: monospace; font-size: 1rem; letter-spacing: 1px; }
.card-criteria .list-group-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
