هذا الإعلان يساعدنا على الاستمرار وتقديم المزيد من المسلسلات ❤️
جاري التحميل...
10
10
2× ⏩

جاري التحميل...

Rebirth of the Poison Queen
اسحب لأعلى أو لأسفل للتنقل
0:000:00
/* ═══ أزرار التنقل بين الحلقات للكمبيوتر/تليفزيون فقط ═══ */ (function() { // التأكد من أن الجهاز يحمل مؤشر (ماوس) وشاشة كبيرة (Desktop/TV) if (!window.matchMedia || !window.matchMedia('(min-width: 1024px) and (pointer: fine)').matches) return; })(); ' ); doc.close(); } function _loadBanner(container, src){ try{ container.innerHTML = ''; const scr = document.createElement('script'); scr.settings = {}; scr.async = true; scr.referrerPolicy = 'no-referrer-when-downgrade'; scr.src = src; container.appendChild(scr); }catch(e){} } function _playBannerAd(epoch){ return new Promise((resolve)=>{ let done=false; let skipTimer=null, closeTimer=null, cancelTimer=null; const cleanup=()=>{ if(skipTimer){clearInterval(skipTimer); skipTimer=null;} if(closeTimer){clearTimeout(closeTimer); closeTimer=null;} if(cancelTimer){clearInterval(cancelTimer); cancelTimer=null;} adSkipBtn.onclick=null; adOverlay.style.display='none'; if(adSlot1) adSlot1.innerHTML=''; if(adSlot2) adSlot2.innerHTML=''; if(adSlot3) adSlot3.innerHTML=''; if(adSlot4) adSlot4.innerHTML=''; if(adSlot5) adSlot5.innerHTML=''; if(adSlot6) adSlot6.innerHTML=''; if(adSlot7) adSlot7.innerHTML=''; }; const finish=()=>{ if(done) return; done=true; cleanup(); adPlaying=false; resolve(); }; adOverlay.style.display='block'; adPlaying=true; let remaining=BANNER_SKIP_AFTER; adSkipBtn.style.display='none'; adCountdown.style.display='block'; adCountdown.textContent=(typeof t==='function'?t('ad_skip_in',{n:remaining}):'Skip in '+remaining+'s'); if(adMsg&&typeof t==='function') adMsg.textContent=t('ad_support_msg'); _loadBanner(adSlot1, BANNER_SRC_1); // Adsterra 300x250 على الكل _loadAdsterra(adSlot5, '84cf114ed260159c85270866d1a05162', 300, 250); if (window.innerWidth >= 1024) { // الديسكتوب: كل HilltopAds _loadBanner(adSlot2, BANNER_SRC_2); _loadBanner(adSlot3, BANNER_SRC_3); _loadBanner(adSlot4, BANNER_SRC_4); // Adsterra 468x60 للديسكتوب _loadAdsterra(adSlot6, 'a8140b988017f3f0c53d86a9a6c90046', 468, 60); } else { // الموبايل: Adsterra 320x50 بدل HilltopAds التانية _loadAdsterra(adSlot7, 'd49c89e2257cf198f1aed1a1dd1f20b8', 320, 50); } cancelTimer=setInterval(()=>{ if(epoch!==adEpoch) finish(); },250); skipTimer=setInterval(()=>{ remaining--; if(remaining<=0){ clearInterval(skipTimer); skipTimer=null; adCountdown.style.display='none'; adSkipBtn.style.display='inline-flex'; } else { adCountdown.textContent=(typeof t==='function'?t('ad_skip_in',{n:remaining}):'Skip in '+remaining+'s'); } },1000); adSkipBtn.onclick=(e)=>{ e.stopPropagation(); finish(); }; closeTimer=setTimeout(finish, BANNER_AUTOCLOSE_AFTER*1000); }); } async function maybeShowAd(slug,epId){ const nextCount=_adGetCount(slug)+1; if(nextCount%AD_INTERVAL!==0){ _adSetCount(slug,nextCount); return; } const epoch=++adEpoch; if(epId!==reqId||epoch!==adEpoch) return; await _playBannerAd(epoch); _adSetCount(slug,nextCount); } document.addEventListener('langchange',()=>{ if(adOverlay&&adOverlay.style.display==='block'){ if(adMsg&&typeof t==='function') adMsg.textContent=t('ad_support_msg'); const sp=adSkipBtn&&adSkipBtn.querySelector('span'); if(sp&&typeof t==='function') sp.textContent=t('ad_skip'); } }); document.addEventListener('langchange',()=>{ if(adOverlay&&adOverlay.style.display==='block'){ if(adMsg&&typeof t==='function') adMsg.textContent=t('ad_support_msg'); const sp=adSkipBtn&&adSkipBtn.querySelector('span'); if(sp&&typeof t==='function') sp.textContent=t('ad_skip'); } }); function showLoad(msg, err) { loadMsg.textContent = msg; loadBox.style.display = 'grid'; retryBtn.style.display = err ? 'inline-block' : 'none'; reportBtn.style.display = err ? 'inline-block' : 'none'; reportBtn.disabled = false; reportBtn.textContent = t('report_broken'); } function hideLoad() { loadBox.style.display = 'none'; } function reset() { if (hls) { try { hls.destroy(); } catch (e) {} hls = null; } video.pause(); video.removeAttribute('src'); video.load(); } function closeSheets() { epsSheet.classList.remove('open'); subSheet.classList.remove('open'); } function wakeUI() { layer.classList.remove('dim'); clearTimeout(hideTimer); if (document.fullscreenElement) hideTimer = setTimeout(() => layer.classList.add('dim'), 3000); } /* شبكة الحلقات */ for (const i of (AVAILABLE_EPS.length ? AVAILABLE_EPS : Array.from({length:TOTAL}, (_,k)=>k+1))) { const b = document.createElement('div'); b.className = 'p-cell' + (i === currentEp ? ' on' : ''); b.dataset.ep = i; b.textContent = i; epsGrid.appendChild(b); } /* ---------- التشغيل (نفس منطق /pv الشغّال) ---------- */ async function loadVideo(url, id, isRetry) { reset(); const b64 = btoa(unescape(encodeURIComponent(url))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); const proxyUrl = `/pv?u=${b64}`; const tryPlay = (playUrl, forceHls) => new Promise((resolve, reject) => { if (id !== reqId) return reject('Changed'); let settled = false; const to = setTimeout(() => { if (!settled) { settled = true; reject('Timeout'); } }, 60000); const ok = () => { if (!settled) { settled = true; clearTimeout(to); hideLoad(); centerBtn.classList.remove('show'); resolve(); } }; const bad = (e) => { if (!settled) { settled = true; clearTimeout(to); reject(e || 'Error'); } }; video.muted = true; video.playsInline = true; setTimeout(() => { if (id === reqId) { video.muted = false; document.getElementById('muteIcon').className = 'fas fa-volume-high'; } }, 1000); const isMp4 = playUrl.includes('.mp4') && !playUrl.startsWith('/pv'); if ((forceHls || url.includes('.m3u8')) && Hls.isSupported()) { if (hls) { try { hls.destroy(); } catch (e) {} } hls = new Hls({ enableWorker: true, backBufferLength: 90, manifestLoadingTimeOut: 12000, manifestLoadingMaxRetry: 3, fragLoadingTimeOut: 20000, fragLoadingMaxRetry: 4 }); hls.loadSource(playUrl); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, () => { video.play().then(ok).catch(err => { if (err.name === 'NotAllowedError') { centerBtn.classList.add('show'); ok(); } else bad(err); }); }); hls.on(Hls.Events.ERROR, (ev, data) => { if (!data.fatal) return; if (data.response && data.response.code === 410) return bad('Expired'); if (data.type === Hls.ErrorTypes.NETWORK_ERROR) hls.startLoad(); else if (data.type === Hls.ErrorTypes.MEDIA_ERROR) hls.recoverMediaError(); else bad('Fatal'); }); } else { video.src = playUrl; video.onloadedmetadata = () => { video.play().then(ok).catch(err => { if (err.name === 'NotAllowedError') { centerBtn.classList.add('show'); ok(); } else bad(err); }); }; video.onerror = () => bad('VideoError'); } }); let attempt = isRetry ? 2 : 1; while (attempt <= 3) { try { showLoad(t('loading')); await tryPlay(proxyUrl, url.includes('.m3u8')); return; } catch (e) { if (e === 'Changed') return; console.log('[play] محاولة ' + attempt + ' فشلت:', e); reset(); } if (attempt < 3) { showLoad(t('renewing')); await new Promise(r => setTimeout(r, 3000)); } attempt++; } if (id === reqId) showLoad(t('load_fail'), true); } function _nearestAvailEp(target) { if (!AVAIL_LIST.length) return null; if (AVAIL_LIST.includes(target)) return target; // لو الحلقة المطلوبة أقل من أول متاحة، رجّع الأولى if (target < AVAIL_LIST[0]) return AVAIL_LIST[0]; // لو أكبر من آخر متاحة، رجّع الأخيرة if (target > AVAIL_LIST[AVAIL_LIST.length - 1]) return AVAIL_LIST[AVAIL_LIST.length - 1]; // غير ذلك، رجّع أول حلقة متاحة أكبر أو تساوي المطلوبة for (const e of AVAIL_LIST) if (e >= target) return e; return AVAIL_LIST[0]; } async function loadEpisode(n, fromPop) { // لو الحلقة المطلوبة مش متاحة، وجّه لأقرب متاحة const nearest = _nearestAvailEp(n); if (nearest !== null && nearest !== n) { console.log('[player] ep' + n + ' مش متاحة، تحويل لـ ep' + nearest); n = nearest; // نحدّث الـ URL بدون reload try { history.replaceState(null, '', `/watch/${SLUG}/${n}`); } catch(e) {} } if (n < 1 || n > TOTAL) return; const id = ++reqId; if (hls) { try { hls.destroy(); } catch (e) {} hls = null; } endHold(); currentEp = n; reset(); closeSheets(); document.querySelectorAll('.p-cell').forEach(c => c.classList.toggle('on', +c.dataset.ep === n)); epLabel.dataset.n = n; epLabel.textContent = t('ep_of', { n: n, t: TOTAL }); showLoad(t('loading')); refreshLikes(id); /* تسجيل المشاهدة — يغذّي "شاهدت مؤخراً" و"أكمل ما بدأته" */ Store.recordWatch({ slug: SLUG, title: TITLE, cover: COVER, ep: n, total: TOTAL, total_episodes: TOTAL }); /* ═══ فحص الإعلان قبل تحميل الفيديو ═══ */ adEpoch++; await maybeShowAd(SLUG, id); if (id !== reqId) return; try { const r = await fetch(`/api/episode/${SLUG}/${n}?t=${Date.now()}`); if (id !== reqId) return; const d = await r.json(); if (id !== reqId) return; if (d.video_url) { history.replaceState({ ep: n }, '', `/watch/${SLUG}/${n}`); loadSubtitles(n); await loadVideo(d.video_url, id); } else showLoad(t('load_fail'), true); } catch (e) { if (id === reqId) showLoad(t('load_fail'), true); } } /* ---------- الإعجاب ---------- */ async function refreshLikes(id) { const liked = localStorage.getItem(`liked_${SLUG}_${currentEp}`) === 'true'; document.getElementById('likeBtn').classList.toggle('active', liked); try { const r = await fetch(`/api/like/${SLUG}/${currentEp}`); const d = await r.json(); if (id === reqId) document.getElementById('likeNum').textContent = d.likes; } catch (e) {} } document.getElementById('likeBtn').addEventListener('click', async e => { e.stopPropagation(); if (localStorage.getItem(`liked_${SLUG}_${currentEp}`) === 'true') return; try { const r = await fetch(`/api/like/${SLUG}/${currentEp}`, { method: 'POST' }); const d = await r.json(); if (d.status === 'ok') { document.getElementById('likeNum').textContent = d.likes; document.getElementById('likeBtn').classList.add('active'); localStorage.setItem(`liked_${SLUG}_${currentEp}`, 'true'); } } catch (e) {} wakeUI(); }); /* ---------- الترجمة ---------- */ async function loadSubtitles(ep) { [...video.textTracks].forEach(tr => tr.mode = 'disabled'); video.querySelectorAll('track').forEach(tr => tr.remove()); subBtn.style.display = 'none'; subSheet.innerHTML = ''; let subs = []; try { const r = await fetch(`/get_subtitle/${SLUG}/${ep}`); subs = await r.json(); } catch (e) { return; } if (!Array.isArray(subs) || !subs.length) return; /* السيرفر بيرجع label — والقديم كان lang. ندعم الاتنين. */ const named = subs.map(s => ({ name: s.label || s.lang || 'ترجمة', url: s.url })).filter(s => s.url); /* نحمّل كل ملف ونتأكد إنه VTT سليم قبل ما نعرضه — بيمنع أزرار ترجمة ميتة */ const live = []; await Promise.all(named.map(async s => { try { const r = await fetch(s.url); if (!r.ok) return; const txt = await r.text(); if (!/WEBVTT/i.test(txt) || txt.length < 40) return; live.push({ name: s.name, blob: URL.createObjectURL(new Blob([txt], { type: 'text/vtt' })) }); } catch (e) {} })); if (!live.length) return; live.sort((a, b) => named.findIndex(x => x.name === a.name) - named.findIndex(x => x.name === b.name)); subBtn.style.display = 'flex'; live.forEach(s => { const tr = document.createElement('track'); tr.kind = 'subtitles'; tr.label = s.name; tr.srclang = 'ar'; tr.src = s.blob; video.appendChild(tr); const row = document.createElement('div'); row.className = 'p-row'; row.textContent = s.name; row.dataset.lang = s.name; row.addEventListener('click', e => { e.stopPropagation(); pickSub(s.name); closeSheets(); wakeUI(); }); subSheet.appendChild(row); }); const off = document.createElement('div'); off.className = 'p-row'; off.textContent = t('sub_off'); off.dataset.lang = 'off'; off.addEventListener('click', e => { e.stopPropagation(); pickSub('off'); closeSheets(); wakeUI(); }); subSheet.appendChild(off); // لغة الموقع الحالية const siteLang = (localStorage.getItem('lang') || document.documentElement.lang || 'ar').toLowerCase(); // أنماط تطابق لكل لغة (اسم الملف قد يكون بأي شكل) const langPatterns = { ar: /عرب|arab|^ar\b|arabic/i, en: /english|إنجليز|^en\b|انجليز/i, fr: /french|فرنسي|français|^fr\b/i, es: /spanish|إسبان|español|^es\b|اسبان/i, pt: /portug|برتغال|^pt\b/i, id: /indones|إندون|bahasa|^id\b|اندون/i, ru: /russian|روسي|русск|^ru\b/i, zh: /chinese|صيني|中文|^zh\b/i, tr: /turkish|تركي|türkçe|^tr\b/i, hi: /hindi|هندي|हिंदी|^hi\b/i, it: /italian|إيطال|italiano|^it\b|ايطال/i, de: /german|ألمان|deutsch|^de\b|المان/i, ja: /japanese|ياباني|日本|^ja\b/i, ko: /korean|كوري|한국|^ko\b/i, th: /thai|تايلاند|^th\b/i, vi: /vietnam|فيتنام|^vi\b/i, nl: /dutch|هولندي|^nl\b/i, pl: /polish|بولندي|^pl\b/i, }; function findByLang(code) { const pat = langPatterns[code]; return pat ? live.find(s => pat.test(s.name)) : null; } // الأولوية: (1) اختيار المستخدم السابق (2) لغة الموقع (3) إنجليزي fallback (4) أول متاحة const want = live.some(s => s.name === savedSub) ? savedSub : (savedSub === 'off' ? 'off' : (findByLang(siteLang) || findByLang('en') || live[0]).name); setTimeout(() => pickSub(want), 60); } function pickSub(lang) { savedSub = lang; localStorage.setItem('subtitle_lang', lang); subSheet.querySelectorAll('.p-row').forEach(r => r.classList.toggle('on', r.dataset.lang === lang)); [...video.textTracks].forEach(tr => { tr.mode = (lang !== 'off' && tr.label === lang) ? 'showing' : 'disabled'; }); } /* ---------- التحكم ---------- */ retryBtn.addEventListener('click', () => loadEpisode(currentEp)); reportBtn.addEventListener('click', async () => { if (reportBtn.disabled) return; reportBtn.disabled = true; reportBtn.textContent = '...'; try { const r = await fetch('/api/report', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ slug: SLUG, ep: currentEp, title: TITLE }) }); const d = await r.json(); if (d.ok) { reportBtn.textContent = t('report_thanks'); reportBtn.style.background = '#28a745'; } else { reportBtn.disabled = false; reportBtn.textContent = t('report_broken'); alert('فشل الإرسال، حاول تاني'); } } catch (e) { reportBtn.disabled = false; reportBtn.textContent = t('report_broken'); } }); centerBtn.addEventListener('click', () => video.play().then(() => centerBtn.classList.remove('show'))); video.addEventListener('playing', () => { hideLoad(); centerBtn.classList.remove('show'); }); video.addEventListener('pause', () => { if (!dragging) { centerBtn.querySelector('i').className = 'fas fa-play'; centerBtn.classList.add('show'); wakeUI(); } }); video.addEventListener('play', () => centerBtn.classList.remove('show')); video.addEventListener('timeupdate', () => { if (video.duration && !dragging) paintBar(video.currentTime / video.duration, video.currentTime); }); video.addEventListener('loadedmetadata', () => paintBar(0, 0)); video.addEventListener('canplay', () => hideLoad()); video.addEventListener('progress', () => { if (!dragging && video.duration) paintBar(video.currentTime / video.duration, video.currentTime); }); video.addEventListener('ended', () => { if (adPlaying) return; safeGoNext(); }); let clickTimer = null; video.addEventListener('click', () => { closeSheets(); clearTimeout(clickTimer); clickTimer = setTimeout(() => { if (holding) return; if (layer.classList.contains('dim')) return wakeUI(); if (video.paused) video.play().then(() => centerBtn.classList.remove('show')); else video.pause(); wakeUI(); }, 330); }); const scrub = document.getElementById('scrub'); let dragging = false; function fmt(sec) { if (!isFinite(sec) || sec < 0) sec = 0; const h = Math.floor(sec / 3600), m = Math.floor(sec % 3600 / 60), x = Math.floor(sec % 60); return h ? `${h}:${String(m).padStart(2,'0')}:${String(x).padStart(2,'0')}` : `${m}:${String(x).padStart(2,'0')}`; } function paintBar(pct, cur) { fill.style.width = pct * 100 + '%'; knob.style.left = pct * 100 + '%'; tNow.textContent = fmt(cur); tEnd.textContent = fmt(video.duration); try { if (video.buffered.length) { buffer.style.width = (video.buffered.end(video.buffered.length - 1) / video.duration) * 100 + '%'; } } catch (e) {} } function pctFrom(e) { const r = scrub.getBoundingClientRect(); const p = (e.touches && e.touches[0]) || (e.changedTouches && e.changedTouches[0]) || e; return Math.max(0, Math.min(1, (p.clientX - r.left) / r.width)); } function scrubStart(e) { e.stopPropagation(); if (!video.duration) return; dragging = true; scrub.classList.add('dragging'); clearTimeout(hideTimer); const pct = pctFrom(e); paintBar(pct, pct * video.duration); } function scrubMove(e) { if (!dragging) return; e.stopPropagation(); if (e.cancelable) e.preventDefault(); const pct = pctFrom(e); paintBar(pct, pct * video.duration); } function scrubEnd(e) { if (!dragging) return; e.stopPropagation(); dragging = false; scrub.classList.remove('dragging'); const pct = pctFrom(e); if (video.duration) video.currentTime = pct * video.duration; wakeUI(); } scrub.addEventListener('touchstart', scrubStart, { passive: true }); scrub.addEventListener('touchmove', scrubMove, { passive: false }); scrub.addEventListener('touchend', scrubEnd); scrub.addEventListener('touchcancel', scrubEnd); scrub.addEventListener('mousedown', e => { scrubStart(e); const mv = ev => scrubMove(ev), up = ev => { scrubEnd(ev); document.removeEventListener('mousemove', mv); document.removeEventListener('mouseup', up); }; document.addEventListener('mousemove', mv); document.addEventListener('mouseup', up); }); const guard = e => e.target.closest('.p-sheet, .p-btn, .p-top, .p-scrub, .p-barwrap'); /* ---------- التقديم السريع: نقرتين = ١٠ ثواني، ضغط مطوّل = سرعة مضاعفة ---------- */ const flashBack = document.getElementById('flashBack'); const flashFwd = document.getElementById('flashFwd'); const speedFlag = document.getElementById('speedFlag'); let lastTap = 0, lastX = 0, holdTimer = null, holding = false; function flash(el) { el.classList.add('show'); setTimeout(() => el.classList.remove('show'), 520); } function jump(sec) { if (!video.duration) return; video.currentTime = Math.max(0, Math.min(video.duration, video.currentTime + sec)); flash(sec > 0 ? flashFwd : flashBack); } function startHold() { if (video.paused) return; holding = true; video.playbackRate = 2; speedFlag.classList.add('show'); } function endHold() { clearTimeout(holdTimer); if (!holding) return false; holding = false; video.playbackRate = 1; speedFlag.classList.remove('show'); return true; } const stageEl = document.getElementById('stage'); ['contextmenu', 'dragstart', 'selectstart'].forEach(ev => stageEl.addEventListener(ev, e => { e.preventDefault(); return false; })); video.addEventListener('contextmenu', e => { e.preventDefault(); return false; }); stageEl.addEventListener('pointerdown', e => { if (guard(e)) return; lastX = e.clientX; clearTimeout(holdTimer); holdTimer = setTimeout(() => { startHold(); }, 420); }); stageEl.addEventListener('pointerup', e => { if (guard(e)) return; if (endHold()) { e.preventDefault(); return; } clearTimeout(holdTimer); const now = Date.now(); if (now - lastTap < 320 && Math.abs(e.clientX - lastX) < 40) { const rect = stageEl.getBoundingClientRect(); const rightHalf = (e.clientX - rect.left) > rect.width / 2; jump(rightHalf ? 10 : -10); lastTap = 0; } else { lastTap = now; } }); stageEl.addEventListener('pointercancel', endHold); stageEl.addEventListener('pointerleave', endHold); const stageSwipe = document.getElementById('stage'); let swiping = false; stageSwipe.addEventListener('touchstart', e => { if (adPlaying) { swiping = false; return; } if (guard(e)) { swiping = false; return; } closeSheets(); startY = e.touches[0].clientY; swiping = true; wakeUI(); }, { passive: true }); /* لازم passive:false + preventDefault عشان نمنع سحب التحديث بتاع المتصفح */ stageSwipe.addEventListener('touchmove', e => { if (!swiping) return; if (Math.abs(e.touches[0].clientY - startY) > 12 && e.cancelable) e.preventDefault(); }, { passive: false }); stageSwipe.addEventListener('touchend', e => { if (!swiping) return; swiping = false; if (adPlaying) return; const dy = startY - e.changedTouches[0].clientY; if (dy > 55) safeGoNext(); else if (dy < -55) safeGoPrev(); }, { passive: true }); document.getElementById('muteBtn').addEventListener('click', e => { e.stopPropagation(); video.muted = !video.muted; document.getElementById('muteIcon').className = video.muted ? 'fas fa-volume-xmark' : 'fas fa-volume-high'; wakeUI(); }); document.getElementById('epsBtn').addEventListener('click', e => { e.stopPropagation(); const o = epsSheet.classList.contains('open'); closeSheets(); if (!o) epsSheet.classList.add('open'); }); subBtn.addEventListener('click', e => { e.stopPropagation(); const o = subSheet.classList.contains('open'); closeSheets(); if (!o) subSheet.classList.add('open'); }); epsSheet.addEventListener('click', e => { e.stopPropagation(); const c = e.target.closest('.p-cell'); if (c) loadEpisode(+c.dataset.ep); }); document.getElementById('fsBtn').addEventListener('click', e => { e.stopPropagation(); if (!document.fullscreenElement) document.getElementById('stage').requestFullscreen(); else document.exitFullscreen(); }); document.addEventListener('fullscreenchange', () => { document.getElementById('fsIcon').className = document.fullscreenElement ? 'fas fa-compress' : 'fas fa-expand'; wakeUI(); }); document.addEventListener('DOMContentLoaded', () => loadEpisode(currentEp)); if (document.readyState !== 'loading') loadEpisode(currentEp); /* ═══ أزرار التنقل بين الحلقات للكمبيوتر/تليفزيون فقط ═══ */ (function() { // التأكد من أن الجهاز يحمل مؤشر (ماوس) وشاشة كبيرة (Desktop/TV) if (!window.matchMedia || !window.matchMedia('(min-width: 1024px) and (pointer: fine)').matches) return; })();