﻿/* =========================================================
PROJECT: Walanda platform
FILE: course.css
PATH: /src/modules/course/css/course.css
MODULE: course
SCOPE: styling (global / component / page)
PURPOSE: reference-aligned module styling
AUTHOR: Simasiku Nasilele
STANDARD: Walanda pro ui system
VERSION: 1.0.0
LAST UPDATED: 2026
========================================================= */
*{box-sizing:border-box;margin:0;padding:0}:root{--primary:#1FA78A;--primary-hover:#168f77;--background:#F4F7F8;--card:#fff;--text-dark:#2D3A3A;--muted:#6B7C7C;--border:#E6ECEC;--shadow-sm:0 2px 6px rgba(0,0,0,.05);--shadow-md:0 10px 30px rgba(0,0,0,.1);--radius-sm:6px;--radius-md:12px;--radius-lg:18px}html{scroll-behavior:smooth}body{font-family:Inter,Segoe UI,sans-serif;background:var(--background);color:var(--text-dark)}img{max-width:100%;display:block}a{text-decoration:none;color:inherit}button,input,select{font-family:inherit}.container{width:min(1200px,calc(100% - 40px));margin:auto}.section{padding:34px 0}.courses-hero,.page-hero{position:relative;min-height:42vh;display:flex;align-items:center;justify-content:center;color:#fff;text-align:center;padding:30px;overflow:hidden}.courses-hero-media,.page-hero-media{position:absolute;inset:0;z-index:0}.courses-hero-media img,.page-hero-media img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.courses-hero-overlay,.page-hero-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(rgba(0,0,0,.45),rgba(0,0,0,.45))}.courses-hero-content,.page-hero-content{position:relative;z-index:2;max-width:760px}.courses-hero h1,.page-hero h1{font-size:clamp(30px,4vw,42px);margin-bottom:10px}.courses-hero p,.page-hero p{max-width:760px;line-height:1.7}.filter-bar{display:grid;grid-template-columns:2fr 1fr 1fr;gap:15px;margin-top:-40px;background:#fff;padding:15px;border-radius:18px;box-shadow:var(--shadow-sm)}.filter-bar input,.filter-bar select,.search-box input{padding:12px;border:1px solid #eee;border-radius:12px;width:100%}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;padding:34px 0}.premium-card{display:block;background:#fff;border-radius:16px;overflow:hidden;box-shadow:var(--shadow-sm);transition:.3s;border:1px solid var(--border)}.premium-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-md)}.course-image-wrapper{position:relative}.course-image-wrapper img{width:100%;height:170px;object-fit:cover}.play-badge{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.play-badge span{width:58px;height:58px;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 10px 24px rgba(0,0,0,.2)}.course-info{padding:16px}.course-title{font-weight:700;margin-bottom:10px;line-height:1.4}.course-rating{color:#f4b400;font-size:13px;margin-bottom:10px}.course-meta{font-size:12px;color:var(--muted);margin-bottom:10px}.course-footer{display:flex;justify-content:space-between;font-size:12px;gap:12px}.badge{position:absolute;top:10px;left:10px;background:#2f8f83;color:#fff;font-size:10px;padding:5px 7px;border-radius:6px;font-weight:700;text-transform:uppercase}.two-col-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}.content-stack,.sidebar-stack{display:grid;gap:20px}.card{background:#fff;border-radius:16px;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.card-body{padding:20px}.section-title{font-size:28px;margin-bottom:8px}.section-sub{font-size:14px;color:var(--muted);line-height:1.7}.meta-chip{display:inline-flex;align-items:center;padding:8px 10px;border-radius:999px;background:#f2f7f7;color:#496161;font-size:12px}.meta-row{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 16px}.sidebar-card{background:#fff;padding:20px;border-radius:16px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.sidebar-card h4{margin-bottom:12px;color:#2f8f83;font-size:16px}.sidebar-card ul{list-style:none;display:grid;gap:10px}.sidebar-card li{font-size:14px;color:#4d5d5d;line-height:1.5}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}.detail-main{display:grid;gap:20px}.detail-hero{background:#fff;border-radius:20px;border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}.detail-cover{height:320px}.detail-cover img{width:100%;height:100%;object-fit:cover}.detail-content{padding:26px}.price-tag{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:rgba(31,167,138,.1);color:var(--primary);font-size:12px;font-weight:700}.action-row{display:flex;gap:12px;flex-wrap:wrap}.primary-btn,.secondary-btn,.chip-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:999px;font-size:13px;font-weight:700;border:none;cursor:pointer}.primary-btn{background:var(--primary);color:#fff}.secondary-btn,.chip-btn{background:#eef3f2;color:var(--text-dark);border:1px solid var(--border)}.video-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(11,18,18,.74);z-index:3000}.video-modal.active{display:flex}.video-modal-backdrop{position:absolute;inset:0}.video-modal-dialog{position:relative;width:min(980px,96vw);background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 26px 70px rgba(0,0,0,.25);z-index:1}.video-modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid #edf1f1}.video-modal-meta h3{font-size:18px;margin-bottom:4px}.video-modal-meta p{font-size:13px;color:var(--muted)}.video-modal-close{border:none;background:#eef3f2;color:#233;width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer}.video-modal-body{background:#000}.video-modal-body video{width:100%;height:min(70vh,560px);display:block;background:#000}.video-modal-actions{display:flex;gap:10px;flex-wrap:wrap;padding:14px 18px 18px;background:#fff}.video-range{appearance:none;-webkit-appearance:none;width:140px;height:6px;border-radius:999px;background:#dbe7e5;border:none;padding:0}.video-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--primary);cursor:pointer}.volume-wrap{display:inline-flex;align-items:center;gap:10px;background:#f5f8f8;border:1px solid var(--border);border-radius:999px;padding:8px 12px}.ad-slot{position:relative;background:linear-gradient(180deg,#fff 0%,#fbfdfd 100%);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-sm);overflow:hidden}.ad-slot-shell{padding:18px}.sponsored-label{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.sponsored-label i{color:var(--primary);font-size:10px}.sponsored-card{display:block;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#fff}.sponsored-card img{width:100%;height:220px;object-fit:cover}.sponsored-card-body{padding:16px}.sponsored-card h3{font-size:18px;line-height:1.4;margin-bottom:10px}.sponsored-card p{color:#586868;font-size:14px;line-height:1.7;margin-bottom:12px}.sponsored-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}.sponsored-cta{display:inline-flex;align-items:center;gap:8px;background:var(--primary);color:#fff;font-size:13px;padding:10px 14px;border-radius:999px;font-weight:700}.slot-fallback{border:1px dashed #d6e4e2;border-radius:12px;background:#fff;padding:22px 20px;text-align:center}.dashboard-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.dashboard-card{background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:16px;padding:18px}.dashboard-card h4{font-size:15px;margin-bottom:8px}.dashboard-card p{font-size:13px;color:var(--muted);line-height:1.6}.info-list{display:grid;gap:12px}.info-row{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid #edf1f1}.info-row:last-child{border-bottom:none}.search-box{max-width:760px;margin:28px auto 0;padding:0 20px}.walanda-footer{background:linear-gradient(180deg,#3AA49B,#2F8F83);color:#fff;padding:30px 0 20px;margin-top:34px}.footer-divider{height:2px;background:rgba(255,255,255,.35);width:100%;margin-bottom:25px}.footer-wrapper{max-width:1200px;margin:auto;padding:0 30px}.footer-logo{margin-bottom:20px}.footer-logo-img{height:60px}.footer-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:25px}.footer-col h4{font-size:15px;margin-bottom:12px;color:#fff}.footer-col p,.footer-col a{display:block;font-size:13px;color:#d7eeee;margin-bottom:6px}.footer-col a:hover{color:#fff}.border-left{border-left:1px solid rgba(255,255,255,.15);padding-left:18px}.social-icons{display:flex;gap:10px;margin-top:10px}.social-icons a{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#fff;color:#0c4f52;border-radius:50%;font-size:13px}.footer-bottom{text-align:right;margin-top:25px;font-size:13px;color:#cdeeee}@media (max-width:1100px){.two-col-layout,.detail-layout{grid-template-columns:1fr}.dashboard-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:900px){.filter-bar{grid-template-columns:1fr}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.course-grid,.dashboard-strip{grid-template-columns:1fr}.footer-grid{grid-template-columns:repeat(2,1fr)}.video-modal{padding:14px}.video-modal-body video{height:260px}}@media (max-width:480px){.footer-grid{grid-template-columns:1fr}.border-left{border-left:none;padding-left:0}.footer-bottom{text-align:left}}

/* =========================================================
PAGE HERO FALLBACK BACKGROUND
=========================================================
   The base .page-hero rule (in the minified block above) sets
   `color: #fff` because rich heroes (.page-hero-media +
   .page-hero-overlay) provide a dark image background. Pages
   that don't use the media pattern — currently /courses/player.html —
   inherit `color: #fff` but land on the body's light background,
   making the title + subtitle invisible.

   This rule adds the same teal gradient the bursaries + marketplace
   modules ship as their hero background, applied at the .page-hero
   level so the white text always has contrast. When .page-hero-media
   IS present, it sits at z-index:0 with `position:absolute; inset:0`
   and paints over this background — so rich heroes are unaffected.
========================================================= */

.page-hero {
    background: linear-gradient(135deg, #2f8f83 0%, var(--primary) 100%);
}

/* =========================================================
COURSES HERO FIX (PHOTO MOVED UP)
========================================================= */

.courses-hero {
    width: 100%;
    height: 420px;
    overflow: hidden;
    position: relative;
    background: #ffffff;
}

.courses-hero-img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    /* move photo upward */
    object-position: center 80%;
}

/* remove old hero conflicts */
.courses-hero-media,
.courses-hero-overlay,
.courses-hero-content,
.courses-features,
.course-feature-item,
.courses-categories,
.courses-hero-wrap,
.courses-content,
.courses-visual,
.courses-title,
.courses-description {
    display: none !important;
}

@media (max-width: 768px) {
    .courses-hero {
        height: 280px;
    }

    .courses-hero-img {
        object-position: center 20%;
    }
}

/* =========================================================
COURSES HERO TEXT LAYER (ADD AFTER CURRENT CSS)
========================================================= */

/* Restore content */
.courses-hero-content {
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 5;
    padding: 0 6%;
}

/* Restore title */
.courses-title {
    display: flex !important;
    flex-direction: column;
    margin: 0;
    max-width: 650px;
    line-height: 1.1;
}

    /* Title lines */
    .courses-title span {
        display: block !important;
        font-size: 4rem;
        font-weight: 800;
        color: #ffffff;
        letter-spacing: -1px;
    }

    /* Highlight line */
    .courses-title .highlight {
        color: var(--primary, #1FA78A);
    }

/* Description */
.courses-description {
    display: block !important;
    margin-top: 20px;
    max-width: 600px;
    font-size: 1.1rem;
    line-height: 1.8;
    color: rgba(255,255,255,0.95);
}

/* Soft text shadow for readability */
.courses-title span,
.courses-description {
    text-shadow: 0 4px 14px rgba(0,0,0,0.35);
}

/* Responsive */
@media (max-width: 768px) {
    .courses-hero-content {
        padding: 0 20px;
    }

    .courses-title span {
        font-size: 2.3rem;
    }

    .courses-description {
        font-size: 0.95rem;
        line-height: 1.6;
        margin-top: 16px;
    }
}

/* =========================================================
REFINED CARD / PREVIEW / ADS CONSISTENCY
========================================================= */
.course-grid {
    align-items: stretch;
}
.course-feed-ad {
    grid-column: 1 / -1;
    /* The middle banner also carries .walanda-ad-card (see the controller's
       wrapClass), so its HEIGHT comes from --ad-card-h — matching the sidebar
       cards. Only the full-width span + clip live here. */
    overflow: hidden;
}
.course-feed-ad .walanda-ad-slot {
    height: 100%;
}
.premium-card,
.ad-slot {
    height: 100%;
}
.premium-card {
    display: flex;
    flex-direction: column;
}
.course-info {
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex: 1;
}
.course-title {
    min-height: 40px;
}
.course-meta {
    min-height: 16px;
}
.course-footer {
    min-height: 18px;
}
.course-card-link {
    display: block;
}
.card-link-action {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--primary);
    font-size: 13px;
    font-weight: 700;
    background: transparent;
    border: none;
    padding: 0;
    cursor: pointer;
}
.card-link-action:hover {
    color: var(--primary-hover);
}
.card-link-action.secondary {
    color: #25675e;
}
.action-row.course-link-actions {
    justify-content: space-between;
    align-items: center;
    margin-top: auto;
    padding-top: 4px;
}
.course-image-wrapper.preview-disabled .play-badge,
.course-image-wrapper.preview-disabled .card-preview-overlay {
    display: none;
}
.card-preview-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.28), rgba(0,0,0,.08));
}
.sponsored-card,
.ad-slot,
.premium-card {
    min-height: 100%;
}
.sponsored-card img,
.course-image-wrapper img {
    height: 170px;
}
.video-modal-body video,
#mainCoursePlayer {
    outline: none;
}

