@charset "UTF-8";
/* Minigames module: catalog, game page and module blocks. Works with any frontend template; dark mode follows data-bs-theme. */

:root {
    --mng-paper: #f8f9f3;
    --mng-ink: #233b31;
    --mng-muted: #626e60;
    --mng-green: #28634c;
    --mng-green-dark: #194d39;
    --mng-coral: #d96045;
    --mng-line: #e0e5db;
    --mng-surface: #fffefa;
    --mng-soft: #e9eee2;
    --mng-heading: "Avenir Next", "Trebuchet MS", sans-serif;
}

[data-bs-theme=dark] {
    --mng-paper: #111915;
    --mng-ink: #edf5eb;
    --mng-muted: #a9b8ad;
    --mng-green: #8dcaa7;
    --mng-green-dark: #b9e2c9;
    --mng-coral: #f18468;
    --mng-line: #314139;
    --mng-surface: #17221c;
    --mng-soft: #24332b;
}

.mng-app,
.mng-hero,
.mng-extras {
    color: var(--mng-ink);
}

.mng-app a,
.mng-hero a,
.mng-extras a,
.mng-saved-link {
    color: inherit;
    text-decoration: none;
}

.mng-app h1,
.mng-app h2,
.mng-app h3,
.mng-hero h2,
.mng-extras h2 {
    margin: 0;
    color: inherit;
    font-family: var(--mng-heading);
    line-height: 1.16;
    letter-spacing: -.035em;
}

.mng-app p,
.mng-hero p,
.mng-extras p {
    margin: 0;
}

.mng-app img,
.mng-hero img {
    display: block;
    width: 100%;
    height: auto;
}

.mng-app button,
.mng-hero button {
    color: inherit;
}

.mng-icon {
    width: 19px;
    height: 19px;
    flex: none;
    vertical-align: middle;
}

.mng-eyebrow {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: 1.8px;
}

/* Buttons and links */
.mng-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    min-height: 48px;
    padding: 14px 21px;
    border: 0;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 650;
}

.mng-app .mng-button--primary,
.mng-hero .mng-button--primary {
    background: #28634c;
    color: #fff;
}

.mng-app .mng-button--primary:hover,
.mng-hero .mng-button--primary:hover {
    background: #194d39;
    color: #fff;
}

.mng-button--secondary {
    border: 1px solid #cbd7c6;
    background: var(--mng-soft);
}

.mng-text-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    padding: 10px 0;
    border: 0;
    background: none;
    font-size: 12px;
    font-weight: 600;
}

.mng-text-button:hover {
    color: var(--mng-coral) !important;
}

.mng-text-link {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    font-weight: 650;
}

/* Hero block */
.mng-hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 65px;
    align-items: center;
    padding: 32px 0 40px;
}

.mng-hero__star {
    color: var(--mng-coral);
    font-size: 22px;
    line-height: 1;
}

.mng-hero .mng-hero__title {
    margin: 23px 0 24px;
    font-size: clamp(45px, 4.7vw, 66px);
    font-weight: 800;
    line-height: 1.075;
    letter-spacing: -3.5px;
}

.mng-hero__title > span {
    position: relative;
    display: inline-block;
    color: var(--mng-green);
}

.mng-hero__title > span > svg {
    position: absolute;
    left: 0;
    bottom: -9px;
    width: 100%;
    height: 16px;
    color: #bad09f;
}

.mng-hero .mng-hero__lead {
    max-width: 440px;
    color: var(--mng-muted);
    font-size: 16px;
    line-height: 1.8;
}

.mng-hero__actions {
    display: flex;
    align-items: center;
    gap: 24px;
    margin-top: 29px;
}

.mng-hero__promises {
    display: flex;
    gap: 21px;
    margin-top: 25px;
    color: var(--mng-muted);
    font-size: 11px;
}

.mng-hero__feature {
    position: relative;
    height: 356px;
    border-radius: 17px;
    isolation: isolate;
    background: #183e38;
    box-shadow: 0 10px 0 -6px #e3e7dc;
    transition: transform .2s;
}

.mng-hero__feature:hover {
    transform: translateY(-4px);
}

.mng-hero__feature > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 17px;
}

