.face-terminal-directory{display:grid;gap:8px;min-width:0;margin:10px 0}.face-terminal-directory h4{margin:0}.face-directory-toolbar{display:flex;flex-wrap:wrap;gap:6px}.face-directory-toolbar select{min-width:0;max-width:100%;flex:1 1 150px}.face-directory-list{display:grid;gap:6px}.face-directory-user{padding:8px;border:1px solid var(--v3-line,var(--line,#52636a));border-radius:5px;display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}.face-directory-user dl{display:grid;grid-template-columns:minmax(90px,1fr) minmax(0,2fr);gap:5px;margin:6px 0}.face-directory-user dd{margin:0;overflow-wrap:anywhere}.face-directory-user dt{opacity:.7}.face-terminal-directory small{display:block;overflow-wrap:anywhere}
.face-directory-group{min-width:0;border:1px solid var(--v3-line,var(--line,#52636a));border-radius:5px;padding:8px}.face-directory-group>summary{cursor:pointer;display:flex;align-items:center;gap:8px;list-style:none}.face-directory-group>summary:before{content:'▸'}.face-directory-group[open]>summary:before{content:'▾'}.face-directory-group>summary>span{flex:1;min-width:0}.face-directory-group>summary small{font-size:10px;opacity:.7;margin-top:3px}.face-directory-count{font-size:12px}.face-directory-group .face-directory-list{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:8px}.face-directory-group .face-directory-user{display:flex;flex-direction:column;gap:6px;padding:6px}.face-directory-portrait{position:relative;height:130px;display:flex;align-items:center;justify-content:center;background:#0002;border-radius:3px;overflow:hidden}.face-directory-portrait img{width:100%;height:100%;object-fit:contain}.face-directory-portrait span{font-size:10px;opacity:.6}.face-directory-identity{min-width:0}.face-directory-identity b{font-size:12px}.face-directory-identity small{font-size:10px;opacity:.7;margin-top:3px}.face-directory-change{padding:8px 0;border-bottom:1px solid var(--v3-line,var(--line,#52636a))}.face-directory-history{font-size:11px}.face-directory-group>button{margin-top:8px}

.face-unified-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:7px}
.face-unified-directory .face-unified-person{display:grid;grid-template-columns:132px minmax(0,1fr);padding:8px;gap:9px;background:var(--v3-panel-2)}
.face-unified-portrait-col{display:flex;flex-direction:column;gap:5px;min-width:0}
.face-unified-portrait-col .face-directory-portrait{height:144px;background:var(--dock-input);flex:none}
.face-unified-portrait-col>button{margin-top:0;font-size:11px;min-height:30px;padding:4px}
.face-unified-content{display:flex;flex-direction:column;min-width:0;gap:6px;min-height:179px}
.face-unified-display-name{font-size:14px;overflow-wrap:anywhere;line-height:1.4}
.face-unified-directory .face-unified-name{width:100%;min-width:0;box-sizing:border-box;font-size:12px;padding:4px}
.face-unified-meta{display:flex;flex-wrap:wrap;gap:3px;font-size:10px;color:var(--v3-muted)}
.face-unified-targets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.face-unified-directory .face-unified-target{font-size:10px;padding:4px;min-height:28px;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-target.is-enabled{background:var(--dock-selected);border-color:var(--dock-accent);color:var(--v3-text)}
.face-unified-target.is-enabled:before{content:'✓ '}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-target.is-pending{background:var(--v3-panel-2);border-color:var(--dock-warning);color:var(--dock-warning)}
.face-unified-target.is-pending:before{content:'◷ '}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-target.is-failed{border-color:var(--dock-error);color:var(--dock-error)}
.face-unified-actions{display:flex;justify-content:flex-end;gap:5px;margin-top:auto}
.face-unified-directory .face-unified-actions button{font-size:11px;padding:5px 7px;min-height:30px}
html.qs-v3 body :is(#faceAccessPanel,#objectSettingsPanel).qs-dock .face-unified-error{color:var(--dock-error);font-size:11px}
html.qs-v3 body :is(#faceAccessPanel,#objectSettingsPanel).qs-dock .face-unified-wait{font-size:10px;color:var(--dock-warning)}
#faceAccessPanel .has-unified-face-directory > :not(#faceTerminalDirectory):not([data-camera-terminal]){display:none!important}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-tabs{display:flex;gap:6px;margin-bottom:2px}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-tabs>button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;width:auto}
html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-tabs>button.active,html.qs-v3 body #faceAccessPanel.qs-dock .face-unified-photo-sources>button.active{background:var(--dock-selected);border-color:var(--dock-accent);color:var(--v3-text);box-shadow:inset 0 -2px var(--dock-accent)}
.face-unified-tabs b{font-size:12px}
.face-unified-photo-form{display:grid;gap:8px;background:var(--v3-panel-2);border:1px solid var(--v3-line);border-radius:6px;padding:8px}
.face-unified-photo-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.face-unified-photo-pair figure{margin:0;min-width:0}
.face-unified-photo-pair figcaption{font-size:10px;margin-bottom:4px;color:var(--v3-muted)}
.face-unified-photo-pair .face-directory-portrait{height:170px;background:var(--dock-input)}
.face-unified-photo-sources{display:flex;gap:4px}
.face-unified-photo-sources>button{flex:1;font-size:10px;padding:5px;white-space:normal}
.face-unified-photo-form .face-unified-actions{padding-top:6px}
.face-attendance{display:grid;gap:9px;min-width:0;font-size:12px}
.face-attendance-month,.face-attendance-person-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.face-attendance-month input{flex:1;min-width:120px;width:140px}
.face-attendance-person-head>b{flex:1;overflow-wrap:anywhere}
.face-attendance-rules{font-size:11px;color:var(--v3-muted)}
.face-attendance-rules small{display:block;margin-top:7px;line-height:1.5}
.face-attendance-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.face-attendance-stats>div{padding:8px;background:var(--v3-panel-2);border:1px solid var(--v3-line);border-radius:5px;min-width:0}
.face-attendance small{display:block;font-size:10px;color:var(--v3-muted)}
.face-attendance-stats b{display:block;font-size:15px;overflow-wrap:anywhere}
.face-attendance-list{display:grid;gap:5px}
html.qs-v3 body .qs-dock .face-attendance-worker{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:7px;text-align:left;padding:8px;white-space:normal}
.face-attendance-worker b{display:block;font-size:12px;overflow-wrap:anywhere}
.face-attendance-avatar{width:36px;height:40px;display:grid;place-items:center;background:var(--dock-selected);border-radius:4px;overflow:hidden}
.face-attendance-avatar img{width:100%;height:100%;object-fit:cover}
.face-attendance-table{width:100%;border-collapse:collapse;font-size:11px;background:var(--v3-panel-2)}
.face-attendance-table th,.face-attendance-table td{padding:6px 4px;border-bottom:1px solid var(--v3-line);text-align:left}
.face-attendance-table th{font-size:10px;color:var(--v3-muted);font-weight:500}
.face-attendance-table td:last-child{text-align:right}
.face-attendance-table tr.selected{background:var(--dock-selected)}
.face-attendance-table td>button{font-size:11px;padding:3px;min-height:30px}
.face-attendance-marks{display:grid;gap:5px;padding:6px;text-align:left}
.face-attendance-marks>div{display:flex;justify-content:space-between;gap:6px}
@media(max-width:400px){.face-unified-directory .face-unified-person{grid-template-columns:116px minmax(0,1fr);gap:7px;padding:7px}.face-unified-targets{gap:3px}.face-unified-directory .face-unified-actions button{font-size:10px;padding:5px}.face-unified-photo-pair .face-directory-portrait{height:156px}}

.face-attendance-tabs{display:flex;gap:6px;flex-wrap:wrap}
html.qs-v3 body #objectSettingsPanel.qs-dock .face-attendance-tabs button[aria-pressed="true"]{background:var(--dock-selected);color:var(--dock-accent);border-color:var(--dock-accent)}
.face-attendance-person-head>.face-attendance-avatar{flex-shrink:0}
html.qs-v3 body #objectSettingsPanel.qs-dock .face-attendance-worker{width:100%}

.face-person-group,.face-person-group-manager{border:1px solid var(--v3-line);border-radius:5px;padding:7px;min-width:0;background:var(--v3-panel-2)}
.face-person-group>summary,.face-person-group-manager>summary{cursor:pointer;font-size:12px;font-weight:600;overflow-wrap:anywhere}
.face-person-group[open]>summary,.face-person-group-manager[open]>summary{margin-bottom:8px}
.face-person-group-edit,.face-person-group-assignment{display:flex;gap:5px;flex-wrap:wrap;min-width:0;margin-top:6px}
.face-person-group-edit>input,.face-person-group-assignment>select{flex:1;min-width:90px;width:120px}
.face-person-group-assignment>small{flex-basis:100%}
.face-person-group-remove{margin:5px 0;padding:6px;border:1px solid var(--dock-warning);border-radius:4px}
html.qs-v3 body :is(#faceAccessPanel,#objectSettingsPanel).qs-dock .face-person-group-remove[hidden],html.qs-v3 body :is(#faceAccessPanel,#objectSettingsPanel).qs-dock .face-person-group-assignment button[hidden]{display:none}
html.qs-v3 body .qs-dock .face-person-group-edit button,html.qs-v3 body .qs-dock .face-person-group-assignment button{font-size:10px;padding:5px}
.face-unified-directory>.face-person-group,.face-unified-directory>.face-person-group-manager{margin-top:7px}
