/* ===========================
   GAME MUSIC VAULT
=========================== */

* {
    box-sizing: border-box;
}


html {
    scroll-behavior: smooth;
}


body {

    margin: 0;

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    background: #f5f5f5;

    color: #111;

}


/* ===========================
   HERO
=========================== */

.hero {

    width: 100%;

    text-align: center;

    padding: 20px;

}


.hero img {

    max-width: 100%;

    height: auto;

    display: block;

    margin: 0 auto;

}


/* ===========================
   SEARCH AREA
=========================== */

.search-section {

    max-width: 1200px;

    margin: 0 auto;

    padding: 15px;

}


#searchBox {

    width: 100%;

    padding: 12px 14px;

    font-size: 16px;

    border-radius: 6px;

    border: 1px solid #bbb;

    background: #fff;

    color: #000;

    outline: none;

}


#searchBox::placeholder {

    color: #777;

}


#searchBox:focus {

    border-color: #777;

}


/* ===========================
   FILTER GRID
=========================== */

.main-filters {

    display: grid;

    grid-template-columns:
        repeat(6, 1fr);

    gap: 8px;

    margin-top: 12px;

}


/* ===========================
   FILTER DROPDOWN
=========================== */

.filter-dropdown {

    position: relative;

}


.filter-toggle {

    width: 100%;

    padding: 9px 10px;

    font-size: 14px;

    border-radius: 6px;

    border: 1px solid #bbb;

    background: #fff;

    color: #000;

    cursor: pointer;

    display: flex;

    align-items: center;

    gap: 6px;

    text-align: left;

}


.filter-toggle:hover {

    background: #f0f0f0;

}


.filter-label {

    flex: 1;

    color: #000;

}


.filter-count {

    display: none;

    min-width: 20px;

    padding: 2px 6px;

    border-radius: 10px;

    background: #222;

    color: #fff;

    font-size: 11px;

    text-align: center;

}


.filter-dropdown.has-selection
.filter-count {

    display: inline-block;

}


.filter-arrow {

    font-size: 10px;

    color: #000;

    transition:
        transform 0.15s ease;

}


.filter-dropdown.open
.filter-arrow {

    transform: rotate(180deg);

}


/* ===========================
   FILTER MENU
=========================== */

.filter-menu {

    display: none;

    position: absolute;

    left: 0;

    right: 0;

    top: calc(100% + 4px);

    z-index: 1000;

    background: #fff;

    border: 1px solid #bbb;

    border-radius: 6px;

    box-shadow:
        0 4px 12px
        rgba(0, 0, 0, 0.15);

    max-height: 280px;

    overflow-y: auto;

}


.filter-dropdown.open
.filter-menu {

    display: block;

}


.filter-options {

    padding: 6px;

}


/* ===========================
   FILTER OPTIONS
=========================== */

.filter-option {

    display: flex;

    align-items: center;

    gap: 8px;

    padding: 7px 6px;

    cursor: pointer;

    border-radius: 4px;

    color: #000;

    font-size: 14px;

}


.filter-option:hover {

    background: #f0f0f0;

}


.filter-option span {

    color: #000;

}


.filter-option input {

    margin: 0;

    width: 15px;

    height: 15px;

    cursor: pointer;

}


/* ===========================
   CLEAR BUTTON
=========================== */

.filter-clear {

    width: 100%;

    padding: 7px 8px;

    margin-bottom: 5px;

    border: none;

    border-radius: 4px;

    background: #eee;

    color: #000;

    font-weight: 600;

    cursor: pointer;

    text-align: left;

}


.filter-clear:hover {

    background: #ddd;

}


/* ===========================
   SONG COUNT
=========================== */

#songCount {

    max-width: 1200px;

    margin: 10px auto;

    padding: 0 15px;

    font-size: 14px;

    color: #555;

}


/* ===========================
   CATALOGUE
=========================== */

#catalogue {

    max-width: 1200px;

    margin: 0 auto;

    padding: 10px 15px 40px;

    display: grid;

    grid-template-columns:
        repeat(
            auto-fill,
            minmax(280px, 1fr)
        );

    gap: 15px;

}


/* ===========================
   SONG CARD
=========================== */

.song-card {

    background: #fff;

    border: 1px solid #ddd;

    border-radius: 8px;

    padding: 16px;

    box-shadow:
        0 2px 5px
        rgba(0, 0, 0, 0.05);

}


.song-title {

    margin: 0 0 8px;

    font-size: 19px;

    line-height: 1.3;

}


.pack {

    margin-bottom: 10px;

    font-size: 13px;

    color: #666;

}


.meta {

    display: flex;

    flex-wrap: wrap;

    gap: 8px;

    margin-bottom: 10px;

    font-size: 12px;

    color: #555;

}


