/** * 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/. */ // ── Wrapper ────────────────────────────────────────────────────────────────── .preview-wrapper { display: flex; flex-direction: column; gap: 1.25rem; padding: 0.5rem 0; } // ── Section card ───────────────────────────────────────────────────────────── .preview-section { border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden; background: #fff; box-shadow: 0 1px 4px rgb(0 0 0 / 5%); &__header { display: flex; align-items: center; gap: 8px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; padding: 0.6rem 1rem; } &__icon { font-size: 13px; color: #0ea5e9; width: 16px; text-align: center; } &__title { flex: 1; font-size: 0.82rem; font-weight: 700; color: #1e293b; text-transform: uppercase; letter-spacing: 0.06em; } &__badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 999px; font-size: 10px; font-weight: 700; background: #dbeafe; color: #1d4ed8; border: 1px solid #bfdbfe; text-transform: uppercase; &--active { background: #dcfce7 !important; color: #15803d !important; border-color: #bbf7d0 !important; } } } // ── Body ───────────────────────────────────────────────────────────────────── .preview-body { padding: 1rem 1.25rem; } // ── Subsection (inside Settings) ───────────────────────────────────────────── .preview-subsection { margin-bottom: 1rem; &__title { font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #666; margin-bottom: 0.6rem; } } .preview-divider { margin: 0.75rem 0 1rem; } // ── Grid ───────────────────────────────────────────────────────────────────── .preview-grid { display: grid; gap: 0.85rem 1.5rem; &--three { grid-template-columns: repeat(3, 1fr); @media (width <= 768px) { grid-template-columns: repeat(2, 1fr); } @media (width <= 480px) { grid-template-columns: 1fr; } } } // ── Field ───────────────────────────────────────────────────────────────────── .preview-field { display: flex; flex-direction: column; gap: 0.15rem; } .preview-label { font-size: 0.68rem; color: #94a3b8; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; } .preview-value { font-size: 0.9rem; color: #1e293b; font-weight: 500; } // ── Yes/No badge ───────────────────────────────────────────────────────────── .preview-badge { display: inline-block; padding: 0.15rem 0.6rem; border-radius: 12px; font-size: 0.75rem; font-weight: 600; background: #fef2f2; color: #dc2626; width: fit-content; &--yes { background: #f0fdf4; color: #15803d; } &--warn { background: #fef3c7; color: #92400e; } } // ── Section badge variant for tenure ───────────────────────────────────────── .preview-section__badge--tenure { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; background: #dcfce7; color: #16a34a; margin-left: auto; } // ── Tenure + Rate banner ────────────────────────────────────────────────────── .preview-tenure-banner { display: flex; align-items: center; gap: 20px; padding: 14px 18px; background: #f0fdf4; border: 1.5px solid #86efac; border-radius: 10px; margin-bottom: 16px; flex-wrap: wrap; &__left { display: flex; align-items: center; gap: 10px; > i { font-size: 20px; color: #16a34a; } } &__label { display: block; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #4b5563; } &__value { display: block; font-size: 22px; font-weight: 800; color: #0f172a; line-height: 1.2; } &__divider { width: 1px; height: 40px; background: #86efac; } &__right { display: flex; flex-direction: column; gap: 2px; } &__rate-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #4b5563; } &__rate { font-size: 26px; font-weight: 800; color: #16a34a; line-height: 1.2; } &__slab { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #374151; margin-left: auto; i { color: #16a34a; font-size: 11px; } } } // ── Matched slab row highlight ──────────────────────────────────────────────── .preview-slab-row--matched td { background: #dcfce7 !important; border-left: 3px solid #16a34a; } // ── Legend below table ──────────────────────────────────────────────────────── .preview-slab-legend { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 12px; color: #4b5563; &__dot { display: inline-block; width: 12px; height: 12px; border-radius: 2px; background: #dcfce7; border: 2px solid #16a34a; flex-shrink: 0; } } // ── Tables ─────────────────────────────────────────────────────────────────── .preview-table { width: 100%; margin-top: 1rem; } .irc-table { width: 100%; tr.incentives-row { height: 0; > td { padding: 0; } .incentives { overflow: hidden; } .mat-card { border-radius: 0; } } } .margin-t { margin-top: 1em; } // ── Preview Tenure Result Card ───────────────────────────────────────────────── .preview-tenure-result { border: 1px solid #e0f2fe; border-radius: 10px; overflow: hidden; &__row { display: flex; justify-content: space-between; align-items: center; padding: 0.65rem 1rem; border-bottom: 1px solid #f0f9ff; &:last-child { border-bottom: none; } &--highlight { background: #f0f9ff; } } &__rate { font-size: 1.5rem; font-weight: 800; color: #0369a1; } } // ── Misc ────────────────────────────────────────────────────────────────────── .preview-muted { color: #94a3b8; font-style: italic; } .preview-mono { font-family: monospace; font-size: 0.88rem; color: #334155; } // ── Status of Account (SOA) ─────────────────────────────────────────────────── .preview-soa-status-row { display: flex; align-items: center; gap: 10px; } .preview-soa-tile { display: inline-flex; align-items: center; gap: 8px; padding: 8px 20px; border-radius: 999px; font-size: 14px; font-weight: 700; background: #eff6ff; color: #1d4ed8; border: 2px solid #bfdbfe; i { font-size: 16px; } } .preview-soa-table-wrap { margin-top: 14px; overflow-x: auto; border-radius: 8px; border: 1px solid #e2e8f0; } .preview-soa-tbl { width: 100%; border-collapse: collapse; font-size: 13px; } .preview-soa-th { background: #f8fafc; padding: 8px 12px; text-align: left; font-weight: 600; color: #475569; border-bottom: 1px solid #e2e8f0; white-space: nowrap; } .preview-soa-td { padding: 10px 12px; border-bottom: 1px solid #f1f5f9; color: #0f172a; vertical-align: middle; } .preview-soa-tr--primary { background: #f0f9ff; .preview-soa-td { font-weight: 600; } } .preview-soa-primary-tag { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; font-size: 10px; font-weight: 700; background: #dbeafe; color: #1d4ed8; border: 1px solid #bfdbfe; vertical-align: middle; } // ── Dormancy Monitoring Timeline ────────────────────────────────────────────── .preview-dormancy-timeline { display: flex; align-items: flex-start; gap: 12px; margin: 1.25rem 0; overflow-x: auto; padding-bottom: 8px; } .preview-dorm-step { display: flex; flex-direction: column; align-items: center; flex: 0 0 140px; gap: 10px; &__dot { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 3px solid #e2e8f0; background: #f8fafc; position: relative; box-shadow: 0 0 0 4px #fff; z-index: 2; &--inactive { border-color: #f59e0b; background: #fffbeb; &::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #f59e0b; } } &--dormant { border-color: #ef4444; background: #fef2f2; &::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #ef4444; } } &--escheat { border-color: #7c3aed; background: #f5f3ff; &::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #7c3aed; } } } &__body { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; } &__label { font-size: 12px; font-weight: 700; color: #1e293b; } &__days { font-size: 10.5px; color: #64748b; line-height: 1.3; } } .preview-dorm-connector { flex: 0 0 40px; height: 3px; background: linear-gradient(90deg, #e2e8f0, #cbd5e1); margin-top: 16px; border-radius: 2px; }