/* VMC Tizen — 10-foot UI Android Compose gebruikt dp×density (~2× op 1080p TV). Tizen CSS-px ≈ schermpixels → we schalen ~1.75× t.o.v. Android-dp-waarden. */ * { box-sizing: border-box; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; background: #0B0B0B; color: #F5F5F5; font-family: Arial, Helvetica, sans-serif; overflow: hidden; font-size: 22px; } button { font: inherit; color: inherit; border: none; cursor: pointer; background: transparent; } .hidden { display: none !important; } #app, .screen { position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow: hidden; background: #0B0B0B; } .muted { color: #B3B3B3; } /* ——— McButton ——— */ .btn { display: inline-block; vertical-align: middle; background: rgba(255, 255, 255, 0.22); color: #F5F5F5; padding: 18px 34px; border-radius: 6px; margin-right: 16px; margin-bottom: 10px; outline: none; border: 4px solid transparent; font-size: 24px; font-weight: 700; line-height: 1.2; } .btn.primary { background: #FFFFFF; color: #141414; } .btn:focus { border-color: #FFFFFF; background: #FFFFFF; color: #141414; } .btn.primary:focus { background: #E50914; color: #FFFFFF; border-color: #FFFFFF; } .focusable:focus, .tile:focus, .profile-tile:focus, .ep:focus, .num-key:focus, .nav-tab:focus, .nav-profile:focus, .ch-row:focus, .cat-chip:focus, .kb-key:focus, .settings-row:focus { border-color: #FFFFFF; outline: none; } /* ——— Pair / Profiles ——— */ .brand { color: #E50914; font-weight: 900; letter-spacing: 0.06em; font-size: 44px; margin-bottom: 22px; } .pair-card { position: absolute; top: 50%; left: 50%; width: 900px; margin-left: -450px; margin-top: -280px; text-align: center; padding: 52px 48px; background: #141414; border-radius: 14px; } .pair-card h1 { font-size: 48px; margin: 0 0 14px; font-weight: 800; } .pair-card .muted { font-size: 22px; } .pair-code { font-size: 80px; font-weight: 800; letter-spacing: 0.18em; margin: 32px 0 16px; } .pair-link { color: #E50914; font-size: 28px; font-weight: 600; } #pair-status { font-size: 22px; margin-top: 10px; } .profiles-wrap { position: absolute; top: 12%; left: 5%; width: 90%; text-align: center; } .profiles-wrap h1 { font-size: 52px; font-weight: 800; margin-bottom: 8px; } .profiles-wrap .muted { font-size: 24px; } .profile-grid { margin-top: 40px; font-size: 0; text-align: center; } .profile-tile { display: inline-block; vertical-align: top; width: 200px; padding: 14px; border-radius: 10px; border: 4px solid transparent; outline: none; margin: 0 18px 24px; font-size: 22px; text-align: center; } .avatar { width: 128px; height: 128px; border-radius: 8px; background: #1F1F1F; line-height: 128px; font-size: 64px; font-weight: 400; margin: 0 auto 14px; color: #F5F5F5; border: 3px solid #2A2A2A; } .profile-tile:focus .avatar { border-color: #FFFFFF; } .profile-tile .name { font-weight: 700; font-size: 22px; } .profile-tile .badge { color: #888; font-size: 16px; margin-top: 6px; min-height: 18px; } .pin-panel { margin-top: 28px; } .pin-panel h2 { font-size: 32px; } .pin-dots { margin: 18px 0; text-align: center; font-size: 0; } .pin-dots span { display: inline-block; width: 22px; height: 22px; border-radius: 50%; background: #333; margin: 0 10px; } .pin-dots span.on { background: #E50914; } .numpad { width: 280px; margin: 0 auto 16px; text-align: center; font-size: 0; } .num-key { display: inline-block; vertical-align: top; width: 72px; height: 72px; border-radius: 8px; background: #1F1F1F; border: 4px solid transparent; outline: none; font-size: 28px; font-weight: 700; margin: 6px; line-height: 64px; text-align: center; } /* ——— TopNav ——— */ .topnav { position: absolute; top: 0; left: 0; right: 0; height: 108px; z-index: 40; padding: 20px 48px 0; white-space: nowrap; overflow: hidden; background: #0B0B0B; } .topnav.overlay { background-color: rgba(0, 0, 0, 0.55); background-image: linear-gradient( to bottom, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0.45) 55%, rgba(0, 0, 0, 0) 100% ); } .nav-brand { display: inline-block; vertical-align: middle; color: #E50914; font-weight: 900; font-size: 42px; margin-right: 32px; letter-spacing: 0.02em; } .nav-tab { display: inline-block; vertical-align: middle; padding: 12px 20px; margin-right: 8px; border-radius: 6px; border: 4px solid transparent; outline: none; color: #808080; font-size: 26px; font-weight: 600; } .topnav.overlay .nav-tab { color: #E8E8E8; } .nav-tab.active { color: #FFFFFF; font-weight: 700; background: rgba(255, 255, 255, 0.2); } .nav-tab.active .nav-underline { display: block; width: 36px; height: 4px; margin: 8px auto 0; background: #E50914; border-radius: 2px; } .nav-underline { display: none; height: 0; } .nav-tab:focus { background: rgba(255, 255, 255, 0.27); border-color: #FFFFFF; } .nav-profile { display: inline-block; vertical-align: middle; float: right; padding: 10px 20px 10px 12px; border-radius: 50px; border: 4px solid transparent; outline: none; color: #F5F5F5; font-size: 22px; font-weight: 600; background: rgba(255, 255, 255, 0.2); max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nav-avatar { display: inline-block; vertical-align: middle; width: 40px; height: 40px; line-height: 40px; text-align: center; font-size: 28px; margin-right: 10px; background: rgba(0, 0, 0, 0.25); border-radius: 50%; } .nav-profile-name { display: inline-block; vertical-align: middle; max-width: 200px; overflow: hidden; text-overflow: ellipsis; } .nav-profile:focus { background: rgba(255, 255, 255, 0.33); border-color: #FFFFFF; } .main-body { position: absolute; top: 108px; left: 0; right: 0; bottom: 0; overflow-x: hidden; overflow-y: auto; } .main-body.home-mode { top: 0; } .tab-pane { min-height: 100%; } /* ——— Spotlight hero ——— */ .hero { position: relative; height: 820px; background-color: #0B0B0B; overflow: hidden; } /* Full-bleed laag — cover expliciet (Tizen mag background-size anders vergeten) */ .hero-bg { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 0; background-color: #0B0B0B; background-size: cover; background-position: center top; background-repeat: no-repeat; } .hero-bg.empty { background-image: none; } /* Eén zachte scrim i.p.v. zware zwarte platen (die de art tot een strip maakten) */ .hero-scrim { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; background-image: linear-gradient( to right, rgba(11, 11, 11, 0.82) 0%, rgba(11, 11, 11, 0.35) 40%, rgba(11, 11, 11, 0.05) 70%, rgba(11, 11, 11, 0) 100% ), linear-gradient( to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 50%, rgba(11, 11, 11, 0.5) 75%, rgba(11, 11, 11, 0.96) 100% ); } .hero-content { position: absolute; left: 56px; top: 140px; width: 52%; max-width: 760px; z-index: 4; } .hero-badge { display: inline-block; background: #E50914; color: #FFFFFF; font-size: 18px; font-weight: 800; padding: 6px 14px; border-radius: 4px; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 0.04em; } .hero-logo { height: 100px; max-width: 560px; background-size: contain; background-position: left center; background-repeat: no-repeat; margin-bottom: 16px; } .hero-title { font-size: 64px; font-weight: 900; line-height: 1.05; margin-bottom: 14px; color: #F5F5F5; } .hero-meta { color: #CFCFCF; font-size: 24px; font-weight: 600; margin-bottom: 22px; } .hero-actions { font-size: 0; margin-bottom: 18px; } .hero-dots { font-size: 0; } .hero-dot { display: inline-block; width: 12px; height: 4px; margin-right: 8px; background: rgba(255, 255, 255, 0.27); border-radius: 2px; vertical-align: middle; } .hero-dot.on { width: 32px; background: #FFFFFF; } /* Shelves dichter op hero */ .rows { position: relative; z-index: 5; margin-top: -240px; padding: 0 0 72px; background: transparent; } .row { margin-bottom: 12px; } .row-head { padding: 0 56px 14px; font-size: 0; } .row-title { display: inline-block; vertical-align: middle; font-size: 30px; font-weight: 700; color: #E8E8E8; } .row-scroller { padding: 24px 56px 32px; overflow-x: auto; overflow-y: hidden; white-space: nowrap; font-size: 0; } /* Poster ~220×330 ≈ Android 140dp @ densiteit ~1.55–1.7 */ .tile { display: inline-block; vertical-align: top; width: 232px; margin-right: 18px; padding: 4px; border: 4px solid transparent; border-radius: 8px; outline: none; background: transparent; text-align: left; white-space: normal; font-size: 18px; } .tile:focus { border-color: #FFFFFF; transform: scale(1.05); } .poster { position: relative; width: 220px; height: 330px; margin: 0 auto; border-radius: 6px; overflow: hidden; background: #1A1A1A; } .poster-img { position: absolute; top: 0; left: 0; width: 220px; height: 330px; background-color: #1A1A1A; background-size: cover; background-position: center center; background-repeat: no-repeat; } .poster-ph { position: absolute; top: 0; left: 0; width: 220px; height: 330px; color: #333; font-size: 56px; font-weight: 900; text-align: center; line-height: 330px; background: #1A1A1A; } .poster-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 6px; background: rgba(255, 255, 255, 0.4); } .poster-bar > i { display: block; height: 6px; width: 0; background: #E50914; } .tile-title { margin-top: 12px; color: #B3B3B3; font-size: 18px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 220px; margin-left: auto; margin-right: auto; } .tile:focus .tile-title { color: #F5F5F5; } /* Browse / search */ .pane-title { font-size: 40px; font-weight: 800; padding: 20px 56px 12px; color: #FFFFFF; } .pane-sub { font-size: 22px; color: #B3B3B3; padding: 0 56px 16px; } .subnav { padding: 8px 48px 18px; white-space: nowrap; overflow-x: auto; } .cat-chip { display: inline-block; padding: 14px 24px; margin-right: 12px; background: #1F1F1F; border-radius: 28px; border: 4px solid transparent; outline: none; color: #B3B3B3; font-weight: 700; font-size: 22px; } .cat-chip.active { background: #FFFFFF; color: #141414; } .cat-chip:focus { border-color: #FFFFFF; } .cat-chip .chip-line { display: none; width: 36px; height: 3px; margin: 8px auto 0; background: #E50914; border-radius: 2px; } .cat-chip.active .chip-line { display: block; } .grid { padding: 12px 44px 72px; font-size: 0; } .grid .tile { margin-bottom: 18px; margin-right: 14px; } .search-wrap { padding: 16px 48px; } .search-query { font-size: 32px; font-weight: 700; min-height: 48px; margin-bottom: 18px; color: #F5F5F5; } .search-query.ph { color: #808080; font-weight: 500; } .keyboard { font-size: 0; max-width: 520px; display: inline-block; vertical-align: top; } .search-results { display: inline-block; vertical-align: top; width: 58%; margin-left: 28px; font-size: 0; } .kb-key { display: inline-block; width: 68px; height: 60px; margin: 5px; background: #1C1C1C; border: 4px solid transparent; border-radius: 6px; outline: none; text-align: center; line-height: 52px; font-size: 24px; font-weight: 700; } .kb-key:focus { background: #FFFFFF; color: #141414; border-color: #FFFFFF; } .kb-key.wide { width: 140px; } /* Detail */ .detail-bg { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-size: cover; background-position: center; opacity: 0.45; } .detail-shade { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: #0B0B0B; opacity: 0.78; } .detail-body { position: relative; z-index: 2; padding: 44px 56px; max-width: 1000px; height: 100%; overflow-y: auto; } .detail-body h1 { font-size: 56px; margin: 18px 0 12px; font-weight: 900; } .detail-overview { font-size: 24px; line-height: 1.5; color: #DDDDDD; max-width: 820px; } .episodes { margin-top: 28px; } .episodes h3 { font-size: 28px !important; } .ep { display: block; width: 100%; text-align: left; background: #1F1F1F; border: 4px solid transparent; border-radius: 8px; padding: 20px 22px; margin-bottom: 12px; outline: none; font-size: 22px; } .ep:focus { background: #2A2A2A; } .ep .ep-title { font-weight: 700; font-size: 24px; } .ep .ep-meta { color: #B3B3B3; font-size: 18px; margin-top: 6px; } .ep.disabled { opacity: 0.35; } /* ——— Live TV ——— */ .tv-layout { position: absolute; top: 0; left: 0; right: 0; bottom: 0; padding: 12px 40px 20px; background: #0B0B0B; } .tv-cats { height: 78px; overflow-x: auto; white-space: nowrap; margin-bottom: 10px; padding-top: 4px; } .tv-cats .cat-chip { background: transparent; border-radius: 0; padding: 14px 20px; color: #9A9A9A; font-size: 24px; } .tv-cats .cat-chip.active { background: transparent; color: #FFFFFF; } .tv-cats .cat-chip:focus { background: rgba(255, 255, 255, 0.14); border-color: #FFFFFF; } .tv-body { position: absolute; top: 100px; left: 40px; right: 40px; bottom: 20px; border-top: 2px solid #2A2A2A; } .tv-list { position: absolute; top: 0; left: 0; bottom: 0; width: 58%; overflow-y: auto; background: #0B0B0B; padding-top: 8px; } .tv-detail { position: absolute; top: 12px; right: 0; bottom: 0; width: 40%; background: #101010; border-radius: 8px; padding: 28px 30px; overflow-y: auto; } .ch-row { display: block; width: 100%; text-align: left; height: 92px; padding: 0 16px; border: 4px solid transparent; outline: none; background: #141414; margin-bottom: 4px; border-radius: 6px; position: relative; } .ch-row.active { background: #1C1C1C; } .ch-row:focus { background: #242424; } .ch-bar { position: absolute; left: 0; top: 22px; width: 5px; height: 48px; background: transparent; border-radius: 2px; } .ch-row:focus .ch-bar, .ch-row.active .ch-bar { background: #E50914; } .ch-logo { display: inline-block; vertical-align: middle; width: 64px; height: 64px; margin-left: 12px; margin-right: 16px; border-radius: 6px; overflow: hidden; background: #1A1A1A; } .ch-logo-img { width: 64px; height: 64px; background-size: contain; background-position: center; background-repeat: no-repeat; } .ch-meta { display: inline-block; vertical-align: middle; width: 78%; } .ch-name { font-size: 26px; font-weight: 700; color: #F5F5F5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ch-epg { color: #A0A0A0; font-size: 20px; margin-top: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tv-detail-logo { width: 80px; height: 80px; border-radius: 6px; overflow: hidden; background: #1A1A1A; margin-bottom: 18px; } .tv-detail-logo-img { width: 80px; height: 80px; background-size: contain; background-position: center; background-repeat: no-repeat; } .tv-detail h2 { font-size: 40px; font-weight: 800; margin-bottom: 22px; } .epg-label { color: #E50914; font-size: 18px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 8px; } .epg-title { font-size: 26px; font-weight: 600; color: #E8E8E8; margin-bottom: 22px; line-height: 1.3; } .tv-hint { color: #777; font-size: 18px; margin-top: 24px; } .tv-actions { margin-top: 24px; font-size: 0; } /* Settings */ .settings-wrap { padding: 28px 56px; max-width: 900px; } .section-label { color: #888; font-size: 18px; font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase; margin: 22px 0 14px; } .settings-row { display: block; width: 100%; text-align: left; background: #1A1A22; padding: 26px 28px; margin-bottom: 14px; border-radius: 14px; border: 4px solid transparent; outline: none; font-size: 26px; font-weight: 600; } .settings-row:focus { background: #262632; } .settings-row.danger { color: #FF6B6B; } /* Player */ #screen-player { background: #000; } .av-wrap, .html-player { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; } .html-player { background: #000; } .player-ui { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5; padding: 0; background: transparent; /* fade via opacity op hele chrome */ transition: opacity 0.25s linear; } .player-ui.fade { opacity: 0; pointer-events: none; } .player-chrome { padding: 48px 56px 44px; background-image: linear-gradient( to top, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0.72) 55%, rgba(0, 0, 0, 0) 100% ); } .player-title { font-size: 34px; font-weight: 800; margin-bottom: 20px; color: #FFFFFF; max-width: 80%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .player-bar { margin-bottom: 18px; } .player-progress { height: 5px; background: rgba(255, 255, 255, 0.28); border-radius: 3px; overflow: hidden; margin-bottom: 10px; } #player-fill { height: 100%; width: 0%; background: #E50914; } .player-time-row { font-size: 0; } .player-time { display: inline-block; color: #CFCFCF; font-size: 18px; font-weight: 600; } .player-controls { font-size: 0; white-space: nowrap; } .pctrl { display: inline-block; vertical-align: middle; min-width: 72px; height: 56px; margin-right: 12px; padding: 0 18px; border-radius: 6px; border: 3px solid transparent; outline: none; background: rgba(255, 255, 255, 0.14); color: #FFFFFF; font-size: 22px; font-weight: 700; line-height: 50px; text-align: center; } .pctrl.text { min-width: 0; padding: 0 22px; font-size: 20px; } .pctrl:focus { border-color: #FFFFFF; background: #FFFFFF; color: #141414; } .pctrl-spacer { display: inline-block; vertical-align: middle; width: 24px; height: 1px; } .player-actions { display: inline-block; vertical-align: middle; font-size: 0; } .player-hint { display: none; } .player-subs { position: absolute; left: 10%; right: 10%; bottom: 200px; z-index: 6; text-align: center; font-size: 34px; font-weight: 700; line-height: 1.35; color: #FFFFFF; text-shadow: 0 2px 4px #000, 0 0 12px #000; pointer-events: none; white-space: pre-wrap; } .player-menu { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: rgba(0, 0, 0, 0.62); z-index: 8; } .player-menu-panel { position: absolute; top: 0; right: 0; bottom: 0; width: 560px; background: #121212; padding: 48px 40px 40px; overflow-y: auto; border-left: 1px solid #2A2A2A; } .player-menu-title { font-size: 34px; font-weight: 800; margin-bottom: 28px; color: #FFFFFF; letter-spacing: 0.02em; } .player-menu-list { margin-bottom: 24px; } .player-menu-row { display: block; width: 100%; text-align: left; background: transparent; border: 3px solid transparent; border-radius: 8px; padding: 20px 22px; margin-bottom: 8px; outline: none; font-size: 22px; font-weight: 600; color: #F5F5F5; position: relative; } .player-menu-row:focus { border-color: #FFFFFF; background: rgba(255, 255, 255, 0.12); } .player-menu-row.is-active { background: rgba(229, 9, 20, 0.18); } .player-menu-row .player-menu-main { display: block; color: #F5F5F5; font-size: 24px; font-weight: 700; padding-left: 36px; } .player-menu-row .player-menu-mark { position: absolute; left: 18px; top: 22px; width: 18px; height: 18px; border-radius: 50%; border: 2px solid #666; } .player-menu-row.is-active .player-menu-mark { border-color: #E50914; background: #E50914; } .player-menu-row .muted { display: block; font-size: 16px; font-weight: 500; margin-top: 6px; padding-left: 36px; color: #9A9A9A; } #player-menu-close { width: 100%; margin-top: 8px; background: rgba(255, 255, 255, 0.12); border: 3px solid transparent; border-radius: 8px; padding: 16px 20px; font-size: 22px; font-weight: 700; } #player-menu-close:focus { border-color: #FFFFFF; background: #FFFFFF; color: #141414; } .player-error { position: absolute; left: 15%; top: 38%; width: 70%; background: #1A0000; padding: 28px; border-radius: 10px; color: #FF6B6B; z-index: 6; text-align: center; white-space: pre-wrap; font-size: 24px; } .toast { position: absolute; left: 22%; bottom: 56px; width: 56%; background: #1F1F1F; padding: 18px 28px; border-radius: 10px; z-index: 50; text-align: center; font-weight: 700; font-size: 24px; } .loading { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: #000; opacity: 0.45; z-index: 40; text-align: center; padding-top: 40%; } .spinner { display: inline-block; width: 56px; height: 56px; border: 5px solid #333; border-top-color: #E50914; border-radius: 50%; } .fatal { position: absolute; left: 56px; right: 56px; bottom: 56px; z-index: 100; background: #500000; color: #fff; padding: 22px 26px; border-radius: 10px; font-size: 22px; } #boot-banner { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 200; background: #0B0B0B; color: #E50914; font-size: 64px; font-weight: 900; text-align: center; padding-top: 40%; letter-spacing: 0.08em; }