.instructor-link{
    color:#25675e;
    font-weight:700;
}
.instructor-link:hover{
    color:var(--primary);
}

/* =========================================================
PREMIUM COURSE CARD REFINEMENT
========================================================= */
.course-grid {
    grid-template-columns: repeat(auto-fill, minmax(248px, 1fr));
    gap: 18px;
    padding: 28px 0;
}

.premium-card {
    position: relative;
    border-radius: 20px;
    border: 1px solid rgba(31, 167, 138, 0.12);
    background: linear-gradient(180deg, #ffffff 0%, #fbfdfd 100%);
    box-shadow: 0 10px 24px rgba(18, 38, 38, 0.07);
    overflow: hidden;
}

.premium-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 3px;
    background: linear-gradient(90deg, #1FA78A 0%, #79d4c2 100%);
    z-index: 2;
}

.premium-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 36px rgba(18, 38, 38, 0.12);
}

.course-card-link {
    overflow: hidden;
}

.course-image-wrapper {
    overflow: hidden;
    background: #eaf5f3;
}

.course-image-wrapper img {
    height: 154px;
    transition: transform 0.35s ease;
}

.premium-card:hover .course-image-wrapper img {
    transform: scale(1.04);
}

.play-badge span {
    width: 52px;
    height: 52px;
    font-size: 20px;
}

