:root {
        --henle-blue: #5d7a8c;
        --schirmer-yellow: #f1e4bc;
        --peters-green: #7ca38a;
        --paper: #fdfcf8;
        --text-dark: #1a1a1a;
        --text-gray: #636e72;
        --spine-shadow: inset 8px 0 12px -5px rgba(0,0,0,0.15);
    }

    body {
        background-color: #dcdde1;
        font-family: "Georgia", serif;
        margin: 0;
        padding: 20px;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    h1 {
        color: #2f3640;
        font-weight: normal;
        margin-bottom: 30px;
        font-size: 1.8rem;
    }

    .shelf-container {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
        gap: 20px;
        width: 100%;
        max-width: 1000px;
    }

    .score-card {
        background-color: var(--paper);
        background-image: url('./assets/natural-paper.png');
        aspect-ratio: 3 / 4;
        display: flex;
        flex-direction: column;
        align-items: center;
        text-align: center;
        padding: 12px;
        position: relative;
        box-sizing: border-box;
        box-shadow: 3px 10px 20px rgba(0,0,0,0.15), var(--spine-shadow);
        border-radius: 2px 4px 4px 2px;
        transition: transform 0.2s ease;
        cursor: pointer;
        overflow: hidden;
    }

    .score-card:hover {
        transform: scale(1.02);
    }

    .score-card::before {
        content: "";
        position: absolute;
        top: 8px; left: 8px; right: 8px; bottom: 8px;
        border: 1px solid rgba(0,0,0,0.08);
        pointer-events: none;
    }

    .composer {
        text-transform: uppercase;
        letter-spacing: 1.2px;
        font-size: 0.6rem;
        margin-top: 8px;
        color: var(--text-dark);
        font-weight: bold;
    }

    .title {
        font-size: 1.05rem;
        margin: 12% 0 2% 0;
        line-height: 1.2;
        color: var(--text-dark);
        font-weight: normal;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .subtitle {
        font-size: 0.7rem;
        color: var(--text-gray);
        margin-bottom: 6px;
        font-weight: bold;
    }

    .excerpt {
        font-size: 0.65rem;
        font-style: italic;
        color: var(--text-gray);
        line-height: 1.3;
        padding: 0 5px;
        /* Limits long quotes to 2 lines */
        display: -webkit-box;
        -webkit-line-clamp: 2;
        line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-bottom: 10px;
    }

    .footer-info {
        margin-top: auto;
        width: 100%;
        z-index: 2;
    }

    .instrument-label {
        font-size: 0.55rem;
        text-transform: uppercase;
        color: var(--text-gray);
        border-top: 1px solid rgba(0,0,0,0.05);
        padding-top: 6px;
        margin-bottom: 6px;
        letter-spacing: 1px;
    }

    .icons-row {
        display: flex;
        justify-content: center;
        gap: 3px;
        margin-bottom: 3px;
    }

    .icon-note { 
        font-size: 0.9rem; line-height: 1;
        margin: 0.225rem;
    }
    .icon-metronome { width: 10px; height: 10px; }
    

    .henle { border-top: 6px solid var(--henle-blue); }
    .schirmer { border-top: 6px solid var(--schirmer-yellow); }
    .peters { border-top: 6px solid var(--peters-green); }

    @media (min-width: 600px) {
        .shelf-container { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
        .composer { font-size: 0.75rem; }
        .title { font-size: 1.3rem; }
        .subtitle { font-size: 0.8rem; }
        .excerpt { font-size: 0.75rem; }
        .score-card { padding: 20px; }
        .icon-metronome { width: 13px; height: 13px; }
    }