.face_discrete {
    position: relative;
}

.face_discrete > .choices {
    position: absolute;
    width: 20%;
    height: 100%;
    top: 0;
    right: 0;

    display: flex;
    flex-flow: column nowrap;
    justify-content: space-evenly;
    align-items: center;
    gap: 20px;
}

.face_discrete > .choices > * {
    flex: 0 0 auto;
    aspect-ratio: 1/1;
    width: 80px;
}

.centralized {
    display: flex;
    flex-flow: row nowrap;
    justify-content: space-evenly;
    align-items: center;
    gap: 20px;
}

.centralized > * {
    flex: 0 0 auto;
}

.circle {
    border-radius: 50%;
}

/* ===================== MCQ ===================== */

.mcq {
    width: 100%;
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    align-items: center;
    align-content: flex-start;
    gap: 10px;
}

.mcq > .choice {
    width: 45%;
    height: 50px;
    border-radius: 26px;
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
}

.mcq.long {
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: center;
}

.mcq.long > .choice {
    width: 80%;
    height: auto;
}

@media screen and (max-width: 650px) {
    .mcq {
        padding: 10px 0px;
        flex-flow: column nowrap;
        justify-content: flex-start;
        align-items: center;
    }

    .mcq > .choice {
        width: 80%;
        height: auto;
    }
}

/* ===================== RECORDER ===================== */

.audio-recorder {
    border-width: 0px;
    border-radius: 10px;
    padding: 20px;

    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 10px;
}

.audio-recorder .visualizer .material-symbols-outlined {
    font-size: 5rem;
}

.audio-recorder .material-symbols-outlined {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.audio-recorder .visualizer {
    border-radius: 10%;
    position: relative;
    width: 120px;
    aspect-ratio: 1/1;
}

.audio-recorder .visualizer.toggled .record {
    display: none;
}

.audio-recorder .visualizer:not(.toggled) .stop {
    display: none;
}

.audio-recorder .playback {
    flex: 1 1 auto;
    padding: 10px;
    display: flex;
    flex-flow: column nowrap;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
}

.audio-recorder .record-bar {
    height: 50px;
    width: 100%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: space-between;
    align-items: center;
}

.audio-recorder .record-bar span {
    font-size: 1.5rem;
    width: 200px;
}

.audio-recorder .record-bar .button {
    width: 50px;
    aspect-ratio: 1/1;
    position: relative;
}

.audio-recorder .record-bar .button .material-symbols-outlined {
    font-size: 2rem;
}

.audio-recorder audio {
    width: 100%;
}

@media screen and (max-width: 650px) {
    .audio-recorder .visualizer {
        width: 90px;
    }

    .audio-recorder .record-bar {
        height: 40px;
    }

    .audio-recorder .record-bar span {
        font-size: 1rem;
        width: 150px;
    }

    .audio-recorder .record-bar .button {
        width: 40px;
    }
}

/* ===================== CHARTS ===================== */

.line {
    transition: all 0.25s ease-in-out;
}

.line.hide {
    opacity: 0.1;
}

.line.text {
    font-weight: 500;
    fill: #97959a;
}

.star.content > path {
    filter: drop-shadow(1px 1px 2px #454545);
}

.star.annotation > text {
    fill: #454545;
    font-weight: 600;
}

.star.axis > path {
    fill: #eab7fc;
    stroke-width: 1px;
    stroke: #454545;
}

/* ===================== MASCOT ===================== */

.mascot {
    /* border: solid 1px black; */
    position: relative;
}

.mascot > * {
    /* border: solid 1px black; */
    position: absolute;
    transform-origin: top left;
    transform: translate(-50%, -50%);
    transition: all 2s cubic-bezier(0.51, 0.225, 0.145, 1.21), opacity 0.2s ease-in-out;
}

.mascot-enter {
    /* animation: reveal ease 1s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards; */
}
/* enter animations */

@keyframes reveal {
    0% {
        opacity: 0%;
    }
    100% {
        opacity: 100%;
    }
}

.mascot .hide {
    opacity: 0%;
}

/* ===================== PROFILE ===================== */

.user-image {
    aspect-ratio: 1/1;
    object-fit: cover;
    border-radius: 999px;
}

/* ===================== LOADER ===================== */

.loader {
    width: 100%;
    height: 100%;
    display: flex;
    flex-flow: column nowrap;
    justify-content: center;
    align-items: center;
}

.loader > span {
    width: 50%;
    aspect-ratio: 1/1;
    border-radius: 50%;
    display: inline-block;
    border-top: 4px solid #d0102c;
    border-right: 4px solid transparent;
    box-sizing: border-box;
    animation: rotation 1s linear infinite;
}
.loader > span::after {
    content: "";
    box-sizing: border-box;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    aspect-ratio: 1/1;
    border-radius: 50%;
    border-left: 4px solid #454545;
    border-bottom: 4px solid transparent;
    animation: rotation 0.5s linear infinite reverse;
}
@keyframes rotation {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* ===================== Tooltips ===================== */

.tooltip {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 8px;
    border-radius: 4px;
    font-size: 12px;
}

/* ===================== CALENDAR ===================== */

.calendar .month {
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 0.5rem;
}

.calendar .month > span {
    width: 100%;
    text-align: center;
}

.calendar .label {
    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 0.5rem;
}

.calendar .label > .rect {
    width: 1rem;
    height: 1rem;
    border-radius: 2px;
}

/* ===================== Health bars ===================== */

.health-bar {
    width: 100%;
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 5px;
}

.health-bar > .title {
    width: 100%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 5px;
}

.health-bar > .title > * {
    padding: 0;
    margin: 0;
}

.health-bar > .bar {
    position: relative;
    width: 100%;
    height: 15px;
}

.health-bar > .bar > * {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: 999px;
}

.health-bar > .axis {
    width: 100%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: space-between;
    align-items: center;
}

.health-bar > .suggestion {
    width: 100%;
    display: flex;
    flex-flow: column nowrap;
    justify-content: center;
    align-items: center;
}

.health-bar > .suggestion > * {
    width: 100%;
    margin-top: 1rem;
    text-align: center;
}

.health-bar .more {
    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-end;
    align-items: center;
}

/* ===================== Carousel ===================== */

.carousel {
    padding: 1rem 0.5rem;
    width: 100%;

    overflow-x: scroll;
    overflow-y: hidden;
}

.carousel > div {
    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 1rem;
}

.carousel .item {
    min-width: 3rem;
    padding: 1rem 0.5rem;
    border-radius: 999px;
    display: flex;
    flex-flow: column nowrap;
    justify-content: center;
    align-items: center;
    transition: all 0.25s ease-in-out;
}

.carousel .item:hover {
    transform: scale(1.4);
    margin: 0 0.5rem;
}