.meta span {

    background: #f0f0f0;

    padding: 4px 7px;

    border-radius: 4px;

}


/* ===========================
   TAGS
=========================== */

.tags {

    display: flex;

    flex-wrap: wrap;

    gap: 5px;

    margin-bottom: 12px;

}


.card-tag {

    border: 1px solid #ccc;

    background: #f5f5f5;

    color: #222;

    border-radius: 12px;

    padding: 4px 8px;

    font-size: 11px;

    cursor: pointer;

}


.card-tag:hover {

    background: #e5e5e5;

}


/* ===========================
   VERSION BUTTON
=========================== */

.version-button {

    width: 100%;

    padding: 9px;

    border: 1px solid #bbb;

    border-radius: 5px;

    background: #eee;

    color: #000;

    cursor: pointer;

    font-weight: 600;

}


.version-button:hover {

    background: #ddd;

}


/* ===========================
   VERSIONS
=========================== */

.versions {

    margin-top: 12px;

}


.version {

    border-top: 1px solid #ddd;

    padding: 12px 0;

}


.version h4 {

    margin: 0 0 8px;

    font-size: 14px;

}


.version p {

    margin: 4px 0;

    font-size: 12px;

    color: #555;

}


.version audio {

    width: 100%;

    margin-top: 8px;

}


/* ===========================
   LOADING / NO RESULTS
=========================== */

.loading {

    grid-column: 1 / -1;

    text-align: center;

    padding: 40px 20px;

    color: #555;

}


/* ===========================
   RESPONSIVE
=========================== */

@media (max-width: 1000px) {

    .main-filters {

        grid-template-columns:
            repeat(3, 1fr);

    }

}


@media (max-width: 650px) {

    .main-filters {

        grid-template-columns:
            repeat(2, 1fr);

    }

}


