/* GPT-SoVITS 場景播放器共用樣式
   同時被 inference_webui.py（Gradio 內嵌預覽）與 player_server.py（獨立分享連結頁）載入，
   不要在兩邊各自複製一份，改這裡兩邊自動生效。

   控制列採 YT 風格 overlay：進度條+按鈕蓋在影片區域下緣，平常隱藏，
   滑鼠移入影片區或暫停中才顯示（.vp-wrap:hover / .vp-wrap.vp-paused），
   影片下方不再佔一條固定高度，說明區可以更大。 */

.vp-wrap{position:relative;width:100%;max-width:640px;background:#000;border-radius:8px;overflow:hidden;}
/* PWA（standalone 安裝模式）底下的「假全螢幕」：不透過瀏覽器原生 Fullscreen API
   （見 player.js setPseudoFullscreen／isStandalonePwa），單純用 CSS 蓋滿整個視窗，
   跟原生 Fullscreen 預設的 UA 樣式（position:fixed;inset:0）效果一致，這樣換下一部
   作品時只要這個 class 還在 wrap 上就不會被瀏覽器強制退出。 */
.vp-wrap.vp-pwa-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;max-width:none;border-radius:0;z-index:2147483647;}
/* 沒有 Screen Orientation lock() 的手機瀏覽器（主要是 iOS Safari）沒辦法真的叫系統
   轉向，全螢幕時用 CSS 把整個播放器轉 90 度、寬高互換去填滿螢幕，看起來是橫的
   （見 player.js updateCssLandscapeFallback）。這條規則本身沒有寫 position:fixed
   ——真全螢幕時已經是 fullscreenElement（瀏覽器預設樣式本來就會鋪滿），假全螢幕
   時 .vp-pwa-fullscreen 已經處理過 fixed/寬高，這裡只需要疊加旋轉與尺寸互換。 */
.vp-wrap.vp-force-landscape-rotate{position:fixed;top:50%;left:50%;width:100vh;height:100vw;max-width:none;border-radius:0;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center center;z-index:2147483647;}
/* .vp-stage 平常是「寬度 100%、高度用 aspect-ratio:16/9 換算」，這個換算是照
   直向版面（寬窄高高）設計的；轉成橫向假全螢幕後容器變成寬>高，繼續用 16/9
   換算高度會比容器本身還高，字幕／畫面就會被推出下緣、跑到看不到的地方。轉向
   時改成直接填滿整個容器高度，靠 .vp-img 的 object-fit:cover 裁切，不再用
   aspect-ratio 算高度。 */
.vp-wrap.vp-force-landscape-rotate .vp-stage{aspect-ratio:auto;width:100%;height:100%;}
.vp-stage{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;cursor:default;background:#111;}
.vp-img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 0;transform-origin:50% 0;opacity:0;will-change:transform,opacity;-webkit-user-drag:none;user-select:none;}
/* 全站圖片濾鏡（漫畫／油畫／…），由 admin 後台總覽設定，套用給所有人。模式存在
   <html data-img-filter="none|comic|oil|...">，見 app.js refreshMe()／renderPlayer()。
   實際 filter 效果定義在 /img-filter-defs.svg（index.html／admin.js 都用 fetch 現抓現
   塞進自己的 DOM，見 index.html <body> 開頭那段 <script>）。
   用一個 CSS 變數 --vp-img-filter 承接目前模式對應的 filter，而不是每個模式各寫一條
   「.vp-img{filter:...}」規則——這樣要讓別的地方（例如首頁作品卡封面 .work-cover，
   見 app.css 的 [data-img-filter-cards]）也套用同一個濾鏡時，直接 var() 讀這個變數
   就好，不用每加一個地方就把 17 種模式的規則整組複製一次。 */
