@import url("brand.css?v=20261009a");

/*
 * Appli élève : charte graphique du site (bleu nuit, jaune, polices Big Shoulders et Instrument Sans).
 * Couche chargée APRÈS les styles de la page (student_portal/index.html.twig) : elle remplace les cartes
 * blanches, les accents turquoise et les boutons violets du thème Flatify (posés avec !important).
 * Pour revenir en arrière : retirer le <link> vers ce fichier dans mobileappbase.html.twig.
 */

@font-face {
    font-family: "Big Shoulders Display";
    src: url("../fonts/big-shoulders-display-latin.woff2") format("woff2");
    font-weight: 100 900;
    font-display: swap;
}

@font-face {
    font-family: "Instrument Sans";
    src: url("../fonts/instrument-sans-latin.woff2") format("woff2");
    font-weight: 400 700;
    font-display: swap;
}

:root {
    --app-bg: var(--brand-night);
    --app-card: var(--brand-stage);
    --app-accent: var(--brand-spot);
    --app-accent-2: var(--brand-spot);
    --app-text: #E9EEF2;
    --app-muted: #A7B6C4;
    --app-border: rgba(233, 238, 242, 0.16);

    --rsc-night-deep: var(--brand-night-deep);
    --rsc-stage: var(--brand-stage);
    --rsc-raised: #1F3B59;
    /* Accent : valeurs dans brand.css */
    --rsc-spot: var(--brand-spot);
    --rsc-spot-rgb: var(--brand-spot-rgb);
    --rsc-spot-hover: var(--brand-spot-hover);
    --rsc-spot-ink: var(--brand-spot-ink);
    --rsc-spot-text: var(--brand-spot-text);
    --rsc-spot-text-rgb: var(--brand-spot-text-rgb);
    --rsc-green: #5BD08B;
    --rsc-red: #FF6B57;
    --rsc-amber: #F2B45A;
    --rsc-display: "Big Shoulders Display", "Arial Narrow", sans-serif;
    --rsc-text: "Instrument Sans", "Helvetica Neue", Arial, sans-serif;
}

body {
    font-family: var(--rsc-text);
}

/* ---------- Titres ---------- */

.student-app__title,
.student-app__notifications-title,
.student-app h1,
.student-app h2,
.student-app h3 {
    font-family: var(--rsc-display);
    font-weight: 800;
    letter-spacing: 0.01em;
    text-transform: uppercase;
}

.student-app__subtitle,
body.is-student-auth .student-app__subtitle,
.student-app__club-empty,
.student-app__notifications-permission-text,
.student-app__install-gate-help,
.student-app-desktop__text {
    color: var(--app-muted);
}

/* ---------- Logo officiel (rond, blanc) et badge Beta à côté ---------- */

.student-app__logo,
.student-app__beta-trigger {
    width: auto;
    height: auto;
    border-radius: 0;
}

.student-app__beta-trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.student-app__logo img,
.student-app__beta-trigger img {
    width: auto;
    height: 48px;
}

.student-app__login-logo .student-app__logo img,
.student-app__login-logo .student-app__beta-trigger img {
    width: auto;
    height: 132px;
}

.student-app__beta-badge {
    position: static;
    background: var(--rsc-spot);
    color: var(--rsc-spot-ink);
}

/* ---------- Boutons (le thème Flatify impose son violet avec !important) ---------- */

.student-app .btn {
    font-family: var(--rsc-text);
    font-weight: 600;
}

.student-app .btn-primary,
.student-app .btn-success,
.student-app__install button {
    border-color: var(--rsc-spot) !important;
    background-color: var(--rsc-spot) !important;
    color: var(--rsc-spot-ink) !important;
}

.student-app .btn-primary:hover,
.student-app .btn-primary:focus,
.student-app .btn-success:hover,
.student-app .btn-success:focus {
    border-color: var(--rsc-spot-hover) !important;
    background-color: var(--rsc-spot-hover) !important;
}

.student-app .btn-default {
    border: 2px solid rgba(233, 238, 242, 0.55);
    background: transparent;
    color: var(--app-text);
}

