/* 100% Elimination of PeerTube Mobile Open-in-App & Incompatible Browser Banners */ #incompatible-browser, .alert-light#incompatible-browser, div[id='incompatible-browser'], .incompatible-browser, .mobile-msg, my-header .mobile-msg, [class*='mobile-msg'], button[title*='Bu mesajı kapat'], button[aria-label*='Bu mesajı kapat'], button[title*='Dismiss'], .msg.ellipsis, .peertube-button-link.secondary-button { display: none !important; visibility: hidden !important; height: 0 !important; width: 0 !important; margin: 0 !important; padding: 0 !important; pointer-events: none !important; opacity: 0 !important; position: absolute !important; z-index: -999999 !important; clip: rect(0, 0, 0, 0) !important; } /* Permanent Aggressive Suppression of Generic JoinPeerTube / Framasoft Open-in-App Banners */ my-open-app, my-open-in-app, my-client-app-banner, .open-app-container, .app-banner, [class*='open-app'], [class*='open-in-app'], .mobile-app-banner, .app-promotion, .client-app-banner, a[href*='play.google.com/store/apps/details?id=app.joinpeertube'], a[href*='f-droid.org'], a[href*='joinpeertube'] { display: none !important; visibility: hidden !important; height: 0 !important; width: 0 !important; margin: 0 !important; padding: 0 !important; pointer-events: none !important; opacity: 0 !important; position: absolute !important; z-index: -99999 !important; } /* YakTube Accessibility & On-Demand CSS */ :focus-visible { outline: 3px solid #ff8f37 !important; outline-offset: 3px !important; box-shadow: 0 0 12px rgba(255, 143, 55, 0.7) !important; } /* Screen reader only utility */ .yaktube-sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; } /* On-Demand Search Section */ .yaktube-ondemand-section { margin: 24px 0; padding: 20px; background: rgba(22, 22, 30, 0.92); border: 1px solid rgba(255, 143, 55, 0.35); border-radius: 16px; backdrop-filter: blur(10px); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4); color: #fff; font-family: inherit; } .yaktube-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; border-bottom: 1px solid rgba(255, 255, 255, 0.12); padding-bottom: 12px; } .yaktube-header-left { display: flex; align-items: center; gap: 12px; } .yaktube-badge { background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%); color: #fff; font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; } .yaktube-title-h3 { margin: 0; font-size: 1.15rem; font-weight: 600; color: #f1f1f1; } .yaktube-shortcuts-btn { background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.15); color: #ddd; padding: 6px 12px; border-radius: 8px; font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; transition: all 0.2s ease; } .yaktube-shortcuts-btn:hover { background: rgba(255, 143, 55, 0.2); border-color: #ff8f37; color: #fff; } .yaktube-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; } .yaktube-card { background: #12121a; border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; } .yaktube-card:hover, .yaktube-card:focus-within { transform: translateY(-4px); border-color: rgba(255, 143, 55, 0.6); box-shadow: 0 10px 22px rgba(255, 143, 55, 0.18); } .yaktube-thumb-wrap { position: relative; width: 100%; padding-top: 56.25%; background: #000; overflow: hidden; } .yaktube-thumb-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .yaktube-card:hover .yaktube-thumb-img { transform: scale(1.05); } .yaktube-duration-badge { position: absolute; bottom: 8px; right: 8px; background: rgba(0, 0, 0, 0.85); color: #fff; font-size: 11px; font-weight: 600; padding: 2px 6px; border-radius: 4px; border: 1px solid rgba(255, 255, 255, 0.15); } .yaktube-info { padding: 12px; display: flex; flex-direction: column; justify-content: space-between; flex-grow: 1; gap: 10px; } .yaktube-video-name { font-size: 13px; font-weight: 600; line-height: 1.35; color: #fff; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } .yaktube-channel-name { font-size: 11px; color: #aaa; margin-top: 4px; } .yaktube-import-btn { background: linear-gradient(135deg, #ff8f37 0%, #ff6600 100%); border: none; color: #fff; padding: 8px 12px; font-size: 12px; font-weight: 600; border-radius: 8px; cursor: pointer; width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px; transition: opacity 0.2s ease, transform 0.1s ease; } .yaktube-import-btn:hover { opacity: 0.92; transform: translateY(-1px); } .yaktube-import-btn:disabled { background: #555; cursor: not-allowed; opacity: 0.6; } /* Modals */ .yaktube-modal-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; z-index: 99999; } .yaktube-modal-card { background: #181824; border: 1px solid rgba(255, 143, 55, 0.5); border-radius: 16px; padding: 28px 24px; max-width: 460px; width: 90%; text-align: center; box-shadow: 0 12px 36px rgba(0, 0, 0, 0.6); color: #fff; } .yaktube-modal-title { font-size: 1.25rem; font-weight: 700; margin-top: 14px; color: #ff8f37; } .yaktube-modal-desc { font-size: 13px; color: #bbb; margin-top: 8px; line-height: 1.4; } .yaktube-spinner { width: 44px; height: 44px; border: 4px solid rgba(255, 143, 55, 0.2); border-top-color: #ff8f37; border-radius: 50%; animation: yaktube-spin 0.8s linear infinite; margin: 0 auto; } @keyframes yaktube-spin { to { transform: rotate(360deg); } } /* Accessible Shortcuts Table */ .yaktube-shortcuts-table { width: 100%; text-align: left; border-collapse: collapse; margin-top: 16px; font-size: 13px; } .yaktube-shortcuts-table th { border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding: 8px; color: #ff8f37; } .yaktube-shortcuts-table td { border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding: 8px; color: #ddd; } .yaktube-kbd { background: #2a2a38; border: 1px solid #444; border-radius: 4px; padding: 2px 6px; font-family: monospace; font-weight: bold; color: #ff8f37; } .yaktube-modal-close-btn { background: #ff8f37; color: #111; border: none; padding: 8px 20px; font-weight: 700; border-radius: 8px; cursor: pointer; margin-top: 18px; } .yaktube-play-btn { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: #fff; padding: 8px 12px; font-size: 12px; font-weight: 700; border-radius: 8px; cursor: pointer; width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px; text-decoration: none; border: none; box-sizing: border-box; transition: opacity 0.2s ease, transform 0.1s ease; } .yaktube-play-btn:hover { opacity: 0.92; transform: translateY(-1px); color: #fff; } /* YakNet SSO Button and Account Header */ .yaknet-login-banner { background: linear-gradient(135deg, rgba(255, 143, 55, 0.15) 0%, rgba(255, 94, 58, 0.15) 100%); border: 1px solid rgba(255, 143, 55, 0.4); border-radius: 12px; padding: 16px; margin-bottom: 20px; text-align: center; } .yaknet-sso-login-btn { display: inline-flex; align-items: center; justify-content: center; gap: 12px; background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%); color: #fff !important; font-size: 14px; font-weight: 700; padding: 12px 24px; border-radius: 10px; text-decoration: none; width: 100%; box-sizing: border-box; box-shadow: 0 4px 18px rgba(255, 143, 55, 0.4); transition: transform 0.2s ease, box-shadow 0.2s ease; cursor: pointer; border: none; } .yaknet-sso-login-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 24px rgba(255, 143, 55, 0.6); color: #fff !important; } .yaknet-header-widget { display: inline-flex !important; align-items: center !important; position: relative !important; z-index: 9999999 !important; margin-left: 10px; } yaknet-account { display: inline-block !important; position: relative !important; z-index: 9999999 !important; } my-header, .header, .header-right, my-header .header-right, my-header .user-menu, my-header .action-buttons { overflow: visible !important; } .yaktube-admin-login-link { margin-top: 15px; text-align: center; font-size: 12px; color: #888; } .yaktube-admin-login-link a { color: #ff8f37; text-decoration: none; } .yaktube-admin-login-link a:hover { text-decoration: underline; } /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* YOUTUBE FULL SEARCH & VOICE MODAL (v1.3.3 - Display Fix) */ /* -------------------------------------------------------------------------- */ /* Header Search Trigger Container */ my-search-typeahead, .search-container, .header-search { display: flex !important; align-items: center !important; position: relative !important; width: 100% !important; max-width: 540px !important; margin: 0 auto !important; } .yaktube-search-outer-wrap { display: flex !important; align-items: center !important; width: 100% !important; } /* Clickable Pill Button in Header */ .yaktube-search-trigger-pill { display: flex !important; align-items: center !important; background: #121212 !important; border: 1px solid #303030 !important; border-radius: 40px !important; padding: 8px 18px !important; transition: all 0.2s ease !important; width: 100% !important; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.4) !important; cursor: pointer !important; color: #888 !important; font-size: 15px !important; user-select: none !important; gap: 10px !important; } .yaktube-search-trigger-pill:hover, .yaktube-search-trigger-pill:focus { border-color: #ff8f37 !important; background: #18181c !important; color: #f1f1f1 !important; box-shadow: 0 0 12px rgba(255, 143, 55, 0.25) !important; outline: none !important; } .yaktube-search-trigger-icon { font-size: 15px !important; color: #ff8f37 !important; } .yaktube-search-trigger-text { flex: 1 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; text-align: left !important; } .yaktube-search-trigger-shortcut { font-size: 11px !important; background: #252530 !important; color: #aaa !important; padding: 2px 6px !important; border-radius: 6px !important; border: 1px solid rgba(255, 255, 255, 0.1) !important; } /* Circular Voice Button in Header */ .yaktube-voice-search-btn { background: #1f1f1f !important; color: #f1f1f1 !important; border: 1px solid rgba(255, 255, 255, 0.08) !important; border-radius: 50% !important; width: 40px !important; height: 40px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; font-size: 18px !important; cursor: pointer !important; margin-left: 8px !important; transition: all 0.25s ease !important; flex-shrink: 0 !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; } .yaktube-voice-search-btn:hover, .yaktube-voice-search-btn:focus { background: #2a2a2a !important; border-color: #ff8f37 !important; color: #ff8f37 !important; transform: scale(1.06) !important; outline: none !important; } /* -------------------------------------------------------------------------- */ /* FULL YOUTUBE SEARCH & VOICE MODAL OVERLAY */ /* -------------------------------------------------------------------------- */ .yaktube-full-search-modal { position: fixed !important; top: 0 !important; left: 0 !important; width: 100vw !important; height: 100vh !important; background: rgba(0, 0, 0, 0.82) !important; backdrop-filter: blur(12px) !important; z-index: 999999 !important; display: none; flex-direction: column !important; align-items: center !important; justify-content: flex-start !important; padding-top: 40px !important; } .yaktube-full-search-modal.yaktube-modal-open { display: flex !important; animation: yaktube-fade-in 0.2s ease-out !important; } .yaktube-modal-search-card { background: #1e1e24 !important; border: 1px solid rgba(255, 143, 55, 0.3) !important; border-radius: 20px !important; width: 92% !important; max-width: 680px !important; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.8) !important; overflow: hidden !important; color: #fff !important; } /* Modal Search Bar */ .yaktube-modal-search-bar { display: flex !important; align-items: center !important; padding: 10px 14px !important; background: #141418 !important; border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important; } .yaktube-modal-back-btn { background: transparent !important; border: none !important; color: #aaa !important; font-size: 22px !important; width: 40px !important; height: 40px !important; border-radius: 50% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: pointer !important; margin-right: 8px !important; flex-shrink: 0 !important; transition: all 0.2s ease !important; } .yaktube-modal-back-btn:hover { background: rgba(255, 255, 255, 0.1) !important; color: #fff !important; } .yaktube-modal-input-wrap { display: flex !important; align-items: center !important; flex: 1 !important; background: #22222a !important; border: 1px solid #33333f !important; border-radius: 30px !important; padding: 2px 8px 2px 14px !important; margin-right: 10px !important; } .yaktube-modal-input-wrap:focus-within { border-color: #ff8f37 !important; box-shadow: 0 0 10px rgba(255, 143, 55, 0.3) !important; } .yaktube-modal-input-wrap input { flex: 1 !important; background: transparent !important; border: none !important; color: #fff !important; font-size: 16px !important; padding: 8px 4px !important; outline: none !important; } .yaktube-modal-clear-btn { background: rgba(255, 255, 255, 0.12) !important; color: #aaa !important; border: none !important; border-radius: 50% !important; width: 24px !important; height: 24px !important; display: none; align-items: center !important; justify-content: center !important; font-size: 12px !important; font-weight: 700 !important; cursor: pointer !important; margin-right: 4px !important; } .yaktube-modal-clear-btn:hover { background: rgba(255, 255, 255, 0.25) !important; color: #fff !important; } .yaktube-modal-search-action-btn { background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%) !important; color: #fff !important; border: none !important; border-radius: 30px !important; padding: 8px 18px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; transition: all 0.2s ease !important; flex-shrink: 0 !important; } .yaktube-modal-search-action-btn:hover { transform: scale(1.03) !important; box-shadow: 0 4px 14px rgba(255, 143, 55, 0.4) !important; } .yaktube-modal-voice-btn { background: #2a2a34 !important; color: #ff8f37 !important; border: 1px solid rgba(255, 143, 55, 0.3) !important; border-radius: 50% !important; width: 40px !important; height: 40px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; font-size: 18px !important; cursor: pointer !important; margin-left: 8px !important; transition: all 0.2s ease !important; flex-shrink: 0 !important; } .yaktube-modal-voice-btn:hover { background: #ff8f37 !important; color: #fff !important; transform: scale(1.06) !important; } /* Modal Body Content */ .yaktube-modal-body { padding: 20px 24px 28px 24px !important; } /* Voice Recognition Banner Inside Modal */ .yaktube-modal-voice-section { display: none; background: #141418 !important; border: 1px solid rgba(255, 143, 55, 0.3) !important; border-radius: 14px !important; padding: 20px !important; text-align: center !important; margin-bottom: 20px !important; animation: yaktube-fade-in 0.2s ease !important; } .yaktube-modal-voice-status { font-size: 18px !important; font-weight: 700 !important; color: #f1f1f1 !important; margin-bottom: 12px !important; } .yaktube-modal-voice-transcript { font-size: 16px !important; color: #ff8f37 !important; font-weight: 600 !important; min-height: 24px !important; margin-bottom: 16px !important; } .yaktube-modal-mic-pulse-btn { background: #cc0000 !important; color: #fff !important; border: none !important; border-radius: 50% !important; width: 64px !important; height: 64px !important; font-size: 28px !important; cursor: pointer !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 20px rgba(204, 0, 0, 0.5) !important; animation: yaktube-pulse-recording 1.5s infinite !important; } /* Popular Topics & Chips */ .yaktube-modal-section-title { font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; color: #888 !important; margin-bottom: 12px !important; display: flex !important; align-items: center !important; gap: 6px !important; } .yaktube-modal-chips-grid { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; margin-bottom: 18px !important; } .yaktube-modal-chip { background: #252530 !important; color: #e2e8f0 !important; border: 1px solid rgba(255, 255, 255, 0.08) !important; border-radius: 20px !important; padding: 8px 14px !important; font-size: 13px !important; font-weight: 600 !important; cursor: pointer !important; transition: all 0.2s ease !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; } .yaktube-modal-chip:hover { background: rgba(255, 143, 55, 0.2) !important; border-color: #ff8f37 !important; color: #fff !important; transform: translateY(-1px) !important; } .yaktube-modal-hint-footer { display: flex !important; justify-content: space-between !important; align-items: center !important; font-size: 12px !important; color: #777 !important; border-top: 1px solid rgba(255, 255, 255, 0.06) !important; padding-top: 12px !important; margin-top: 8px !important; } /* -------------------------------------------------------------------------- */ /* YOUTUBE THEATER MODE & QUICK VIDEO INFO TOAST (v1.4.0) */ /* -------------------------------------------------------------------------- */ /* Theater / Cinema Mode (T) */ body.yaktube-theater-mode my-video-watch, body.yaktube-theater-mode .video-watch, body.yaktube-theater-mode .watch-container { max-width: 100% !important; width: 100% !important; padding: 0 !important; } body.yaktube-theater-mode .player-container, body.yaktube-theater-mode .video-player-container, body.yaktube-theater-mode .player-wrapper { max-height: 82vh !important; height: 82vh !important; width: 100% !important; max-width: 100% !important; background: #000 !important; display: flex !important; justify-content: center !important; align-items: center !important; margin-bottom: 20px !important; } body.yaktube-theater-mode video, body.yaktube-theater-mode .video-js { width: 100% !important; height: 100% !important; max-height: 82vh !important; } /* Quick Video Info Toast (I) */ .yaktube-video-info-toast { position: fixed !important; top: 70px !important; right: 20px !important; background: rgba(20, 20, 26, 0.95) !important; backdrop-filter: blur(12px) !important; border: 1px solid rgba(255, 143, 55, 0.4) !important; border-radius: 14px !important; padding: 16px 20px !important; color: #fff !important; font-size: 14px !important; z-index: 99999 !important; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7) !important; max-width: 380px !important; animation: yaktube-fade-in 0.25s ease-out !important; pointer-events: none !important; } .yaktube-info-toast-title { font-size: 15px !important; font-weight: 700 !important; color: #ff8f37 !important; margin-bottom: 8px !important; display: flex !important; align-items: center !important; gap: 6px !important; } .yaktube-info-toast-row { display: flex !important; justify-content: space-between !important; margin: 4px 0 !important; font-size: 13px !important; color: #ccc !important; } .yaktube-info-toast-row b { color: #fff !important; } /* -------------------------------------------------------------------------- */ /* ACCESSIBLE PLAYER ACTION BAR & SHORTCUTS (v1.4.1) */ /* -------------------------------------------------------------------------- */ .yaktube-player-action-bar { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; align-items: center !important; background: #181820 !important; border: 1px solid rgba(255, 255, 255, 0.1) !important; border-radius: 12px !important; padding: 10px 14px !important; margin: 12px 0 16px 0 !important; width: 100% !important; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4) !important; } .yaktube-player-bar-label { font-size: 13px !important; font-weight: 700 !important; color: #ff8f37 !important; margin-right: 6px !important; display: flex !important; align-items: center !important; gap: 4px !important; } .yaktube-player-action-btn { background: #252530 !important; color: #f1f1f1 !important; border: 1px solid rgba(255, 255, 255, 0.1) !important; border-radius: 8px !important; padding: 6px 12px !important; font-size: 13px !important; font-weight: 600 !important; cursor: pointer !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; transition: all 0.2s ease !important; } .yaktube-player-action-btn:hover, .yaktube-player-action-btn:focus { background: rgba(255, 143, 55, 0.2) !important; border-color: #ff8f37 !important; color: #fff !important; outline: none !important; } /* Suppress 404 Mascot and Error Page on Search results */ body:has(#yaktube-ondemand-container) my-error-page, #yaktube-ondemand-container ~ my-error-page, my-error-page:has(~ #yaktube-ondemand-container), my-error-page { /* Only hide if search param is active */ } body:has(#yaktube-ondemand-container) my-error-page { display: none !important; visibility: hidden !important; height: 0 !important; overflow: hidden !important; } /* -------------------------------------------------------------------------- */ /* YakTube Local Video Shelf & Highlights (v1.4.29) */ /* -------------------------------------------------------------------------- */ .yaktube-local-shelf { margin-top: 24px; padding-top: 20px; border-top: 1px solid rgba(16, 185, 129, 0.25); } .yaktube-local-shelf-sub { font-size: 12px; color: #a7f3d0; margin-top: 4px; display: block; } .yaktube-local-card { border-color: rgba(16, 185, 129, 0.35) !important; } .yaktube-local-card:hover, .yaktube-local-card:focus-within { border-color: #10b981 !important; box-shadow: 0 10px 22px rgba(16, 185, 129, 0.22) !important; } /* -------------------------------------------------------------------------- */ /* YakTube Fediverse Bridge & Scope Selector (v1.4.29) */ /* -------------------------------------------------------------------------- */ .yaktube-fediverse-bridge { margin: 28px 0 16px 0; padding: 16px 20px; background: linear-gradient(135deg, rgba(30, 27, 75, 0.85) 0%, rgba(15, 23, 42, 0.9) 100%); border: 1px solid rgba(99, 102, 241, 0.4); border-radius: 14px; backdrop-filter: blur(12px); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35); color: #ffffff; } .yaktube-fediverse-bridge-content { display: flex; align-items: center; justify-content: space-between; width: 100%; flex-wrap: wrap; gap: 16px; } .yaktube-fediverse-bridge-left { flex: 1 1 320px; } .yaktube-fediverse-bridge-badge-wrap { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; } .yaktube-fediverse-badge { background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%); color: #fff; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 12px; text-transform: uppercase; letter-spacing: 0.5px; } .yaktube-fediverse-status { font-size: 12px; font-weight: 600; color: #a5b4fc; } .yaktube-fediverse-title { margin: 0; font-size: 1.15rem; font-weight: 700; color: #ffffff; display: flex; align-items: center; gap: 8px; } .yaktube-fediverse-sub { margin: 4px 0 0 0; font-size: 12px; color: #94a3b8; line-height: 1.4; } .yaktube-scope-selector { display: inline-flex; align-items: center; background: rgba(15, 23, 42, 0.75); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 10px; padding: 4px; gap: 4px; } .yaktube-scope-btn { background: transparent; border: 1px solid transparent; color: #94a3b8; padding: 8px 16px; font-size: 13px; font-weight: 600; border-radius: 8px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; transition: all 0.2s ease; } .yaktube-scope-btn:hover { color: #ffffff; background: rgba(255, 255, 255, 0.08); } .yaktube-scope-btn.active { background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%); color: #ffffff; border-color: rgba(255, 143, 55, 0.4); box-shadow: 0 2px 8px rgba(255, 143, 55, 0.35); font-weight: 700; } .yaktube-scope-btn:focus-visible { outline: 2px solid #ff8f37; outline-offset: 2px; } /* -------------------------------------------------------------------------- */ /* YAKTUBE TOUCH & MOBILE DOUBLE-TAP TO SEEK (v1.5.0) */ /* -------------------------------------------------------------------------- */ .yaktube-doubletap-overlay { position: absolute !important; top: 0 !important; bottom: 0 !important; width: 40% !important; display: flex !important; align-items: center !important; justify-content: center !important; pointer-events: none !important; z-index: 9999 !important; opacity: 0; transition: opacity 0.25s ease-out !important; } .yaktube-doubletap-left { left: 0 !important; background: radial-gradient(circle at left center, rgba(255, 143, 55, 0.35) 0%, transparent 70%) !important; border-top-left-radius: 16px; border-bottom-left-radius: 16px; } .yaktube-doubletap-right { right: 0 !important; background: radial-gradient(circle at right center, rgba(255, 143, 55, 0.35) 0%, transparent 70%) !important; border-top-right-radius: 16px; border-bottom-right-radius: 16px; } .yaktube-doubletap-overlay.yaktube-ripple-active { opacity: 1 !important; } .yaktube-ripple-content { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; background: rgba(0, 0, 0, 0.75) !important; border: 1px solid rgba(255, 143, 55, 0.6) !important; border-radius: 50px !important; padding: 12px 24px !important; color: #fff !important; font-size: 16px !important; font-weight: 700 !important; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6) !important; transform: scale(0.85); animation: yaktube-ripple-bounce 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards !important; } @keyframes yaktube-ripple-bounce { 0% { transform: scale(0.7); opacity: 0.5; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } /* -------------------------------------------------------------------------- */ /* YAKTUBE SLEEP TIMER & QR CODE MODALS (v1.5.0) */ /* -------------------------------------------------------------------------- */ .yaktube-feature-modal-backdrop { position: fixed !important; top: 0 !important; left: 0 !important; width: 100vw !important; height: 100vh !important; background: rgba(0, 0, 0, 0.82) !important; backdrop-filter: blur(10px) !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; padding: 16px !important; animation: yaktube-fade-in 0.2s ease-out !important; } .yaktube-feature-modal-card { background: #18181f !important; border: 1px solid rgba(255, 143, 55, 0.4) !important; border-radius: 20px !important; width: 100% !important; max-width: 440px !important; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.85) !important; color: #fff !important; overflow: hidden !important; display: flex !important; flex-direction: column !important; animation: yaktube-slide-up 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important; } .yaktube-feature-modal-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 18px 24px !important; border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important; background: rgba(255, 143, 55, 0.08) !important; } .yaktube-feature-modal-title { margin: 0 !important; font-size: 18px !important; font-weight: 700 !important; color: #ff8f37 !important; display: flex !important; align-items: center !important; gap: 8px !important; } .yaktube-feature-modal-close { background: transparent !important; border: none !important; color: #94a3b8 !important; font-size: 22px !important; cursor: pointer !important; padding: 4px 8px !important; border-radius: 8px !important; transition: all 0.2s ease !important; } .yaktube-feature-modal-close:hover, .yaktube-feature-modal-close:focus { color: #fff !important; background: rgba(255, 255, 255, 0.1) !important; outline: 2px solid #ff8f37 !important; } .yaktube-feature-modal-body { padding: 24px !important; display: flex !important; flex-direction: column !important; gap: 16px !important; } .yaktube-timer-options { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 10px !important; } .yaktube-timer-btn { background: #23232c !important; border: 1px solid rgba(255, 255, 255, 0.12) !important; color: #f1f5f9 !important; border-radius: 12px !important; padding: 14px 12px !important; font-size: 14px !important; font-weight: 600 !important; cursor: pointer !important; transition: all 0.2s ease !important; text-align: center !important; } .yaktube-timer-btn:hover, .yaktube-timer-btn:focus-visible { background: #2d2d38 !important; border-color: #ff8f37 !important; color: #ff8f37 !important; transform: translateY(-2px) !important; outline: none !important; box-shadow: 0 4px 12px rgba(255, 143, 55, 0.25) !important; } .yaktube-timer-btn.active { background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%) !important; color: #fff !important; border-color: transparent !important; font-weight: 700 !important; box-shadow: 0 4px 15px rgba(255, 143, 55, 0.4) !important; } .yaktube-timer-badge { display: inline-flex !important; align-items: center !important; gap: 6px !important; background: rgba(255, 143, 55, 0.2) !important; border: 1px solid #ff8f37 !important; color: #ff8f37 !important; padding: 4px 10px !important; border-radius: 20px !important; font-size: 12px !important; font-weight: 700 !important; animation: yaktube-pulse 2s infinite !important; } @keyframes yaktube-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.04); } 100% { transform: scale(1); } } .yaktube-qr-wrapper { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; padding: 16px !important; background: #ffffff !important; border-radius: 16px !important; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important; width: fit-content !important; margin: 0 auto !important; } .yaktube-qr-wrapper svg { display: block !important; width: 190px !important; height: 190px !important; } .yaktube-qr-desc { font-size: 13px !important; color: #94a3b8 !important; text-align: center !important; margin: 0 !important; line-height: 1.5 !important; } .yaktube-qr-copy-btn { background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%) !important; color: #ffffff !important; border: none !important; border-radius: 12px !important; padding: 12px 20px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; transition: all 0.2s ease !important; } .yaktube-qr-copy-btn:hover, .yaktube-qr-copy-btn:focus-visible { transform: translateY(-2px) !important; box-shadow: 0 6px 20px rgba(255, 143, 55, 0.4) !important; outline: none !important; } /* ========================================================================== YAKTUBE ACCESSIBLE PLAYER & WATCH PAGE STYLES (W3C WAI-ARIA) ========================================================================== */ /* 1. Accessible Skip Link (Top of Page) */ .yaktube-skip-link { position: fixed !important; top: -120px !important; left: 16px !important; background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%) !important; color: #ffffff !important; padding: 12px 22px !important; border-radius: 12px !important; font-weight: 800 !important; font-size: 14px !important; text-decoration: none !important; box-shadow: 0 8px 30px rgba(255, 143, 55, 0.5) !important; z-index: 999999 !important; transition: top 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important; display: inline-flex !important; align-items: center !important; gap: 8px !important; } .yaktube-skip-link:focus, .yaktube-skip-link:focus-visible { top: 16px !important; outline: 3px solid #ffffff !important; outline-offset: 3px !important; } /* 2. Accessible Video Player Container Focus States */ #videojs-wrapper:focus, #videojs-wrapper:focus-visible, .video-js:focus-visible { outline: 3px solid #ff8f37 !important; outline-offset: 4px !important; box-shadow: 0 0 25px rgba(255, 143, 55, 0.65) !important; border-radius: 8px !important; } /* 3. Accessible Player Action Toolbar */ .yaktube-player-action-bar { display: flex !important; align-items: center !important; flex-wrap: wrap !important; gap: 8px !important; margin: 12px 0 18px 0 !important; padding: 10px 16px !important; background: rgba(24, 24, 32, 0.95) !important; border: 1px solid rgba(255, 143, 55, 0.3) !important; border-radius: 12px !important; backdrop-filter: blur(10px) !important; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4) !important; width: 100% !important; box-sizing: border-box !important; } .yaktube-player-bar-label { font-size: 13px !important; font-weight: 700 !important; color: #ff8f37 !important; margin-right: 6px !important; user-select: none !important; } .yaktube-player-action-btn { background: rgba(255, 255, 255, 0.08) !important; color: #eeeeee !important; border: 1px solid rgba(255, 255, 255, 0.15) !important; padding: 7px 14px !important; border-radius: 8px !important; font-size: 12.5px !important; font-weight: 600 !important; cursor: pointer !important; transition: all 0.2s ease !important; display: inline-flex !important; align-items: center !important; gap: 5px !important; } .yaktube-player-action-btn:hover, .yaktube-player-action-btn:focus-visible { background: rgba(255, 143, 55, 0.25) !important; border-color: #ff8f37 !important; color: #ffffff !important; transform: translateY(-1px) !important; outline: 2px solid #ff8f37 !important; outline-offset: 2px !important; } /* 4. Rate Buttons Distinct Separation (Like & Dislike) */ my-video-rate .video-actions, my-video-rate .video-actions-rates, my-video-rate { display: inline-flex !important; align-items: center !important; gap: 8px !important; } my-video-rate button.action-button { margin-right: 6px !important; border-radius: 8px !important; transition: all 0.2s ease !important; } my-video-rate button.action-button:focus-visible { outline: 2px solid #ff8f37 !important; outline-offset: 2px !important; } /* 5. Date Toggle Button Clarity */ my-date-toggle .date-toggle { cursor: pointer !important; border-radius: 6px !important; padding: 2px 6px !important; transition: background 0.2s ease !important; } my-date-toggle .date-toggle:hover, my-date-toggle .date-toggle:focus-visible { background: rgba(255, 143, 55, 0.15) !important; color: #ff8f37 !important; outline: 2px solid #ff8f37 !important; outline-offset: 1px !important; } /* 6. Video.js Native Control Bar 10s Seek Buttons (Mobile & Desktop) */ .video-js .vjs-control-bar .yaktube-vjs-seek-btn { display: inline-flex !important; align-items: center !important; justify-content: center !important; width: 44px !important; height: 100% !important; min-width: 44px !important; min-height: 44px !important; cursor: pointer !important; color: #f1f1f1 !important; font-size: 13px !important; font-weight: 700 !important; position: relative !important; user-select: none !important; background: transparent !important; border: none !important; padding: 0 !important; margin: 0 2px !important; transition: color 0.2s ease, transform 0.15s ease !important; } .video-js .vjs-control-bar .yaktube-vjs-seek-btn:hover, .video-js .vjs-control-bar .yaktube-vjs-seek-btn:focus-visible { color: #ff8f37 !important; transform: scale(1.1) !important; outline: 2px solid #ff8f37 !important; outline-offset: -2px !important; } .video-js .vjs-control-bar .yaktube-vjs-seek-btn:active { transform: scale(0.92) !important; } .yaktube-vjs-seek-icon { display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 1px !important; font-size: 13px !important; line-height: 1 !important; } .yaktube-vjs-seek-num { font-size: 10px !important; font-weight: 800 !important; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important; color: #ff8f37 !important; margin-top: 1px !important; } /* 7. Mobile Watch Page & Action Bar Touch Optimizations */ @media (max-width: 768px) { .video-js .vjs-control-bar .yaktube-vjs-seek-btn { width: 46px !important; min-width: 46px !important; font-size: 14px !important; } .yaktube-player-action-bar { padding: 8px 10px !important; gap: 6px !important; } .yaktube-player-action-btn { padding: 9px 12px !important; font-size: 12px !important; flex: 1 1 calc(50% - 6px) !important; justify-content: center !important; min-height: 42px !important; } }