/* ── TV D-Pad Cursor — virtual mouse cursor for Android TV ── */ /* Cursor element: a glowing circle fixed to the viewport. */ #wta-tv-cursor { position: fixed; top: 0; left: 0; width: 24px; height: 24px; margin-left: -12px; margin-top: -12px; background: radial-gradient(circle, rgba(0, 200, 255, 0.95) 30%, rgba(0, 200, 255, 0.3) 70%); border: 2.5px solid #fff; border-radius: 50%; box-shadow: 0 0 12px rgba(0, 200, 255, 0.9), 0 0 30px rgba(0, 200, 255, 0.3); z-index: 2147483647; pointer-events: none; will-change: transform; transition: transform 0.05s linear, opacity 0.3s ease; transform: translate(0, 0); } #wta-tv-cursor.teleporting { transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1); } #wta-tv-cursor.clicking { background: #4cff4c; border-color: #fff; box-shadow: 0 0 15px #4cff4c; } #wta-tv-cursor.idle { opacity: 0.25; } #wta-tv-cursor.hidden { opacity: 0; } /* Hover highlight on clickable elements. */ .wta-tv-hover-target { outline: 3px solid rgba(0, 200, 255, 0.6) !important; outline-offset: 2px !important; transition: outline 0.15s; } /* Persistent settings gear button (bottom-right corner). */ #wta-tv-gear { position: fixed; bottom: 20px; right: 20px; width: 48px; height: 48px; background: rgba(20, 20, 30, 0.85); border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 12px; color: #fff; font-size: 22px; display: flex; align-items: center; justify-content: center; z-index: 2147483646; pointer-events: none; user-select: none; backdrop-filter: blur(6px); transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s; } #wta-tv-gear.focused { border-color: #00c8ff; transform: scale(1.1); box-shadow: 0 0 15px rgba(0, 200, 255, 0.4); } #wta-tv-gear.active { background: rgba(0, 200, 255, 0.2); } /* Settings menu overlay. */ #wta-tv-menu { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 480px; max-width: 80vw; background: rgba(20, 20, 30, 0.95); border: 2px solid rgba(255, 255, 255, 0.15); border-radius: 16px; padding: 20px 24px; z-index: 2147483647; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; color: #fff; display: none; backdrop-filter: blur(12px); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6); } #wta-tv-menu.open { display: block; } #wta-tv-menu h2 { margin: 0 0 20px 0; font-size: 20px; font-weight: 600; color: #00c8ff; border-bottom: 1px solid rgba(255, 255, 255, 0.1); padding-bottom: 12px; } .wta-tv-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; margin: 6px -8px; border-radius: 10px; font-size: 16px; transition: background 0.15s, box-shadow 0.15s; border: 2px solid transparent; } .wta-tv-row .label { display: flex; align-items: center; gap: 10px; } .wta-tv-row .value { font-weight: 600; color: #00c8ff; font-variant-numeric: tabular-nums; } .wta-tv-row .hint { font-size: 12px; color: rgba(255, 255, 255, 0.4); margin-left: auto; margin-right: 12px; } .wta-tv-row.active { background: rgba(0, 200, 255, 0.15); border-color: #00c8ff; box-shadow: 0 0 12px rgba(0, 200, 255, 0.25); } .wta-tv-row.close-btn { justify-content: center; color: #ff5555; font-weight: 600; margin-top: 10px; border-top: 1px solid rgba(255, 255, 255, 0.1); } .wta-tv-row.close-btn.active { background: rgba(255, 85, 85, 0.15); border-color: #ff5555; box-shadow: 0 0 12px rgba(255, 85, 85, 0.25); } .wta-tv-arrows { opacity: 0; transition: opacity 0.15s; font-size: 12px; color: rgba(255, 255, 255, 0.5); } .wta-tv-row.active .wta-tv-arrows { opacity: 1; }