.mng-hero__feature::after {
    content: "";
    position: absolute;
    inset: 35% 0 0;
    z-index: 0;
    border-radius: 0 0 17px 17px;
    background: linear-gradient(transparent, #123b32eb);
}

.mng-hero__kicker {
    position: absolute;
    top: 25px;
    left: 25px;
    padding: 5px 10px;
    border: 1px solid #718f77;
    border-radius: 5px;
    color: #e7eecb;
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 1.7px;
}

.mng-hero__bottom {
    position: absolute;
    left: 29px;
    right: 29px;
    bottom: 29px;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.mng-hero__time {
    display: block;
    margin-bottom: 6px;
    color: #c3d4b6;
    font-size: 11px;
}

.mng-hero__bottom strong {
    display: block;
    color: #fff9df;
    font-family: var(--mng-heading);
    font-size: 28px;
    font-weight: 650;
    letter-spacing: -.8px;
}

.mng-hero__play {
    display: grid;
    place-items: center;
    width: 50px;
    height: 50px;
    padding-left: 3px;
    border-radius: 50%;
    background: #e4eeaf;
    color: #234a38;
    font-size: 17px;
}

.mng-hero__note {
    position: absolute;
    right: 12px;
    bottom: -28px;
    color: #75846b;
    font-family: Georgia, serif;
    font-size: 13px;
    font-style: italic;
    transform: rotate(-4deg);
}

.mng-hero__note > span {
    display: inline-block;
    margin-left: 8px;
    font-size: 29px;
    vertical-align: middle;
}

/* Catalog */
.mng-catalog {
    padding-bottom: 12px;
}

.mng-section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 24px;
}

.mng-heading-line {
    display: flex;
    align-items: center;
    gap: 15px;
}

.mng-app .mng-catalog__title,
.mng-app .mng-section-heading h2 {
    font-size: 29px;
    font-weight: 750;
}

.mng-count {
    padding: 3px 9px;
    border: 1px solid var(--mng-line);
    border-radius: 6px;
    background: var(--mng-soft);
    color: var(--mng-muted);
    font-size: 10px;
    white-space: nowrap;
}

.mng-app .mng-catalog__description {
    margin: -6px 0 22px;
    color: var(--mng-muted);
}

.mng-search {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 266px;
    margin: 0;
    padding: 10px 13px;
    border: 1px solid var(--mng-line);
    border-radius: 8px;
    background: var(--mng-surface);
    color: #849080;
}

.mng-search input {
    width: 100%;
    min-width: 0;
    border: 0;
    outline: none;
    background: transparent;
    color: var(--mng-ink);
    font-size: 11px;
}

.mng-search kbd {
    padding: 0 5px;
    border: 1px solid var(--mng-line);
    border-radius: 3px;
    background: none;
    color: inherit;
    font-family: inherit;
    font-size: 10px;
    line-height: 1.3;
}

.mng-search:focus-within {
    border-color: var(--mng-green);
    box-shadow: 0 0 0 2px #28634c20;
}

.mng-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 28px;
}

.mng-filter {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 9px 15px;
    border: 1px solid var(--mng-line);
    border-radius: 7px;
    color: var(--mng-muted) !important;
    font-size: 11px;
    font-weight: 550;
}

.mng-filter:hover {
    border-color: #a6b49a;
    background: var(--mng-soft);
}

.mng-filter.is-active {
    border-color: #c7d3bd;
    background: #e6edde;
    color: #36593b !important;
}

.mng-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 27px 24px;
}

.mng-card {
    overflow: hidden;
    border: 1px solid var(--mng-line);
    border-radius: 12px;
    background: var(--mng-surface);
    transition: transform .18s, box-shadow .18s;
}

.mng-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 18px #233b3108;
}

.mng-card__art {
    position: relative;
}

.mng-card__art > a {
    display: block;
    overflow: hidden;
}

.mng-card__art img {
    aspect-ratio: 600 / 315;
    object-fit: cover;
    transition: transform .35s;
}

.mng-card:hover img {
    transform: scale(1.025);
}

.mng-card__label {
    position: absolute;
    left: 16px;
    bottom: 13px;
    padding: 4px 9px;
    border-radius: 4px;
    background: #fffdf0e8;
    color: #475946;
    font-size: 9px;
    font-weight: 600;
    pointer-events: none;
    backdrop-filter: blur(5px);
}

.mng-favorite {
    position: absolute;
    top: 12px;
    right: 12px;
    display: grid;
    place-items: center;
    width: 35px;
    height: 35px;
    border: 1px solid #fff7;
    border-radius: 50%;
    background: #fffef1d9;
    color: #64715f !important;
}

.mng-favorite .mng-icon {
    width: 16px;
    height: 16px;
}

.mng-favorite:hover {
    background: #fffef5;
}

.mng-favorite[aria-pressed=true] {
    color: var(--mng-coral) !important;
}

.mng-favorite[aria-pressed=true] .mng-icon {
    fill: #d9604520;
}

.mng-card__content {
    padding: 18px 18px 16px;
}

.mng-card__title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.mng-app .mng-card__title h3 {
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -.5px;
}