.course-info {
    padding: 14px 16px 16px;
    gap: 8px;
}

.course-title {
    min-height: 42px;
    margin-bottom: 0;
    font-size: 16px;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.course-title a {
    color: #183232;
}

.course-title a:hover {
    color: var(--primary);
}

.course-rating {
    margin-bottom: 0;
    font-size: 12px;
    font-weight: 700;
    color: #d39a00;
}

.course-meta {
    min-height: 0;
    margin-bottom: 0;
    font-size: 12px;
    line-height: 1.5;
    color: #667979;
}

.course-footer {
    min-height: 0;
    align-items: center;
    padding-top: 8px;
    border-top: 1px solid #edf3f2;
}

.course-footer span:first-child {
    min-width: 0;
    flex: 1;
}

.course-footer span:last-child {
    flex-shrink: 0;
    color: #1f6f63;
    font-weight: 700;
}

.instructor-link {
    display: inline-block;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.action-row.course-link-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
    padding-top: 10px;
}

.card-link-action {
    justify-content: center;
    min-height: 38px;
    padding: 0 12px;
    border-radius: 999px;
    background: rgba(31, 167, 138, 0.08);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.card-link-action.secondary {
    background: #eef3f2;
    border: 1px solid #e0ebea;
}

@media (max-width: 900px) {
    .course-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .course-grid {
        grid-template-columns: 1fr;
    }

    .action-row.course-link-actions {
        grid-template-columns: 1fr;
    }
}

/* =========================================================
COURSE PAGE REPAIR
========================================================= */

.topnav {
    padding: 18px 60px;
}

.courses-hero {
    position: relative;
    overflow: hidden;
    min-height: 620px;
    padding: 0;
    background:
        radial-gradient(circle at 14% 18%, rgba(31, 167, 138, 0.14), transparent 30%),
        linear-gradient(135deg, #f5fbfa 0%, #edf5f4 54%, #f8fbfb 100%);
}

.courses-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.88) 30%, rgba(255, 255, 255, 0.46) 58%, rgba(255, 255, 255, 0.08) 100%);
    pointer-events: none;
}

