/* ============================================
   CLOPYFY — Minimal Monochrome Music UI
   ============================================ */

:root {
    --bg-base:       #0a0a0a;
    --bg-surface:    #121212;
    --bg-elevated:   #1a1a1a;
    --bg-card:       #181818;
    --bg-card-hover: #252525;
    --bg-highlight:  #2a2a2a;
    --text-primary:  #e8e8e8;
    --text-secondary:#a0a0a0;
    --text-subdued:  #666;
    --accent:        #e0e0e0;
    --accent-dim:    #888;
    --divider:       #282828;
    --radius-sm:     4px;
    --radius-md:     8px;
    --radius-lg:     12px;
    --sidebar-w:     300px;
    --topbar-h:      64px;
    --np-h:          90px;
    --transition:    0.2s ease;
}

/* RESET */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-font-smoothing:antialiased}
body{
    font-family:'DM Sans','Segoe UI',sans-serif;
    background:var(--bg-base);
    color:var(--text-primary);
    overflow:hidden;
    height:100vh;
    display:grid;
    grid-template-columns:var(--sidebar-w) 1fr;
    grid-template-rows:1fr var(--np-h);
}
a{color:inherit;text-decoration:none}
button{background:none;border:none;color:inherit;cursor:pointer;font:inherit}
input{font:inherit}
img{display:block;max-width:100%}
.hidden{display:none!important}

/* SCROLLBAR */
::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#333;border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:#444}

/* ============================================
   SIDEBAR
   ============================================ */
.sidebar{
    grid-row:1/3;
    background:var(--bg-base);
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border-right:1px solid var(--divider);
}
.sidebar-top{
    padding:16px 16px 8px;
}
.logo-wrap{
    display:flex;
    align-items:center;
    gap:6px;
    padding:8px 8px 20px;
}
.logo-icon{
    width:48px;
    height:40px;
    flex-shrink:0;
}
.logo-text{
    font-family:'Outfit',sans-serif;
    font-size:1.32rem;
    font-weight:700;
    letter-spacing:-0.5px;
    color:var(--text-primary);
}

/* NAV */
.sidebar-nav{display:flex;flex-direction:column;gap:4px}
.nav-item{
    display:flex;align-items:center;gap:16px;
    padding:10px 12px;border-radius:var(--radius-md);
    font-weight:600;font-size:.94rem;
    color:var(--text-secondary);
    transition:color var(--transition),background var(--transition);
}
.nav-item svg{width:24px;height:24px;flex-shrink:0}
.nav-item:hover,.nav-item.active{color:var(--text-primary)}
.nav-item.active{background:var(--bg-elevated)}

/* LIBRARY */
.sidebar-library{
    flex:1;display:flex;flex-direction:column;
    background:var(--bg-surface);
    margin:8px;border-radius:var(--radius-lg);
    overflow:hidden;
}
.library-header{
    display:flex;align-items:center;justify-content:space-between;
    padding:12px 16px 8px;
}
.library-toggle{
    display:flex;align-items:center;gap:10px;
    font-weight:700;font-size:.88rem;
    color:var(--text-secondary);
    text-transform:uppercase;
    letter-spacing:.08em;
    transition:color var(--transition);
}
.library-toggle:hover{color:var(--text-primary)}
.library-toggle svg{width:22px;height:22px}
.icon-btn{
    width:32px;height:32px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    color:var(--text-secondary);
    transition:color var(--transition),background var(--transition);
}
.icon-btn:hover{color:var(--text-primary);background:var(--bg-highlight)}