.mng-card__title > span {
    display: grid;
    place-items: center;
    flex: none;
    width: 24px;
    height: 24px;
    border: 1px solid var(--mng-line);
    border-radius: 50%;
    color: #5d755c;
}

.mng-card__title .mng-icon {
    width: 13px;
    height: 13px;
}

.mng-app .mng-card__content p {
    margin-top: 7px;
    color: var(--mng-muted);
    font-size: 12px;
}

.mng-card__meta {
    display: flex;
    gap: 17px;
    margin-top: 15px;
    color: var(--mng-muted);
    font-size: 11px;
}

.mng-card__meta > span {
    display: flex;
    align-items: center;
    gap: 5px;
}

.mng-card__meta .mng-icon {
    width: 13px;
    height: 13px;
}

.mng-empty {
    padding: 45px;
    border: 1px dashed #bcc9b0;
    border-radius: 12px;
    text-align: center;
}

.mng-app .mng-empty p {
    margin: 14px 0 24px;
    color: var(--mng-muted);
}

.mng-pagination {
    display: flex;
    justify-content: center;
    gap: .5rem;
    margin: 2rem 0 0;
}

.mng-pagination a {
    min-width: 2.6rem;
    justify-content: center;
}

.mng-local-data {
    margin-top: 32px;
    padding: 22px 24px;
    border: 1px solid var(--mng-line);
    border-radius: 12px;
    background: var(--mng-surface);
}

.mng-app .mng-local-data p {
    margin-bottom: 14px;
    color: var(--mng-muted);
    font-size: 13px;
}

.mng-app .mng-local-data__status {
    margin: 12px 0 0 !important;
}

.mng-notfound {
    padding: 40px 0;
}

.mng-notfound h1 {
    margin-bottom: 16px !important;
    font-size: 40px;
}

.mng-toast {
    position: fixed;
    left: 50%;
    bottom: 24px;
    z-index: 1080;
    max-width: 90vw;
    padding: 12px 22px;
    border-radius: 8px;
    background: #233b31;
    color: #fff;
    font-size: 13px;
    text-align: center;
    box-shadow: 0 8px 30px #0002;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, 15px);
    transition: .2s;
}

.mng-toast.is-visible {
    opacity: 1;
    transform: translate(-50%, 0);
}

/* Extras block: daily challenge and games together */
.mng-extras {
    display: grid;
    grid-template-columns: 1.7fr 1fr;
    gap: 24px;
    margin-top: 24px;
}

.mng-extras--single {
    grid-template-columns: 1fr;
}

.mng-daily {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    overflow: hidden;
    padding: 31px 33px;
    border: 1px solid #e9dfb6;
    border-radius: 13px;
    background: #f2e8bd;
}

.mng-daily .mng-eyebrow {
    color: #827441;
    font-size: 9px;
    letter-spacing: 1.5px;
}

.mng-extras h2 {
    font-weight: 750;
}

.mng-extras .mng-daily h2 {
    margin: 16px 0 12px;
    font-size: 29px;
    letter-spacing: -.9px;
}

.mng-extras .mng-daily p {
    max-width: 255px;
    color: #6f6747;
    font-size: 11px;
}

.mng-daily .mng-text-link {
    margin-top: 20px;
}

.mng-daily:hover .mng-text-link,
.mng-together a:hover {
    color: var(--mng-coral) !important;
}

.mng-daily__art {
    position: relative;
    flex: none;
    width: 180px;
    height: 145px;
    transform: translateX(15px);
}

.mng-daily__art > span {
    position: absolute;
    top: 10px;
    left: 0;
    display: grid;
    place-items: center;
    width: 95px;
    height: 127px;
    border: 1px solid #d6cca5;
    border-radius: 9px;
    background: #fffdf2;
    box-shadow: 3px 5px #c5b98b;
    color: #dc8b47;
    font-size: 67px;
    transform: rotate(-15deg);
}

.mng-daily__art > span + span {
    top: 0;
    left: 65px;
    background: #69785b;
    color: #f6ecc2;
    font-size: 62px;
    transform: rotate(16deg);
}

.mng-together {
    position: relative;
    padding: 28px 30px;
    border: 1px solid var(--mng-line);
    border-radius: 13px;
    background: #edf0e5;
}

.mng-extras .mng-together h2 {
    margin-bottom: 12px;
    font-size: 27px;
}

.mng-extras .mng-together p {
    color: var(--mng-muted);
    font-size: 12px;
}

.mng-together .mng-text-link {
    margin-top: 23px;
}