.courses-hero-wrap {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
    align-items: center;
    gap: 42px;
    min-height: 620px;
    padding: 76px 0 72px;
}

.courses-content {
    max-width: 640px;
}

.courses-title {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 22px;
    font-size: clamp(2.6rem, 4.8vw, 4.5rem);
    font-weight: 800;
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: #0f3f3a;
}

.courses-title .highlight {
    color: var(--primary);
}

.courses-description {
    max-width: 560px;
    margin-bottom: 32px;
    color: #315e5b;
    font-size: 1.08rem;
    line-height: 1.85;
}

.courses-features {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.course-feature-item {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 11px 15px;
    border: 1px solid rgba(31, 167, 138, 0.16);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.72);
    box-shadow: 0 10px 22px rgba(16, 46, 44, 0.06);
    color: #214c49;
    font-size: 0.92rem;
    font-weight: 700;
    backdrop-filter: blur(8px);
}

.course-feature-item i {
    color: var(--primary);
}

.courses-visual {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
}

.courses-visual img {
    width: min(100%, 520px);
    height: auto;
    object-fit: contain;
    filter: drop-shadow(0 28px 48px rgba(14, 42, 41, 0.18));
}

.courses-categories {
    position: relative;
    z-index: 3;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 28px;
    padding: 24px 20px 28px;
    border-top: 1px solid rgba(31, 167, 138, 0.08);
    background: rgba(255, 255, 255, 0.96);
}

