/* =============================================================================
   catalogue.css — Browse Courses / Course Catalogue page for local_vidyanagari
   Loaded via $PAGE->requires->css() in catalogue.php.
   ============================================================================= */

/* ── Full-width search bar ───────────────────────────────────────────────── */
.vn-cat-search {
    display: flex;
    gap: 10px;
    align-items: center;
    background: var(--vn-surface);
    border: 1px solid var(--vn-line-strong);
    border-radius: var(--vn-r);
    padding: 9px 10px 9px 14px;
    margin-bottom: 24px;
    box-shadow: var(--vn-shadow-1);
}
.vn-cat-search svg {
    width: 18px;
    height: 18px;
    stroke: var(--vn-ink-3);
    fill: none;
    stroke-width: 1.8;
    flex: none;
}
.vn-cat-search input {
    flex: 1;
    border: 0;
    background: none;
    font-size: 14.5px;
    color: var(--vn-ink);
    padding: 4px 0;
    font-family: inherit;
}
.vn-cat-search input:focus { outline: none; }
.vn-cat-search input::placeholder { color: var(--vn-ink-3); }

/* ── Faculty tiles — auto-fit grid with gold top border ─────────────────── */
.vn-cat-tiles {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 12px;
    margin-bottom: 26px;
}
.vn-cat-tile {
    text-align: left;
    border: 1px solid var(--vn-line);
    border-top: 3px solid var(--vn-gold-500);
    border-radius: var(--vn-r);
    background: var(--vn-surface);
    padding: 14px 16px;
    cursor: pointer;
    display: grid;
    gap: 3px;
    transition: box-shadow .16s, transform .16s, border-color .16s;
    box-shadow: var(--vn-shadow-1);
}
.vn-cat-tile:hover {
    transform: translateY(-2px);
    box-shadow: var(--vn-shadow-2);
    border-color: var(--vn-line-strong);
    border-top-color: var(--vn-gold-500);
}
.vn-cat-tile__n {
    font-size: 24px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -.02em;
    color: var(--vn-navy-700);
}
.vn-cat-tile__t { font-weight: 650; font-size: 13.5px; color: var(--vn-ink); }
.vn-cat-tile__s { font-size: 11.5px; color: var(--vn-ink-3); line-height: 1.4; }

/* ── 3-column course card grid ───────────────────────────────────────────── */
.vn-cc-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}
@media (max-width: 1100px) { .vn-cc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px)  { .vn-cc-grid { grid-template-columns: 1fr; } }

/* ── Course card ─────────────────────────────────────────────────────────── */
.vn-course-card {
    border: 1px solid var(--vn-line);
    border-radius: var(--vn-r);
    background: var(--vn-surface);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    cursor: pointer;
    transition: box-shadow .18s, transform .18s, border-color .18s;
    text-decoration: none;
}
.vn-course-card:hover {
    box-shadow: var(--vn-shadow-2);
    transform: translateY(-2px);
    border-color: var(--vn-line-strong);
    text-decoration: none;
}