.student-app__install-gate-step-number {
    background: var(--rsc-spot);
    color: var(--rsc-spot-ink);
}

/* ---------- Champs ---------- */

.student-app .form-control,
body.is-student-auth .student-app .form-control {
    border: 1px solid rgba(233, 238, 242, 0.3);
    background: var(--rsc-night-deep);
    color: var(--app-text);
}

.student-app .form-control::placeholder {
    color: rgba(167, 182, 196, 0.7);
}

.student-app .form-control:focus {
    border-color: var(--rsc-spot);
    box-shadow: 0 0 0 3px rgba(var(--rsc-spot-rgb), 0.2);
}

.student-app select.form-control option {
    background: var(--rsc-night-deep);
    color: var(--app-text);
}

.student-app__label,
.student-app__renew-choice-label,
.student-app__new-registration-consent {
    color: var(--app-text);
}

/* ---------- Cartes : bleu « scène » au lieu de blanc ---------- */

.student-app__card,
.student-app__course-card,
.student-app__lesson-card,
.student-app__calendar,
.student-app__event-card,
.student-app__event-form,
.student-app__notification-card,
.student-app__attestation-card,
.student-app__wizard-item {
    border: 1px solid var(--app-border);
    background: var(--rsc-stage);
    color: var(--app-text);
}

/* Textes principaux des cartes (codés en noir dans la page) */
.student-app__course-artist,
.student-app__course-instrument,
.student-app__course-toggle,
.student-app__course-details,
.student-app__course-cfa,
.student-app__course-details-title,
.student-app__lesson-toggle,
.student-app__lesson-details,
.student-app__lesson-details-link,
.student-app__lesson-teacher,
.student-app__lesson-meta,
.student-app__calendar-nav,
.student-app__calendar-item-time,
.student-app__calendar-cfa-time,
.student-app__calendar-cfa-hall-title,
.student-app__calendar-cfa-reservation-title,
.student-app__event-description,
.student-app__notification-title,
.student-app__attestation-title {
    color: var(--app-text);
}

/* Textes secondaires */
.student-app__course-cfa-muted,
.student-app__course-details-ensemble,
.student-app__lesson-payment-label,
.student-app__lesson-details-muted,
.student-app__lesson-meta-muted,
.student-app__lesson-details-item.is-cancelled,
.student-app__calendar-item-sub,
.student-app__calendar-cfa-meta,
.student-app__calendar-cfa-empty,
.student-app__calendar-cfa-reservation-text,
.student-app__event-meta,
.student-app__notification-date,
.student-app__notification-status.is-read,
.student-app__notification-delete,
.student-app__notification-empty,
.student-app__attestation-meta,
.student-app__footer,
body.is-student-auth .student-app__footer {
    color: var(--app-muted);
}

/* Titres de cours et d'événements : jaune (ex-turquoise) */
.student-app__lesson-title,
.student-app__event-title {
    font-family: var(--rsc-display);
    font-weight: 800;
    letter-spacing: 0.02em;
    color: var(--rsc-spot-text);
}

.student-app__lesson-payment-ok {
    color: var(--rsc-green);
}

.student-app__event-genre {
    border: 1px solid var(--app-border);
    background: transparent;
    color: var(--app-muted);
}

.student-app__wizard-item.is-selected,
.student-app__new-registration-selection:hover,
.student-app__new-registration-selection:focus {
    border-color: var(--rsc-spot);
    box-shadow: 0 0 0 3px rgba(var(--rsc-spot-rgb), 0.15);
}

/* ---------- Formulaires « Nouveau cours » et réinscription ----------
 * La page pose ces libellés en gris foncé, parfois avec des sélecteurs à ID
 * (#portal-step-new-registration label, #portal-renew-consents label) qui
 * l'emportent sur une simple classe : on reprend ici la même spécificité. */

#portal-step-new-registration label,
#portal-renew-consents label,
.student-app__new-registration-field-label,
.student-app__new-registration-choice-summary strong,
.student-app__new-registration-selection-title {
    color: var(--app-text);
}

