/* Lumie app komponenty – přesunuto z inline <style> */

        /* ============ LUMIE APP KOMPONENTY ============ */
        .app-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 1.5rem;
            height: 56px;
            background: var(--md-sys-color-surface, #fff);
            border-bottom: 1px solid var(--md-sys-color-outline-variant, #e0e0e0);
            position: sticky;
            top: 0;
            z-index: 100;
        }
        .app-header .brand {
            display: flex;
            align-items: center;
            gap: .5rem;
            font-size: 1.2rem;
            font-weight: 600;
            color: var(--md-sys-color-primary);
            text-decoration: none;
            font-family: 'Mustela-Mundi', 'Roboto Flex', Roboto, Arial, sans-serif;
        }
        .app-header .header-right { display: flex; align-items: center; gap: 1rem; }

        .app-nav {
            display: flex;
            gap: .25rem;
            padding: .5rem 1rem;
            background: var(--md-sys-color-surface-variant);
            border-bottom: 1px solid var(--md-sys-color-outline-variant);
            overflow-x: auto;
            scrollbar-width: none;
        }
        .app-nav::-webkit-scrollbar { display: none; }

        .nav-link {
            display: flex;
            align-items: center;
            gap: .4rem;
            padding: .5rem 1rem;
            border-radius: 999px;
            cursor: pointer;
            background: transparent;
            border: none;
            color: var(--md-sys-color-on-surface-variant);
            font-size: .95rem;
            transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
            font-family: inherit;
            white-space: nowrap;
        }
        .nav-link:hover, .nav-link.active {
            background: var(--md-sys-color-secondary-container);
            color: var(--md-sys-color-on-secondary-container);
        }

        .app-content { max-width: 800px; margin: 0 auto; padding: 1.5rem 1rem; }
        .hidden { display: none !important; }

        /* Streak */
        .streak-chip {
            display: flex;
            align-items: center;
            gap: .25rem;
            background: var(--md-sys-color-secondary-container);
            color: var(--md-sys-color-on-secondary-container);
            padding: .25rem .75rem;
            border-radius: 999px;
            font-weight: 600;
            font-size: .9rem;
        }

        /* Quote */
        .quote-card {
            text-align: center;
            padding: 2rem;
            background: var(--md-sys-color-primary-container);
            border-radius: 1.5rem;
            margin-bottom: 1.5rem;
        }
        .quote-text { font-size: 1.2rem; font-style: italic; margin: 0 0 .5rem; color: var(--md-sys-color-on-primary-container); }
        .quote-author { font-size: .9rem; opacity: .7; color: var(--md-sys-color-on-primary-container); }

        /* ============ ELEGANTNÍ PŘEHRÁVAČ ============ */
        .player-wrapper {
            background: var(--md-sys-color-surface-container-low);
            border-radius: 24px;
            padding: 1.5rem;
            margin-bottom: 1.5rem;
            border: 1px solid var(--md-sys-color-outline-variant);
        }

        .player-now-playing {
            display: flex;
            align-items: center;
            gap: 1rem;
            margin-bottom: 1rem;
        }

        .player-cover {
            width: 64px;
            height: 64px;
            border-radius: 12px;
            object-fit: cover;
            background: var(--md-sys-color-surface-variant);
            flex-shrink: 0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        }

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

        .player-title {
            font-size: 1.1rem;
            font-weight: 600;
            color: var(--md-sys-color-on-surface);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            margin: 0;
        }

        .player-artist {
            font-size: .85rem;
            color: var(--md-sys-color-on-surface-variant);
            margin: .25rem 0 0;
        }

        /* Posuvník času */
        .player-progress {
            display: flex;
            align-items: center;
            gap: .5rem;
            margin: 1rem 0;
        }

        .player-time {
            font-size: .75rem;
            color: var(--md-sys-color-on-surface-variant);
            font-variant-numeric: tabular-nums;
            min-width: 36px;
            text-align: center;
        }

        .player-slider {
            flex: 1;
            -webkit-appearance: none;
            appearance: none;
            height: 4px;
            border-radius: 2px;
            background: var(--md-sys-color-surface-variant);
            outline: none;
            cursor: pointer;
        }

        .player-slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: var(--md-sys-color-primary);
            cursor: pointer;
            box-shadow: 0 1px 4px rgba(0,0,0,0.3);
            transition: transform 150ms;
        }
        .player-slider::-webkit-slider-thumb:hover { transform: scale(1.2); }

        .player-slider::-moz-range-thumb {
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: var(--md-sys-color-primary);
            cursor: pointer;
            border: none;
            box-shadow: 0 1px 4px rgba(0,0,0,0.3);
        }

        /* Ovládací tlačítka */
        .player-controls {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 1rem;
            margin-top: .5rem;
        }

        .player-btn-small {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            border: none;
            background: transparent;
            color: var(--md-sys-color-on-surface-variant);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 150ms;
        }
        .player-btn-small:hover {
            background: var(--md-sys-color-surface-container-high);
            color: var(--md-sys-color-primary);
        }

        .player-btn-main {
            width: 56px;
            height: 56px;
            border-radius: 50%;
            border: none;
            background: var(--md-sys-color-primary);
            color: var(--md-sys-color-on-primary);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
            transition: all 150ms;
        }
        .player-btn-main:hover { transform: scale(1.05); box-shadow: 0 4px 12px rgba(0,0,0,0.3); }
        .player-btn-main:active { transform: scale(0.95); }
        .player-btn-main:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            transform: none;
        }

        /* Seznam skladeb jako karty */
        .track-list {
            display: flex;
            flex-direction: column;
            gap: .5rem;
            margin-top: 1rem;
        }

        .track-item {
            display: flex;
            align-items: center;
            gap: .75rem;
            padding: .75rem 1rem;
            border-radius: 16px;
            background: var(--md-sys-color-surface-container);
            border: 1px solid transparent;
            cursor: pointer;
            transition: all 150ms;
        }

        .track-item:hover {
            background: var(--md-sys-color-surface-container-high);
            border-color: var(--md-sys-color-outline-variant);
        }

        .track-item.active {
            background: var(--md-sys-color-primary-container);
            border-color: var(--md-sys-color-primary);
        }

        .track-item .track-num {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: var(--md-sys-color-surface-variant);
            color: var(--md-sys-color-on-surface-variant);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: .8rem;
            font-weight: 600;
            flex-shrink: 0;
        }

        .track-item.active .track-num {
            background: var(--md-sys-color-primary);
            color: var(--md-sys-color-on-primary);
        }

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

        .track-item .track-name {
            font-size: .95rem;
            font-weight: 500;
            color: var(--md-sys-color-on-surface);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            margin: 0;
        }

        .track-item .track-meta {
            font-size: .8rem;
            color: var(--md-sys-color-on-surface-variant);
            margin: .15rem 0 0;
        }

        .track-item .track-duration {
            font-size: .8rem;
            color: var(--md-sys-color-on-surface-variant);
            font-variant-numeric: tabular-nums;
        }

        .track-item .track-play-icon {
            opacity: 0;
            transition: opacity 150ms;
            color: var(--md-sys-color-primary);
        }
        .track-item:hover .track-play-icon,
        .track-item.active .track-play-icon {
            opacity: 1;
        }

        /* Chybová hláška */
        .player-error {
            color: var(--md-sys-color-error);
            font-size: .85rem;
            padding: .5rem 1rem;
            background: var(--md-sys-color-error-container);
            border-radius: 12px;
            margin-top: .5rem;
            display: none;
            align-items: center;
            gap: .5rem;
        }
        .player-error.show { display: flex; }

        /* Mood slider */
        .mood-row {
            display: flex;
            align-items: center;
            gap: 1rem;
            margin: .75rem 0;
        }
        .mood-row label {
            width: 140px;
            font-size: .9rem;
            color: var(--md-sys-color-on-surface-variant);
            font-family: 'Mustela-Mundi', 'Roboto Flex', Roboto, Arial, sans-serif;
        }
        .mood-row input[type=range] { flex: 1; accent-color: var(--md-sys-color-primary); }
        .mood-value {
            width: 40px;
            text-align: center;
            font-weight: 600;
            color: var(--md-sys-color-primary);
        }

        /* Stats */
        .stats-row { display: flex; gap: 1rem; flex-wrap: wrap; margin: 1rem 0; }
        .stat-chip {
            flex: 1;
            min-width: 120px;
            background: var(--md-sys-color-surface-variant);
            border-radius: 1rem;
            padding: .75rem 1rem;
            text-align: center;
            border: 1px solid var(--md-sys-color-outline-variant);
            transition: all 150ms;
        }
        .stat-chip:hover { background: var(--md-sys-color-surface-container-high); transform: translateY(-2px); }
        .stat-chip strong { display: block; font-size: 1.3rem; color: var(--md-sys-color-primary); }
        .stat-chip span { font-size: .8rem; color: var(--md-sys-color-on-surface-variant); }

        /* Deník – komponenta .prvek */
        .day-block { margin-bottom: 1rem; }
        .day-block h3 {
            margin: 0 0 .75rem 1rem;
            font-size: 1rem;
            color: var(--md-sys-color-primary);
            font-family: 'Mustela-Mundi', 'Roboto Flex', Roboto, Arial, sans-serif;
        }
        .prvek {
            background: var(--md-sys-color-surface-container-low);
            border-radius: 16px;
            padding: 16px;
            margin-bottom: 12px;
            border: 1px solid var(--md-sys-color-outline-variant);
            transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
        }
        .prvek:hover { transform: translateY(-4px); box-shadow: 0 6px 12px rgba(0,0,0,0.16); }
        .prvek-header {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 8px;
            color: var(--md-sys-color-primary);
            font-weight: 600;
            font-size: .95rem;
        }
        .prvek-text { color: var(--md-sys-color-on-surface); margin-bottom: 8px; line-height: 1.6; font-size: .95rem; }
        .prvek-meta { font-size: 0.8rem; color: var(--md-sys-color-on-surface-variant); }

        /* Profil */
        .profile-header { display: flex; align-items: center; gap: 1rem; padding: 1.5rem; margin-bottom: 1rem; }
        .profile-avatar {
            width: 64px; height: 64px; border-radius: 50%; object-fit: cover;
            border: 2px solid var(--md-sys-color-outline); box-shadow: 0 1px 2px rgba(0,0,0,0.12);
        }
        .profile-id { font-size: .85rem; color: var(--md-sys-color-on-surface-variant); }
        .profile-stats { display: flex; gap: 1rem; flex-wrap: wrap; padding: 1rem 1.5rem; margin-bottom: 1rem; }
        .stat-item {
            display: flex; flex-direction: column; align-items: center; gap: .2rem;
            min-width: 80px; flex: 1;
        }
        .stat-item strong { font-size: 1.4rem; color: var(--md-sys-color-primary); }
        .stat-item span { font-size: .8rem; color: var(--md-sys-color-on-surface-variant); }

        .badges-grid { display: flex; gap: .75rem; flex-wrap: wrap; margin-top: .5rem; }
        .badge-item {
            display: flex; flex-direction: column; align-items: center; gap: .25rem;
            padding: .5rem .75rem; background: var(--md-sys-color-secondary-container);
            border-radius: 1rem; font-size: .8rem; color: var(--md-sys-color-on-secondary-container);
            transition: all 150ms; cursor: default;
        }
        .badge-item:hover { transform: translateY(-2px); box-shadow: 0 3px 6px rgba(0,0,0,0.16); }
        .badge-item.locked { opacity: 0.5; filter: grayscale(1); }

        .share-link {
            width: 100%; padding: .5rem;
            border: 1px solid var(--md-sys-color-outline);
            border-radius: .5rem;
            background: var(--md-sys-color-surface-variant);
            color: var(--md-sys-color-on-surface);
            margin: .5rem 0; font-size: .85rem;
        }

        /* Profil v headeru */
        .profil-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid var(--md-sys-color-outline); flex-shrink: 0; }
        .profil-info { display: flex; flex-direction: column; gap: 2px; }
        .profil-name { font-weight: 500; color: var(--md-sys-color-on-surface); font-size: 1rem; white-space: nowrap; }
        .profil-link { font-size: 0.8rem; color: var(--md-sys-color-primary); text-decoration: none; }
        .profil-link:hover { text-decoration: underline; }

        .text-muted { color: var(--md-sys-color-on-surface-variant); opacity: 0.7; }

        /* Toast */
        .toast {
            position: fixed; bottom: 1.5rem; left: 50%;
            transform: translateX(-50%) translateY(100px);
            background: var(--md-sys-color-inverse-surface);
            color: var(--md-sys-color-inverse-on-surface);
            padding: .75rem 1.5rem;
            border-radius: 999px;
            font-size: .9rem;
            box-shadow: 0 4px 12px rgba(0,0,0,0.3);
            opacity: 0;
            transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
            z-index: 1000; pointer-events: none;
        }
        .toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }

        /* Mobil */
        @media screen and (max-width: 767px) {
            .app-header { padding: 0 1rem; height: 48px; }
            .app-nav { padding: .5rem; gap: .15rem; }
            .nav-link { padding: .4rem .75rem; font-size: .85rem; }
            .app-content { padding: 1rem .75rem; }
            .quote-card { padding: 1.5rem 1rem; }
            .player-wrapper { padding: 1rem; }
            .player-cover { width: 48px; height: 48px; }
            .player-title { font-size: 1rem; }
            .track-item { padding: .6rem .75rem; }
            .mood-row label { width: auto; min-width: 100px; }
            .stat-chip { min-width: 100px; padding: .5rem .75rem; }
            .profile-header { padding: 1rem; }
            .profile-avatar { width: 48px; height: 48px; }
            .stat-item strong { font-size: 1.2rem; }
            .prvek { padding: 12px; }
        }
    