@media (max-width: 450px) {

    .main-filters {

        grid-template-columns: 1fr;

    }


    #catalogue {

        grid-template-columns: 1fr;

    }

}
/* ===========================
   VERSION 2 APP FEATURES
=========================== */
.app-nav{position:sticky;top:0;z-index:900;display:flex;justify-content:center;gap:6px;padding:10px 15px;background:rgba(245,245,245,.96);border-bottom:1px solid #ddd;backdrop-filter:blur(8px)}
.nav-button{border:1px solid #bbb;background:#fff;color:#111;border-radius:7px;padding:9px 14px;cursor:pointer}.nav-button:hover,.nav-button.active{background:#111;color:#fff}
.app-view{display:none}.app-view.active{display:block}
.search-row{display:flex;gap:8px}.clear-all-button{border:1px solid #bbb;background:#fff;color:#111;border-radius:6px;padding:9px 13px;cursor:pointer;white-space:nowrap}.clear-all-button:hover{background:#eee}
.active-filters{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.active-filter{display:inline-flex;align-items:center;gap:5px;border:1px solid #ccc;background:#fff;border-radius:15px;padding:5px 9px;font-size:12px}.active-filter button{border:0;background:transparent;cursor:pointer;padding:0;line-height:1}
.page-heading{max-width:1200px;margin:0 auto;padding:24px 15px 15px;display:flex;align-items:center;justify-content:space-between;gap:15px}.page-heading h1{margin:0 0 5px;font-size:26px}.page-heading p{margin:0;color:#666}.page-actions{display:flex;gap:7px;flex-wrap:wrap}.secondary-button,.primary-button,.danger-button{border-radius:6px;padding:9px 13px;cursor:pointer;white-space:nowrap}.secondary-button{border:1px solid #bbb;background:#fff;color:#111}.secondary-button:hover{background:#eee}.primary-button{border:1px solid #111;background:#111;color:#fff}.primary-button:hover{background:#333}.danger-button{border:1px solid #c33;background:#fff;color:#a00}.danger-button:hover{background:#fee}
.catalogue-grid{max-width:1200px;margin:0 auto;padding:10px 15px 40px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:15px}
.card-actions{display:flex;gap:7px}.card-actions>*{flex:1}.favourite-button{background:#fff!important;color:#111!important}.favourite-button.is-favourite{background:#111!important;color:#fff!important;border-color:#111!important}.favourite-button:hover{background:#ddd!important}.favourite-button.is-favourite:hover{background:#333!important}
.projects-list{max-width:1200px;margin:0 auto;padding:10px 15px 50px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:15px}.project-card{background:#fff;border:1px solid #ddd;border-radius:8px;padding:18px}.project-card h2{margin:0 0 5px;font-size:20px}.template-name{color:#666;font-size:13px;margin-bottom:15px}.project-mini-progress{margin-bottom:12px}.progress-track{width:100%;height:8px;background:#e5e5e5;border-radius:10px;overflow:hidden}.progress-track>div{height:100%;width:0;background:#111;transition:width .15s ease}.project-card-actions{display:flex;gap:7px}.project-card-actions>*{flex:1}.empty-state{grid-column:1/-1;text-align:center;padding:60px 20px;color:#666;background:#fff;border:1px dashed #ccc;border-radius:8px}.empty-state h2{margin-top:0;color:#222}
.modal{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.55)}.modal.open{display:flex}.modal-panel{position:relative;width:min(1100px,100%);max-height:92vh;overflow-y:auto;background:#fff;border-radius:10px;box-shadow:0 15px 50px rgba(0,0,0,.3);padding:22px}.modal-close{position:absolute;top:10px;right:13px;border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:#333}.project-header{display:flex;justify-content:space-between;gap:20px;padding-right:35px;margin-bottom:20px}.eyebrow{display:block;font-size:10px;letter-spacing:1.5px;color:#777;font-weight:700;margin-bottom:5px}.project-header h2,.picker-heading h2{margin:0}.project-actions{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start}.project-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.project-settings label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700}.project-settings input,.project-settings select,.project-settings textarea{width:100%;padding:9px 10px;border:1px solid #bbb;border-radius:6px;background:#fff;color:#111;resize:vertical}.full-width{grid-column:1/-1}.project-progress{margin-bottom:18px}.project-progress>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px;font-size:13px}.project-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.project-slot{border:1px solid #ddd;border-radius:8px;padding:13px;background:#fafafa}.slot-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.slot-name{font-weight:700;font-size:14px}.slot-remove{border:0;background:transparent;color:#777;cursor:pointer}.slot-track{margin:10px 0;min-height:40px}.slot-track strong{display:block;font-size:13px}.slot-track span{display:block;color:#666;font-size:11px;margin-top:3px}.slot-buttons{display:flex;gap:6px}.slot-buttons button{flex:1}.project-footer{display:flex;justify-content:space-between;gap:10px;margin-top:18px;padding-top:15px;border-top:1px solid #ddd}
.picker-heading{padding-right:30px;margin-bottom:15px}.picker-heading p{margin:5px 0 0;color:#666}.picker-search-row{display:flex;gap:7px;margin-bottom:12px}#pickerSearch{width:100%;padding:10px;border:1px solid #bbb;border-radius:6px}.picker-results{display:grid;gap:8px}.picker-result{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid #ddd;border-radius:7px;padding:11px}.picker-result h3{margin:0 0 3px;font-size:14px}.picker-result p{margin:0;color:#666;font-size:11px}.picker-result audio{width:100%;margin-top:8px}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%,20px);z-index:4000;padding:10px 15px;border-radius:7px;background:#111;color:#fff;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;font-size:13px}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:700px){.project-header,.page-heading{flex-direction:column;align-items:stretch}.project-settings{grid-template-columns:1fr}.full-width{grid-column:auto}.page-actions{justify-content:flex-start}}@media(max-width:650px){.search-row{flex-direction:column}.clear-all-button{width:100%}}@media(max-width:450px){.catalogue-grid{grid-template-columns:1fr}.app-nav{overflow-x:auto;justify-content:flex-start}.picker-result{grid-template-columns:1fr}}

/* V3/V4 music discovery tools */
.vault-tools{max-width:1200px;margin:18px auto 8px;padding:14px 16px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.025)}
.vault-tools-main{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.vault-tools-hint{font-size:12px;opacity:.65;margin-top:8px}
.vault-tool-panel{max-width:1050px}.tool-results{display:grid;gap:12px;margin-top:16px;max-height:60vh;overflow:auto}.tool-track{border:1px solid rgba(255,255,255,.09);border-radius:10px;padding:14px;background:rgba(255,255,255,.025)}.tool-track h3{margin:0 0 5px}.tool-track p{margin:4px 0;opacity:.75;font-size:13px}.tool-track audio{width:100%;margin-top:10px}.tool-track-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.compare-results{overflow:auto;margin-top:16px}.compare-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.compare-card{border:1px solid rgba(255,255,255,.09);border-radius:10px;padding:14px;background:rgba(255,255,255,.025)}.compare-card h3{margin-top:0}.compare-card audio{width:100%;margin:10px 0}.compare-meta{display:grid;gap:5px;font-size:13px}.compare-meta span{opacity:.8}.compare-empty{padding:30px;text-align:center;opacity:.7}.surprise-panel{max-width:700px}
.compare-select-button.is-selected{font-weight:700}.similar-button{margin-left:8px}.song-card .card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.song-card .card-actions button{margin-left:0}
@media (max-width:700px){.vault-tools-main{display:grid;grid-template-columns:1fr 1fr}.vault-tools-main button{width:100%}.compare-grid{grid-template-columns:1fr}}
