/* 模块 episode 的样式（集数详情 + 提示词历史弹窗）。尺寸按截图 ÷ 0.8167 换算成真实像素。 */

/* ---------- 两栏：左剧本（独立滚动）+ 主区 ---------- */
.ep-layout { display: flex; height: 100vh; }
.ep-script { width: 240px; flex: none; background: var(--bg-card); border-right: 1px solid var(--bg); padding: 16px 14px; overflow-y: auto; display: flex; flex-direction: column; }
.ep-proj-name { color: var(--primary); font-size: 13px; font-weight: 700; line-height: 1.45; }
.ep-script-inner { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.ep-ch-title { font-size: 14.5px; font-weight: 700; margin: 12px 0 8px; }
/* 左栏集名输入框：平时像标题，聚焦时下划橙线（原站 onfocus/onblur 改 border-bottom） */
.ep-ch-title-input { width: 100%; border: 0; border-bottom: 1px solid transparent; background: transparent; color: var(--text); padding: 2px 0; font-family: inherit; outline: none; }
.ep-ch-title-input:focus { border-bottom-color: var(--primary); }
.ep-script-empty { color: var(--text-muted); }
.ep-script-text { margin-top: 10px; font-size: 12.8px; line-height: 1.6; color: #e4e4e7; word-break: break-all; }
.ep-script-line > div { white-space: pre-wrap; }  /* 只给文字保留换行：给整行设会把模板里的缩进空白也渲染出来 */
.ep-script-line.blank { height: 10px; }
.ep-script-en { color: var(--text-muted); margin-bottom: 10px; }
/* 截图 18：固定高约 343（280 ÷ 0.8167），框内独立滚动，下面留白 */
.ep-script-edit { margin-top: 10px; flex: none; height: 343px; overflow-y: auto; font-size: 12.5px; line-height: 1.6; resize: none; }

/* 上内边距放在里面的 .ep-body / .ep-empty 上：滚动容器自己有上内边距时，吸顶工具条的 top 要从内边距下面算 */
.ep-main { flex: 1; min-width: 0; height: 100vh; overflow-y: auto; padding: 0 22px 60px; }
.ep-body { padding-top: 16px; }
.ep-empty { color: var(--text-muted); font-size: 13px; text-align: center; padding: 86px 0 70px; }

/* ---------- 顶栏 ---------- */
.ep-topbar { display: flex; align-items: center; gap: 10px; }
.ep-top-title { font-size: 17px; font-weight: 700; }
.ep-top-count { font-size: 12px; color: var(--text-muted); }
.ep-modes { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.ep-modes > button { border: 0; background: transparent; color: var(--text-muted); padding: 4px 13px; font: 600 12px/1.6 var(--font); cursor: pointer; white-space: nowrap; }
.ep-modes > button:hover:not(:disabled) { color: var(--text); }
.ep-modes > button:disabled { cursor: not-allowed; }
/* 选中底色照原站各按钮的 :style（剧情橙、精简绿、打斗红、3D 紫、皮克斯深紫、长镜头琥珀） */
.ep-modes > button[class^="on-"] { color: #fff; }
.ep-modes > button.on-normal { background: var(--primary); color: var(--on-primary); }
.ep-modes > button.on-lite { background: linear-gradient(135deg, #059669, #10b981); }
.ep-modes > button.on-fight { background: #dc2626; }
.ep-modes > button.on-3d { background: linear-gradient(135deg, #5b6b8c, #8394b5); }
.ep-modes > button.on-pixar_os { background: linear-gradient(135deg, #4c5a78, #5b6b8c); }
.ep-modes > button.on-long { background: linear-gradient(135deg, #b45309, #d97706); }
.ep-overseas { border: 1px solid var(--border); border-radius: 8px; background: transparent; color: var(--text-muted); padding: 4px 12px; font: 12px/1.6 var(--font); cursor: pointer; }
.ep-overseas.on { background: linear-gradient(135deg, #1d4ed8, #2563eb); border-color: transparent; color: #fff; font-weight: 600; }
.ep-overseas:disabled { cursor: not-allowed; }
.ep-overseas-ok { margin-left: 3px; font-size: 10.5px; }
.ep-pt-badge { background: linear-gradient(135deg, #15803d, #0f766e); color: #fff; border-radius: 8px; padding: 4px 12px; font-size: 12px; font-weight: 600; }

/* 本集比例 */
.ep-ratio { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; padding: 2px 6px; border: 1px solid var(--border); border-radius: 8px; font-size: 12px; }
.ep-ratio-label { color: var(--text-muted); }
.ep-ratio-fixed { margin-left: 8px; font-size: 12px; color: var(--text-muted); }
.ep-ratio-fixed.pixar { color: #5b6b8c; }

/* 模式横幅（颜色照原站：打斗暗红、精简暗绿、3D 紫、皮克斯深紫、长镜头琥珀） */
.ep-banner { margin-top: 8px; display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 8px; background: linear-gradient(135deg, #1f2638, #2b3550); color: #c3cede; font-size: 12px; }
.ep-banner b { color: inherit; }
.ep-banner-ico { font-size: 17.6px; }
.ep-banner-count { margin-left: auto; font-size: 10.4px; opacity: .7; white-space: nowrap; }
.ep-banner.fight { background: linear-gradient(135deg, #7f1d1d, #991b1b); color: #fca5a5; }
.ep-banner.lite { background: linear-gradient(135deg, #064e3b, #065f46); color: #6ee7b7; }
.ep-banner.pixar { background: linear-gradient(135deg, #1f2638, #4c5a78); color: #dbe2ec; }
.ep-banner.long { background: linear-gradient(135deg, #78350f, #92400e); color: #fcd34d; }

/* ---------- 工具条 ---------- */
/* 吸顶（复刻版偏离原站，业主 10-20）：只冻结这一排，顶栏和模式横幅照旧滚走。外面一圈 5px 页面底色把四个圆角外面填上
   （圆角半径 10，外扩 5 就盖满；冻结时镜头不会从圆角里露出来，没冻结时这一圈落在上下外边距和主区左右内边距里，看不出来），
   再一道阴影和镜头分开。z-index 20：压住镜头卡里有定位的缩略图、×、角标，低于抽屉 90、弹窗 100、悬停放大浮窗 60 */
.ep-toolbar { position: sticky; top: 0; z-index: 20; margin-top: 10px; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-card);
  box-shadow: 0 0 0 5px var(--bg), 0 8px 14px -8px rgba(0, 0, 0, .75); }
/* 各模式的半透明渐变下面垫一层实色（原来透出来的就是页面底色，颜色不变），冻结后不透出下面的镜头 */
.ep-toolbar.is-3d, .ep-toolbar.tone-3d { border-color: #5b6b8c; background: linear-gradient(135deg, rgba(91, 107, 140, .08), transparent), var(--bg); }
.ep-toolbar.tone-fight { border-color: #dc2626; background: linear-gradient(135deg, rgba(127, 29, 29, .08), transparent), var(--bg); }
.ep-toolbar.tone-lite { border-color: #059669; background: linear-gradient(135deg, rgba(5, 150, 105, .07), transparent), var(--bg); }
.ep-toolbar.tone-long { border-color: #d97706; background: linear-gradient(135deg, rgba(180, 83, 9, .08), transparent), var(--bg); }
.ep-model-select { width: 160px; margin-left: auto; }
.ep-localize { border-color: #06b6d4; color: #06b6d4; }
.ep-spin-sm { width: 10px; height: 10px; }
.ep-spin-xs { width: 8px; height: 8px; }
.ep-gen-msg { color: var(--primary); font-size: 11.5px; display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; }
.ep-poll { color: var(--warning, #f59e0b); font-size: 12px; display: inline-flex; align-items: center; gap: 4px; }
.ep-poll-stop { font-size: 9.6px; padding: 0 6px; line-height: 1.4; }

/* 没镜头时：生成中进度面板 / 空态 */
.ep-genpanel { text-align: center; padding: 60px 40px; }
.ep-genpanel-spin .spinner { width: 36px; height: 36px; }
.ep-genpanel-title { margin-top: 14px; font-size: 15px; font-weight: 700; }
.ep-genpanel-msg { margin-top: 6px; font-size: 12px; color: var(--text-muted); }
.ep-gen-steps { margin: 18px auto 0; display: inline-flex; flex-direction: column; gap: 8px; text-align: left; font-size: 12px; color: var(--text-muted); }
.ep-gen-step { display: flex; align-items: center; gap: 8px; }
.ep-gen-dot { width: 8px; height: 8px; border-radius: 50%; background: #3f3f46; }
.ep-gen-step.active { color: var(--primary); }
.ep-gen-step.active .ep-gen-dot { background: var(--primary); }
.ep-gen-step.done { color: #4caf50; }
.ep-gen-step.done .ep-gen-dot { background: #4caf50; }
.ep-genpanel-tip { margin-top: 16px; font-size: 11.5px; color: var(--text-muted); }
.ep-nodata { text-align: center; padding: 80px 40px; color: var(--text-muted); }
.ep-nodata-ico { margin-bottom: 16px; opacity: .4; }
.ep-nodata-title { font-size: 16px; margin-bottom: 8px; color: var(--text); }
.ep-nodata-desc { font-size: 13px; margin-bottom: 24px; }
.ep-nodata-sel { margin-bottom: 16px; }
.ep-nodata-select { width: 200px; display: inline-block; font-size: 12.8px; }
.ep-nodata-btn { font-size: 15px; padding: 12px 32px; }

.ep-folds { margin-top: 14px; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.ep-fold { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border: 1px solid var(--border); border-radius: 5px; background: transparent; color: var(--text); font: 700 11px/1.6 var(--font); cursor: pointer; }
.ep-fold small { font-size: 9.6px; font-weight: 600; color: var(--text-muted); }
.ep-fold:hover:not(:disabled) { background: var(--bg-card-hover); }
.ep-fold:disabled { opacity: .45; cursor: not-allowed; }
.ep-fold.open { border-color: var(--primary); color: var(--primary); }

/* ---------- 本集穿搭 / 场景调整 ---------- */
.ep-adjust { margin-top: 10px; padding: 12px 14px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; }
.ep-adjust-tip { font-size: 12px; font-weight: 600; color: #d4d4d8; }
.ep-oa-body { margin-top: 10px; padding: 10px; border-radius: 8px; background: var(--bg); display: flex; flex-direction: column; gap: 14px; }
.ep-oa-row { display: flex; gap: 14px; align-items: flex-start; }
.ep-oa-char { width: 64px; flex: none; display: flex; flex-direction: column; align-items: center; text-align: center; }
.ep-oa-avatar { width: 40px; height: 40px; border-radius: 6px; border: 1px solid #52525b; overflow: hidden; background: #000; display: flex; align-items: center; justify-content: center; font-size: 12px; }
.ep-oa-avatar img, .ep-oa-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ep-oa-name { margin-top: 4px; font-size: 11px; font-weight: 700; line-height: 1.3; }
.ep-oa-count { font-size: 9.6px; color: var(--text-muted); }
/* 10-20 业主：造型从竖排一列改成横向换行（造型多时不再拉很长；原站竖排），点击行为不变 */
.ep-oa-outfits { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; }
.ep-oa-outfit { width: 56px; cursor: pointer; display: flex; flex-direction: column; align-items: center; }
.ep-oa-thumb { width: 50px; height: 50px; border-radius: 6px; border: 2px solid #3f3f46; overflow: hidden; background: #000; opacity: .5; transition: opacity .15s; }
.ep-oa-outfit:hover .ep-oa-thumb { opacity: .85; }
.ep-oa-outfit.on .ep-oa-thumb { border-color: var(--primary); opacity: 1; }
.ep-oa-oname { width: 56px; margin-top: 2px; font-size: 9.6px; color: var(--text-muted); text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ep-oa-thumb { display: flex; align-items: center; justify-content: center; font-size: 18px; }
.ep-oa-outfit.ro { cursor: default; }
.ep-oa-mixed { font-size: 8px; font-weight: 600; color: var(--warning, #f59e0b); }   /* 本集这个角色用了不止一套：谁都不选中 */
.ep-oa-none { padding: 8px 0; font-size: 11px; color: var(--text-muted); }
.ep-oa-sel { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }
.ep-oa-sel .btn { font-size: 9.3px; padding: 1px 6px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ep-adjust-empty { padding: 12px; text-align: center; font-size: 12px; color: var(--text-muted); }
/* 场景行的报白钮（原站 .trust-btn：红「!」未报白、绿「✓」已报白、黄转圈报白中） */
.ep-trust-btn { width: 22px; height: 22px; flex: none; border: 0; border-radius: 50%; color: #fff; font: 700 11px/22px var(--font); text-align: center; padding: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.ep-trust-btn.trusted { background: #22c55e; }
.ep-trust-btn.untrusted { background: #ef4444; }
.ep-trust-btn.trusting { background: #f59e0b; }
.ep-trust-btn .spinner { width: 8px; height: 8px; border-width: 1.5px; }
.ep-trust-btn:disabled { cursor: default; }

.ep-sa { background: #1a2234; border-color: #263248; }
.ep-sa-unify { margin-top: 10px; display: flex; align-items: center; gap: 10px; padding: 7px 10px; border: 1px dashed #334155; border-radius: 6px; }
.ep-sa-unify-label { font-size: 11.5px; font-weight: 700; white-space: nowrap; }
.ep-sa-row { margin-top: 8px; display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 6px; background: #0f1729; }
.ep-sa-thumb { position: relative; width: 46px; height: 36px; flex: none; border-radius: 4px; overflow: hidden; background: #000; display: flex; align-items: center; justify-content: center; font-size: 16px; }
.ep-sa-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ep-sa-ok { position: absolute; right: 1px; bottom: 1px; width: 12px; height: 12px; border-radius: 50%; background: var(--success); color: #fff; font: 700 8px/12px var(--font); text-align: center; font-style: normal; }
.ep-sa-name { font-size: 12px; font-weight: 700; }
.ep-sa-count { font-size: 9.6px; color: var(--text-muted); }
.ep-sa-select { width: 130px; flex: none; }

/* ---------- 镜头卡 ---------- */
.ep-clip { margin-top: 14px; display: flex; gap: 16px; padding: 14px 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; }
/* 跳到某个镜头（block:'start'）时让出吸顶工具条：工具条折成两行约 76px，再留一点 */
.ep-clip { scroll-margin-top: 96px; }
.ep-clip.is-3d, .ep-clip.tone-3d { border-left: 3px solid #5b6b8c; }
.ep-clip.tone-fight { border-left: 3px solid #dc2626; }
.ep-clip.tone-lite { border-left: 3px solid #059669; }
.ep-clip.tone-long { border-left: 3px solid #d97706; }
/* 勾选：橙框淡橙底；点过的当前镜头：黄框外发光（原站 .clip-selected / .clip-active） */
.ep-clip.selected { border-color: var(--primary); background: rgba(207, 169, 104, .05); }
.ep-clip.active { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(227, 197, 143, .2); }
.ep-check-wrap { display: flex; align-items: center; cursor: pointer; }
.ep-scene { font-size: 12px; color: var(--accent); }
.ep-ctitle { font-size: 10px; color: var(--text-muted); }
.ep-genbadge { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; color: var(--primary); background: rgba(207, 169, 104, .12); padding: 2px 8px; border-radius: 4px; animation: ep-pulse 1.5s ease-in-out infinite; }
@keyframes ep-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .6; } }
.ep-clip-body { flex: 1; min-width: 0; }
.ep-videos { width: 300px; flex: none; }

.ep-clip-head { display: flex; align-items: center; gap: 8px; }
.ep-check { width: 16px; height: 16px; accent-color: var(--primary); margin: 0; cursor: pointer; }
.ep-no { background: #000; border-radius: 6px; padding: 2px 10px; font-size: 13px; font-weight: 700; }
.ep-dur { font-size: 12px; color: var(--text-muted); }
.ep-pill { display: inline-flex; align-items: center; padding: 1px 7px; border-radius: 4px; font-size: 10.5px; font-weight: 600; background: rgba(34, 197, 94, .15); color: #4ade80; }
.ep-pill.warn { background: var(--accent-light); color: var(--accent); cursor: help; }
.ep-mini { min-width: 20px; height: 18px; padding: 0 4px; border: 0; border-radius: 4px; background: #27272a; color: var(--text-muted); font-size: 9.5px; cursor: pointer; }
.ep-mini:hover:not(:disabled) { color: var(--text); background: #3f3f46; }
.ep-mini:disabled { opacity: .4; cursor: not-allowed; }
.ep-mini-red { background: rgba(239, 68, 68, .3); color: #fecaca; font-size: 10px; }
.ep-mini-red:hover:not(:disabled) { background: rgba(239, 68, 68, .5); }
.ep-mini-add { font-size: 11px; font-weight: 700; }   /* 「＋ 在这个镜头下方插入新镜头」（10-20） */
.ep-textbtn { border: 0; background: transparent; color: var(--text-muted); font: 600 11px var(--font); cursor: pointer; padding: 2px 4px; }
.ep-textbtn:hover:not(:disabled) { color: var(--text); }
.ep-textbtn:disabled { opacity: .5; cursor: not-allowed; }
.ep-x { width: 20px; height: 20px; border: 0; border-radius: 4px; background: var(--danger); color: #fff; font-size: 13px; line-height: 1; cursor: pointer; }
.ep-x:disabled { opacity: .4; cursor: not-allowed; }

.ep-sec-head { display: flex; align-items: center; gap: 6px; margin-top: 10px; flex-wrap: wrap; }
.ep-sec-title { font-size: 12px; color: var(--text-muted); }
/* 保存状态：保存中… / 草稿未保存（黄）、已保存（绿）；冲突时红字 + 两个按钮（原站都在「📝 提示词」这一行） */
.ep-save-status { font-size: 9.6px; color: var(--warning, #f59e0b); }
.ep-save-status.saved { color: var(--success); }
.ep-conflict-text { font-size: 9.6px; color: var(--danger); font-weight: 700; }
.ep-conflict-btn { font-size: 9.6px; padding: 1px 7px; }
.ep-prompt { margin-top: 6px; padding: 8px 12px; background: #0d0d0f; border: 1px dashed #2a2a2e; border-radius: 8px; font-size: 12.5px; line-height: 1.6; color: #d4d4d8; white-space: pre-wrap; word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.ep-prompt.ro { cursor: default; }
.ep-prompt.empty { color: var(--text-dim); }
/* 展开态：跟着内容长高（ep_autoGrow），最少 120 */
.ep-prompt-edit { margin-top: 6px; min-height: 120px; font-size: 12.5px; line-height: 1.6; overflow-y: hidden; resize: vertical; }
.ep-prompt-editor { position: relative; }
.ep-prompt-editor.mention-open { z-index: 25; }
.ep-prompt-tools { display: flex; align-items: center; gap: 8px; margin-top: 5px; color: var(--text-muted); font-size: 11px; flex-wrap: wrap; }
.ep-mention-menu { position: absolute; top: 100%; left: 0; width: min(480px, 100%); padding: 6px; margin-top: 5px; border: 1px solid #52525b; border-radius: 9px; background: #202024; box-shadow: 0 12px 28px #0008; }
.ep-mention-heading { display: flex; justify-content: space-between; gap: 8px; padding: 5px 7px 8px; color: var(--text-muted); font-size: 11px; }
.ep-mention-heading b { color: var(--text); font-weight: 600; }
.ep-mention-list { max-height: 232px; overflow-y: auto; }
.ep-mention-option { width: 100%; display: flex; align-items: center; gap: 9px; padding: 7px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.ep-mention-option.on { background: #f973161a; border-color: #f9731670; }
.ep-mention-option:disabled { opacity: .65; cursor: wait; }
.ep-mention-option img { width: 40px; height: 40px; object-fit: cover; flex: none; border-radius: 4px; background: #111; }
.ep-mention-text { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 3px; }
.ep-mention-text b { font-size: 12px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ep-mention-text small, .ep-mention-enter { font-size: 11px; color: var(--text-muted); }
.ep-mention-empty { padding: 14px 7px; font-size: 12px; color: var(--text-muted); }
.ep-mention-problem { margin-top: 6px; color: #fbbf24; font-size: 11px; line-height: 1.5; }
.ep-ref-mention { position: absolute; top: 24px; left: 2px; padding: 2px 4px; border-radius: 3px; background: #18181bdb; color: #e3c58f; font-size: 9px; pointer-events: none; max-width: calc(100% - 4px); overflow: hidden; white-space: nowrap; }

.ep-layoutref { margin-top: 8px; padding: 10px 12px; border: 1px dashed var(--border); border-radius: 8px; background: var(--bg); }
.ep-layoutref-title { font-size: 12.5px; margin-right: 8px; }
.ep-layoutref-note { font-size: 11px; color: var(--text-muted); }
.ep-layoutref-body { margin-top: 6px; display: flex; align-items: center; gap: 10px; }
/* 原站：72×72 缩略图（点开大图）+ 底部绿条「构图参考」；× 悬停才出（同引用卡） */
.ep-layoutref-pic { position: relative; width: 72px; height: 72px; flex: none; }
.ep-layoutref-pic img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); cursor: zoom-in; display: block; }
.ep-layoutref-tag { position: absolute; left: 0; right: 0; bottom: 0; padding: 1px 0; border-radius: 0 0 8px 8px; background: rgba(34, 197, 94, .85); color: #fff; font-size: 9px; text-align: center; pointer-events: none; }
.ep-layoutref-pic .ep-ref-x { top: -3px; right: -3px; }
.ep-layoutref-pic:hover .ep-ref-x { display: block; }

/* 引用素材 */
.ep-refs { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 8px; }
.ep-ref { width: 71px; }
.ep-ref-thumb { position: relative; width: 71px; height: 71px; border-radius: 6px; overflow: hidden; border: 1px solid #3f3f46; background: #000; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.ep-ref.ro .ep-ref-thumb { cursor: default; }
.ep-ref-thumb img, .ep-ref-thumb video { width: 100%; height: 100%; object-fit: cover; }
.ep-ref-ph { font-size: 22px; opacity: .6; }
.ep-ref-tag { position: absolute; right: 2px; bottom: 2px; padding: 0 4px; border-radius: 3px; background: rgba(0, 0, 0, .75); color: #fff; font-size: 9.5px; font-weight: 700; line-height: 1.5; pointer-events: none; }
.ep-ref-tag.up { background: rgba(131, 148, 181, .8); }   /* 上传的「参考图 / 参考视频」紫标签（原站） */
.ep-ref-x, .ep-ref-edit { position: absolute; display: none; width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; color: #fff; font-size: 10px; line-height: 16px; cursor: pointer; }
.ep-ref-x { top: 2px; right: 2px; background: var(--danger); }
.ep-ref-x.static { position: static; display: inline-block; flex: none; }
.ep-ref-edit { left: 2px; bottom: 2px; background: rgba(0, 0, 0, .75); border-radius: 3px; text-align: center; pointer-events: none; }  /* 只是提示：点整张卡就开替换 */
.ep-ref-thumb:hover .ep-ref-x, .ep-ref-thumb:hover .ep-ref-edit, .ep-ref.on .ep-ref-x, .ep-ref.on .ep-ref-edit { display: block; }
/* 左上角 🔍 看大图（10-20 加）：能悬停的设备上悬停才出，触屏一直显示 */
.ep-ref-zoom { position: absolute; left: 2px; top: 2px; display: none; width: 18px; height: 18px; padding: 0; border: 0; border-radius: 4px; background: rgba(0, 0, 0, .7); color: #fff; font-size: 10px; line-height: 18px; text-align: center; cursor: zoom-in; }
.ep-ref-thumb:hover .ep-ref-zoom, .ep-ref.on .ep-ref-zoom { display: block; }
@media (hover: none) { .ep-ref-zoom { display: block; } }
/* 截图 36：悬停整块描 2px 橙边（只读时不描） */
.ep-ref.on .ep-ref-thumb, .ep-ref:not(.ro) .ep-ref-thumb:not(.ep-ref-add):hover { border: 2px solid var(--primary); }
.ep-ref-name { margin-top: 3px; font-size: 11px; font-weight: 700; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ep-ref-add { border: 1px dashed #52525b; color: var(--primary); font-size: 18px; }
/* 引用的素材已被删除（复刻版独有，业主 10-20）：卡片变灰、虚线框，左上角红色「已删除」（没图，不会和 🔍 撞） */
.ep-ref.gone .ep-ref-thumb { background: #27272a; border-style: dashed; }
.ep-ref.gone .ep-ref-ph { filter: grayscale(1); opacity: .35; }
.ep-ref.gone .ep-ref-name { color: var(--text-dim); text-decoration: line-through; }
.ep-ref-gone { position: absolute; left: 2px; top: 2px; padding: 0 4px; border-radius: 3px; background: var(--danger); color: #fff; font-size: 9.5px; font-weight: 700; line-height: 1.5; pointer-events: none; }
.ep-ref-add.on, .ep-ref-add:hover { border-color: var(--primary); }

/* 添加 / 替换引用素材面板 */
.ep-picker { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-card); }
.ep-picker-title { font-size: 11.5px; color: #d4d4d8; }
.ep-tabs { margin-top: 10px; display: grid; grid-template-columns: repeat(3, 1fr); }
.ep-tabs > button { border: 0; border-bottom: 1px solid var(--border); background: transparent; color: var(--text-muted); padding: 6px 0; font: 600 11px var(--font); cursor: pointer; }
.ep-tabs > button.on { color: var(--primary); border-bottom: 2px solid var(--primary); }
.ep-tabs > button span { margin-left: 2px; font-weight: 400; opacity: .8; }
.ep-pick-list { margin-top: 6px; max-height: 340px; overflow-y: auto; }
.ep-pick-group { margin-top: 8px; font-size: 11.5px; font-weight: 700; color: #d4d4d8; }
.ep-pick-row { display: flex; align-items: center; gap: 10px; padding: 6px 8px; border-radius: 6px; cursor: pointer; }
.ep-pick-row:hover { background: var(--bg-card-hover); }
.ep-pick-row.sub { padding-left: 28px; }
.ep-pick-thumb { width: 36px; height: 36px; flex: none; border-radius: 4px; overflow: hidden; background: #000; display: flex; align-items: center; justify-content: center; font-size: 15px; }
.ep-pick-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ep-pick-name { font-size: 12.5px; font-weight: 600; }
.ep-pick-desc { font-size: 11.5px; font-weight: 600; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ep-pick-empty { padding: 14px 0; text-align: center; }
.ep-tag { flex: none; padding: 1px 6px; border-radius: 4px; font-size: 9.6px; font-weight: 700; background: #27272a; color: var(--text-muted); }
.ep-tag.face { background: rgba(217, 119, 6, .35); color: #fbbf24; }
.ep-tag.outfit { width: 18px; padding: 2px 0; text-align: center; line-height: 1.25; background: rgba(190, 24, 93, .35); color: #f9a8d4; }
.ep-tag.loc { background: rgba(59, 130, 246, .2); color: #60a5fa; }
.ep-tag.item { background: rgba(245, 158, 11, .2); color: #fbbf24; }

/* 「▦ 宫格 / ☰ 列表」切换和宫格（复刻版独有，业主 10-20）：瓦片照引用卡 .ep-ref 的样子，方图 + 右下角类型小标 + 下面一行短名。
   宫格区和列表共用 .ep-pick-list（限高 340 滚动），列数随面板宽度自适应 */
.ep-pickview > button { padding: 2px 8px; font-size: 10.5px; }
.ep-pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); gap: 8px; padding: 2px 2px 4px; }
/* 人物页签：一个角色一小组（组标题 + 面部 + 各造型），小组按内容宽度并排、排满换行（大多数角色没造型，一组一行太占地方）；
   造型多的小组最宽占满一行（max-width），组内瓦片自己换行。组标题不撑宽小组（width 0 + min-width 100%），长名字截断 */
.ep-pick-gsecs { display: flex; flex-wrap: wrap; align-items: flex-start; column-gap: 14px; }
.ep-pick-gsec { min-width: 0; max-width: 100%; margin-top: 6px; }
.ep-pick-gname { width: 0; min-width: 100%; margin-bottom: 4px; font-size: 10.5px; font-weight: 600; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ep-pick-gtiles { display: flex; flex-wrap: wrap; gap: 8px; padding: 2px 2px 4px; }
.ep-pick-gtiles > .ep-pick-tile { flex: none; width: 76px; }
.ep-pick-tile { min-width: 0; cursor: pointer; }
.ep-pick-timg { position: relative; aspect-ratio: 1; border-radius: 6px; border: 1px solid #3f3f46; overflow: hidden; background: #000; display: flex; align-items: center; justify-content: center; font-size: 22px; }
/* 有图的格子在图出来之前是一块深灰渐变（第一次打开要现做缩略图，可能要等一会儿），和纯黑的「图坏了」分得开 */
.ep-pick-timg:has(> img) { background: linear-gradient(135deg, #2e2e35, #1c1c21); }
.ep-pick-timg img { width: 100%; height: 100%; object-fit: cover; }
/* 这个镜头已经引用了：淡绿描边 + 左上角小勾（点了照旧，添加模式后端回「已存在此素材引用」）；悬停照引用卡描 2px 主色边 */
.ep-pick-tile.used .ep-pick-timg { border-color: rgba(34, 197, 94, .55); }
.ep-pick-tile:hover .ep-pick-timg { border: 2px solid var(--primary); }
.ep-pick-tused { position: absolute; left: 3px; top: 3px; width: 15px; height: 15px; border-radius: 50%; background: rgba(34, 197, 94, .8); color: #fff; font-size: 9px; font-style: normal; font-weight: 700; line-height: 15px; text-align: center; pointer-events: none; }
.ep-pick-tname { margin-top: 3px; font-size: 10.5px; font-weight: 600; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 右下角类型小标：沿用列表行上标签的颜色，压在图上，底下垫一层深色免得看不清 */
.ep-pick-ttag { position: absolute; right: 2px; bottom: 2px; padding: 0 4px; border-radius: 3px; background: rgba(0, 0, 0, .75); color: #fff; font-size: 9.5px; font-weight: 700; line-height: 1.5; pointer-events: none; }
.ep-pick-ttag.face { background: linear-gradient(rgba(217, 119, 6, .35), rgba(217, 119, 6, .35)), rgba(0, 0, 0, .8); color: #fbbf24; }
.ep-pick-ttag.outfit { background: linear-gradient(rgba(190, 24, 93, .35), rgba(190, 24, 93, .35)), rgba(0, 0, 0, .8); color: #f9a8d4; }
.ep-pick-ttag.loc { background: linear-gradient(rgba(59, 130, 246, .2), rgba(59, 130, 246, .2)), rgba(0, 0, 0, .8); color: #60a5fa; }
.ep-pick-ttag.item { background: linear-gradient(rgba(245, 158, 11, .2), rgba(245, 158, 11, .2)), rgba(0, 0, 0, .8); color: #fbbf24; }

/* 参考视频 */
.ep-refvideo { margin-top: 10px; }
.ep-refvideo-title { font-size: 11px; color: var(--text-muted); }
.ep-refvideo-ok { font-size: 11px; color: var(--success); font-weight: 500; }
.ep-refvideo-player { display: block; margin-top: 4px; width: 100%; max-width: 240px; border-radius: 6px; border: 1px solid var(--border); background: #000; }

/* 参考图（首帧） */
.ep-ff { margin-top: 10px; }
.ep-ff-bar { display: flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; font-size: 12px; font-weight: 700; cursor: pointer; user-select: none; }
.ep-ff-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--success); }
.ep-ff-trusted { font-size: 9px; font-weight: 400; color: var(--success); }
.ep-ff-mini { width: 22px; height: 22px; object-fit: cover; border-radius: 3px; border: 1px solid var(--primary); }
.ep-ff-toggle { font-size: 10.5px; font-weight: 400; color: var(--text-muted); }
.ep-ff-body { margin-top: 4px; padding: 8px; border: 1px solid var(--border); border-radius: 6px; }
.ep-ff-img { position: relative; width: 80px; height: 80px; flex: none; border: 1px solid var(--border); border-radius: 4px; overflow: hidden; font-size: 10px; color: var(--text-muted); }
.ep-ff-img.has { cursor: zoom-in; }
.ep-ff-img img { display: block; position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ep-ff-none { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
/* 右下角「报白 …」（未报白，黄）/「✓」（已报白，绿） */
.ep-ff-trust { position: absolute; right: 2px; bottom: 2px; padding: 1px 5px; border: 0; border-radius: 3px; background: var(--warning, #f59e0b); color: #fff; font-size: 9px; cursor: pointer; }
.ep-ff-trust.ok { background: var(--success); cursor: default; }
.ep-ff-trust:disabled { opacity: .7; cursor: default; }
.ep-ff-prompt { height: 55px; min-height: 55px; font-size: 11.5px; resize: vertical; }
.ep-ff-row { margin-top: 8px; display: flex; align-items: center; gap: 6px; font-size: 11px; }
.ep-ff-row .dim { font-size: 9.6px; }
.ep-ff-add { font-size: 9.6px; padding: 1px 6px; }
.ep-ff-urefs { margin-top: 4px; display: flex; gap: 5px; flex-wrap: wrap; }
.ep-ff-uref { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.ep-ff-uref img { width: 36px; height: 36px; object-fit: cover; border-radius: 4px; border: 1px solid var(--border); cursor: zoom-in; }
.ep-ff-uref input { width: 50px; font-size: 8px; padding: 1px 2px; border-radius: 3px; border: 1px solid var(--border); background: var(--bg); color: var(--text); text-align: center; }
.ep-ff-x { position: absolute; top: -3px; right: -3px; width: 13px; height: 13px; border-radius: 50%; background: var(--danger); color: #fff; font-size: 9px; line-height: 13px; text-align: center; cursor: pointer; }
.ep-ff-model { width: auto; min-width: 130px; }
.ep-ff-editbtn { background: linear-gradient(135deg, #f59e0b, #d97706); color: #fff; border: 0; white-space: nowrap; }
.ep-ff-editbtn:disabled { opacity: .5; }
.ep-ff-hist-title { font-size: 9.6px; color: var(--text-muted); margin-bottom: 4px; }
.ep-ff-hist { display: flex; gap: 6px; flex-wrap: wrap; }
.ep-ff-hitem { position: relative; padding: 2px; border: 2px solid transparent; border-radius: 5px; cursor: pointer; }
.ep-ff-hitem.on { border-color: var(--success); box-shadow: 0 0 6px rgba(34, 197, 94, .4); }
.ep-ff-hitem img { display: block; width: 48px; height: 48px; object-fit: cover; border-radius: 4px; }
.ep-pillbtn { border-radius: 999px; padding: 4px 14px; }

/* 视频生成区与 ⚙ 设置块 */
.ep-foot { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.ep-gening { display: inline-flex; align-items: center; gap: 6px; }
.ep-gening .spinner { width: 12px; height: 12px; }
.ep-setbtn { max-width: 150px; overflow: hidden; text-overflow: ellipsis; display: inline-block; }
.ep-setbtn.on { border-color: var(--primary); color: var(--primary); }
.ep-foot-count { font-size: 12px; color: var(--success); }
.ep-foot-pts { font-size: 11px; color: var(--accent); white-space: nowrap; }   /* 这条视频约多少积分（团队管理员，10-25） */
.ep-foot-cont { font-size: 10.5px; color: var(--accent); }
.ep-foot-ref { font-size: 10.5px; color: var(--success); }
.ep-settings { margin-top: 10px; padding: 12px 14px; background: var(--bg); border: 1px solid #2f2f31; border-radius: 8px; display: flex; flex-direction: column; gap: 10px; }
.ep-set-row { display: flex; align-items: center; gap: 10px; }
.ep-set-label { width: 52px; flex: none; font-size: 11.5px; font-weight: 700; }
.ep-chip { padding: 1px 7px; border: 1px solid var(--border); border-radius: 4px; background: transparent; color: var(--text); font: 600 10.5px/1.6 var(--font); cursor: pointer; }
.ep-chip:hover:not(:disabled) { background: var(--bg-card-hover); }
.ep-chip.on { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.ep-chip.bold { font-weight: 800; }   /* 开着「⏱ 长镜头30s」时 30s 加粗（原站） */
.ep-chip:disabled { opacity: .35; cursor: not-allowed; }
.ep-dur-input { margin-top: 6px; width: 316px; height: 34px; text-align: center; background: #050507; }
.ep-dur-input.on { border-color: var(--primary); }
.ep-set-hint { font-size: 9.6px; color: var(--text-muted); margin-top: 2px; }
.ep-set-warn { font-size: 9.6px; color: #b45309; margin-top: 2px; }
.ep-set-fixed { font-size: 11.5px; color: #d4d4d8; }
.ep-set-desc { font-size: 9.3px; color: var(--text-muted); margin-top: -4px; }

/* 右列视频 */
.ep-vgen { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: rgba(91, 107, 140, .06); font-size: 11px; color: var(--text-muted); }
.ep-vgen .spinner { width: 14px; height: 14px; }
.ep-video { margin-top: 8px; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: #1f1f21; }
.ep-video.latest { margin-top: 0; border-color: rgba(34, 197, 94, .7); }
.ep-video video { display: block; width: 100%; height: 150px; background: #333; object-fit: contain; }
.ep-video-ph { min-height: 120px; display: flex; align-items: center; justify-content: center; background: #0f172a; color: #94a3b8; font-size: 11px; cursor: pointer; }
.ep-video-meta { display: flex; align-items: center; gap: 8px; padding: 4px 8px; font-size: 10.5px; }
.ep-video-time { font-size: 10px; color: var(--text-muted); }
.ep-vbtn { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 15px; border: 0; border-radius: 3px; background: #3f3f46; color: #e4e4e7; font-size: 9px; cursor: pointer; padding: 0; }
.ep-vbtn.red { background: var(--danger); color: #fff; }
.ep-video-empty { padding: 20px 8px; text-align: center; color: var(--text-muted); font-size: 11px; line-height: 1.6; border: 1px dashed var(--border); border-radius: 8px; }

/* 看大图（原站 lightbox-overlay：点任意处关闭；10-20 加 Esc 关闭、图下方的名字） */
.ep-lightbox { position: fixed; inset: 0; z-index: 9999; background: rgba(0, 0, 0, .85); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; cursor: zoom-out; }
.ep-lightbox img { max-width: 90vw; max-height: 90vh; border-radius: 8px; }
.ep-lightbox.named img { max-height: calc(90vh - 40px); }
.ep-lightbox-name { max-width: 90vw; color: #e4e4e7; font-size: 13px; font-weight: 600; line-height: 1.5; text-align: center; word-break: break-all; }

/* 参考图悬停放大（复刻版独有，业主 10-20）：整页一个，fixed 贴在缩略图旁（位置由 js 算），不挡点击。
   z-index 60：高于吸顶工具条 20 和镜头卡里的选择面板，低于抽屉 90、弹窗 100、看大图 9999 */
.ep-zoom { position: fixed; z-index: 60; pointer-events: none; padding: 6px; border: 1px solid #3f3f46; border-radius: 10px; background: var(--bg-card); box-shadow: 0 12px 32px rgba(0, 0, 0, .6); }
.ep-zoom-pic { display: flex; align-items: center; justify-content: center; border-radius: 6px; overflow: hidden; background: #000; }
.ep-zoom-pic img { display: block; max-width: min(480px, 45vw); max-height: min(640px, 80vh); object-fit: contain; }
/* 先铺着缩略图时在后台加载原图的那张（10-20 第二批）：不显示，加载完换到上面那张里 */
.ep-zoom-pic img.ep-zoom-pre { display: none; }
.ep-zoom-wait { width: 200px; height: 150px; display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; color: var(--text-muted); }
.ep-zoom-wait .spinner { width: 14px; height: 14px; }
.ep-zoom-meta { margin-top: 6px; display: flex; align-items: flex-start; gap: 6px; }
.ep-zoom-kind { flex: none; padding: 0 5px; border-radius: 4px; background: #27272a; color: var(--text-muted); font-size: 10px; font-weight: 700; line-height: 18px; }
.ep-zoom-name { min-width: 0; font-size: 12px; font-weight: 600; line-height: 18px; word-break: break-all; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ep-zoom-tip { margin-top: 2px; font-size: 10.5px; color: var(--text-muted); line-height: 1.5; }

/* ---------- 提示词历史弹窗 ---------- */
.ep-hist-mask { z-index: 9999; }
.ep-hist-modal { width: 640px; max-width: calc(100vw - 40px); max-height: 80vh; padding: 18px 22px 22px; display: flex; flex-direction: column; }
.ep-hist-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.ep-hist-title { font-size: 16.8px; font-weight: 600; }
.ep-hist-sub { font-size: 11.5px; color: var(--text-muted); }
.ep-hist-close { margin-left: auto; }
.ep-hist-desc { font-size: 11.5px; color: var(--text-muted); margin-bottom: 10px; }
.ep-hist-empty { padding: 24px; text-align: center; font-size: 13.6px; color: var(--text-muted); }
.ep-hist-list { flex: 1; overflow: auto; display: flex; flex-direction: column; gap: 8px; }
.ep-hist-item { border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; background: var(--bg); }
.ep-hist-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.ep-hist-src { font-size: 11.5px; font-weight: 600; }
.ep-hist-time { font-size: 10.9px; color: var(--text-muted); }
.ep-hist-restore { margin-left: auto; font-size: 9.9px; }
.ep-hist-preview { font-size: 11.5px; color: var(--text-muted); white-space: pre-wrap; word-break: break-word; max-height: 4.5rem; overflow: hidden; line-height: 1.45; }
.ep-hist-toggle { font-size: 9.3px; margin-top: 6px; }
.ep-hist-full { margin-top: 6px; font-size: 12px; white-space: pre-wrap; word-break: break-word; max-height: 240px; overflow: auto; line-height: 1.5; padding: 8px; background: var(--bg-card); border-radius: 6px; }

/* ---------- 历史提示词 / 我的收藏弹窗（复刻版独有，partials/prompt-library-modal.html、js/promptlibrary.js） ---------- */
.pl-mask { z-index: 9999; }
.pl-modal { width: 760px; max-width: calc(100vw - 40px); max-height: 85vh; padding: 16px 20px 18px; display: flex; flex-direction: column; overflow: hidden; }
.pl-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.pl-target { font-size: 11.5px; color: var(--text-muted); }
.pl-close { margin-left: auto; }
.pl-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.pl-search { flex: 1; min-width: 160px; }
.pl-add { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; padding: 8px 10px; border: 1px dashed var(--border); border-radius: 8px; }
.pl-add-title { flex: 1; min-width: 140px; }
.pl-desc { font-size: 11.5px; color: var(--text-muted); margin-bottom: 8px; line-height: 1.5; }
.pl-ro { display: block; color: var(--warning); }
.pl-empty { padding: 28px 12px; text-align: center; font-size: 13px; color: var(--text-muted); }
.pl-list { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 8px; }
.pl-count { font-size: 10.9px; color: var(--text-dim); }
.pl-item { display: flex; gap: 10px; border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; background: var(--bg); }
.pl-thumb { position: relative; flex: 0 0 64px; width: 64px; height: 88px; border-radius: 6px; overflow: hidden; background: var(--bg-card);
  display: flex; align-items: center; justify-content: center; cursor: pointer; }
.pl-thumb.none { cursor: default; color: var(--text-dim); font-size: 20px; }
.pl-thumb img, .pl-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
.pl-thumb-v { width: 100%; height: 100%; }
.pl-thumb .video-expired { min-height: 0; padding: 2px; font-size: 11px; }
.pl-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px;
  text-shadow: 0 1px 4px rgba(0, 0, 0, .8); pointer-events: none; }
.pl-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.pl-title { font-size: 12.5px; font-weight: 600; }
.pl-preview { font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden; }
.pl-full { font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; max-height: 240px; overflow: auto; padding: 8px;
  background: var(--bg-card); border-radius: 6px; }
.pl-meta { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 10.9px; color: var(--text-muted); }
.pl-status { font-weight: 600; }
.pl-status.ok { color: var(--success); }
.pl-status.bad { color: var(--danger); }
.pl-acts { display: flex; flex-wrap: wrap; gap: 6px; }
.pl-del { color: var(--danger); }
.pl-more { text-align: center; padding: 4px 0 2px; }
@media (max-width: 560px) {
  .pl-modal { padding: 12px; }
  .pl-thumb { flex-basis: 48px; width: 48px; height: 66px; }
}

/* 已过期的视频（retention.py 清掉了文件；占位样式在 style.css 的 .video-expired）：占住播放器的高度，📥 置灰 */
.ep-video .video-expired { height: 120px; }
.ep-vbtn:disabled { opacity: .4; cursor: not-allowed; }
