.user-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.user-avatar img{object-fit:cover;width:100%;height:100%;display:block}.profile-photo-trigger{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.profile-photo-trigger:focus-visible{outline-offset:3px;outline:2px solid #60a5fa}.profile-photo-trigger:not(:disabled):hover{box-shadow:0 0 0 3px #60a5fa59}.admin-sidebar .profile-photo-trigger .user-avatar.admin-sidebar-profile-avatar{border-radius:50%}.profile-photo-dialog{color:#0f172a;text-align:center;background:#fff;border:1px solid #dbeafe;border-radius:20px;width:min(420px,100% - 32px);max-height:calc(100dvh - 32px);margin:auto;padding:24px;overflow-y:auto;box-shadow:0 24px 64px #0f172a3d}.profile-photo-dialog::backdrop{background:#0f172a80}.profile-photo-dialog h2{margin:0 0 10px;font-size:1.3rem;font-weight:800}.profile-photo-dialog p{overflow-wrap:anywhere;font-size:.875rem}.profile-photo-dialog .profile-photo-preview{color:#2563eb;background:#eff6ff;width:112px;height:112px;margin:4px auto 12px;font-size:42px}.profile-photo-name{font-weight:700}.profile-photo-dialog button{color:#334155;background:#f8fafc;border:1px solid #cbd5e1;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:8px 12px;font-size:.875rem;font-weight:700;display:inline-flex}.profile-photo-dialog button:not(:disabled):hover{filter:brightness(.95)}.profile-photo-dialog button:focus-visible{outline-offset:3px;outline:2px solid #2563eb}.profile-photo-dialog button:disabled{opacity:.55;cursor:not-allowed}.profile-photo-dialog .profile-photo-save{color:#fff;background:#2563eb;border-color:#2563eb}.profile-photo-dialog .profile-photo-remove,.profile-photo-error{color:#b91c1c}html[data-theme=dark] .admin-profile-photo-dialog{background:var(--bbs-surface);border-color:color-mix(in srgb, var(--bbs-link) 45%, var(--bbs-border));color:var(--bbs-text);box-shadow:var(--bbs-shadow)}html[data-theme=dark] .admin-profile-photo-dialog h2,html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-name,html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-cropper h3,html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-cropper label{color:var(--bbs-text)}html[data-theme=dark] .admin-profile-photo-dialog p{color:var(--bbs-text-secondary)}html[data-theme=dark] .admin-profile-photo-dialog button{background:var(--bbs-surface-elevated);border-color:var(--bbs-border-strong);color:var(--bbs-text)}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-choose{border-color:var(--bbs-link);color:var(--bbs-link)}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-save{background:var(--bbs-primary);border-color:var(--bbs-primary);color:var(--bbs-text-inverse)}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-remove,html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-error{color:var(--bbs-danger)}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-remove{border-color:color-mix(in srgb, var(--bbs-danger) 60%, var(--bbs-border))}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-status{color:var(--bbs-success)}html[data-theme=dark] .admin-profile-photo-dialog .profile-photo-filename{color:var(--bbs-text-muted)}.profile-photo-status{color:#166534;min-height:1.5em;margin:12px 0}.profile-photo-filename{color:#475569;margin:8px 0}.profile-photo-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.profile-photo-dialog .user-avatar-view{cursor:zoom-in;border:0;border-radius:50%;padding:0;position:relative}.user-avatar-view-cue{color:#fff;opacity:0;background:#0f172a59;justify-content:center;align-items:center;font-size:24px;display:flex;position:absolute;inset:0}.user-avatar-view:hover .user-avatar-view-cue,.user-avatar-view:focus-visible .user-avatar-view-cue{opacity:1}.profile-photo-viewer{z-index:30000;touch-action:none;overscroll-behavior:none;background:#0f172a;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.profile-photo-viewer-stage{inset:calc(64px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));touch-action:none;justify-content:center;align-items:center;display:flex;position:absolute;overflow:hidden}.profile-photo-viewer::backdrop{background:#0f172af0}.profile-photo-viewer-stage>img{width:min(960px, 100%, calc((100dvh - 88px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) * var(--profile-photo-ratio)));object-fit:contain;transform-origin:50%;will-change:transform;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;max-width:100%;height:auto;max-height:100%}.profile-photo-viewer-stage[data-zoomed=true]{cursor:grab}.profile-photo-viewer-stage[data-zoomed=true]:active{cursor:grabbing}.profile-photo-viewer-close{top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));z-index:1;color:#fff;background:#1e293b;border:1px solid #64748b;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;padding:0;display:inline-flex;position:absolute}.profile-photo-viewer-close:hover{background:#334155}.profile-photo-viewer-close:focus-visible{outline-offset:3px;outline:2px solid #93c5fd}.profile-photo-cropper{margin:16px 0}.profile-photo-cropper h3{font-size:1rem;font-weight:700;line-height:1.8}.profile-crop-stage{aspect-ratio:1;touch-action:none;overscroll-behavior:contain;cursor:grab;background:#eff6ff;border-radius:50%;width:min(100%,280px);margin:16px auto;overflow:hidden;box-shadow:0 0 0 2px #cbd5e1}.profile-crop-stage:active{cursor:grabbing}.profile-crop-stage[aria-disabled=true]{cursor:wait}.profile-crop-stage canvas{pointer-events:none;width:100%;height:100%;display:block}.profile-crop-stage:focus-visible,.profile-photo-cropper input:focus-visible{outline-offset:4px;outline:3px solid #2563eb}.profile-photo-cropper label{font-size:.875rem;font-weight:600;display:block}.profile-photo-cropper input[type=range]{accent-color:#2563eb;width:100%;min-height:44px;margin:4px 0 12px;display:block}.compact-profile-photo-dialog{width:min(440px,100vw - 24px);max-height:80dvh;padding:14px 16px max(14px, env(safe-area-inset-bottom));overflow-y:auto}.compact-profile-photo-dialog .profile-photo-modal-header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.compact-profile-photo-dialog .profile-photo-modal-header h2{min-width:0;margin:0;font-size:20px;line-height:1.5}.compact-profile-photo-dialog button.profile-photo-close{background:0 0;border:0;flex:0 0 44px;width:44px;height:44px;padding:8px}.compact-profile-photo-dialog p{margin:6px 0;font-size:13px;line-height:1.6}.compact-profile-photo-dialog .profile-photo-preview{width:130px;height:130px;margin:12px auto 8px}.compact-profile-photo-dialog .profile-photo-name{text-align:center;overflow-wrap:anywhere;margin:6px 0 10px;font-size:16px}.compact-profile-photo-dialog button{min-height:44px;padding:8px 12px;font-size:14px}.compact-profile-photo-dialog .profile-photo-choose{justify-content:center;align-items:center;gap:8px;margin:0 auto;display:flex}.compact-profile-photo-dialog .profile-photo-ios-help{text-align:center;max-width:340px;margin:4px auto 8px;font-size:12px;line-height:1.5}.compact-profile-photo-dialog .profile-photo-actions{gap:8px;margin-top:10px}.compact-profile-photo-dialog .profile-photo-remove{background:0 0;border-color:#0000;margin-right:auto;padding:6px 10px;font-size:13px}.compact-profile-photo-dialog .profile-photo-status:empty{display:none}.compact-profile-photo-dialog .profile-photo-cropper{margin:8px 0}.compact-profile-photo-dialog .profile-crop-stage{width:min(200px,100%,27dvh);margin:8px auto}.compact-profile-photo-dialog .profile-photo-cropper label{margin:4px 0 0;font-size:14px}.compact-profile-photo-dialog .profile-photo-cropper input[type=range]{min-height:32px;margin:0}.compact-profile-photo-dialog .profile-photo-cropper>button{min-height:36px;padding:4px 10px;font-size:13px}