.student-app .help-block,
.student-app__new-registration-choice-summary,
.student-app__new-registration-selection-site,
.student-app__wizard-item-desc,
.student-app__wizard-item-meta {
    color: var(--app-muted);
}

/* Cours choisi : encadré resté blanc dans la page */
.student-app__new-registration-selection {
    border: 1px solid var(--app-border);
    background: var(--rsc-raised);
}

.student-app__new-registration-selection-meta,
.student-app__wizard-item-badge {
    color: var(--rsc-green);
}

.student-app__new-registration-selection-meta.is-without,
.student-app__wizard-item-badge.is-without {
    color: var(--rsc-amber);
}

.student-app__wizard-item-badge,
.student-app__wizard-item-badge.is-without {
    border: 1px solid currentColor;
    background: transparent;
}

/* Familles du choix de cours : texte clair (l'accent violet manque de contraste sur leur bandeau) */
.student-app__wizard-family {
    color: var(--app-text);
}

/* Icônes : accent de la charte (ex-turquoise) */
.student-app__wizard-item-icon {
    color: var(--rsc-spot-text);
}

.student-app__wizard-item-icon {
    background: rgba(var(--rsc-spot-rgb), 0.15);
}

/* Fenêtres (choix de l'antenne et du cours…) : titre turquoise hérité de custom.css */
.modal .modal-title {
    color: var(--app-text);
}

/* ---------- Calendrier ---------- */

.student-app__calendar-today {
    background: var(--rsc-raised);
    color: var(--app-text);
}

.student-app__calendar-day {
    background: transparent;
    color: var(--app-muted);
    font-weight: 600;
}

.student-app__calendar-date {
    border: 1px solid var(--app-border);
    background: var(--rsc-night-deep);
    color: var(--app-text);
}

.student-app__calendar-date.is-today {
    border-color: var(--rsc-spot);
    color: var(--rsc-spot-text);
}

.student-app__calendar-date.is-selected {
    border-color: var(--rsc-spot);
    background: var(--rsc-spot);
    color: var(--rsc-spot-ink);
}

.student-app__calendar-dot,
.student-app__calendar-dot.course {
    background: var(--rsc-spot);
}

.student-app__calendar-date.is-selected .student-app__calendar-dots .student-app__calendar-dot {
    background: var(--rsc-spot-ink);
}

.student-app__calendar-item {
    background: var(--rsc-night-deep);
    color: var(--app-text);
}

.student-app__calendar-item.course {
    border-left-color: var(--rsc-spot);
}

.student-app__calendar-item-badge.course {
    background: rgba(var(--rsc-spot-rgb), 0.16);
    color: var(--rsc-spot-text);
}

.student-app__calendar-absence-btn {
    border: 1px solid var(--rsc-spot);
    background: transparent;
    color: var(--rsc-spot-text);
}

.student-app__calendar-cfa-personal,
.student-app__calendar-cfa-reservation {
    background: var(--rsc-night-deep);
}

/* ---------- Notifications, attestations ---------- */

.student-app__notification-link-btn {
    background: var(--rsc-spot);
    color: var(--rsc-spot-ink);
}

.student-app__notification-link-btn:hover,
.student-app__notification-link-btn:focus {
    background: var(--rsc-spot-hover);
    color: var(--rsc-spot-ink);
}

.student-app__notification-status,
.student-app__attestation-btn {
    color: var(--rsc-spot-text);
}

/* ---------- Divers accents ex-turquoise ---------- */

.student-app__dot.is-online,
.student-app__waiting-badge.is-assigned {
    background: var(--rsc-green);
}

.student-app__spinner,
.student-app__section-loading-symbol::after {
    border-top-color: var(--rsc-spot);
}

.student-app__student-switch-hint-icon,
.student-app-desktop__install-note a {
    color: var(--rsc-spot-text);
}

.student-app__selector-btn.is-active {
    border-color: var(--rsc-spot);
}

/* ---------- Détail d'un cours qui se déplie (toggleCardDetails dans la page) ---------- */

.student-app__lesson-toggle i,
.student-app__course-toggle i {
    display: inline-block;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), color 0.2s ease;
}

