/* wrapper positions the toggle inside the input */ .password-input-wrapper { position: relative; display: block; } /* add right padding so text doesn't overlap the icon */ .password-input { padding-right: 2.25rem; /* adjust as needed for icon size */ } /* icon button sits absolutely inside the input at the right */ .password-toggle-btn { position: absolute; right: 0.5rem; top: 50%; transform: translateY(-50%); border: none; background: transparent; padding: 0; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: inherit; line-height: 1; } /* keep the native focus behavior but provide visible ring for keyboard users */ .password-toggle-btn:focus { outline: none; } .password-toggle-btn:focus-visible { box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.15); border-radius: 0.25rem; } /* tune icon size */ .password-toggle-btn .mdi { font-size: 1.15rem; pointer-events: none; /* let clicks hit the button, not the icon */ } .file-input-wrapper { max-width: 100%; } .custom-file-input-wrapper { max-width: 100%; } .custom-file-input-wrapper .form-control { height: 38px; padding-right: 50px; background-color: #f8f9fa; border: 1px solid #ced4da; } .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* === NÚT LABEL GIỐNG BUTTON THẬT === */ .upload-btn { cursor: pointer; transition: all 0.2s ease; user-select: none; min-width: 50px; font-size: 23px; justify-content: center; border-right: 1px solid silver; border-radius: 0.25rem; } /* HOVER: đổi màu nền + viền */ .upload-btn:hover { background-color: #e7f3ff !important; } /* FOCUS: khi tab đến (accessibility) */ .upload-btn:focus { outline: 2px solid transparent; box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.5) !important; } /* ACTIVE: khi nhấn */ .upload-btn:active { transform: translateY(0); background-color: #d0e8ff !important; }