
.faceEditToggle{margin-right:8px}
.faceEditOnly{border-color:#94a3b8}
.faceEditPanel{
  position:absolute;z-index:30;left:18px;bottom:54px;width:330px;max-height:75vh;
  overflow:auto;background:#fff;color:#111;border:1px solid #b8c0cc;border-radius:10px;
  box-shadow:0 12px 35px #0008;direction:rtl;padding:0;display:none
}
.faceEditPanel.open{display:block}
.faceEditHead{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;background:#eef3f8;border-bottom:1px solid #d5dbe4}
.faceMiniBtn{border:0;background:transparent;font-size:23px;cursor:pointer}
.faceEditMessage{padding:8px 10px;font-size:12px;color:#475569;border-bottom:1px solid #e5e7eb}
.faceSelectedInfo{padding:8px 10px;font-size:12px;line-height:1.5;background:#fafafa}
.faceActionBlock,.faceAssignBlock{padding:9px 10px;border-top:1px solid #e5e7eb;display:flex;gap:6px;flex-wrap:wrap}
.faceAction{border:1px solid #b8c0cc;background:#fff;border-radius:6px;padding:7px 8px;cursor:pointer;font-size:12px}
.faceAction:hover{background:#f1f5f9}
.faceAction.primary{background:#e1f0e5;border-color:#84b88e}
.faceAction.danger{background:#fde8e8;border-color:#d8a0a0}
.faceAssignBlock label{width:100%;font-weight:700;font-size:12px}
.faceAssignBlock input,.faceAssignBlock select{width:100%;border:1px solid #c6ccd5;border-radius:6px;padding:7px;font-size:12px}
.faceAssignBlock select{height:116px}
.faceOr{width:100%;text-align:center;color:#64748b;font-size:11px}
.faceBox.faceEditable{pointer-events:auto;cursor:pointer}
.faceBox.faceEditable:hover{border-color:#ffe066}
.faceBox.faceSelected{border-color:#ffd43b;box-shadow:0 0 0 3px #000,0 0 13px #ffd43b}
.faceManualOverlay{position:absolute;border:3px dashed #ffce3a;background:#ffe06622;pointer-events:none;z-index:9}
.stage.manualFaceMode{cursor:crosshair}
.faceEditBusy{opacity:.6;pointer-events:none}
.manualSuggestion{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:6px;border:1px solid #dbe1e8;border-radius:6px;margin:4px 0;background:#fff}
.manualSuggestion button{border:1px solid #aab3bf;background:#f7f9fb;border-radius:5px;padding:5px 7px;cursor:pointer}
@media(max-width:900px){
  .faceEditPanel{left:8px;right:8px;bottom:45px;width:auto;max-height:60vh}
}

.personReviewHead{display:flex;justify-content:space-between;align-items:center;width:100%}
.personReviewList{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:330px;overflow:auto}
.personReviewItem{border:1px solid #d7dde5;border-radius:7px;padding:5px;background:#fff;display:flex;flex-direction:column;gap:4px}
.personReviewItem img{width:100%;height:110px;object-fit:cover;border-radius:5px;background:#eef2f6}
.personReviewMeta{font-size:11px;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.personReviewCheck{display:flex;align-items:center;gap:5px;font-size:11px}
.personReviewActions{display:flex;gap:6px;flex-wrap:wrap;width:100%;margin-top:7px}

.faceLabel{
  font-size:18px!important;
  transform:rotate(var(--face-label-counter-rotation,0deg));
  transform-origin:left bottom;
}
.faceInfoToggle{cursor:pointer;border:1px solid #cbd5e1;background:#fff}
.faceInfoToggle.active{background:#e8f1ff;border-color:#7ba7d8}
#playBtn:disabled,#speedSel:disabled{opacity:.45;cursor:not-allowed}
.faceContextMenu{
  position:fixed;z-index:1000;display:none;min-width:220px;max-width:320px;
  background:#fff;border:1px solid #aeb7c2;border-radius:8px;box-shadow:0 10px 30px #0005;
  padding:5px;direction:rtl;color:#111
}
.faceContextMenu.open{display:block}
.faceContextMenu button{display:block;width:100%;text-align:right;border:0;background:#fff;padding:8px 10px;border-radius:5px;cursor:pointer}
.faceContextMenu button:hover{background:#eef3f8}
.faceContextMenu button.danger{color:#9b1c1c}
.personReviewVisuals{display:grid;grid-template-columns:42% 1fr;gap:6px;height:145px}
.personReviewCrop{position:relative;overflow:hidden;background:#222;border-radius:5px;display:flex;align-items:center;justify-content:center}
.personReviewCrop img,.reviewContextImg{width:100%;height:100%;object-fit:contain}
.cropRotate{position:absolute;left:4px;bottom:4px;border:1px solid #aaa;background:#fffe;border-radius:5px;cursor:pointer}

.faceBox.status-confirmed{border-color:#24a148!important;border-style:solid}
.faceBox.status-suggested{border-color:#f59e0b!important;border-style:dashed}
.faceBox.status-unidentified,.faceBox.status-unreviewed{border-color:#2587d9!important;border-style:dotted}
.faceBox.status-unknown{border-color:#6b7280!important;border-style:solid}
.faceBox.status-unrecognizable{border-color:#8b5e3c!important;border-style:dashed}
.personBtn.status-suggested{border-style:dashed}
.personBtn.status-unidentified,.personBtn.status-unreviewed{border-style:dotted}
.personBtn.status-unrecognizable{border-style:dashed}

.allAlbumsRoot{font-weight:700;border-bottom:1px solid #dfe5ec;margin-bottom:3px}
.facePrimaryTools{background:#f8fafc}

.overlapFaceList{display:flex;flex-direction:column;gap:6px;width:100%}
.overlapFaceRow{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center;width:100%;padding:5px;border:1px solid #d8dee7;border-radius:6px;background:#fff}
.faceBox.visible.faceSelected{outline:4px solid #ffd43b!important;outline-offset:3px}

/* Face frames must always be clickable; clicking one opens the editor. */
.faceBox.visible{pointer-events:auto;cursor:pointer}

.facePersonMatchInfo{
  width:100%;
  min-height:18px;
  font-size:11px;
  color:#475569;
  padding:2px 2px 4px;
}
.faceEditHead{
  cursor:move;
  user-select:none;
  touch-action:none;
}
.faceEditPanel.dragging{
  user-select:none;
}
.faceEditHead button{
  cursor:pointer;
}

/* PhotoArchive V2 Mobile UI */
@media (max-device-width:600px), (max-device-height:600px){
  .faceEditPanel{font-size:13px}
  .faceAction{min-height:38px;padding:7px 9px}
  .faceContextMenu button{min-height:42px;padding:10px 12px;font-size:15px}
}

/* FACE_PANEL_PERSON_ACTIONS_20260924 */
.facePersonActions{
  width:100%;
  display:flex;
  gap:6px;
  flex-wrap:wrap;
}
#faceAssignNew:disabled{
  opacity:.42;
  cursor:not-allowed;
  background:#fff;
  border-color:#b8c0cc;
}
#faceAssignNew:not(:disabled){
  background:#fde8e8;
  border-color:#d8a0a0;
}