.student-app__lesson-card.is-open .student-app__lesson-toggle i,
.student-app__course-card.is-open .student-app__course-toggle i {
    transform: rotate(180deg);
    color: var(--rsc-spot-text);
}

.student-app__lesson-card.is-open,
.student-app__course-card.is-open {
    border-color: rgba(var(--rsc-spot-rgb), 0.55);
    box-shadow: 0 0 0 1px rgba(var(--rsc-spot-rgb), 0.2), 0 12px 28px rgba(0, 0, 0, 0.3);
}

/* ---------- Barre d'onglets : bleu nuit au lieu de blanc ---------- */

.student-app__nav {
    border-top: 1px solid var(--app-border);
    background: var(--rsc-night-deep);
}

.student-app__nav button {
    color: var(--app-muted);
    font-family: var(--rsc-text);
}

.student-app__nav button.active {
    color: var(--rsc-spot-text);
}

/* ---------- Page d'installation (ordinateur : cadre téléphone + QR code) ---------- */

.student-app-desktop__logo {
    width: 120px;
}

.student-app-desktop__title {
    font-family: var(--rsc-display);
    font-weight: 900;
    font-size: 2.6rem;
    line-height: 0.95;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    color: var(--app-text);
    background: none;
    -webkit-text-fill-color: currentColor;
}

.student-app-desktop__beta {
    border-color: rgba(var(--rsc-spot-rgb), 0.45);
    background: rgba(var(--rsc-spot-rgb), 0.14);
    color: var(--rsc-spot-text);
}

/* =====================================================================
 * Animations (app-motion.js ajoute les classes rsc-*). Tout est coupé
 * quand le téléphone demande moins d'animations (bloc en fin de fichier).
 * ===================================================================== */

/* ---------- Passage d'un onglet à l'autre : glisse dans le sens de la barre ---------- */