/* FILTERS */
.library-filters{
    display:flex;gap:8px;padding:4px 16px 10px;
    overflow-x:auto;flex-wrap:nowrap;
}
.filter-chip{
    padding:6px 14px;border-radius:20px;
    font-size:.82rem;font-weight:500;white-space:nowrap;
    background:var(--bg-highlight);
    color:var(--text-secondary);
    transition:background var(--transition),color var(--transition);
}
.filter-chip:hover{background:#333;color:var(--text-primary)}
.filter-chip.active{background:var(--text-primary);color:var(--bg-base)}

/* LIBRARY LIST */
.library-list{
    flex:1;overflow-y:auto;padding:4px 8px 16px;
}
.lib-item{
    display:flex;align-items:center;gap:12px;
    padding:8px;border-radius:var(--radius-md);cursor:pointer;
    transition:background var(--transition);
}
.lib-item:hover{background:var(--bg-highlight)}
.lib-thumb{
    width:48px;height:48px;border-radius:var(--radius-sm);
    background:var(--bg-highlight);
    display:flex;align-items:center;justify-content:center;
    overflow:hidden;flex-shrink:0;
}
.lib-thumb img{width:100%;height:100%;object-fit:cover}
.lib-meta{min-width:0}
.lib-name{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-desc{font-size:.76rem;color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ============================================
   MAIN
   ============================================ */
.main{
    display:flex;flex-direction:column;
    overflow:hidden;
    background:var(--bg-surface);
    border-radius:var(--radius-lg) var(--radius-lg) 0 0;
    margin:8px 8px 0 0;
}

/* TOPBAR */
.topbar{
    position:sticky;top:0;z-index:10;
    display:flex;align-items:center;justify-content:space-between;
    height:var(--topbar-h);
    padding:0 24px;
    background:transparent;
    transition:background .3s ease;
}
.topbar.scrolled{background:rgba(18,18,18,.92);backdrop-filter:blur(12px)}
.topbar-nav{display:flex;gap:8px}
.nav-arrow{
    width:32px;height:32px;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.5);border-radius:50%;
    transition:background var(--transition),transform .15s ease;
}
.nav-arrow svg{width:18px;height:18px}
.nav-arrow:hover{background:rgba(0,0,0,.7);transform:scale(1.05)}
.topbar-actions{display:flex;align-items:center;gap:12px}
.btn-outline{
    padding:7px 28px;border:1px solid #555;border-radius:20px;
    font-size:.88rem;font-weight:600;
    color:var(--text-primary);
    transition:border-color var(--transition),transform .15s ease;
}
.btn-outline:hover{border-color:var(--text-primary);transform:scale(1.03)}
.btn-primary{
    padding:8px 32px;border-radius:20px;
    background:var(--text-primary);color:var(--bg-base);
    font-size:.88rem;font-weight:700;
    transition:transform .15s ease, opacity var(--transition);
}
.btn-primary:hover{transform:scale(1.03);opacity:.9}

/* CONTENT */
.content-scroll{
    flex:1;overflow-y:auto;
    padding:0 24px 32px;
}
.section{animation:fadeUp .35s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* GREETING */
.greeting{
    font-family:'Outfit',sans-serif;
    font-size:2rem;font-weight:700;
    padding:12px 0 28px;
    letter-spacing:-0.5px;
}

/* SHELF */
.shelf{margin-bottom:36px}
.shelf-title{
    font-family:'Outfit',sans-serif;
    font-size:1.35rem;font-weight:700;
    margin-bottom:16px;
    letter-spacing:-0.3px;
}

/* CARD ROW */
.card-row{
    display:flex;gap:20px;
    overflow-x:auto;
    padding-bottom:8px;
    scroll-snap-type:x mandatory;
}
.card-row::-webkit-scrollbar{height:6px}
.card-row::-webkit-scrollbar-thumb{background:#333;border-radius:6px}

/* CARD */
.card{
    flex:0 0 180px;
    background:var(--bg-card);
    border-radius:var(--radius-md);
    padding:14px;
    cursor:pointer;
    transition:background var(--transition),transform .2s ease;
    scroll-snap-align:start;
    position:relative;
}
.card:hover{background:var(--bg-card-hover);transform:translateY(-3px)}
.card-art{
    width:100%;aspect-ratio:1;
    border-radius:var(--radius-sm);
    background:var(--bg-highlight);
    margin-bottom:12px;
    overflow:hidden;
    position:relative;
}
.card-art img{width:100%;height:100%;object-fit:cover}
.card-play{
    position:absolute;right:10px;bottom:10px;
    width:44px;height:44px;
    border-radius:50%;
    background:var(--text-primary);
    display:flex;align-items:center;justify-content:center;
    opacity:0;transform:translateY(6px);
    transition:opacity .25s ease,transform .25s ease;
    box-shadow:0 4px 16px rgba(0,0,0,.4);
}
.card-play svg{width:20px;height:20px;fill:var(--bg-base);margin-left:2px}
.card:hover .card-play{opacity:1;transform:none}
.card-name{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-desc{font-size:.78rem;color:var(--text-subdued);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ============================================
   SEARCH
   ============================================ */
.search-heading{
    font-family:'Outfit',sans-serif;
    font-size:2rem;font-weight:700;
    padding:12px 0 20px;
}
.search-bar-wrap{
    position:relative;max-width:480px;
}
.search-icon{
    position:absolute;left:14px;top:50%;transform:translateY(-50%);
    width:20px;height:20px;color:var(--bg-base);
}
.search-input{
    width:100%;padding:12px 16px 12px 44px;
    border:none;border-radius:24px;
    background:var(--text-primary);
    color:var(--bg-base);font-size:.94rem;font-weight:500;
    outline:none;
}
.search-input::placeholder{color:#666}

/* GENRE GRID */
.genre-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
    gap:16px;
}
.genre-card{
    aspect-ratio:1.6;
    border-radius:var(--radius-md);
    padding:16px;
    font-family:'Outfit',sans-serif;
    font-size:1.1rem;font-weight:700;
    cursor:pointer;
    transition:transform .2s ease;
    overflow:hidden;
    position:relative;
}
.genre-card:hover{transform:scale(1.03)}

/* ============================================
   PLAYLIST VIEW
   ============================================ */
.playlist-header{
    display:flex;gap:24px;align-items:flex-end;
    padding:40px 0 24px;
}
.playlist-cover{
    width:220px;height:220px;
    border-radius:var(--radius-md);
    background:var(--bg-highlight);
    box-shadow:0 8px 32px rgba(0,0,0,.4);
    overflow:hidden;flex-shrink:0;
}
.playlist-cover img{width:100%;height:100%;object-fit:cover}
.playlist-info{min-width:0}
.playlist-info .label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subdued)}
.playlist-info .title{font-family:'Outfit',sans-serif;font-size:2.8rem;font-weight:800;letter-spacing:-1px;margin:8px 0}
.playlist-info .meta{font-size:.86rem;color:var(--text-secondary)}

/* TRACK LIST */
.playlist-tracks{padding-bottom:40px}
.track-row{
    display:grid;
    grid-template-columns:40px 1fr 1fr 60px;
    align-items:center;
    gap:16px;
    padding:10px 16px;
    border-radius:var(--radius-sm);
    cursor:pointer;
    transition:background var(--transition);
    font-size:.88rem;
}
.track-row:hover{background:var(--bg-highlight)}
.track-num{color:var(--text-subdued);text-align:right;font-size:.86rem}
.track-title-col{display:flex;align-items:center;gap:14px;min-width:0}
.track-thumb{
    width:40px;height:40px;border-radius:var(--radius-sm);
    background:var(--bg-highlight);overflow:hidden;flex-shrink:0;
}
.track-thumb img{width:100%;height:100%;object-fit:cover}
.track-meta{min-width:0}
.track-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-artist{font-size:.78rem;color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-album{color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-dur{color:var(--text-subdued);text-align:right;font-size:.84rem}
.track-row.active .track-name{color:var(--accent)}
.track-header{
    display:grid;
    grid-template-columns:40px 1fr 1fr 60px;
    gap:16px;
    padding:8px 16px 12px;
    font-size:.76rem;font-weight:500;
    text-transform:uppercase;letter-spacing:.08em;
    color:var(--text-subdued);
    border-bottom:1px solid var(--divider);
    margin-bottom:4px;
}
.track-header span:first-child{text-align:right}
.track-header span:last-child{text-align:right}

/* ============================================
   NOW PLAYING BAR
   ============================================ */
.now-playing{
    grid-column:1/3;
    display:grid;
    grid-template-columns:1fr 2fr 1fr;
    align-items:center;
    padding:0 16px;
    background:var(--bg-elevated);
    border-top:1px solid var(--divider);
    height:var(--np-h);
}

/* LEFT */
.np-left{display:flex;align-items:center;gap:12px;min-width:0}
.np-art{
    width:56px;height:56px;
    border-radius:var(--radius-sm);
    background:var(--bg-highlight);
    overflow:hidden;flex-shrink:0;
}
.np-art img{width:100%;height:100%;object-fit:cover}
.np-info{min-width:0}
.np-title{font-size:.86rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-artist{font-size:.74rem;color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-heart svg{width:18px;height:18px}
.np-heart.liked svg{fill:var(--text-primary);stroke:var(--text-primary)}

/* CENTER */
.np-center{display:flex;flex-direction:column;align-items:center;gap:6px}
.np-controls{display:flex;align-items:center;gap:18px}
.play-btn{
    width:36px;height:36px;
    display:flex;align-items:center;justify-content:center;
    background:var(--text-primary);
    border-radius:50%;
    transition:transform .15s ease;
}
.play-btn:hover{transform:scale(1.06)}
.play-btn svg{width:16px;height:16px;fill:var(--bg-base)}
.np-progress{display:flex;align-items:center;gap:10px;width:100%;max-width:600px}
.np-time{font-size:.7rem;color:var(--text-subdued);min-width:36px;text-align:center}
.progress-bar{
    flex:1;height:4px;
    background:var(--bg-highlight);
    border-radius:4px;
    position:relative;
    cursor:pointer;
}
.progress-bar:hover{height:6px}
.progress-fill{
    height:100%;background:var(--text-primary);
    border-radius:4px;
    width:0%;transition:width .1s linear;
}
.progress-bar:hover .progress-fill{background:var(--accent)}
.progress-knob{
    width:12px;height:12px;
    background:var(--text-primary);
    border-radius:50%;
    position:absolute;
    top:50%;left:0%;
    transform:translate(-50%,-50%);
    opacity:0;
    transition:opacity .15s ease;
}
.progress-bar:hover .progress-knob{opacity:1}

/* RIGHT */
.np-right{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.volume-bar{
    width:100px;height:4px;
    background:var(--bg-highlight);
    border-radius:4px;
    position:relative;
    cursor:pointer;
}
.volume-bar:hover{height:6px}
.volume-fill{
    height:100%;background:var(--text-primary);
    border-radius:4px;width:70%;
}
.volume-bar:hover .volume-fill{background:var(--accent)}
.volume-knob{
    width:12px;height:12px;
    background:var(--text-primary);
    border-radius:50%;
    position:absolute;
    top:50%;left:70%;
    transform:translate(-50%,-50%);
    opacity:0;
    transition:opacity .15s ease;
}
.volume-bar:hover .volume-knob{opacity:1}

/* ============================================
   FOOTER
   ============================================ */
.main-footer{
    padding:48px 0 32px;
    border-top:1px solid var(--divider);
    margin-top:48px;
}
.footer-cols{
    display:flex;gap:48px;flex-wrap:wrap;
    margin-bottom:32px;
}
.footer-col{display:flex;flex-direction:column;gap:10px;min-width:140px}
.footer-col h4{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-subdued);margin-bottom:4px}
.footer-col a{font-size:.86rem;color:var(--text-secondary);transition:color var(--transition)}
.footer-col a:hover{color:var(--text-primary)}
.footer-social{flex-direction:row;align-items:center;gap:12px;margin-left:auto}
.social-circle{
    width:40px;height:40px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    background:var(--bg-highlight);
    color:var(--text-secondary);
    transition:color var(--transition),background var(--transition);
}
.social-circle:hover{color:var(--text-primary);background:#333}
.footer-bottom{
    font-size:.78rem;color:var(--text-subdued);
}

/* ============================================
   RESPONSIVE
   ============================================ */
@media(max-width:900px){
    body{grid-template-columns:1fr;grid-template-rows:1fr var(--np-h)}
    .sidebar{display:none}
    .main{margin:0;border-radius:0}
    .now-playing{grid-column:1}
    .card{flex:0 0 150px}
}
@media(max-width:600px){
    .np-right{display:none}
    .now-playing{grid-template-columns:1fr 1fr}
    .playlist-header{flex-direction:column;align-items:flex-start}
    .playlist-cover{width:160px;height:160px}
    .playlist-info .title{font-size:1.8rem}
    .track-row{grid-template-columns:32px 1fr 50px}
    .track-album{display:none}
    .track-header{grid-template-columns:32px 1fr 50px}
    .track-header span:nth-child(3){display:none}
}