/* ── Coloured hero band at the top of each card ──────────────────────────── */
.vn-cc-band {
    height: 74px;
    position: relative;
    display: flex;
    align-items: flex-end;
    padding: 10px 14px;
    color: #fff;
}
.vn-cc-band::after {
    content: "";
    position: absolute;
    inset: 0;
    opacity: .16;
    background-image: repeating-linear-gradient(135deg, #fff 0 1px, transparent 1px 9px);
}
.vn-cc-code {
    position: relative;
    z-index: 1;
    font-family: var(--vn-mono, ui-monospace, monospace);
    font-size: 11px;
    letter-spacing: .06em;
    background: rgba(0, 0, 0, .28);
    padding: 2px 8px;
    border-radius: 100px;
}
.vn-cc-band--navy  { background: linear-gradient(120deg, #16305A, #0B1B34); }
.vn-cc-band--gold  { background: linear-gradient(120deg, #A97B22, #6F4E12); }
.vn-cc-band--brick { background: linear-gradient(120deg, #9E3B2A, #5F2018); }
.vn-cc-band--moss  { background: linear-gradient(120deg, #2A6F55, #12382B); }
.vn-cc-band--plum  { background: linear-gradient(120deg, #6B3A5B, #361B2E); }
.vn-cc-band--azure { background: linear-gradient(120deg, #2F5F9E, #16345C); }

/* ── Card body ───────────────────────────────────────────────────────────── */
.vn-cc-bd {
    padding: 13px 14px 15px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 9px;
}
.vn-cc-bd h4 {
    font-size: 14.5px;
    line-height: 1.3;
    margin: 0;
    color: var(--vn-ink);
    font-weight: 650;
}

/* ── Card meta + tags + footer ───────────────────────────────────────────── */
.vn-cc-meta {
    font-size: 11.5px;
    color: var(--vn-ink-3);
    display: flex;
    gap: 9px;
    flex-wrap: wrap;
    align-items: center;
}
.vn-cat-tags { display: flex; gap: 5px; flex-wrap: wrap; }
.vn-cat-foot {
    margin-top: auto;
    padding-top: 10px;
    border-top: 1px solid var(--vn-line);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
}
.vn-cat-go { font-size: 12px; font-weight: 650; color: var(--vn-navy-600); white-space: nowrap; }
.vn-cat-go:hover { text-decoration: underline; }

/* ── Filter toggle button (hidden on desktop, shown ≤768px) ──────────────── */
.vn-cat-filter-toggle { display: none; }
.vn-cat-filter-icon {
    width: 16px;
    height: 16px;
    stroke: var(--vn-ink-2);
    fill: none;
    stroke-width: 1.8;
    flex: none;
}

/* ── Filter group (collapsible sidebar section) ──────────────────────────── */
.vn-filter-group { display: grid; gap: 10px; padding: 14px 16px; }

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

/* ≤768px — filter sidebar collapses behind a toggle */
@media (max-width: 768px) {
    .vn-cat-filter-toggle {
        display: flex;
        align-items: center;
        gap: 8px;
        width: 100%;
        padding: 10px 16px;
        margin-bottom: 12px;
        border: 1px solid var(--vn-line-strong);
        border-radius: var(--vn-r);
        background: var(--vn-surface);
        font-size: 13.5px;
        font-weight: 600;
        color: var(--vn-ink);
        cursor: pointer;
        font-family: inherit;
        box-shadow: var(--vn-shadow-1);
        transition: border-color .13s, background .13s;
        text-align: left;
    }
    .vn-cat-filter-toggle:hover { border-color: var(--vn-navy-600); }
    .vn-cat-filter-toggle .vn-cat-chevron {
        margin-left: auto;
        display: inline-block;
        font-style: normal;
        font-size: 12px;
        line-height: 1;
        transition: transform .2s ease;
    }
    .vn-cat-filter-panel { display: none; margin-bottom: 16px; }
    .vn-cat-filter-panel.vn-cat-filter-panel--open { display: block; }
}

/* ≤640px — card grid: tighter gap on phones */
@media (max-width: 640px) {
    .vn-cc-grid { gap: 10px; }
}

/* ≤540px — faculty tiles: force 2 columns */
@media (max-width: 540px) {
    .vn-cat-tiles { grid-template-columns: repeat(2, 1fr); gap: 8px; }
    .vn-cat-tile  { padding: 10px 12px; gap: 2px; }
    .vn-cat-tile__n { font-size: 20px; }
    .vn-cat-tile__s { font-size: 11px; }
}

/* ≤480px — search bar: wrap button below input */
@media (max-width: 480px) {
    .vn-cat-search { flex-wrap: wrap; padding: 9px 12px; gap: 8px; }
    .vn-cat-search > svg { display: none; }
    .vn-cat-search input { flex: 1 0 100%; order: 1; }
    .vn-cat-search .vn-btn { order: 2; flex: 1 0 100%; justify-content: center; }
}