.student-app__fade.rsc-enter-right {
    animation: rscEnterRight 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.student-app__fade.rsc-enter-left {
    animation: rscEnterLeft 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes rscEnterRight {
    from { opacity: 0; transform: translateX(28px); }
    to { opacity: 1; transform: none; }
}

@keyframes rscEnterLeft {
    from { opacity: 0; transform: translateX(-28px); }
    to { opacity: 1; transform: none; }
}

/* ---------- Titres : allumage façon néon + petit VU-mètre ---------- */

.student-app__fade > .student-app__title {
    animation: rscNeonOn 0.9s ease-out both;
}

.student-app__fade > .student-app__title::after {
    content: "";
    display: inline-block;
    width: 17px;
    height: 0.62em;
    margin-left: 10px;
    background:
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 0 100% / 3px 40% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 7px 100% / 3px 90% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 14px 100% / 3px 60% no-repeat;
    animation: rscEq 0.9s ease-in-out 4 both;
}

@keyframes rscNeonOn {
    0% { opacity: 0; text-shadow: none; }
    12% { opacity: 1; text-shadow: 0 0 14px rgba(var(--rsc-spot-rgb), 0.7); }
    18% { opacity: 0.35; text-shadow: none; }
    28% { opacity: 1; text-shadow: 0 0 18px rgba(var(--rsc-spot-rgb), 0.8); }
    34% { opacity: 0.6; }
    100% { opacity: 1; text-shadow: 0 0 0 rgba(var(--rsc-spot-rgb), 0); }
}

@keyframes rscEq {
    0%, 100% { background-size: 3px 40%, 3px 90%, 3px 60%; }
    25% { background-size: 3px 95%, 3px 35%, 3px 80%; }
    50% { background-size: 3px 55%, 3px 100%, 3px 30%; }
    75% { background-size: 3px 85%, 3px 50%, 3px 100%; }
}

/* ---------- Cartes : arrivée en cascade, enfoncement au toucher ---------- */

.student-app__fade .student-app__lesson-card,
.student-app__fade .student-app__course-card,
.student-app__fade .student-app__event-card,
.student-app__fade .student-app__notification-card,
.student-app__fade .student-app__attestation-card,
.student-app__fade .student-app__calendar-item,
.student-app__fade .student-app__wizard-item {
    animation: rscCardIn 0.5s cubic-bezier(0.34, 1.4, 0.64, 1) both;
    transition: transform 0.15s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.student-app__fade :nth-child(2 of .student-app__lesson-card, .student-app__course-card, .student-app__event-card, .student-app__notification-card, .student-app__calendar-item, .student-app__wizard-item) { animation-delay: 0.06s; }
.student-app__fade :nth-child(3 of .student-app__lesson-card, .student-app__course-card, .student-app__event-card, .student-app__notification-card, .student-app__calendar-item, .student-app__wizard-item) { animation-delay: 0.12s; }
.student-app__fade :nth-child(4 of .student-app__lesson-card, .student-app__course-card, .student-app__event-card, .student-app__notification-card, .student-app__calendar-item, .student-app__wizard-item) { animation-delay: 0.18s; }
.student-app__fade :nth-child(5 of .student-app__lesson-card, .student-app__course-card, .student-app__event-card, .student-app__notification-card, .student-app__calendar-item, .student-app__wizard-item) { animation-delay: 0.24s; }
.student-app__fade :nth-child(n + 6 of .student-app__lesson-card, .student-app__course-card, .student-app__event-card, .student-app__notification-card, .student-app__calendar-item, .student-app__wizard-item) { animation-delay: 0.3s; }

@keyframes rscCardIn {
    from { opacity: 0; transform: translateY(22px) rotate(-1.2deg) scale(0.97); }
    to { opacity: 1; transform: none; }
}

.student-app__lesson-card:active,
.student-app__course-card:active,
.student-app__event-card:active,
.student-app__notification-card:active,
.student-app__wizard-item:active {
    transform: scale(0.985);
}

@media (hover: hover) and (pointer: fine) {
    .student-app__lesson-card:hover,
    .student-app__course-card:hover,
    .student-app__event-card:hover,
    .student-app__notification-card:hover {
        border-color: rgba(var(--rsc-spot-rgb), 0.45);
        box-shadow: 0 10px 26px rgba(0, 0, 0, 0.28);
    }
}

/* ---------- Barre d'onglets : spot jaune sous l'onglet actif, icône qui rebondit ---------- */

.student-app__nav button {
    transition: color 0.2s ease, transform 0.15s ease;
    -webkit-tap-highlight-color: transparent;
}

.student-app__nav button:active {
    transform: translateY(-4px) scale(0.9);
}

.student-app__nav button::before {
    content: "";
    position: absolute;
    top: -12px;
    left: 50%;
    width: 30px;
    height: 3px;
    margin-left: -15px;
    border-radius: 0 0 3px 3px;
    background: var(--rsc-spot);
    box-shadow: 0 0 14px 2px rgba(var(--rsc-spot-rgb), 0.55);
    opacity: 0;
    transform: scaleX(0);
    transition: opacity 0.2s ease, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.student-app__nav button.active::before {
    opacity: 1;
    transform: scaleX(1);
}

.student-app__nav button.rsc-tab-pop i {
    animation: rscTabPop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.student-app__nav #portal-tab-lessons.rsc-tab-pop i {
    animation: rscStrum 0.55s ease-in-out;
}

@keyframes rscTabPop {
    0% { transform: scale(1); }
    35% { transform: scale(1.35) translateY(-3px); }
    100% { transform: scale(1); }
}

@keyframes rscStrum {
    0%, 100% { transform: rotate(0); }
    20% { transform: rotate(-18deg) scale(1.2); }
    45% { transform: rotate(12deg) scale(1.2); }
    70% { transform: rotate(-6deg); }
}

/* Pastille des notifications non lues : onde qui pulse */
.portal-tab-badge.is-dot {
    background: var(--rsc-red);
}

.portal-tab-badge.is-dot::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--rsc-red);
    animation: rscPing 1.8s ease-out infinite;
}

@keyframes rscPing {
    0% { opacity: 0.9; transform: scale(1); }
    80%, 100% { opacity: 0; transform: scale(2.6); }
}

/* ---------- Boutons : enfoncement et reflet ---------- */

.student-app .btn {
    transition: transform 0.12s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.student-app .btn:active {
    transform: scale(0.96);
}

.student-app .btn-primary,
.student-app .btn-success {
    position: relative;
    overflow: hidden;
}

.student-app .btn-primary::after,
.student-app .btn-success::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: -60%;
    width: 40%;
    background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.55), transparent);
    transform: skewX(-18deg);
    pointer-events: none;
}

