        .search-wrap {
            position: relative;
            max-width: 480px;
            margin-bottom: var(--sp-xl);
        }

        .search-input {
            width: 100%;
            padding: 0.75rem 1rem 0.75rem 2.8rem;
            border-radius: var(--r-md);
            background: var(--bg-card);
            border: 1.5px solid var(--border);
            color: var(--text-primary);
            font-family: inherit;
            font-size: var(--text-base);
            transition: border-color var(--t-fast);
        }

        .search-input:focus {
            outline: none;
            border-color: var(--accent);
            box-shadow: 0 0 0 3px var(--accent-glow);
        }

        .search-input::placeholder {
            color: var(--text-muted);
        }

        .search-icon,
        .page-header-icon,
        .mentor-avatar {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }

        .search-icon {
            position: absolute;
            left: 0.9rem;
            top: 50%;
            transform: translateY(-50%);
            font-size: var(--text-md);
            color: var(--text-secondary);
        }

        .search-icon svg,
        .page-header-icon svg,
        .mentor-avatar svg {
            width: 1em;
            height: 1em;
            display: block;
        }

        .page-header-icon {
            margin-right: 0.45rem;
            color: var(--text-accent);
        }

        .mentor-avatar {
            width: 2.5rem;
            height: 2.5rem;
            border-radius: var(--r-full);
            background: rgba(129, 140, 248, 0.08);
            color: var(--text-accent);
        }

        .filter-row {
            display: flex;
            gap: var(--sp-sm);
            flex-wrap: wrap;
            margin-bottom: var(--sp-lg);
        }

        .filter-chip {
            padding: 0.3rem 0.8rem;
            border-radius: var(--r-full);
            font-size: var(--text-sm);
            font-weight: 500;
            background: var(--bg-glass);
            border: 1px solid var(--border);
            color: var(--text-secondary);
            cursor: pointer;
            transition: all var(--t-fast);
            font-family: inherit;
        }

        .filter-chip:hover {
            border-color: var(--border-hover);
        }

        .filter-chip.active {
            background: var(--accent-soft);
            border-color: var(--accent);
            color: var(--text-accent);
        }

        .song-list {
            display: flex;
            flex-direction: column;
            gap: var(--sp-sm);
        }

        .song-card {
            display: flex;
            align-items: center;
            gap: var(--sp-md);
            text-decoration: none;
            color: inherit;
            padding: var(--sp-md) var(--sp-lg);
            cursor: pointer;
        }

        .song-card.locked {
            filter: saturate(0.35);
        }

        .song-card.locked h3 {
            color: var(--text-secondary);
        }

        .song-card:hover {
            border-color: var(--accent);
        }

        .song-art {
            width: 52px;
            height: 52px;
            border-radius: var(--r-sm);
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: var(--text-2xl);
        }

        .song-info {
            flex: 1;
            min-width: 0;
        }

        .song-info h3,
        .song-info h4 {
            font-size: var(--text-base);
            font-weight: 600;
            margin-bottom: 0.1rem;
        }

        .song-info .artist {
            font-size: var(--text-sm);
            color: var(--text-muted);
        }

        .song-tags {
            display: flex;
            gap: 0.3rem;
            flex-wrap: wrap;
            margin-top: 0.3rem;
        }

        .song-actions {
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 0.3rem;
        }

        .library-coach {
            padding: var(--sp-lg);
            margin-bottom: var(--sp-lg);
            background: linear-gradient(135deg, var(--bg-elevated), rgba(129, 140, 248, 0.08));
            border: 1px solid rgba(129, 140, 248, 0.12);
        }

        .library-coach h3 {
            margin-bottom: 0.2rem;
        }

        .library-coach p {
            font-size: var(--text-sm);
        }

        .song-lock {
            margin-top: 0.4rem;
            font-size: var(--text-sm);
            color: var(--warning-text);
        }

        /* Song detail view */
        .song-detail {
            display: none;
        }

        .song-detail.visible {
            display: block;
        }

        .song-header-bar {
            display: flex;
            align-items: center;
            gap: var(--sp-lg);
            padding: var(--sp-lg);
            background: linear-gradient(135deg, var(--bg-elevated), rgba(129, 140, 248, 0.06));
            border: 1px solid rgba(129, 140, 248, 0.1);
            border-radius: var(--r-lg);
            margin-bottom: var(--sp-lg);
        }

        .song-header-art {
            width: 72px;
            height: 72px;
            border-radius: var(--r-md);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: var(--text-3xl);
            background: var(--bg-card);
            flex-shrink: 0;
        }

        .song-header-info {
            flex: 1;
        }

        .song-header-info h2 {
            margin-bottom: 0.15rem;
        }

        .chord-flow {
            display: flex;
            gap: var(--sp-md);
            flex-wrap: wrap;
            justify-content: center;
            padding: var(--sp-xl) var(--sp-md);
        }

        .chord-beat {
            text-align: center;
            padding: var(--sp-md) var(--sp-lg);
            border-radius: var(--r-md);
            background: var(--bg-glass);
            border: 1px solid var(--border);
            min-width: 80px;
            transition: all var(--t-fast);
            text-decoration: none;
            color: inherit;
            display: inline-block;
        }

        .chord-beat:hover {
            border-color: var(--accent);
            transform: translateY(-2px);
        }

        .chord-beat.playing {
            border-color: var(--accent);
            background: var(--accent-soft);
            transform: scale(1.05);
        }

        .btn-practice-3d,
        .btn-practice-fingerpicking {
            font-size: var(--text-xs);
            font-weight: 700;
            color: var(--text-accent);
            border: 1px solid var(--border);
            padding: 2px 8px;
            border-radius: var(--r-full);
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            gap: 4px;
        }

        .btn-practice-3d:hover,
        .btn-practice-fingerpicking:hover {
            background: var(--accent-soft);
            border-color: var(--accent);
        }

        .chord-beat .cb-name {
            font-size: var(--text-xl);
            font-weight: 800;
        }

        .chord-beat .cb-bars {
            font-size: var(--text-xs);
            color: var(--text-muted);
            margin-top: 0.2rem;
            font-family: 'JetBrains Mono', monospace;
        }

        .chord-beat .cb-strum {
            font-size: var(--text-sm);
            color: var(--text-muted);
            margin-top: 0.4rem;
        }

        .chord-chart {
            display: flex;
            gap: var(--sp-lg);
            flex-wrap: wrap;
            justify-content: center;
        }

        .chord-chart-item {
            text-align: center;
            min-width: 130px;
            padding: var(--sp-md);
            border-radius: var(--r-md);
            background: var(--bg-glass);
            border: 1px solid var(--border);
        }

        .chord-chart-name {
            font-size: var(--text-xl);
            font-weight: 800;
            margin-bottom: var(--sp-sm);
        }

        .chord-chart-missing {
            opacity: 0.75;
        }

        .chord-changes {
            display: flex;
            flex-wrap: wrap;
            gap: var(--sp-lg);
            justify-content: center;
        }

        .chord-change {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--sp-xs);
            padding: var(--sp-md);
            border-radius: var(--r-md);
            background: var(--bg-glass);
            border: 1px solid var(--border);
        }

        .chord-change-row {
            display: flex;
            align-items: center;
            gap: var(--sp-sm);
        }

        .chord-change-arrow {
            font-size: var(--text-2xl);
            color: var(--text-accent);
            font-weight: 700;
        }

        .chord-change-names {
            font-weight: 700;
            font-size: var(--text-base);
        }

        .chord-change-hint {
            color: var(--success-text);
            font-size: var(--text-sm);
            text-align: center;
        }

        .strum-arrow {
            color: var(--success-text);
            font-weight: 700;
        }

        .strum-rest {
            color: var(--text-muted);
        }

        .practice-controls {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: var(--sp-md);
            padding: var(--sp-lg);
            border-radius: var(--r-md);
            background: var(--bg-card);
            border: 1px solid var(--border);
        }

        .section-tabs {
            display: flex;
            gap: var(--sp-xs);
            margin-bottom: var(--sp-lg);
        }

        .section-tab {
            padding: 0.4rem 1rem;
            border-radius: var(--r-full);
            font-size: var(--text-sm);
            font-weight: 500;
            background: var(--bg-glass);
            border: 1px solid var(--border);
            color: var(--text-secondary);
            cursor: pointer;
            font-family: inherit;
            transition: all var(--t-fast);
        }

        .section-tab.active {
            background: var(--accent-soft);
            border-color: var(--accent);
            color: var(--text-accent);
        }

        .transition-hint {
            display: flex;
            align-items: center;
            gap: var(--sp-sm);
            padding: var(--sp-md);
            background: var(--warning-soft);
            border: 1px solid rgba(251, 191, 110, 0.15);
            border-radius: var(--r-md);
            font-size: var(--text-sm);
            color: var(--warning-text);
            margin-top: var(--sp-md);
        }

        .practice-toolbar {
            display: flex;
            flex-wrap: wrap;
            gap: var(--sp-sm);
            justify-content: center;
            align-items: center;
            margin-bottom: var(--sp-lg);
        }

        .toolbar-group {
            display: flex;
            gap: 0.4rem;
            flex-wrap: wrap;
            align-items: center;
        }

        .tool-chip {
            padding: 0.35rem 0.75rem;
            border-radius: var(--r-full);
            border: 1px solid var(--border);
            background: var(--bg-glass);
            color: var(--text-secondary);
            font-size: var(--text-sm);
            cursor: pointer;
            transition: all var(--t-fast);
            font-family: inherit;
        }

        .tool-chip.active {
            background: var(--accent-soft);
            border-color: var(--accent);
            color: var(--text-accent);
        }

        .practice-note {
            text-align: center;
            color: var(--text-muted);
            font-size: var(--text-sm);
            margin-top: var(--sp-sm);
        }

        .insight-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
            gap: var(--sp-md);
            margin-bottom: var(--sp-lg);
        }

        .insight-card {
            padding: var(--sp-lg);
            border-radius: var(--r-lg);
            border: 1px solid var(--border);
            background: var(--bg-card);
        }

        .insight-card h3 {
            margin-bottom: 0.35rem;
        }

        .insight-card ul {
            list-style: none;
            padding: 0;
            margin: var(--sp-sm) 0 0;
            display: flex;
            flex-direction: column;
            gap: 0.45rem;
        }

        .insight-card li {
            font-size: var(--text-sm);
            color: var(--text-secondary);
        }

        .section-list {
            display: flex;
            flex-direction: column;
            gap: 0.6rem;
        }

        .section-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: var(--sp-sm);
            padding: var(--sp-sm);
            border-radius: var(--r-md);
            border: 1px solid var(--border);
            background: var(--bg-glass);
        }

        .section-item.active {
            border-color: var(--accent);
            background: var(--accent-soft);
        }

        .section-item h4 {
            font-size: var(--text-sm);
            margin-bottom: 0.2rem;
        }

        .ramp-controls {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
            gap: var(--sp-sm);
            margin-top: var(--sp-sm);
        }

        .ramp-controls label {
            font-size: var(--text-xs);
            color: var(--text-muted);
            display: block;
            margin-bottom: 0.2rem;
        }

        .ramp-input {
            width: 100%;
            padding: 0.45rem 0.6rem;
            border-radius: var(--r-sm);
            border: 1px solid var(--border);
            background: var(--bg-card);
            color: var(--text-primary);
            font-size: var(--text-sm);
            font-family: inherit;
        }

        .ready-meter {
            display: flex;
            align-items: center;
            gap: var(--sp-md);
        }

        .ready-score {
            font-size: var(--text-3xl);
            font-weight: 800;
            color: var(--success-text);
        }

        .weak-transitions {
            margin-top: var(--sp-sm);
            display: flex;
            flex-direction: column;
            gap: 0.4rem;
            font-size: var(--text-sm);
            color: var(--text-secondary);
        }

        .beta-card {
            margin-bottom: var(--sp-lg);
        }

        .status-note {
            padding: var(--sp-sm) var(--sp-md);
            border-radius: var(--r-sm);
            border: 1px solid var(--border);
            background: var(--bg-glass);
            color: var(--text-secondary);
            font-size: var(--text-sm);
        }

        .shazam-query { flex: 1; min-width: 220px; }
        .prog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--sp-sm); }
        .transpose-label { margin: 0 8px; }
        .strum-line { font-size: var(--text-2xl); letter-spacing: 0.3rem; font-family: 'JetBrains Mono', monospace; }
        .practice-controls-accent { background: linear-gradient(135deg, var(--bg-card), var(--accent-fill)); border-color: var(--accent); }

        .song-art-plain { background: var(--bg-elevated); }
        .songs-empty { grid-column: 1 / -1; text-align: center; padding: var(--sp-xl); }
        .songs-empty-title { font-size: var(--text-xl); color: var(--text-muted); margin-bottom: var(--sp-md); }
        .songs-empty-icon svg { width: 1em; height: 1em; vertical-align: -0.15em; }
        .songs-empty-note { color: var(--warning-text); margin-top: var(--sp-sm); }
        .chord-flow-arrow { color: var(--text-muted); font-size: var(--text-xl); align-self: center; }
        .chord-missing-note { padding: 12px; text-align: center; font-size: var(--text-sm); }
        .shazam-chips { margin-top: 0.65rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }

        .prog-controls-row {
            display: flex;
            align-items: center;
            gap: var(--sp-md);
            flex-wrap: wrap;
        }

        .capo-selector-wrap {
            display: flex;
            align-items: center;
            gap: 0.35rem;
        }

        .capo-select {
            padding: 0.25rem 0.5rem;
            border-radius: var(--r-sm);
            border: 1px solid var(--border);
            background: var(--bg-card);
            color: var(--text-primary);
            font-size: var(--text-xs);
            font-family: inherit;
            cursor: pointer;
        }

        .capo-sounding-badge {
            font-size: var(--text-xs);
            padding: 0.2rem 0.5rem;
        }

        .transpose-controls-wrap {
            display: flex;
            align-items: center;
        }

        .jam-beat-pill {
            font-family: 'JetBrains Mono', monospace;
            font-size: var(--text-xs);
            padding: 0.35rem 0.75rem;
            letter-spacing: 0.05em;
        }

        #autoScrollToggleBtn.active {
            background: var(--accent);
            color: var(--text-primary);
            border-color: var(--accent);
            box-shadow: 0 0 12px var(--accent-glow);
        }

