::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#0f172a}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#4f46e5,#06b6d4);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#6366f1,#22d3ee)}.epg-scroll::-webkit-scrollbar{display:none}.epg-scroll{-ms-overflow-style:none;scrollbar-width:none}.perspective-1000{perspective:1000px}.transform-style-preserve-3d{transform-style:preserve-3d}@keyframes cube-spin{0%{transform:rotateY(0) rotateX(0)}to{transform:rotateY(360deg) rotateX(360deg)}}.animate-cube-spin{animation:cube-spin 20s linear infinite}.cube{transform-style:preserve-3d}.cube-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;border:1px solid rgba(255,255,255,.2);box-shadow:0 2px 4px #0003}.cube-face.front{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.cube-face.back{background:linear-gradient(135deg,#8b5cf6,#06b6d4)}.cube-face.right{background:linear-gradient(135deg,#06b6d4,#10b981)}.cube-face.left{background:linear-gradient(135deg,#10b981,#f59e0b)}.cube-face.top{background:linear-gradient(135deg,#f59e0b,#ef4444)}.cube-face.bottom{background:linear-gradient(135deg,#ef4444,#6366f1)}.cube-face.front{--transform: rotateY(0deg)}.cube-face.back{--transform: rotateY(180deg)}.cube-face.right{--transform: rotateY(90deg)}.cube-face.left{--transform: rotateY(-90deg)}.cube-face.top{--transform: rotateX(90deg)}.cube-face.bottom{--transform: rotateX(-90deg)}.header-cube .cube-face{transform:var(--transform) translateZ(24px)}.screensaver-cube .cube-face{transform:var(--transform) translateZ(192px)}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.epg-scroll-container{will-change:scroll-position;transform:translateZ(0);backface-visibility:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.epg-row{contain:layout style paint;transform:translateZ(0);will-change:transform}.epg-program-block{will-change:transform;transform:translateZ(0);contain:layout style paint}