.student-app .btn-primary:hover::after,
.student-app .btn-primary:focus-visible::after,
.student-app .btn-success:hover::after {
    animation: rscShine 0.7s ease;
}

@keyframes rscShine {
    to { left: 130%; }
}

/* ---------- Calendrier : le jour choisi « saute » ---------- */

.student-app__calendar-date {
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.15s ease;
}

.student-app__calendar-date:active {
    transform: scale(0.9);
}

.student-app__calendar-date.is-selected {
    animation: rscTabPop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ---------- Chargement : VU-mètre jaune au lieu des anneaux turquoise ---------- */

.student-app__section-loading-symbol {
    width: 64px;
    height: 46px;
    transform: none;
    filter: none;
    background:
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 0 100% / 8px 30% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 14px 100% / 8px 70% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 28px 100% / 8px 100% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 42px 100% / 8px 50% no-repeat,
        linear-gradient(var(--rsc-spot), var(--rsc-spot)) 56px 100% / 8px 80% no-repeat;
    animation: rscLoaderEq 0.8s ease-in-out infinite;
}

.student-app__section-loading-symbol::before,
.student-app__section-loading-symbol::after {
    display: none;
}

.student-app__section-loading-symbol.is-stopped {
    animation: none;
}

@keyframes rscLoaderEq {
    0%, 100% { background-size: 8px 30%, 8px 70%, 8px 100%, 8px 50%, 8px 80%; }
    25% { background-size: 8px 90%, 8px 40%, 8px 60%, 8px 100%, 8px 35%; }
    50% { background-size: 8px 55%, 8px 100%, 8px 30%, 8px 65%, 8px 95%; }
    75% { background-size: 8px 100%, 8px 60%, 8px 85%, 8px 30%, 8px 55%; }
}

/* ---------- Fête : pluie de médiators (réinscription enregistrée) ---------- */

.rsc-confetti {
    position: fixed;
    inset: 0;
    z-index: 2000;
    overflow: hidden;
    pointer-events: none;
}

.rsc-confetti__pick {
    position: absolute;
    top: -40px;
    width: 18px;
    height: 18px;
    border-radius: 50% 50% 50% 12%;
    animation: rscPickFall var(--rsc-dur, 2.4s) cubic-bezier(0.3, 0.1, 0.6, 1) var(--rsc-delay, 0s) forwards;
}

@keyframes rscPickFall {
    0% { opacity: 1; transform: translate(0, 0) rotate(0); }
    85% { opacity: 1; }
    100% { opacity: 0; transform: translate(var(--rsc-drift, 0), 110vh) rotate(var(--rsc-spin, 540deg)); }
}

/* ---------- Moins d'animations demandé par le téléphone ---------- */

@media (prefers-reduced-motion: reduce) {
    .student-app__fade.rsc-enter-right,
    .student-app__fade.rsc-enter-left,
    .student-app__fade > .student-app__title,
    .student-app__fade > .student-app__title::after,
    .student-app__fade .student-app__lesson-card,
    .student-app__fade .student-app__course-card,
    .student-app__fade .student-app__event-card,
    .student-app__fade .student-app__notification-card,
    .student-app__fade .student-app__attestation-card,
    .student-app__fade .student-app__calendar-item,
    .student-app__fade .student-app__wizard-item,
    .student-app__nav button.rsc-tab-pop i,
    .portal-tab-badge.is-dot::after,
    .student-app__calendar-date.is-selected,
    .student-app__section-loading-symbol,
    .student-app .btn-primary::after,
    .student-app .btn-success::after {
        animation: none !important;
    }

    .student-app__lesson-toggle i,
    .student-app__course-toggle i {
        transition: none;
    }

    .rsc-confetti {
        display: none;
    }
}
