/* Edulin Games — layout v17 (loads last).
   1. One top bar on the home page and in every game: Home, music, sound. Nothing else.
   2. One left sidebar on the home page: logo, who is playing, search, categories, class,
      level, motion and language. On phones it is a drawer opened by the Menu button.
   3. The main page is the hero and the games; grown-up links live in the footer only. */

:root { --banner-h: 56px; --side-w: 268px; }

/* ════════ 1 · Top bar ════════ */
#top-banner {
    position: fixed; top: 0; left: 0; right: 0; z-index: 100000;
    height: calc(var(--banner-h) + env(safe-area-inset-top));
    padding: env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left));
    display: grid; grid-template-columns: minmax(44px, 1fr) auto minmax(44px, 1fr); align-items: center; gap: 8px;
    box-sizing: border-box;
    background: #fffdf9 !important; border-bottom: 1px solid var(--pastel-line, #e5dff3) !important;
    box-shadow: 0 6px 18px rgba(78, 61, 126, .08);
}
#top-banner .home-btn { grid-column: 1; justify-self: start; min-height: 40px; }
#top-banner > #music-ctrl.is-docked {
    position: static !important; grid-column: 2; justify-self: center; transform: none;
    background: #fff !important; box-shadow: none !important; border: 1px solid var(--pastel-line, #e5dff3) !important;
    min-height: 44px; height: 44px; padding: 1px 8px;
}
#top-banner > #music-ctrl.is-docked button { color: var(--pastel-violet, #5b2ee6) !important; min-width: 40px; min-height: 40px; }
@media (min-width: 640px) {
    #top-banner #music-name {
        display: inline-block !important; color: var(--pastel-muted, #5d5680) !important;
        max-width: 190px; font-size: .74rem; padding: 0 2px;
    }
}
@media (max-width: 420px) { #top-banner .home-label { display: none; } }
#profile-dialog { z-index: 100020 !important; }

/* ════════ 2 · Sidebar ════════ */
.pastel-nav {
    top: calc(var(--banner-h) + env(safe-area-inset-top)) !important; bottom: 0 !important; left: 0 !important; right: auto !important;
    inset: calc(var(--banner-h) + env(safe-area-inset-top)) auto 0 0 !important;
    width: var(--side-w) !important; height: auto !important;
    padding: 16px 14px calc(14px + env(safe-area-inset-bottom)) !important;
    display: flex !important; flex-direction: column !important; gap: 12px !important;
    overflow: hidden; box-sizing: border-box; z-index: 120;
    border: 0 !important;
}
.pastel-brand { display: flex !important; align-items: center; justify-content: flex-start; gap: 12px; padding: 0 4px; }
.pastel-brand strong { font-size: 24px !important; }
.pastel-nav .edustar-mark { width: 48px !important; height: 48px !important; flex: 0 0 auto; }

/* who is playing / log in — straight after the logo */
.pastel-profile {
    margin-top: 0 !important; flex: 0 0 auto; min-height: 56px; padding: 8px 10px !important;
    border-radius: 16px !important; background: rgba(255, 255, 255, .16) !important; border: 1px solid rgba(255, 255, 255, .28) !important;
}
.pastel-profile:hover, .pastel-profile:focus-visible { background: rgba(255, 255, 255, .26) !important; }
.pastel-profile b { font-size: 14px !important; } .pastel-profile small { font-size: 11.5px !important; }

.side-scroll {
    flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
    display: flex; flex-direction: column; gap: 14px; padding: 2px 3px 6px 0;
    scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .4) transparent;
}
.pastel-nav .game-search-wrap {
    display: flex !important; align-items: center; gap: 8px; width: 100%; min-height: 46px !important; padding: 0 12px !important;
    border-radius: 14px !important; background: #fff !important; border: 0 !important; box-shadow: 0 3px 0 rgba(0, 0, 0, .12);
}
.pastel-nav .game-search-wrap .material-symbols-rounded { color: var(--pastel-violet, #5b2ee6); font-size: 24px; }
.pastel-nav #game-search { flex: 1; min-width: 0; min-height: 42px; border: 0 !important; outline: 0; background: transparent !important; color: #1d1640 !important; font-size: 16px; }
.pastel-nav .pastel-nav-links { display: grid !important; grid-template-columns: 1fr !important; gap: 6px !important; height: auto !important; }
.pastel-nav .pastel-nav-btn {
    min-height: 44px !important; padding: 8px 12px !important; border-radius: 13px !important; display: flex !important; flex-direction: row !important;
    align-items: center; justify-content: flex-start !important; gap: 12px !important; font-size: 15px !important; text-align: left;
}
.pastel-nav .pastel-nav-btn .material-symbols-rounded { font-size: 24px !important; }

.side-block { display: grid; gap: 12px; }
.side-title, .pastel-nav .level-filters-label {
    margin: 0; color: #d9d0ff; font: 800 .74rem 'Outfit', sans-serif; text-transform: uppercase; letter-spacing: .08em;
}
.pastel-nav .category-filters { display: grid !important; grid-template-columns: 1fr !important; gap: 6px !important; padding: 0 !important; justify-content: stretch !important; }
.pastel-nav .category-btn, .pastel-nav .level-btn, .pastel-nav .class-chip {
    background: rgba(255, 255, 255, .13) !important; color: #fff !important; border: 1px solid rgba(255, 255, 255, .22) !important;
    box-shadow: none !important; cursor: pointer;
}
.pastel-nav .category-btn {
    display: flex !important; align-items: center; justify-content: flex-start; gap: 10px !important; width: 100%;
    min-height: 42px !important; padding: 7px 12px !important; border-radius: 13px !important; font: 700 14px 'Outfit', sans-serif !important; text-align: left;
}
.pastel-nav .category-btn .material-symbols-rounded { font-size: 21px !important; }
.pastel-nav .category-btn:hover, .pastel-nav .level-btn:hover, .pastel-nav .class-chip:hover { background: rgba(255, 255, 255, .24) !important; }
.pastel-nav .category-btn.active, .pastel-nav .level-btn.active, .pastel-nav .class-chip.active {
    background: var(--v-sun, #ffc21a) !important; border-color: var(--v-sun, #ffc21a) !important; color: #3a2600 !important;
}
.pastel-nav .level-btn.lvl-easy.active, .pastel-nav .level-btn.lvl-challenging.active { color: #3a2600 !important; background: var(--v-sun, #ffc21a) !important; }
.pastel-nav .motion-setting { justify-content: center !important; }
.pastel-nav .motion-setting[aria-pressed="true"] { background: rgba(255, 255, 255, .3) !important; color: #fff !important; }

.pastel-nav .class-filters { display: grid; gap: 6px; }
.pastel-nav .class-chips { display: grid !important; grid-template-columns: repeat(4, 1fr); gap: 6px; overflow: visible !important; padding: 0 !important; white-space: normal; }
.pastel-nav .class-chip { min-height: 36px !important; padding: 4px 2px !important; border-radius: 11px !important; font: 700 12.5px 'Outfit', sans-serif !important; text-align: center; }
.pastel-nav .class-chips .class-chip:first-child { grid-column: 1 / -1; }
.pastel-nav .level-filters { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.pastel-nav .level-filters .level-filters-label { grid-column: 1 / -1; }
.pastel-nav .level-btn { min-height: 38px !important; padding: 6px 4px !important; border-radius: 11px !important; font: 700 13px 'Outfit', sans-serif !important; }
.pastel-nav .filter-status { margin: 0; color: #d9d0ff; font-size: .78rem; }

.side-lang {
    display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 4px 12px; border-radius: 14px;
    background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .28); color: #fff; margin-top: auto;
}
.side-lang .material-symbols-rounded { font-size: 22px; }
.side-lang #lang-select {
    flex: 1; min-width: 0; min-height: 40px; background: transparent !important; border: 0 !important; outline: 0; color: #fff !important;
    font: 800 14px 'Outfit', sans-serif; cursor: pointer;
}
.side-lang #lang-select option { background: #fff !important; color: #1d1640 !important; }

/* ════════ 3 · The main page ════════ */
#home {
    padding: calc(var(--banner-h) + env(safe-area-inset-top) + 22px) 28px 64px calc(var(--side-w) + 28px) !important;
    min-height: 100dvh;
}
.home-topbar, .game-discovery, .show-more { display: none !important; }
.menu-section-label { top: calc(var(--banner-h) + env(safe-area-inset-top)) !important; position: sticky; z-index: 80; background: var(--pastel-cream, #fbf8f1); }
/* every game is listed: nothing is hidden behind a preview any more */
.game-card.is-extra { display: grid !important; }
.menu[hidden] { display: none !important; }

#side-toggle, #side-scrim { display: none; }

@media (max-width: 1100px) {
    :root { --side-w: 236px; }
    .pastel-brand strong { font-size: 21px !important; }
}

/* ════════ Phones: the sidebar becomes a drawer ════════ */
@media (max-width: 760px) {
    body { padding-bottom: 0 !important; }
    #home { padding: calc(var(--banner-h) + env(safe-area-inset-top) + 14px) 14px calc(96px + env(safe-area-inset-bottom)) 14px !important; }
    .pastel-nav {
        width: min(88vw, 330px) !important; transform: translateX(-105%); transition: transform .22s ease;
        z-index: 100010; box-shadow: none;
    }
    body.side-open .pastel-nav { transform: none; box-shadow: 10px 0 34px rgba(30, 10, 90, .45); }
    #side-scrim { position: fixed; inset: calc(var(--banner-h) + env(safe-area-inset-top)) 0 0 0; z-index: 100005; background: rgba(25, 12, 60, .5); }
    #side-scrim:not([hidden]) { display: block; }
    #side-toggle {
        display: flex; align-items: center; gap: 8px; position: fixed; z-index: 100006;
        left: max(14px, env(safe-area-inset-left)); bottom: calc(16px + env(safe-area-inset-bottom));
        min-height: 52px; padding: 0 20px 0 16px; border: 0; border-radius: 999px;
        background: linear-gradient(180deg, #6a3cf5, #3d17b8); color: #fff; font: 800 15px 'Outfit', sans-serif;
        box-shadow: 0 6px 0 #2a0f8a, 0 12px 24px rgba(61, 23, 184, .35); cursor: pointer;
    }
    #side-toggle .material-symbols-rounded { font-size: 26px; }
    body.side-open #side-toggle { display: none; }
    #back-to-top { left: auto !important; right: max(14px, env(safe-area-inset-right)) !important; bottom: calc(92px + env(safe-area-inset-bottom)) !important; }
}
@media (prefers-reduced-motion: reduce) { .pastel-nav { transition: none; } }
body.reduced-motion .pastel-nav { transition: none; }

/* iPad portrait and small tablets: the sidebar leaves ~500px, so the hero gives the mascot less room */
@media (min-width: 761px) and (max-width: 900px) {
    .home-hero { padding-right: 150px !important; min-height: 0 !important; }
    .edustar { width: 120px !important; }
    .hero-stats { flex-wrap: wrap; }
}