.courses-categories a {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    min-width: 96px;
    color: #1f6f63;
    font-size: 0.9rem;
    font-weight: 700;
    transition: transform 180ms ease, color 180ms ease;
}

.courses-categories a:hover {
    transform: translateY(-3px);
    color: var(--primary);
}

.courses-categories i {
    font-size: 1.25rem;
}

.filter-bar {
    position: relative;
    z-index: 4;
    margin-top: -34px;
}

#sidebarAd {
    /* Flows with the page (not sticky) so the categories / useful-pages cards
       below never slide under it on scroll. */
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

@media (max-width: 1100px) {
    .courses-hero-wrap {
        grid-template-columns: 1fr;
        gap: 28px;
        min-height: auto;
        padding: 64px 0 42px;
    }

    .courses-content {
        max-width: 100%;
        text-align: center;
        margin: 0 auto;
    }

    .courses-description {
        margin-left: auto;
        margin-right: auto;
    }

    .courses-features {
        justify-content: center;
    }

    .courses-visual {
        justify-content: center;
    }

    #sidebarAd {
        position: static;
    }
}

@media (max-width: 900px) {
    .topnav {
        padding: 15px 30px;
    }

    .courses-hero {
        min-height: auto;
    }

    .courses-title {
        font-size: clamp(2.2rem, 8vw, 3.4rem);
    }

    .courses-description {
        font-size: 1rem;
        line-height: 1.75;
    }

    .courses-categories {
        gap: 18px;
    }
}

@media (max-width: 640px) {
    .courses-hero-wrap {
        padding: 48px 0 32px;
    }

    .courses-features {
        flex-direction: column;
        align-items: stretch;
    }

    .course-feature-item {
        justify-content: center;
    }

    .courses-categories a {
        min-width: 84px;
        font-size: 0.82rem;
    }
}

/* =========================================================
COURSE CATALOG CARD — price tag
========================================================= */
.course-price-tag {
    font-weight: 700;
    color: var(--text-dark);
}
.course-price-tag--free {
    color: var(--primary);
    background: var(--status-success-bg);
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 0.85rem;
}

/* =========================================================
COURSE DETAIL PAGE — Coursera-style redesign
========================================================= */

