/** * 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/. */ .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; } } .preview-container { display: flex; flex-direction: column; gap: 16px; } /* ── Profile Card ── */ .profile-card { display: flex; align-items: center; gap: 16px; padding: 20px 24px; background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%); border-radius: 10px; border: 1px solid rgb(0 0 0 / 6%); } .profile-avatar { width: 56px; height: 56px; border-radius: 50%; background: var(--md-sys-color-primary, #1074b9); display: flex; align-items: center; justify-content: center; flex-shrink: 0; .avatar-icon { color: #fff; font-size: 22px; } } .profile-info { flex: 1; min-width: 0; } .profile-name { margin: 0 0 6px; font-size: 20px; font-weight: 600; color: #1a1a1a; } .profile-meta { display: flex; flex-wrap: wrap; gap: 8px; } .meta-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 500; padding: 3px 10px; border-radius: 20px; background: rgb(255 255 255 / 70%); color: #555; border: 1px solid rgb(0 0 0 / 8%); .chip-icon { font-size: 10px; color: #888; } &.status-active { background: #e8f5e9; color: #2e7d32; border-color: #a5d6a7; } &.status-inactive { background: #fff3e0; color: #e65100; border-color: #ffcc80; } } /* ── Info Cards ── */ .info-card { border: 1px solid rgb(0 0 0 / 8%); border-radius: 8px; overflow: hidden; background: #fff; } .card-header { display: flex; align-items: center; gap: 8px; padding: 12px 20px; background: #fafafa; border-bottom: 1px solid rgb(0 0 0 / 6%); font-size: 14px; font-weight: 600; color: #333; .card-icon { color: var(--md-sys-color-primary, #1074b9); font-size: 13px; } } .card-body { padding: 16px 20px; &.no-padding { padding: 0; } } .count-badge { margin-left: auto; background: var(--md-sys-color-primary, #1074b9); color: #fff; font-size: 11px; font-weight: 700; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } /* ── Preview Grid (replaces info-table) ── */ .preview-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0; } .preview-field { display: flex; flex-direction: column; gap: 4px; padding: 12px 16px; border-bottom: 1px solid rgb(0 0 0 / 4%); border-right: 1px solid rgb(0 0 0 / 4%); &:nth-child(3n) { border-right: none; } &.full-width { grid-column: 1 / -1; border-right: none; } } .preview-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: rgb(0 0 0 / 45%); } .preview-value { font-size: 14px; font-weight: 500; color: #1a1a1a; &.no-data { color: rgb(0 0 0 / 30%); font-style: italic; font-weight: 400; } } /* ── Preview Badges ── */ .preview-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px; &--verified { background: #ecfdf5; color: #059669; border: 1px solid #a7f3d0; } &--pending { background: #fffbeb; color: #d97706; border: 1px solid #fde68a; } } /* ── Legacy Info Table (keep for backward compat) ── */ .info-table { width: 100%; border-collapse: collapse; tr { border-bottom: 1px solid rgb(0 0 0 / 4%); &:last-child { border-bottom: none; } } td { padding: 10px 0; vertical-align: top; } .info-label { width: 40%; font-size: 13px; color: rgb(0 0 0 / 50%); font-weight: 500; padding-right: 16px; } .info-value { font-size: 14px; color: #1a1a1a; font-weight: 500; } } /* ── Data Table (Family, etc.) ── */ .data-table { width: 100%; border-collapse: collapse; thead { background: #fafafa; th { padding: 10px 16px; font-size: 12px; font-weight: 600; color: rgb(0 0 0 / 55%); text-align: left; text-transform: uppercase; letter-spacing: 0.3px; border-bottom: 1px solid rgb(0 0 0 / 8%); } } tbody { tr { border-bottom: 1px solid rgb(0 0 0 / 4%); &:last-child { border-bottom: none; } &:hover { background: #f8f9fa; } } td { padding: 10px 16px; font-size: 13px; color: #333; } } } /* ── Badges ── */ .badge-yes { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px; background: #e8f5e9; color: #2e7d32; } .badge-no { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px; background: #f5f5f5; color: #888; } /* ── KYC ── */ .kyc-badge { margin-left: auto; background: #1976d2; color: #fff; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 12px; letter-spacing: 0.5px; } .mono { font-family: 'Roboto Mono', monospace; letter-spacing: 1px; } /* ── Address Blocks ── */ .address-block { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px dashed rgb(0 0 0 / 8%); &:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; } } .address-block__title { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: #1074b9; margin-bottom: 10px; padding-left: 2px; } /* ── Info badge ── */ .preview-badge--info { background: #eff6ff; color: #1074b9; border: 1px solid #bfdbfe; } /* ── Submit Section ── */ .submit-section { display: flex; justify-content: flex-end; gap: 12px; padding: 20px 0 4px; border-top: 1px solid rgb(0 0 0 / 8%); margin-top: 8px; } .submit-btn { min-width: 160px; height: 44px; font-size: 15px; font-weight: 600; letter-spacing: 0.3px; } .cancel-btn { color: rgb(0 0 0 / 60%); height: 44px; } /* ── Responsive ── */ @media (width <= 960px) { .preview-grid { grid-template-columns: 1fr 1fr; } .preview-field { &:nth-child(3n) { border-right: 1px solid rgb(0 0 0 / 4%); } &:nth-child(2n) { border-right: none; } } } @media (width <= 768px) { .profile-card { flex-direction: column; text-align: center; padding: 16px; } .profile-meta { justify-content: center; } .preview-grid { grid-template-columns: 1fr; } .preview-field { border-right: none !important; } .data-table { thead th, tbody td { padding: 8px 10px; font-size: 12px; } } .fm-preview-row { flex-wrap: wrap; } } /* Empty state with warning */ .preview-empty { display: flex; align-items: center; gap: 10px; padding: 16px; font-size: 13px; color: #64748b; background: #f8fafc; border: 1px dashed #e2e8f0; border-radius: 8px; } .preview-empty--warn { background: #fef2f2; border-color: #fca5a5; color: #991b1b; } .preview-empty__icon { font-size: 20px !important; width: 20px !important; height: 20px !important; color: #dc2626; } /* Family member preview rows */ .fm-preview-list { display: flex; flex-direction: column; gap: 0; border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden; } .fm-preview-row { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid #f1f5f9; transition: background 0.1s; &:last-child { border-bottom: none; } &:hover { background: #f8fafc; } } .fm-preview-row__sno { flex: 0 0 24px; text-align: center; font-size: 11px; font-weight: 600; color: #94a3b8; } .fm-preview-row__avatar { flex: 0 0 32px; width: 32px; height: 32px; border-radius: 50%; background: #dbeafe; display: flex; align-items: center; justify-content: center; color: #1565c0; mat-icon { font-size: 18px; width: 18px; height: 18px; } } .fm-preview-row__info { flex: 1; min-width: 0; } .fm-preview-row__name { display: block; font-size: 13px; font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .fm-preview-row__meta { display: block; font-size: 11px; color: #64748b; } .fm-preview-row__ids { display: flex; gap: 8px; flex-shrink: 0; } .fm-preview-id { font-size: 11px; font-family: 'Roboto Mono', monospace; color: #475569; padding: 2px 8px; background: #f1f5f9; border-radius: 4px; } .fm-preview-row__status { display: flex; gap: 4px; flex-shrink: 0; }