Files
cbsnexora/src/app/clients/client-stepper/client-general-step/client-general-step.component.scss
T
niteshandClaude Sonnet 5 cb4260b7a3 fix(clients): stale signature bug, monthly turnover/annual income fields, senior citizen/PWD classification
- Fix signature-document reads picking the oldest upload instead of the latest across 7 call
  sites (CKYC tab, view/delete-signature dialogs, edit-wizard preview, cashier transaction entry,
  signatory service, record-master) by sorting on document id instead of an unsorted find().
- Add Monthly Turnover and Annual Income fields alongside the renamed Yearly Turnover field.
- Add Senior Citizen (auto-detected from DOB) and Person with Disability classification, with a
  required disability-certificate upload gate before client creation can proceed.
- Add Graduate and Diploma as distinct Education Levels, with diploma-specific degree options.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 10:49:28 +05:30

1954 lines
31 KiB
SCSS

/**
* Copyright since 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
@use '../stepper-readonly-overrides' as readonly;
:host {
@include readonly.readonly-form-overrides;
}
form {
padding: 0;
}
.section-block {
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid rgb(0 0 0 / 6%);
&:last-child {
border-bottom: none;
margin-bottom: 0;
}
}
.section-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 15px;
font-weight: 600;
color: #333;
margin: 0 0 16px;
.section-icon {
color: var(--md-sys-color-primary, #1074b9);
font-size: 14px;
}
}
.form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4px 16px;
}
.form-field {
width: 100%;
}
.full-width {
grid-column: 1 / -1;
}
.senior-citizen-auto-note {
display: flex;
align-items: center;
gap: 8px;
font-size: 12px;
color: #1074b9;
background: #eff6ff;
border: 1px solid #bfdbfe;
border-radius: 8px;
padding: 8px 12px;
margin-bottom: 8px;
}
.doc-upload-field {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
.doc-upload-label {
display: flex;
align-items: center;
gap: 8px;
flex: 1;
padding: 10px 14px;
border: 1px dashed #cbd5e1;
border-radius: 8px;
font-size: 13px;
color: #475569;
cursor: pointer;
transition: border-color 0.15s;
&:hover {
border-color: #1074b9;
}
&.doc-upload-label--missing {
border-color: #dc2626;
color: #dc2626;
}
}
.doc-upload-req {
color: #dc2626;
font-weight: 700;
}
.doc-upload-error {
font-size: 11px;
color: #dc2626;
}
.subsection-title {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #6b7280;
margin: 20px 0 4px;
padding-top: 16px;
border-top: 1px solid #e5e7eb;
.subsection-icon {
color: var(--md-sys-color-primary, #1074b9);
font-size: 12px;
}
}
.checkbox-field {
display: flex;
align-items: center;
padding: 8px 0;
}
.name-fields-row {
display: flex;
gap: 12px;
flex-wrap: wrap;
width: 100%;
grid-column: 1 / -1;
.name-field {
flex: 1;
min-width: 180px;
&.salutation-field {
flex: 0 0 110px;
min-width: 110px;
}
&.salutation-field-wide {
flex: 0 0 180px;
min-width: 180px;
}
&.first-name,
&.last-name {
flex: 1.2;
}
}
}
/* Full Name Row + Verify */
.full-name-row {
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 8px 14px;
background: #f0f9ff;
border: 1px solid #bae6fd;
border-radius: 6px;
margin-top: 12px;
margin-bottom: 16px;
}
.full-name-preview {
display: flex;
align-items: center;
gap: 8px;
.full-name-label {
font-size: 11px;
font-weight: 600;
color: #64748b;
}
.full-name-value {
font-size: 14px;
font-weight: 700;
color: #0c4a6e;
letter-spacing: 0.02em;
}
}
.verify-inline {
flex-shrink: 0;
}
.verify-name-btn {
font-size: 12px !important;
font-weight: 600 !important;
padding: 0 14px !important;
height: 32px !important;
border-radius: 6px !important;
display: flex;
align-items: center;
gap: 6px;
}
.verify-name-icon {
font-size: 12px;
}
.verify-status {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 12px;
font-weight: 700;
padding: 5px 12px;
border-radius: 6px;
&.verified {
background: #ecfdf5;
color: #059669;
border: 1px solid #a7f3d0;
}
&.blocked {
background: #fef2f2;
color: #dc2626;
border: 1px solid #fecaca;
}
}
.sanctions-citation {
font-size: 11px;
font-weight: 600;
color: #6b7280;
margin-left: 6px;
margin-right: 8px;
}
.sanctions-info-icon {
font-size: 16px;
width: 16px;
height: 16px;
color: #2563eb;
cursor: pointer;
vertical-align: middle;
margin-left: 2px;
&.blocked-info {
color: #dc2626;
}
}
/* Age Inline */
.age-inline {
display: flex;
align-items: center;
gap: 5px;
margin-top: -14px;
margin-bottom: 4px;
font-size: 11.5px;
font-weight: 600;
color: #059669;
padding-left: 2px;
&.full-width {
grid-column: 1 / -1;
}
.age-inline-icon {
font-size: 11px;
color: #10b981;
}
}
/* Minor Age Indicator */
.age-minor {
color: #1074b9 !important;
background: #eff6ff;
padding: 4px 10px;
border-radius: 6px;
border: 1px solid #bfdbfe;
.age-inline-icon {
color: #1074b9 !important;
}
}
.minor-badge {
font-size: 10px;
font-weight: 700;
padding: 2px 8px;
border-radius: 10px;
background: #fef2f2;
color: #dc2626;
margin-left: 6px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.senior-citizen-badge {
font-size: 10px;
font-weight: 700;
padding: 2px 8px;
border-radius: 10px;
background: #eff6ff;
color: #1074b9;
margin-left: 6px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* ═══ Guardian Section (Redesigned) ═══ */
.guardian-section {
margin-top: 12px;
border: 1px solid #e2e8f0;
border-radius: 12px;
overflow: hidden;
background: #fff;
box-shadow: 0 2px 8px rgb(0 0 0 / 4%);
}
.guardian-section__header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 14px 20px;
background: linear-gradient(135deg, #0f172a 0%, #1e3a5f 100%);
color: #fff;
}
.guardian-section__header-left {
display: flex;
align-items: center;
gap: 12px;
}
.guardian-section__header-icon {
font-size: 22px;
color: #60a5fa;
}
.guardian-section__title {
font-size: 15px;
font-weight: 600;
margin: 0;
color: #fff;
}
.guardian-section__sub {
font-size: 11px;
color: rgb(255 255 255 / 55%);
}
.guardian-section__age-chips {
display: flex;
align-items: center;
gap: 6px;
}
.guardian-age-chip {
font-size: 11px;
font-weight: 500;
color: rgb(255 255 255 / 80%);
padding: 3px 10px;
background: rgb(255 255 255 / 10%);
border-radius: 10px;
strong {
font-weight: 800;
color: #fff;
font-size: 13px;
}
}
.guardian-minor-badge {
font-size: 10px;
font-weight: 700;
padding: 3px 10px;
border-radius: 10px;
background: #ef4444;
color: #fff;
letter-spacing: 0.5px;
}
.guardian-section__header-right {
display: flex;
align-items: center;
gap: 12px;
}
.guardian-add-btn {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px !important;
font-weight: 600 !important;
height: 34px !important;
border-radius: 8px !important;
background: #fff !important;
color: #0f172a !important;
padding: 0 16px !important;
mat-icon {
font-size: 18px;
width: 18px;
height: 18px;
}
}
.guardian-section__body {
padding: 16px 20px;
}
/* Empty state */
.guardian-empty {
display: flex;
align-items: center;
gap: 12px;
padding: 20px;
background: #f8fafc;
border: 1px dashed #cbd5e1;
border-radius: 10px;
color: #64748b;
font-size: 13px;
}
.guardian-empty__icon {
font-size: 28px;
width: 28px;
height: 28px;
color: #cbd5e1;
}
.guardian-empty__content {
display: flex;
flex-direction: column;
gap: 4px;
}
.guardian-empty--required {
border-color: #fca5a5;
background: #fef2f2;
}
.guardian-empty__required {
font-size: 11px;
font-weight: 600;
color: #dc2626;
}
/* Search + Relationship row */
.guardian-search-row {
display: flex;
gap: 12px;
align-items: flex-start;
}
.guardian-search-col {
flex: 1;
}
.guardian-rel-field {
flex: 0 0 180px;
width: 180px;
}
.guardian-rel-hint {
display: flex;
align-items: center;
gap: 6px;
padding: 8px 12px;
background: #fff7ed;
border: 1px solid #fed7aa;
border-radius: 6px;
font-size: 12px;
color: #92400e;
margin-top: -8px;
margin-bottom: 4px;
}
.guardian-rel-hint__icon {
font-size: 16px !important;
width: 16px !important;
height: 16px !important;
color: #f59e0b;
}
.guardian-cancel-link {
color: #94a3b8 !important;
margin-top: 8px;
&:hover {
color: #ef4444 !important;
}
}
/* ═══ Guardian Row Table ═══ */
.guardian-row-table {
border: 1px solid #e2e8f0;
border-radius: 10px;
overflow: hidden;
background: #fff;
}
.guardian-row__header {
display: flex;
align-items: center;
background: #f1f5f9;
padding: 8px 12px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
color: #64748b;
letter-spacing: 0.5px;
border-bottom: 1px solid #e2e8f0;
}
.guardian-row__data {
display: flex;
align-items: center;
padding: 10px 12px;
transition: background 0.1s;
&:hover {
background: #f8fafc;
}
}
.guardian-row__col {
padding: 0 6px;
font-size: 13px;
color: #1e293b;
&--photo {
flex: 0 0 50px;
}
&--name {
flex: 1;
min-width: 0;
}
&--rel {
flex: 0 0 120px;
}
&--cif {
flex: 0 0 130px;
}
&--status {
flex: 0 0 80px;
}
&--actions {
flex: 0 0 110px;
display: flex;
gap: 2px;
justify-content: flex-end;
}
}
.guardian-row__avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: linear-gradient(135deg, #1074b9, #0ea5e9);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
flex-shrink: 0;
cursor: pointer;
&.has-photo {
padding: 0;
overflow: hidden;
}
}
.guardian-row__name-info {
display: flex;
flex-direction: column;
min-width: 0;
}
.guardian-row__name-text {
font-weight: 600;
font-size: 13px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.guardian-row__linked-tag {
font-size: 10px;
color: #1074b9;
font-weight: 500;
display: flex;
align-items: center;
gap: 2px;
}
.guardian-row__link-icon {
font-size: 12px !important;
width: 12px !important;
height: 12px !important;
}
.guardian-row__rel-badge {
font-size: 11px;
font-weight: 600;
padding: 3px 10px;
border-radius: 10px;
background: #eff6ff;
color: #1e40af;
text-transform: capitalize;
}
.guardian-row__mono {
font-family: 'Roboto Mono', monospace;
font-size: 12px;
color: #64748b;
}
.guardian-row__status-badge {
font-size: 11px;
font-weight: 600;
padding: 3px 10px;
border-radius: 10px;
background: #f1f5f9;
color: #64748b;
&--active {
background: #ecfdf5;
color: #059669;
}
}
.guardian-action-btn {
width: 32px !important;
height: 32px !important;
line-height: 32px !important;
mat-icon {
font-size: 18px !important;
width: 18px !important;
height: 18px !important;
color: #64748b;
}
&:hover mat-icon {
color: #1074b9;
}
&--delete:hover mat-icon {
color: #ef4444;
}
}
.guardian-row__zoomable {
cursor: zoom-in;
transition: transform 0.15s;
&:hover {
transform: scale(1.05);
}
}
/* Expandable detail panel */
.guardian-row__expand {
border-top: 1px solid #e2e8f0;
background: #f8fafc;
padding: 16px 20px;
animation: guardian-slide-down 0.2s ease-out;
}
@keyframes guardian-slide-down {
from {
opacity: 0;
max-height: 0;
}
to {
opacity: 1;
max-height: 500px;
}
}
.guardian-expand__grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px 24px;
}
.guardian-expand__item {
display: flex;
flex-direction: column;
gap: 2px;
&--wide {
grid-column: 1 / -1;
}
}
.guardian-expand__label {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #94a3b8;
}
.guardian-expand__value {
font-size: 13px;
font-weight: 500;
color: #1e293b;
display: flex;
align-items: center;
gap: 4px;
}
.guardian-expand__sig {
margin-top: 14px;
padding-top: 14px;
border-top: 1px dashed #e2e8f0;
display: flex;
flex-direction: column;
gap: 6px;
}
.guardian-expand__sig-img {
max-width: 200px;
max-height: 60px;
border: 1px solid #e2e8f0;
border-radius: 6px;
padding: 4px;
background: #fff;
}
.guardian-expand__photo-section {
margin-top: 12px;
display: flex;
flex-direction: column;
gap: 6px;
}
.guardian-expand__photo {
width: 60px;
height: 60px;
border-radius: 8px;
object-fit: cover;
border: 1px solid #e2e8f0;
}
/* Zoom dialog panel override */
::ng-deep .guardian-zoom-panel {
.mat-mdc-dialog-container {
padding: 0 !important;
border-radius: 12px !important;
}
.mdc-dialog__surface {
border-radius: 12px !important;
}
}
@media (width <= 768px) {
.guardian-section__header {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
.guardian-section__header-right {
flex-direction: column;
align-items: flex-start;
width: 100%;
}
.guardian-search-row {
flex-direction: column;
}
.guardian-rel-field {
flex: none;
width: 100%;
}
.guardian-row__header {
display: none;
}
.guardian-row__data {
flex-wrap: wrap;
gap: 8px;
}
.guardian-row__col {
&--photo {
flex: 0 0 40px;
}
&--name {
flex: 1 1 200px;
}
&--rel,
&--cif,
&--status {
flex: 0 0 auto;
}
&--actions {
flex: 0 0 auto;
}
}
.guardian-expand__grid {
grid-template-columns: 1fr;
}
}
/* Age Breakdown Chips */
.age-breakdown {
display: flex;
gap: 12px;
margin-top: 14px;
padding-top: 12px;
border-top: 1px dashed #e2e8f0;
}
.age-break-item {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 14px;
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 8px;
.age-break-label {
font-size: 11px;
font-weight: 500;
color: #64748b;
}
.age-break-value {
font-size: 16px;
font-weight: 800;
color: #0f172a;
}
}
/* ═══ Guardian Search ═══ */
.guardian-search-wrapper {
position: relative;
}
.guardian-search-field {
width: 100%;
}
.guardian-search-icon {
color: #94a3b8;
font-size: 14px;
}
.guardian-results {
position: absolute;
top: 56px;
left: 0;
right: 0;
z-index: 100;
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
box-shadow: 0 8px 24px rgb(0 0 0 / 12%);
max-height: 280px;
overflow-y: auto;
}
.guardian-results__loading {
display: flex;
align-items: center;
gap: 10px;
padding: 16px 20px;
font-size: 13px;
color: #64748b;
}
.guardian-results__empty {
padding: 16px 20px;
font-size: 13px;
color: #94a3b8;
text-align: center;
}
.search-no-results-hint {
font-size: 12px;
color: #94a3b8;
text-align: center;
padding: 4px 0 0;
margin-top: -8px;
}
.guardian-result-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 16px;
cursor: pointer;
transition: background 0.1s;
border-bottom: 1px solid #f1f5f9;
&:last-child {
border-bottom: none;
}
&:hover {
background: #f0f7ff;
}
}
.guardian-result-item__avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: #e0e7ff;
color: #4f46e5;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
flex-shrink: 0;
}
.guardian-result-item__info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
}
.guardian-result-item__name {
font-size: 13px;
font-weight: 600;
color: #1e293b;
}
.guardian-result-item__meta {
font-size: 11px;
color: #64748b;
font-family: 'Roboto Mono', monospace;
}
.guardian-result-item__status {
font-size: 11px;
font-weight: 600;
padding: 2px 8px;
border-radius: 10px;
background: #f1f5f9;
color: #64748b;
flex-shrink: 0;
&.active {
background: #ecfdf5;
color: #059669;
}
}
/* ═══ Guardian Card ═══ */
.guardian-card {
border: 1px solid #e2e8f0;
border-radius: 12px;
overflow: hidden;
background: #fff;
box-shadow: 0 1px 4px rgb(0 0 0 / 6%);
}
.guardian-card__header {
display: flex;
align-items: center;
gap: 12px;
padding: 14px 18px;
background: #f8fafc;
border-bottom: 1px solid #e2e8f0;
}
.guardian-card__avatar {
width: 40px;
height: 40px;
border-radius: 50%;
background: #1074b9;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
flex-shrink: 0;
}
.guardian-card__info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
}
.guardian-card__name {
font-size: 15px;
font-weight: 600;
color: #0f172a;
}
.guardian-card__meta {
font-size: 12px;
color: #64748b;
font-family: 'Roboto Mono', monospace;
}
.guardian-card__remove {
color: #94a3b8 !important;
&:hover {
color: #ef4444 !important;
}
}
.guardian-card__body {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
}
.guardian-card__detail {
display: flex;
flex-direction: column;
gap: 2px;
padding: 10px 18px;
border-bottom: 1px solid #f1f5f9;
border-right: 1px solid #f1f5f9;
&:nth-child(2n) {
border-right: none;
}
&:nth-last-child(-n + 2) {
border-bottom: none;
}
}
.guardian-card__label {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #94a3b8;
}
.guardian-card__value {
font-size: 13px;
font-weight: 500;
color: #1e293b;
}
/* Legal Form dropdown with icon */
.legal-form-option {
display: flex;
align-items: center;
gap: 10px;
}
.legal-form-option-icon {
font-size: 20px !important;
width: 20px !important;
height: 20px !important;
color: #1074b9;
}
/* Nationality dropdown with flag */
.nat-option {
display: flex;
align-items: center;
gap: 10px;
font-size: 14px;
}
.nat-flag {
display: inline-flex;
align-items: center;
width: 24px;
height: 16px;
border-radius: 3px;
overflow: hidden;
box-shadow: 0 0 0 1px rgb(0 0 0 / 10%);
flex-shrink: 0;
}
.nat-flag-svg {
width: 24px;
height: 16px;
display: block;
}
.nat-globe-icon {
font-size: 20px !important;
width: 20px !important;
height: 20px !important;
color: #1074b9;
}
/* Business dropdown option with icon */
.biz-option {
display: flex;
align-items: center;
gap: 10px;
}
.biz-option-icon {
font-size: 18px !important;
width: 18px !important;
height: 18px !important;
color: #1074b9;
}
/* Currency Suffix */
.currency-suffix {
font-size: 13px;
font-weight: 600;
color: #64748b;
padding-right: 4px;
}
/* MSME Info Trigger */
.msme-info-trigger {
display: inline-flex;
align-items: center;
cursor: pointer;
margin-left: 4px;
}
.msme-info-tooltip {
font-size: 18px !important;
width: 18px !important;
height: 18px !important;
color: #0ea5e9;
transition: color 0.15s;
&:hover {
color: #0369a1;
}
}
/* MSME Classification Table Card */
.msme-class-table-card {
background: #fff;
border: 1px solid #bae6fd;
border-radius: 10px;
box-shadow: 0 4px 20px rgb(0 0 0 / 10%);
margin-bottom: 16px;
overflow: hidden;
}
.msme-class-table-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
background: #0c4a6e;
color: #fff;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.02em;
}
.msme-class-close {
width: 24px;
height: 24px;
border: none;
background: rgb(255 255 255 / 15%);
border-radius: 4px;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
&:hover {
background: rgb(255 255 255 / 25%);
}
}
.msme-class-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
th {
text-align: left;
padding: 10px 16px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #64748b;
background: #f8fafc;
border-bottom: 1px solid #e2e8f0;
}
td {
padding: 10px 16px;
border-bottom: 1px solid #f1f5f9;
font-weight: 500;
color: #0f172a;
}
.row-micro td {
background: #ecfdf5;
}
.row-small td {
background: #e0f2fe;
}
.row-medium td {
background: #fffbeb;
}
.row-large td {
background: #f8fafc;
color: #94a3b8;
}
}
.msme-dot {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
margin-right: 6px;
&.green {
background: #10b981;
}
&.blue {
background: #0ea5e9;
}
&.amber {
background: #f59e0b;
}
&.gray {
background: #cbd5e1;
}
}
.msme-class-table-footer {
padding: 10px 16px;
font-size: 11px;
color: #64748b;
background: #f8fafc;
border-top: 1px solid #e2e8f0;
}
/* Constitution Info Card */
.constitution-info-card {
margin-top: 12px;
border: 1px solid #e2e8f0;
border-radius: 8px;
overflow: hidden;
margin-bottom: 12px;
}
.constitution-info-header {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
background: #0f172a;
font-size: 12px;
font-weight: 600;
color: #fff;
}
.constitution-info-icon {
font-size: 14px;
color: #60a5fa;
}
.constitution-info-body {
padding: 12px 16px;
display: flex;
flex-direction: column;
gap: 8px;
}
.constitution-info-row {
display: flex;
gap: 12px;
font-size: 12px;
line-height: 1.5;
}
.constitution-info-label {
font-weight: 600;
color: #64748b;
min-width: 110px;
flex-shrink: 0;
}
.constitution-info-value {
color: #0f172a;
}
.constitution-note {
color: #b45309 !important;
font-weight: 500;
}
/* MSME Section */
.msme-section {
margin-top: 16px;
padding: 16px;
background: #f0f9ff;
border: 1px solid #bae6fd;
border-radius: 10px;
}
.msme-title {
color: #0369a1 !important;
.section-icon {
color: #0ea5e9 !important;
}
}
.msme-info-bar {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
background: #e0f2fe;
border: 1px solid #7dd3fc;
border-radius: 6px;
margin-bottom: 16px;
font-size: 12px;
color: #0c4a6e;
.msme-info-icon {
font-size: 14px;
color: #0284c7;
}
}
/* MSME Type Field — styled as mat-form-field */
.msme-type-field {
::ng-deep {
input:disabled {
font-weight: 700 !important;
color: #0f172a !important;
-webkit-text-fill-color: #0f172a !important;
}
}
&.msme-micro ::ng-deep {
.mdc-notched-outline__leading,
.mdc-notched-outline__notch,
.mdc-notched-outline__trailing {
border-color: #10b981 !important;
}
input:disabled {
color: #059669 !important;
-webkit-text-fill-color: #059669 !important;
}
}
&.msme-small ::ng-deep {
.mdc-notched-outline__leading,
.mdc-notched-outline__notch,
.mdc-notched-outline__trailing {
border-color: #0ea5e9 !important;
}
input:disabled {
color: #0284c7 !important;
-webkit-text-fill-color: #0284c7 !important;
}
}
&.msme-medium ::ng-deep {
.mdc-notched-outline__leading,
.mdc-notched-outline__notch,
.mdc-notched-outline__trailing {
border-color: #f59e0b !important;
}
input:disabled {
color: #d97706 !important;
-webkit-text-fill-color: #d97706 !important;
}
}
}
/* Gender select — capitalize display */
::ng-deep .mat-mdc-select-value-text {
text-transform: capitalize;
}
/* Currency Prefix */
.field-prefix-icon {
display: inline-flex;
align-items: center;
padding-left: 4px;
padding-right: 8px;
margin-right: 8px;
border-right: 1.5px solid #cbd5e1;
line-height: 1;
mat-icon {
font-size: 20px;
width: 20px;
height: 20px;
color: #1565c0;
}
}
.icon-option {
display: flex;
align-items: center;
gap: 10px;
}
.icon-option-icon {
font-size: 20px !important;
width: 20px !important;
height: 20px !important;
color: #1074b9;
}
.rupee-prefix {
font-size: 16px;
font-weight: 600;
color: #1565c0;
padding-left: 4px;
padding-right: 8px;
margin-right: 8px;
border-right: 1.5px solid #cbd5e1;
line-height: 1;
display: inline-flex;
align-items: center;
}
/* Verification Section */
.sanctions-verify-section {
margin-bottom: 16px;
.verify-client-btn {
height: 40px;
font-size: 13px;
}
.sanctions-result {
display: flex;
align-items: center;
gap: 8px;
.text-success {
color: #388e3c;
font-size: 14px;
font-weight: 600;
}
}
}
.sanctions-blocked {
display: flex;
align-items: center;
gap: 8px;
background: #ffebee;
border: 1px solid #ef9a9a;
border-left: 4px solid #d32f2f;
border-radius: 4px;
padding: 10px 16px;
.text-danger {
color: #d32f2f;
font-size: 13px;
}
.recheck-btn {
margin-left: auto;
font-size: 12px;
white-space: nowrap;
}
}
.dip-info {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 12px;
.dip-info-icon {
font-size: 18px;
width: 18px;
height: 18px;
color: #1976d2;
cursor: pointer;
}
.dip-info-text {
font-size: 13px;
font-weight: 500;
color: #555;
}
}
.dip-verify-row {
display: flex;
align-items: center;
gap: 10px;
padding-top: 4px;
}
.mobile-verify-row {
display: flex;
align-items: flex-start;
gap: 16px;
.verify-btn {
height: 40px;
white-space: nowrap;
font-size: 13px;
margin-bottom: 18px;
}
.verified-label {
white-space: nowrap;
margin-bottom: 18px;
}
.text-success {
color: #388e3c;
font-size: 14px;
font-weight: 600;
}
}
.external-id-status {
font-size: 12px;
font-weight: 500;
&.success {
color: #388e3c;
}
&.error {
color: #d32f2f;
}
}
/* Create-time mobile/email OTP verification — spans both `.form-grid` columns so the two
* blocks sit on their own full-width row instead of disrupting the field/verify-button pairing
* above them. */
.contact-otp-row {
display: flex;
flex-wrap: wrap;
gap: 16px;
grid-column: 1 / -1;
margin-top: 4px;
mifosx-client-contact-otp-block {
flex: 1 1 260px;
}
}
@media (width <= 768px) {
.form-grid {
grid-template-columns: 1fr;
}
.name-fields-row {
flex-direction: column;
gap: 4px;
.name-field {
min-width: unset;
flex: none;
}
}
.mobile-verify-row {
flex-direction: column;
align-items: stretch;
.mobile-field {
max-width: none;
}
}
.contact-otp-row {
flex-direction: column;
}
}
.guardian-card__avatar.has-photo {
padding: 0;
overflow: hidden;
}
.avatar-photo {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 50%;
}
.guardian-card__signature {
padding: 12px 16px;
border-top: 1px solid #e2e8f0;
display: flex;
flex-direction: column;
gap: 6px;
}
.signature-img {
max-width: 250px;
max-height: 80px;
border: 1px solid #e2e8f0;
border-radius: 6px;
padding: 6px;
background: #fff;
}
.signatory-section {
margin-top: 8px;
.signatory-title {
color: #1e293b;
}
}
.sig-count-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 22px;
height: 22px;
border-radius: 11px;
background: #2563eb;
color: #fff;
font-size: 11px;
font-weight: 600;
margin-left: 8px;
padding: 0 6px;
}
/* Signatory Table */
.sig-table {
border: 1px solid #e2e8f0;
border-radius: 8px;
overflow: hidden;
margin-bottom: 12px;
}
.sig-table__header {
display: flex;
align-items: center;
background: #f1f5f9;
padding: 8px 12px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
color: #64748b;
letter-spacing: 0.5px;
border-bottom: 1px solid #e2e8f0;
}
.sig-table__row {
display: flex;
align-items: center;
padding: 10px 12px;
border-bottom: 1px solid #f1f5f9;
transition: background 0.15s;
&:last-child {
border-bottom: none;
}
&:hover {
background: #f8fafc;
}
}
.sig-table__col {
&--sno {
flex: 0 0 32px;
text-align: center;
color: #94a3b8;
font-size: 12px;
}
&--photo {
flex: 0 0 40px;
}
&--name {
flex: 1;
font-size: 13px;
display: flex;
align-items: center;
gap: 6px;
}
&--id {
flex: 0 0 100px;
font-size: 12px;
color: #64748b;
}
&--pan {
flex: 0 0 120px;
font-size: 12px;
color: #1e293b;
display: flex;
align-items: center;
gap: 3px;
}
&--din {
flex: 0 0 140px;
font-size: 12px;
color: #1e293b;
display: flex;
align-items: center;
gap: 3px;
}
&--status {
flex: 0 0 80px;
}
&--actions {
flex: 0 0 80px;
display: flex;
gap: 2px;
}
}
.sig-table__avatar {
width: 28px;
height: 28px;
border-radius: 50%;
background: #dbeafe;
display: flex;
align-items: center;
justify-content: center;
color: #2563eb;
font-size: 12px;
overflow: hidden;
&.has-photo {
padding: 0;
}
.avatar-photo {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 50%;
}
}
.sig-inline-spinner {
display: inline-block;
}
.verify-tick-sm {
font-size: 14px !important;
width: 14px !important;
height: 14px !important;
color: #22c55e;
}
.verify-cross-sm {
font-size: 14px !important;
width: 14px !important;
height: 14px !important;
color: #f59e0b;
}
.din-verify-btn {
font-size: 11px !important;
padding: 2px 8px !important;
min-height: 24px !important;
line-height: 20px !important;
border-radius: 6px !important;
display: flex;
align-items: center;
gap: 4px;
color: #1074b9 !important;
border-color: #93c5fd !important;
.din-verify-icon {
font-size: 14px !important;
width: 14px !important;
height: 14px !important;
}
}
.sig-status-chip {
font-size: 11px;
font-weight: 600;
color: #94a3b8;
&.active {
color: #22c55e;
}
}
.sig-action-icon {
font-size: 18px !important;
width: 18px !important;
height: 18px !important;
color: #64748b;
&.remove {
color: #ef4444;
}
}
.sig-add-wrapper {
margin-top: 4px;
}
/* Dialog panel override */
::ng-deep .signatory-detail-panel {
.mat-mdc-dialog-container {
padding: 0 !important;
border-radius: 12px !important;
overflow: visible !important;
max-height: none !important;
}
.mdc-dialog__surface {
border-radius: 12px !important;
overflow: visible !important;
max-height: none !important;
}
.mat-mdc-dialog-content {
max-height: none !important;
overflow: visible !important;
}
}
.guardian-card__loading {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
font-size: 12px;
color: #64748b;
}
.guardian-detail-icon {
font-size: 14px !important;
width: 14px !important;
height: 14px !important;
vertical-align: middle;
margin-right: 2px;
color: #94a3b8;
}
.verify-tick {
font-size: 16px !important;
width: 16px !important;
height: 16px !important;
color: #22c55e;
vertical-align: middle;
margin-left: 4px;
}
.step-header {
background: #0f172a;
padding: 16px 24px;
border-radius: 10px 10px 0 0;
margin-bottom: 20px;
&__left {
display: flex;
align-items: center;
gap: 12px;
}
&__icon {
font-size: 18px;
color: #60a5fa;
}
&__title {
font-size: 16px;
font-weight: 600;
color: #fff;
margin: 0;
}
&__sub {
font-size: 11px;
color: rgb(255 255 255 / 50%);
margin: 2px 0 0;
}
}
.occ-option {
display: flex;
align-items: center;
gap: 10px;
}
.occ-option-icon {
font-size: 20px !important;
width: 20px !important;
height: 20px !important;
color: #1074b9;
}
.constitution-icon {
font-size: 20px;
width: 20px;
height: 20px;
margin-right: 8px;
vertical-align: middle;
color: #1565c0;
}