.course-detail-page { background: var(--surface, #f5f7fb); }

.course-detail-hero {
    background: linear-gradient(135deg, #eef5f3 0%, #e7f1ee 100%);
    padding: 36px 0 28px;
    border-bottom: 1px solid var(--border);
}
.course-detail-breadcrumb {
    display: flex; align-items: center; gap: 8px;
    font-size: 0.85rem; color: var(--muted); margin-bottom: 20px;
}
.course-detail-breadcrumb a { color: var(--muted); text-decoration: none; }
.course-detail-breadcrumb a:hover { color: var(--primary); }
.course-detail-breadcrumb-sep { color: var(--muted); opacity: 0.5; }
.course-detail-hero-grid {
    display: grid; grid-template-columns: minmax(0,1.5fr) minmax(0,1fr);
    gap: 36px; align-items: center;
}
.course-detail-hero-text h1 {
    font-size: clamp(28px, 4vw, 40px);
    line-height: 1.2; margin: 12px 0; color: var(--text-dark);
}
.course-detail-instructor-line {
    font-size: 0.95rem; color: var(--muted); margin: 0;
}
.course-detail-instructor-line strong { color: var(--text-dark); font-weight: 600; }
.course-detail-tagline {
    font-size: 1.05rem; color: var(--text-dark); margin: 4px 0 16px;
}
.course-detail-hero-stats {
    display: flex; flex-wrap: wrap; gap: 18px;
    font-size: 0.9rem; color: var(--muted); margin-bottom: 14px;
}
.course-detail-hero-stats strong { color: var(--text-dark); }
.course-detail-hero-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.course-detail-hero-chips .meta-chip {
    background: rgba(255,255,255,0.7);
    border: 1px solid var(--border);
}
.course-detail-hero-art {
    aspect-ratio: 4 / 3; border-radius: var(--radius-md);
    overflow: hidden; box-shadow: var(--shadow-lg); background: #fff;
}
.course-detail-hero-art img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* TAB STRIP */
.course-detail-tabs {
    position: sticky; top: 0; z-index: 30;
    background: #fff; border-bottom: 1px solid var(--border);
    box-shadow: 0 1px 0 rgba(16,24,40,0.04);
}
.course-detail-tabs .container { display: flex; gap: 28px; overflow-x: auto; }
.course-detail-tab {
    padding: 16px 0; font-weight: 600; font-size: 0.95rem;
    color: var(--muted); text-decoration: none;
    border-bottom: 3px solid transparent; flex-shrink: 0;
}
.course-detail-tab.is-active { color: var(--primary); border-bottom-color: var(--primary); }

/* BODY GRID */
.course-detail-body {
    display: grid; grid-template-columns: minmax(0,1fr) 360px;
    gap: 36px; align-items: start;
}
.course-detail-block {
    background: #fff; border: 1px solid var(--border);
    border-radius: var(--radius-md); padding: 28px;
    margin-bottom: 20px; box-shadow: var(--shadow-sm);
}
.course-detail-block h2 {
    font-size: 1.4rem; margin: 0 0 8px; color: var(--text-dark);
}
.course-detail-block-sub { color: var(--muted); margin: 0 0 18px; font-size: 0.95rem; }
.course-detail-subhead {
    font-size: 1.1rem; margin: 24px 0 12px; color: var(--text-dark);
}
.course-detail-empty-note { color: var(--muted); font-style: italic; margin: 0; }

/* OUTCOMES */
.course-outcomes-grid {
    list-style: none; padding: 0; margin: 0;
    display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px;
}
.course-outcome-item {
    display: flex; align-items: flex-start; gap: 12px;
    font-size: 0.95rem; color: var(--text-dark);
}
.course-outcome-item::before {
    content: "✓"; color: var(--primary); font-weight: 700;
    flex-shrink: 0; margin-top: 1px;
}
.course-outcome-empty { color: var(--muted); font-style: italic; }

/* SKILL CHIPS */
.course-skill-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.course-skill-chip {
    background: var(--status-info-bg, #eef4fb);
    color: var(--text-dark);
    padding: 6px 14px; border-radius: 999px; font-size: 0.85rem;
    border: 1px solid var(--border);
}
.course-skill-chip-empty { color: var(--muted); font-style: italic; font-size: 0.9rem; }

/* SYLLABUS */
.course-syllabus-list { display: flex; flex-direction: column; gap: 12px; }

/* SYLLABUS COUNTS BAND — "X videos · Y readings · Z assignments"
   above the module accordion. Mirrors Coursera's reference design. */
.course-syllabus-counts {
    display: flex; flex-wrap: wrap; gap: 10px;
    padding: 14px 16px; margin-bottom: 14px;
    background: var(--status-success-bg, #eaf6f3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
}
.course-syllabus-count-chip {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 0.9rem; color: var(--text-dark);
}
.course-syllabus-count-chip i { color: var(--primary); }
.course-syllabus-count-chip strong { color: var(--text-dark); font-weight: 700; }
.course-module-item {
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    overflow: hidden; background: #fcfcfd;
}
.course-module-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 14px 18px; cursor: pointer; user-select: none;
    background: #fff;
}
.course-module-head:hover { background: #f7f9fb; }
.course-module-title {
    font-weight: 600; color: var(--text-dark); font-size: 0.98rem;
    display: flex; align-items: center; gap: 10px;
}
.course-module-count {
    color: var(--muted); font-size: 0.85rem; font-weight: 400;
}
.course-module-body { padding: 6px 18px 16px; border-top: 1px solid var(--border); display: none; }
.course-module-item.is-open .course-module-body { display: block; }
.course-module-item.is-open .course-module-head .fa-chevron-down { transform: rotate(180deg); }
.course-lesson-row {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 0; font-size: 0.9rem; color: var(--text-dark);
    border-bottom: 1px solid var(--border);
}
.course-lesson-row:last-child { border-bottom: none; }
.course-lesson-row i { color: var(--muted); width: 16px; }
.course-lesson-row .course-lesson-len {
    margin-left: auto; color: var(--muted); font-size: 0.82rem;
}
.course-lesson-preview-badge {
    margin-left: 6px; padding: 1px 7px; border-radius: 4px;
    background: var(--status-success-bg); color: var(--primary);
    font-size: 0.72rem; font-weight: 600;
}

/* INSTRUCTOR CARD */
.course-instructor-card {
    display: grid; grid-template-columns: 96px 1fr; gap: 20px; align-items: start;
}
.course-instructor-avatar {
    width: 96px; height: 96px; border-radius: 50%;
    background: var(--status-success-bg); overflow: hidden;
    display: grid; place-items: center; font-size: 36px; color: var(--primary);
    font-weight: 700;
}
.course-instructor-avatar img { width: 100%; height: 100%; object-fit: cover; }
.course-instructor-info h3 { margin: 0 0 4px; font-size: 1.15rem; }
.course-instructor-role {
    color: var(--muted); font-size: 0.9rem; margin: 0 0 12px;
}
.course-instructor-bio { color: var(--text-dark); font-size: 0.95rem; margin: 0 0 12px; }
.course-instructor-stats {
    display: flex; flex-wrap: wrap; gap: 18px; font-size: 0.85rem; color: var(--muted);
}
.course-instructor-stats strong { color: var(--text-dark); }

/* DETAILS TO KNOW */
.course-detail-know-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr));
    gap: 18px;
}
.course-detail-know-item {
    display: flex; gap: 14px; align-items: flex-start;
}
.course-detail-know-icon {
    width: 36px; height: 36px; border-radius: var(--radius-sm);
    background: var(--status-success-bg); color: var(--primary);
    display: grid; place-items: center; flex-shrink: 0;
}
.course-detail-know-text strong {
    display: block; margin-bottom: 2px; color: var(--text-dark);
}
.course-detail-know-text span { color: var(--muted); font-size: 0.9rem; }

/* STICKY PURCHASE SIDEBAR */
.course-detail-side {
    position: sticky; top: 76px; align-self: start;
    display: flex; flex-direction: column; gap: 16px;
}
.course-purchase-card {
    background: #fff; border: 1px solid var(--border);
    border-radius: var(--radius-md); padding: 0;
    box-shadow: var(--shadow-md); overflow: hidden;
}
.course-purchase-thumb {
    width: 100%; aspect-ratio: 16 / 9; overflow: hidden;
    background: var(--status-success-bg);
}
.course-purchase-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.course-purchase-body { padding: 22px; }
.course-purchase-price {
    font-size: 2rem; font-weight: 700; color: var(--text-dark);
    margin: 0 0 4px; display: flex; align-items: baseline; gap: 6px;
}
.course-purchase-price--free { color: var(--primary); }
.course-purchase-price-was {
    font-size: 1rem; font-weight: 400; color: var(--muted);
    text-decoration: line-through;
}
.course-purchase-period {
    font-size: 0.85rem; color: var(--muted); margin: 0 0 18px;
}
.course-purchase-ctas {
    display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px;
}
.course-purchase-ctas .btn { width: 100%; justify-content: center; }
.course-purchase-meta {
    border-top: 1px solid var(--border); padding-top: 14px;
    display: flex; flex-direction: column; gap: 8px;
    font-size: 0.88rem; color: var(--muted);
}
.course-purchase-meta-row {
    display: flex; align-items: center; gap: 8px;
}
.course-purchase-meta-row i { color: var(--primary); width: 16px; }
.course-purchase-status {
    padding: 8px 12px; border-radius: var(--radius-sm);
    font-size: 0.85rem; font-weight: 600; text-align: center; margin-bottom: 14px;
}
.course-purchase-status--enrolled {
    background: var(--status-success-bg); color: var(--primary);
}

/* RESPONSIVE — collapse to single column */
@media (max-width: 960px) {
    .course-detail-hero-grid { grid-template-columns: 1fr; }
    .course-detail-hero-art { max-width: 480px; }
    .course-detail-body { grid-template-columns: 1fr; }
    .course-detail-side { position: static; }
    .course-outcomes-grid { grid-template-columns: 1fr; }
    .course-instructor-card { grid-template-columns: 80px 1fr; }
    .course-instructor-avatar { width: 80px; height: 80px; font-size: 28px; }
}

/* =========================================================
   LEARNER PLAYER  (player.html / learnerPlayer.js)
   Two-column layout: video / reading body on the left, curriculum
   accordion on the right. Sticky on desktop; collapses to a single
   column under 960px so the sidebar slides under the main pane.
   ========================================================= */
.learner-player { display: block; }
.learner-player-loading,
.learner-player-empty {
    padding: var(--space-lg);
    text-align: center;
    color: var(--muted);
}
.learner-player-empty i { font-size: 28px; display: block; margin-bottom: 8px; color: var(--primary); }
.learner-player-error {
    padding: var(--space-lg);
    text-align: center;
}
.learner-player-error i { font-size: 36px; color: var(--danger); display: block; margin-bottom: 12px; }
.learner-player-error h2 { margin-bottom: var(--space-md); }

.learner-player-header {
    display: flex;
    align-items: flex-start;
    gap: var(--space-md);
    margin-bottom: var(--space-md);
}
.learner-player-header-titles h1 { margin: 0; font-size: 1.5rem; color: var(--text-dark); }
.learner-player-muted { color: var(--muted); margin: 0; }

.learner-player-progress { margin-bottom: var(--space-md); }
.learner-player-progress-bar {
    height: 10px;
    background: var(--background);
    border-radius: 999px;
    overflow: hidden;
}
.learner-player-progress-fill {
    height: 100%;
    background: var(--primary);
    transition: width var(--transition-fast);
}

.learner-player-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: var(--space-md);
    align-items: start;
}

.learner-player-main { padding: var(--space-md); }
.learner-player-main-body { display: block; }
.learner-player-lesson-title { margin: var(--space-md) 0 0; color: var(--text-dark); }
.learner-player-reading {
    background: var(--background);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: var(--space-md);
    line-height: 1.65;
    color: var(--text-dark);
    max-height: 480px;
    overflow-y: auto;
}
.learner-player-actions {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    flex-wrap: wrap;
    margin-top: var(--space-md);
}

.learner-player-sidebar {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: var(--space-md);
    position: sticky;
    top: 20px;
    max-height: calc(100vh - 40px);
    overflow-y: auto;
}
.learner-player-sidebar-eyebrow {
    margin: 0 0 var(--space-md);
    font-size: 11px;
    letter-spacing: 0.10em;
    color: var(--primary);
    font-weight: 800;
}

.learner-player-module { margin-bottom: var(--space-md); }
.learner-player-module-head {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text-dark);
    margin-bottom: 4px;
}

