/* 图片工作台右侧 · 预制朋友圈收集区（pyq-collect.js）。位置和宽度由 A 的版面定；这里只管栏内。 */
.pyq-collect { position: sticky; top: calc(var(--toolbar-h, 52px) + var(--tab-h, 0px) + 12px); align-self: start;
  display: flex; flex-direction: column; gap: 10px; min-width: 0; max-height: calc(100vh - var(--toolbar-h, 52px) - 32px);
  overflow: auto; padding: 12px; box-sizing: border-box; background: var(--surface, #fff);
  border: 1px solid var(--hair, rgba(0,0,0,.08)); border-radius: var(--r-lg, 14px); box-shadow: var(--sh-1);
  transition: box-shadow var(--dur, .2s) var(--ease, ease), border-color var(--dur, .2s) var(--ease, ease); }
/* 页面上一开始拖照片，整栏就亮起来，整栏都能放 */
.pyq-collect.is-armed { border-color: var(--accent, #006ad6); box-shadow: 0 0 0 3px var(--accent-soft, rgba(0,122,255,.1)); }
.pyq-collect.is-over { background: var(--accent-soft, rgba(0,122,255,.1)); }
.pyqc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.pyqc-count { font-size: 12px; color: var(--text-2, #636368); }
.pyqc-drop { border: 1.5px dashed var(--hair-strong, rgba(0,0,0,.14)); border-radius: var(--r-md, 10px); padding: 8px; min-height: 64px; }
.pyqc-drop.is-empty { display: flex; align-items: center; justify-content: center; min-height: 120px; text-align: center; }
.pyq-collect.is-armed .pyqc-drop { border-color: var(--accent, #006ad6); }
.pyqc-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 6px; }
.pyqc-list:empty { display: none; }
.pyqc-item { position: relative; aspect-ratio: 1; border-radius: var(--r-sm, 7px); overflow: hidden; background: var(--surface-sunken, #f7f7f9); }
.pyqc-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pyqc-remove.btn { position: absolute; top: 3px; right: 3px; width: 22px; height: 22px; min-height: 0; padding: 0; line-height: 20px;
  border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; border: 0; font-size: 14px; opacity: .85; }
.pyqc-remove.btn:hover { opacity: 1; background: rgba(0,0,0,.75); }
.pyqc-actions { display: flex; flex-direction: column; gap: 6px; }
.pyqc-actions .btn { width: 100%; white-space: normal; }
.pyqc-hint { margin: 0; font-size: 12px; color: var(--text-2, #636368); }
.pyqc-status { margin: 0; font-size: 12px; padding: 8px; border-radius: var(--r-sm, 7px); background: var(--surface-sunken, #f7f7f9);
  white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 880px) { .pyq-collect { position: static; max-height: none; } }

/* 生活概念照区顶上「一键生成 20 张」这一单的状态条（pyq-collect.js jobRender）。 */
.concept-job { margin: 4px 0 10px; padding: 10px 12px; border-radius: var(--r-md, 10px);
  border: 1px solid var(--hair, rgba(0,0,0,.08)); background: var(--surface-2, #f6f6f8); }
.concept-job[hidden] { display: none; }
.concept-job-line { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; }
.concept-job-text { font-weight: 600; }
.concept-job-sess { font-size: 12px; color: var(--text-2, #636368); }
.concept-job-bar { margin-top: 8px; height: 4px; border-radius: 2px; background: var(--hair, rgba(0,0,0,.08)); overflow: hidden; }
.concept-job-fill { height: 100%; background: var(--accent, #006ad6); transition: width var(--dur, .2s) var(--ease, ease); }
.concept-job.is-queued .concept-job-fill { width: 100% !important; opacity: .25; animation: concept-job-pulse 1.4s ease-in-out infinite; }
.concept-job.is-done { border-color: rgba(52,199,89,.35); background: rgba(52,199,89,.08); }
.concept-job.is-done .concept-job-fill { background: #34c759; }
.concept-job.is-failed { border-color: rgba(255,59,48,.35); background: rgba(255,59,48,.07); }
.concept-job.is-failed .concept-job-text { color: #c4271d; }
.concept-job.is-failed .concept-job-fill { background: #ff3b30; }
@keyframes concept-job-pulse { 50% { opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .concept-job.is-queued .concept-job-fill { animation: none; } }