.mng-together__people {
    position: absolute;
    top: 34px;
    right: 23px;
    color: #7c9066;
    font-family: Georgia, serif;
    font-size: 43px;
    letter-spacing: -9px;
    transform: rotate(8deg);
}

/* Favorites link block */
.mng-saved-link {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--mng-ink) !important;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
}

.mng-saved-link b {
    display: grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--mng-soft);
    font-size: 11px;
}

/* Game page */
.mng-breadcrumbs {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    padding: 0 0 24px;
    color: var(--mng-muted);
    font-size: 11px;
}

.mng-breadcrumbs > a:hover {
    color: var(--mng-green) !important;
}

.mng-game-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 25px;
    margin: 13px 0 31px;
}

.mng-app .mng-game-heading h1 {
    margin: 12px 0;
    font-size: 44px;
    font-weight: 750;
}

.mng-app .mng-game-heading p {
    max-width: 700px;
    color: var(--mng-muted);
    font-size: 14px;
}

.mng-favorite--large {
    position: static;
    flex: none;
    width: 45px;
    height: 45px;
    border: 1px solid var(--mng-line);
    background: var(--mng-surface);
}

.mng-favorite--large .mng-icon {
    width: 21px;
    height: 21px;
}

.mng-game-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 35px;
    align-items: start;
}

.mng-game-shell {
    overflow: hidden;
    min-width: 0;
    border: 1px solid var(--mng-line);
    border-radius: 15px;
    background: #fffefa;
}

.mng-frame {
    display: block;
    width: 100%;
    height: 560px;
    border: 0;
    background: #fffefa;
}

.mng-game-message {
    margin: 0;
    padding: 30px 22px;
    text-align: center;
}

.mng-instructions {
    padding: 25px 5px;
}

.mng-instructions .mng-eyebrow {
    font-size: 9px;
}

.mng-app .mng-instructions h2 {
    margin: 17px 0 22px;
    font-size: 25px;
    font-weight: 750;
}

.mng-instructions__text {
    color: var(--mng-muted);
    font-size: 13px;
    line-height: 1.8;
}

.mng-instructions__promise {
    margin-top: 24px;
    color: var(--mng-green);
    font-size: 11px;
}

.mng-more {
    margin: 52px 0 24px;
}

@media (min-width: 1440px) {
    .mng-hero {
        gap: 85px;
    }

    .mng-hero__feature {
        height: 370px;
    }
}

@media (max-width: 1100px) {
    .mng-hero {
        gap: 30px;
    }

    .mng-hero .mng-hero__title {
        font-size: 55px;
        letter-spacing: -2.5px;
    }

    .mng-hero__actions {
        gap: 14px;
    }

    .mng-hero__feature {
        height: 335px;
    }

    .mng-grid {
        gap: 20px;
    }

    .mng-app .mng-card__title h3 {
        font-size: 17px;
    }

    .mng-daily {
        padding: 26px;
    }

    .mng-daily__art {
        width: 135px;
        transform: scale(.8);
        transform-origin: left center;
    }

    .mng-together__people {
        display: none;
    }

    .mng-game-layout {
        grid-template-columns: minmax(0, 1fr) 260px;
        gap: 25px;
    }
}

@media (max-width: 800px) {
    .mng-hero {
        grid-template-columns: 1fr;
        gap: 35px;
        padding-top: 16px;
    }

    .mng-hero .mng-hero__title {
        font-size: 62px;
    }

    .mng-hero__feature {
        height: 340px;
    }

    .mng-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 22px;
    }

    .mng-app .mng-card__title h3 {
        font-size: 20px;
    }

    .mng-extras {
        grid-template-columns: 1fr 1fr;
        gap: 20px;
    }

    .mng-daily {
        padding: 25px;
    }

    .mng-daily__art {
        display: none;
    }

    .mng-extras .mng-daily h2 {
        font-size: 26px;
    }

    .mng-together {
        padding: 25px;
    }

    .mng-saved-link > span {
        display: none;
    }

    .mng-game-layout {
        grid-template-columns: 1fr;
    }

    .mng-instructions {
        padding: 8px;
    }

    .mng-more .mng-grid > article:last-child {
        display: none;
    }

    .mng-app .mng-game-heading h1 {
        font-size: 38px;
    }
}

