.timeline-wrap { --minute-width: 2px; margin-bottom: 28px; overflow-x: auto; border: 1px solid var(--border); border-radius: 18px; background: var(--panel); cursor: grab; user-select: none; } .timeline-wrap.dragging { cursor: grabbing; } .timeline { min-width: calc(180px + 1440 * var(--minute-width)); } .timeline-header, .timeline-row { display: grid; grid-template-columns: 180px calc(1440 * var(--minute-width)); } .timeline-header { position: sticky; top: 0; z-index: 40; background: var(--panel-2); border-bottom: 1px solid var(--border); } .timeline-channel-head, .timeline-channel { position: sticky; left: 0; z-index: 30; background: var(--panel-2); border-right: 1px solid var(--border); } .timeline-channel-head { padding: 12px 14px; font-weight: 800; color: var(--muted); } .timeline-hours { position: relative; height: 46px; background-image: repeating-linear-gradient( to right, rgba(148, 163, 184, 0.28) 0, rgba(148, 163, 184, 0.28) 1px, transparent 1px, transparent calc(60 * var(--minute-width)) ), repeating-linear-gradient( to right, transparent 0, transparent calc(30 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.16) calc(30 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.16) calc(30 * var(--minute-width)), transparent calc(30 * var(--minute-width)), transparent calc(60 * var(--minute-width)) ), repeating-linear-gradient( to right, transparent 0, transparent calc(15 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.07) calc(15 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.07) calc(15 * var(--minute-width)), transparent calc(15 * var(--minute-width)), transparent calc(30 * var(--minute-width)) ); } .timeline-hour { position: absolute; top: 12px; transform: translateX(6px); color: var(--muted); font-size: 0.8rem; font-weight: 800; } .timeline-row { min-height: 72px; border-bottom: 1px solid var(--border); } .timeline-channel { display: flex; align-items: center; justify-content: flex-start; gap: 8px; padding: 12px 14px; font-weight: 800; } .timeline-programmes { position: relative; min-height: 72px; background-image: repeating-linear-gradient( to right, rgba(148, 163, 184, 0.18) 0, rgba(148, 163, 184, 0.18) 1px, transparent 1px, transparent calc(60 * var(--minute-width)) ), repeating-linear-gradient( to right, transparent 0, transparent calc(30 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.10) calc(30 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.10) calc(30 * var(--minute-width)), transparent calc(30 * var(--minute-width)), transparent calc(60 * var(--minute-width)) ), repeating-linear-gradient( to right, transparent 0, transparent calc(15 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.045) calc(15 * var(--minute-width) - 1px), rgba(148, 163, 184, 0.045) calc(15 * var(--minute-width)), transparent calc(15 * var(--minute-width)), transparent calc(30 * var(--minute-width)) ); } .timeline-programme { position: absolute; top: 9px; left: calc(var(--start) * var(--minute-width)); width: calc(var(--duration) * var(--minute-width)); height: 54px; overflow: hidden; border-radius: 12px; padding: 8px 10px; background: var(--panel-3); border: 1px solid rgba(148, 163, 184, 0.25); color: var(--text); cursor: pointer; transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease; } .timeline-programme:hover { transform: scale(1.015); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.35); z-index: 20; } .timeline-programme strong { display: block; font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .timeline-programme span { display: block; margin-top: 3px; color: var(--muted); font-size: 0.75rem; } .timeline-programme.is-past { opacity: 0.55; } .timeline-zoom { display: flex; gap: 8px; flex-wrap: wrap; } .timeline-zoom button { background: var(--panel-2); border: 1px solid var(--border); color: var(--text); padding: 9px 12px; } .timeline-zoom button.active { background: var(--accent); border-color: var(--accent); } .timeline-channel { flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 6px; } .timeline-channel .channel-logo { width: 72px; height: 48px; flex: 0 0 auto; padding: 4px; } .timeline-channel-name { font-size: 0.82rem; line-height: 1.15; max-width: 145px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .timeline-programme { border-left: 5px solid rgba(148, 163, 184, 0.45); } .timeline-programme.is-current { opacity: 1; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent-soft), 0 8px 22px rgba(0, 0, 0, 0.45); z-index: 10; } .live-badge { display: inline-flex; margin-bottom: 3px; padding: 1px 6px; border-radius: 999px; background: var(--accent); color: white; font-size: 0.65rem; font-style: normal; font-weight: 900; letter-spacing: 0.04em; } .genre-film, .genre-movie, .genre-kino { border-left-color: #3b82f6; } .genre-serie, .genre-series { border-left-color: #8b5cf6; } .genre-sport, .genre-fussball, .genre-fu-ball { border-left-color: #22c55e; } .genre-news, .genre-nachrichten, .genre-journal { border-left-color: #ef4444; } .genre-doku, .genre-documentary { border-left-color: #14b8a6; } .genre-kinder, .genre-kids, .genre-children { border-left-color: #f97316; } .genre-musik, .genre-music { border-left-color: #eab308; } .timeline-programme:hover::after { content: attr(title); position: absolute; left: 0; top: calc(100% + 8px); width: max-content; max-width: 420px; white-space: normal; background: var(--panel-2); border: 1px solid var(--border); color: var(--text); padding: 10px 12px; border-radius: 10px; box-shadow: 0 12px 28px rgba(0,0,0,.45); z-index: 50; font-size: 0.85rem; line-height: 1.35; } .live-badge[hidden] { display: none !important; } .timeline-now-line { z-index: 5; }