.learner-player-lesson-row,
.learner-player-assess-row {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 10px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    text-align: left;
    color: var(--text-dark);
    cursor: pointer;
    font-size: 0.92rem;
    text-decoration: none;
    transition: background var(--transition-fast), border-color var(--transition-fast);
}
.learner-player-lesson-row i,
.learner-player-assess-row i { color: var(--muted); flex-shrink: 0; }
.learner-player-lesson-row:hover,
.learner-player-assess-row:hover { background: var(--background); }
.learner-player-lesson-row.is-active {
    background: rgba(31, 167, 138, 0.10);
    border-color: var(--primary);
}
.learner-player-lesson-row.is-active i,
.learner-player-lesson-row.is-done i { color: var(--primary); }

.learner-player-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: 0.02em;
}
.learner-player-pill--warn { background: rgba(216, 155, 42, 0.16); color: #a36b00; }
.learner-player-pill--info { background: rgba(28, 134, 255, 0.10); color: #1c86ff; }

@media (max-width: 960px) {
    .learner-player-grid { grid-template-columns: 1fr; }
    .learner-player-sidebar { position: static; max-height: none; }
}

/* =========================================================
END OF FILE
FILE: course.css
PATH: /src/modules/course/css/course.css
MODULE: course
STATUS: stable
MAINTAINED BY: Walanda core system
COPYRIGHT: © 2026 Walanda Inc. Ltd. All rights reserved.
========================================================= */