@media (max-width: 540px) {
    .mng-hero {
        gap: 29px;
    }

    .mng-hero .mng-hero__title {
        margin: 22px 0;
        font-size: clamp(34px, 10.4vw, 44px);
        letter-spacing: -2px;
        line-height: 1.14;
    }

    .mng-hero .mng-hero__lead {
        font-size: 14px;
    }

    .mng-hero__actions {
        gap: 20px;
        margin-top: 25px;
    }

    .mng-hero__actions .mng-button {
        gap: 12px;
        padding: 12px 14px;
        font-size: 12px;
    }

    .mng-hero__promises {
        gap: 18px;
        margin-top: 19px;
        font-size: 10px;
    }

    .mng-hero__feature {
        height: 260px;
    }

    .mng-hero__kicker {
        top: 20px;
        left: 20px;
        font-size: 8px;
    }

    .mng-hero__bottom {
        left: 22px;
        right: 22px;
        bottom: 22px;
    }

    .mng-hero__bottom strong {
        font-size: 26px;
    }

    .mng-hero__play {
        width: 44px;
        height: 44px;
    }

    .mng-section-heading {
        flex-wrap: wrap;
        gap: 18px;
        margin-bottom: 20px;
    }

    .mng-app .mng-catalog__title,
    .mng-app .mng-section-heading h2 {
        font-size: 26px;
    }

    .mng-search {
        width: 100%;
        padding: 12px;
    }

    .mng-search input {
        font-size: 12px;
    }

    .mng-filters {
        gap: 8px;
        margin-bottom: 23px;
    }

    .mng-filter {
        gap: 6px;
        min-height: 39px;
        padding: 9px 10px;
        font-size: 10px;
    }

    .mng-grid {
        grid-template-columns: 1fr;
        gap: 23px;
    }

    .mng-card__art img {
        aspect-ratio: 600 / 295;
    }

    .mng-card__content {
        padding: 19px 20px;
    }

    .mng-app .mng-card__title h3 {
        font-size: 22px;
    }

    .mng-favorite {
        width: 39px;
        height: 39px;
    }

    .mng-extras {
        grid-template-columns: 1fr;
    }

    .mng-daily {
        padding: 28px 25px;
    }

    .mng-daily__art {
        display: block;
        width: 100px;
        margin-right: 18px;
        transform: scale(.72);
        transform-origin: left center;
    }

    .mng-together__people {
        display: block;
        right: 32px;
    }

    .mng-saved-link b {
        display: none;
    }

    .mng-game-heading {
        align-items: flex-start;
        margin-top: 7px;
    }

    .mng-app .mng-game-heading h1 {
        font-size: 34px;
    }

    .mng-app .mng-game-heading p {
        font-size: 13px;
    }

    .mng-game-layout {
        gap: 20px;
    }

    .mng-frame {
        height: 550px;
    }

    .mng-more .mng-grid > article:last-child {
        display: block;
    }
}

@media (max-width: 370px) {
    .mng-hero__actions {
        gap: 12px;
    }

    .mng-hero__actions .mng-button {
        padding: 12px 10px;
        font-size: 11px;
    }

    .mng-hero__promises {
        gap: 12px;
    }

    .mng-daily__art {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mng-app *,
    .mng-hero *,
    .mng-extras * {
        transition: none !important;
        animation: none !important;
    }
}

/* Dark theme. Games keep their own look inside the player frame. */
[data-bs-theme=dark] .mng-filter.is-active,
[data-bs-theme=dark] .mng-button--secondary {
    border-color: #43584c;
    background: #26372e;
    color: #d8e8dc !important;
}

[data-bs-theme=dark] .mng-filter:hover {
    border-color: #587061;
    background: #213128;
}

[data-bs-theme=dark] .mng-card:hover {
    box-shadow: 0 10px 24px #0005;
}

[data-bs-theme=dark] .mng-card__label {
    background: #18231fe8;
    color: #dce8df;
}

[data-bs-theme=dark] .mng-favorite {
    border-color: #6d8076;
    background: #1a2825e8;
    color: #d4dfd7 !important;
}

[data-bs-theme=dark] .mng-favorite[aria-pressed=true] {
    color: var(--mng-coral) !important;
}

[data-bs-theme=dark] .mng-daily {
    border-color: #51492c;
    background: #39331f;
}

[data-bs-theme=dark] .mng-daily .mng-eyebrow,
[data-bs-theme=dark] .mng-extras .mng-daily p {
    color: #d7c994;
}

[data-bs-theme=dark] .mng-daily__art > span {
    border-color: #615b3d;
    background: #2b2a21;
    box-shadow: 3px 5px #17170f;
}

[data-bs-theme=dark] .mng-daily__art > span + span {
    background: #435142;
}

[data-bs-theme=dark] .mng-together {
    border-color: #32463a;
    background: #1b2922;
}

[data-bs-theme=dark] .mng-hero__feature {
    box-shadow: 0 10px 0 -6px #26332c;
}

[data-bs-theme=dark] .mng-empty {
    border-color: #46594e;
}