html[data-img-filter="comic"]{--vp-img-filter:url(#vp-filter-comic);}
html[data-img-filter="oil"]{--vp-img-filter:url(#vp-filter-oil);}
html[data-img-filter="sketch"]{--vp-img-filter:url(#vp-filter-sketch);}
html[data-img-filter="cel"]{--vp-img-filter:url(#vp-filter-cel);}
html[data-img-filter="vintage"]{--vp-img-filter:url(#vp-filter-vintage);}
html[data-img-filter="vhs"]{--vp-img-filter:url(#vp-filter-vhs);}
html[data-img-filter="dreamy"]{--vp-img-filter:url(#vp-filter-dreamy);}
html[data-img-filter="cyberpunk"]{--vp-img-filter:url(#vp-filter-cyberpunk);}
html[data-img-filter="noir"]{--vp-img-filter:url(#vp-filter-noir);}
html[data-img-filter="duotone"]{--vp-img-filter:url(#vp-filter-duotone);}
html[data-img-filter="invert"]{--vp-img-filter:url(#vp-filter-invert);}
html[data-img-filter="inkwash"]{--vp-img-filter:url(#vp-filter-inkwash);}
html[data-img-filter="thermal"]{--vp-img-filter:url(#vp-filter-thermal);}
html[data-img-filter="frosted"]{--vp-img-filter:url(#vp-filter-frosted);}
html[data-img-filter="boldtoon"]{--vp-img-filter:url(#vp-filter-boldtoon);}
html[data-img-filter="popart"]{--vp-img-filter:url(#vp-filter-popart);}
html[data-img-filter="crayon"]{--vp-img-filter:url(#vp-filter-crayon);}
.vp-img{filter:var(--vp-img-filter, none);}
/* 位置由 player.js 切 class（vp-subtitle-top/middle/bottom）決定，不要用 inline
   style.bottom——inline style 優先權比 class 選擇器高，下面「貼底時依 OSD 開關
   上下位移」的規則會被蓋掉。只有貼底這個位置才需要跟著 OSD 讓位：頂部/中間本來
   就離控制列夠遠。 */
.vp-subtitle{position:absolute;left:0;right:0;display:none;flex-direction:column;align-items:center;gap:4px;padding:0 16px;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transition:bottom .2s,top .2s;}
.vp-subtitle.vp-subtitle-top{top:6%;bottom:auto;}
.vp-subtitle.vp-subtitle-middle{top:46%;bottom:auto;}
.vp-subtitle.vp-subtitle-bottom{bottom:4%;top:auto;}
/* OSD（進度條/按鈕）浮出來時才把貼底字幕往上挪，避免蓋到控制列；
   OSD 收起來時字幕就貼近下緣，不用特地空出控制列的位置。 */
.vp-wrap.vp-paused .vp-subtitle.vp-subtitle-bottom,.vp-wrap.vp-controls-active .vp-subtitle.vp-subtitle-bottom{bottom:12%;}
/* 字幕底：不是一塊背景色塊，而是文字本身的黑色陰影/描邊（像字的黑影貼在畫面上），
   用多方向 text-shadow 疊出輪廓，不佔額外背景區域，文字本身也加大加粗更醒目。
   邊界留模糊半徑（不是 0）讓輪廓柔和，不要銳利到像鋸齒描邊。 */
.vp-subtitle-line{display:inline-block;max-width:92%;padding:0;background:none;color:var(--vp-sub-color,#fff);font-size:calc(var(--vp-sub-size,18px) * 1.35);font-family:var(--vp-sub-font,inherit);font-weight:900;white-space:pre-wrap;word-break:keep-all;overflow-wrap:break-word;text-align:center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;
  text-shadow:
    -2px -2px 3px rgba(0,0,0,.95), 2px -2px 3px rgba(0,0,0,.95),
    -2px 2px 3px rgba(0,0,0,.95), 2px 2px 3px rgba(0,0,0,.95),
    -3px 0 3px rgba(0,0,0,.95), 3px 0 3px rgba(0,0,0,.95),
    0 -3px 3px rgba(0,0,0,.95), 0 3px 3px rgba(0,0,0,.95),
    0 4px 10px rgba(0,0,0,.85);
}
.vp-center-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:50%;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;cursor:pointer;}
.vp-voice-preparation-status{position:absolute;left:50%;bottom:22%;transform:translateX(-50%);z-index:7;padding:7px 12px;border-radius:999px;background:rgba(0,0,0,.78);color:#fff;font-size:13px;white-space:nowrap;pointer-events:none}
.vp-voice-preparation-status.is-error{color:#ffb0b0;border:1px solid rgba(255,90,90,.45)}

/* overlay 容器：蓋在影片下緣，漸層打底讓白色控制項在亮圖上也看得清 */
.vp-overlay{position:absolute;left:0;right:0;bottom:0;z-index:5;opacity:0;pointer-events:none;transition:opacity .2s;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.72));padding-top:24px;}
.vp-wrap.vp-paused .vp-overlay,.vp-wrap.vp-controls-active .vp-overlay{opacity:1;pointer-events:auto;}
.vp-progress{position:relative;width:100%;height:12px;display:flex;align-items:center;cursor:pointer;padding:0 2px;box-sizing:border-box;}
.vp-progress,.vp-controls{pointer-events:auto;}
.vp-progress::before{content:'';position:absolute;left:2px;right:2px;height:3px;border-radius:2px;background:rgba(255,255,255,.32);}
.vp-progress-fill{position:absolute;left:2px;height:3px;border-radius:2px;background:#e33;pointer-events:none;}
.vp-progress-handle{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:#e33;transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity .15s;}
.vp-progress:hover .vp-progress-handle{opacity:1;}
.vp-controls{display:flex;align-items:center;gap:6px;padding:2px 8px 6px;background:none;}
.vp-btn{background:none;border:none;padding:4px 6px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;}
.vp-btn:hover{background:rgba(255,255,255,.18);}
.vp-time{color:#eee;font-size:12px;min-width:92px;}
.vp-spacer{flex:1;}
.vp-vol-icon{font-size:13px;line-height:1;margin-right:2px;opacity:.85;user-select:none;}
.vp-vol-slider{width:48px;height:3px;cursor:pointer;accent-color:#e33;}
/* 音量／語速平衡係數。刻意用不同的 accent 色跟音量區隔——兩根並排的細滑桿
   如果長得一樣，使用者很容易誤拉到另一根。左右各放一個符號當作滑桿兩端的
   意義提示：🎧＝快速追劇（0）、🎬＝沉浸感（1），跟 slider 的 hidden 狀態同步。 */
.vp-balance-icon{font-size:13px;line-height:1;opacity:.85;user-select:none;}
.vp-balance-icon-left{margin-right:2px;}
.vp-balance-icon-right{margin-right:6px;}
.vp-balance-icon[hidden]{display:none;}
.vp-balance-slider{width:48px;height:3px;cursor:pointer;accent-color:#39c;}
.vp-balance-slider[hidden]{display:none;}
.vp-icon{display:inline-block;width:14px;height:14px;position:relative;box-sizing:border-box;}
.vp-icon-play{width:0 !important;height:0 !important;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid #fff;background:none;}
/* 以下 icon 規則原檔尾截斷遺失，重建版本（樣式為合理推測，非原始內容） */
.vp-icon-pause{width:10px;height:14px;}
.vp-icon-pause::before,.vp-icon-pause::after{content:'';position:absolute;top:0;bottom:0;width:3px;border-radius:1px;background:#fff;}
.vp-icon-pause::before{left:1px;}
.vp-icon-pause::after{right:1px;}
.vp-icon-fs{border:2px solid #fff;border-radius:2px;}
.vp-btn:hover .vp-icon-fs{width:15px;height:15px;}
/* 劇院模式圖示：比全螢幕的正方形框扁寬一點，示意「寬螢幕」。 */
.vp-icon-theater{width:16px !important;height:10px !important;border:2px solid #fff;border-radius:2px;background:none;}
.vp-btn:hover .vp-icon-theater{width:18px !important;height:11px !important;}
.vp-btn-active{background:rgba(255,255,255,.22);}
/* 全螢幕時劇院模式鈕會被停用（見 player.js updateTheaterBtnAvailability）——
   全螢幕底下劇院模式的版面調整根本畫不出來，停用比讓使用者點了以為沒反應清楚。 */
.vp-btn:disabled{opacity:.35;cursor:default;}
.vp-btn:disabled:hover .vp-icon-theater{width:16px !important;height:10px !important;}

/* 全螢幕鈕移到畫面右上角，跟其他控制項一樣預設隱藏、hover／暫停時才出現。
   劇院模式只是頁面版面切換（影片變寬、留言搬到下面），不是離開視窗的原生全螢幕，
   所以維持在控制列原本的位置，換全螢幕鈕讓出來。slug（站方管理員限定）放在
   同一個角落容器裡、緊貼全螢幕鈕左邊，跟著一起 hover 淡入淡出。 */
.vp-corner-controls{position:absolute;top:8px;right:8px;z-index:6;display:flex;align-items:center;gap:6px;opacity:0;pointer-events:none;transition:opacity .2s;}
.vp-wrap.vp-paused .vp-corner-controls,.vp-wrap.vp-controls-active .vp-corner-controls{opacity:1;pointer-events:auto;}
.vp-corner-slug{background:rgba(0,0,0,.55);border-radius:4px;padding:4px 8px;color:#ccc;font-size:11px;white-space:nowrap;user-select:text;}
.vp-corner-fs-btn{background:rgba(0,0,0,.55);border-radius:4px;}

/* 劇院模式：影片寬度不再卡 640px 上限，撐滿外層容器（.vp-stage 的 aspect-ratio
   會自動維持 16:9，寬度變它高度跟著變，比例不會跑掉）。外層頁面版面（留言搬到
   下面、拿掉頁面本身的寬度限制）由 app.js 的 VP_ON_THEATER_MODE_CHANGE 處理。 */
.vp-wrap.vp-theater{max-width:none;width:100%;}

/* 圖片右鍵自訂多功能選單（取代瀏覽器內建「另存圖片」），見 player.js openCtxMenu */
.vp-ctxmenu{position:fixed;background:#1f1f1f;border:1px solid #333;border-radius:6px;padding:4px 0;min-width:200px;z-index:1000;box-shadow:0 4px 16px rgba(0,0,0,.5);font-size:13px;color:#eee;font-family:inherit;}
.vp-ctxmenu-item{padding:8px 14px;cursor:pointer;white-space:nowrap;}
.vp-ctxmenu-item:hover{background:rgba(255,255,255,.12);}

/* 播放速度彈窗（右鍵選單「播放速度」開啟），見 player.js openSpeedPop */
.vp-speed-pop{position:fixed;background:#1f1f1f;border:1px solid #333;border-radius:6px;padding:10px 12px;min-width:226px;z-index:1001;box-shadow:0 4px 16px rgba(0,0,0,.5);font-size:13px;color:#eee;font-family:inherit;}
.vp-speed-title{margin-bottom:4px;}
.vp-speed-val{color:#e33;font-weight:bold;}
.vp-speed-slider{width:100%;height:3px;cursor:pointer;accent-color:#e33;margin:6px 0 10px;box-sizing:border-box;}
.vp-speed-presets{display:flex;gap:4px;flex-wrap:wrap;}
.vp-speed-preset{background:rgba(255,255,255,.1);border:none;color:#eee;font-size:12px;padding:4px 8px;border-radius:4px;cursor:pointer;font-family:inherit;}
.vp-speed-preset:hover{background:rgba(255,255,255,.22);}
.vp-speed-preset.vp-speed-on{background:#e33;color:#fff;}

/* 字幕設定子選單：由 player.js 右鍵選單「字幕」開啟。 */
.vp-subtitle-size-value{color:#e33;font-weight:bold;}
.vp-subtitle-size-slider{width:100%;height:3px;cursor:pointer;accent-color:#e33;margin:6px 0 10px;box-sizing:border-box;}

.vp-subtitle-menu-pop{position:fixed;background:#1f1f1f;border:1px solid #333;border-radius:6px;padding:10px 12px;min-width:226px;z-index:1001;box-shadow:0 4px 16px rgba(0,0,0,.5);font-size:13px;color:#eee;font-family:inherit;}
.vp-subtitle-menu-title{padding:0 4px 5px;color:#aaa;font-size:12px;}
.vp-subtitle-menu-option{display:block;width:100%;background:none;border:none;border-radius:4px;color:#eee;padding:7px 8px;text-align:left;font:inherit;cursor:pointer;}
.vp-subtitle-menu-option:hover{background:rgba(255,255,255,.12);}
.vp-subtitle-menu-option.vp-subtitle-menu-on{color:#fff;background:#e33;}

.vp-report-other-row{margin-top:4px;padding-top:6px;border-top:1px solid #333;}
.vp-report-other-input{width:100%;box-sizing:border-box;background:#111;border:1px solid #333;border-radius:4px;color:#eee;padding:7px 8px;font:inherit;font-size:12px;}
.vp-report-other-input:focus{outline:none;border-color:#e33;}

/* 作者專用 clip 編輯面板（播放器右鍵「編輯影片」開啟），見 player.js ceRender。
   外觀刻意跟 web ui（inference_webui.py 的 clip_browser）對齊：深色底、等寬字、
   14px 高的 clip 條、scene 縮圖貼在該 scene 第一格的正上方。目前唯讀。 */
.vp-clip-editor{width:100%;max-width:640px;margin:10px 0 0;overflow:hidden;padding:10px 6px;background:#1e1e1e;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#ccc;}
.vp-wrap.vp-theater + .vp-clip-editor{max-width:none;}
.vp-ce-head{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid #333;font-size:12px;}
.vp-ce-stat{color:#aaa;}
.vp-ce-stat b{color:#fff;font-weight:600;}
.vp-ce-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;flex:1;}
.vp-ce-legend-item{display:inline-flex;align-items:center;gap:4px;color:#ccc;font-size:12px;}
.vp-ce-legend-dot{display:inline-block;width:14px;height:14px;border:1px solid #555;border-radius:2px;}
.vp-ce-close{margin-left:auto;background:rgba(255,255,255,.1);border:none;color:#eee;border-radius:4px;padding:3px 9px;font:inherit;font-size:12px;cursor:pointer;}
.vp-ce-close:hover{background:rgba(255,255,255,.22);}
.vp-ce-hint{color:#777;font-size:11px;margin-bottom:6px;}
/* 這部作品自己的圖片濾鏡（見 player.js ceSetupFilterControls）：跟 vp-ce-head
   同一列風格，深色底、12px 字，slider 用瀏覽器原生外觀即可，不用另外畫。 */
.vp-ce-filter{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px;padding:6px 8px;background:#252525;border-radius:6px;font-size:12px;}
.vp-ce-filter-label{color:#aaa;}
.vp-ce-filter select{background:#1e1e1e;color:#eee;border:1px solid #444;border-radius:4px;font:inherit;padding:2px 4px;}
.vp-ce-filter-slider{display:inline-flex;align-items:center;gap:4px;color:#aaa;}
.vp-ce-filter-slider input[type=range]{width:80px;vertical-align:middle;}
.vp-ce-filter-slider b{color:#fff;font-weight:600;min-width:2.4em;display:inline-block;}
.vp-ce-filter-status{color:#8a8;font-size:11px;margin-left:auto;}
.vp-ce-rows{position:relative;}
.vp-ce-row{position:relative;line-height:0;}
/* 有 scene 縮圖的列要先空出縮圖的高度；--vp-ce-img-h 由 player.js ceLayout()
   依面板實際寬度算出（縮圖寬 8% × 16:9），紅框定位也吃同一個數字。 */
.vp-ce-row-img{padding-top:calc(var(--vp-ce-img-h,45px) + 2px);}
.vp-ce-row canvas{display:block;width:100%;image-rendering:pixelated;cursor:pointer;}
.vp-ce-thumb{position:absolute;top:0;height:var(--vp-ce-img-h,45px);object-fit:cover;cursor:pointer;border-radius:3px 3px 0 0;border:2px solid transparent;box-sizing:border-box;}
.vp-ce-thumb-empty{background:#1a1a2e;}
.vp-ce-highlight{position:absolute;border:2px solid #ff4444;background:transparent;pointer-events:none;display:none;box-sizing:border-box;}

/* 「已播放完畢，接下來看...」面板：整部作品播完時蓋在畫面上（見 player.js
   showNextUp），z-index 要比中央播放鍵高，蓋住它避免同時看到兩組互相矛盾的操作。 */
.vp-nextup{position:absolute;inset:0;z-index:8;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(rgba(0,0,0,.15),rgba(0,0,0,.82));padding:16px;box-sizing:border-box;}
.vp-nextup[hidden]{display:none;}
/* transform-origin 靠下置中：player.js fitNextUpPanel() 量完天然尺寸後用
   transform:scale() 縮小整個面板塞進 stage，縮放要以底邊為準（配合下面
   .vp-nextup 的 align-items:flex-end），不然預設從正中心縮放，底邊會浮起來、
   跟外層的靠下對齊方式對不上。 */
.vp-nextup-panel{width:100%;max-width:960px;transform-origin:50% 100%;position:relative;}
/* 倒數計時的圓環＋數字：疊在第一張卡片縮圖的左上角（見 player.js showNextUp），
   逾時沒人選也是自動接著播第一張卡片，放在那張圖上比較看得出「接下來要接哪一部」。
   縮圖底色深淺不一，加一圈半透明底避免圈圈跟圖片混在一起看不清楚。 */
.vp-nextup-cancel{position:absolute;top:8px;left:8px;z-index:1;width:38px;height:38px;border:none;background:rgba(0,0,0,.45);border-radius:50%;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;}
.vp-nextup-ring{position:absolute;top:0;left:0;width:38px;height:38px;transform:rotate(-90deg);}
.vp-nextup-ring-bg{fill:none;stroke:rgba(255,255,255,.25);stroke-width:2.5;}
.vp-nextup-ring-fg{fill:none;stroke:#e33;stroke-width:2.5;stroke-linecap:round;transition:stroke-dasharray .18s linear;}
.vp-nextup-countdown{position:relative;color:#fff;font-size:13px;font-weight:700;}
/* 固定 2 欄 2 列（不像一般清單那樣隨螢幕變寬跳成 4 欄），卡片才夠大、縮圖看得清楚。 */
/* 不再用 max-height:78vh／overflow-y:auto 卡高度——那是相對「瀏覽器視窗」，跟
   小尺寸嵌入播放器實際能用的高度（stage 可能只有一兩百 px）對不上，是卡片會
   超出畫面的根本原因。改成 player.js fitNextUpPanel() 量整個面板的天然尺寸，
   跟 stage 目前可用空間比出縮放倍率，一定完整塞進去，不需要另外裁切／捲動。 */
.vp-nextup-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.vp-nextup-card{display:block;text-decoration:none;background:rgba(255,255,255,.06);border-radius:8px;overflow:hidden;cursor:pointer;transition:background .15s;}
.vp-nextup-card:hover{background:rgba(255,255,255,.16);}
.vp-nextup-cover{position:relative;width:100%;aspect-ratio:16/9;background:#222 center/cover no-repeat;}
/* 標題疊在縮圖下緣之上（取代原本擠在圖片下方的獨立小字），字放大方便閱讀，
   底下加一層由下往上的漸層當作襯底，圖片再亮也看得清楚文字。 */
.vp-nextup-card-title{position:absolute;left:0;right:0;bottom:0;color:#fff;font-size:20px;font-weight:700;line-height:1.35;padding:26px 12px 10px;background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,0));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

/* 2026-10-28：播放中控制列自動收起後，游標也一起藏（滑鼠一動就回來，見 player.js hideControlsNow） */
.vp-wrap.vp-idle,.vp-wrap.vp-idle *{cursor:none !important;}
