/** * 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/. */ // ─── Variables ────────────────────────────────────────────────────────────── $bank-primary: #1a3a6b; // deep navy (like SBI/PNB) $bank-accent: #c8a951; // gold trim $debit-color: #c0392b; $credit-color: #1a7a3f; $balance-color: #1a3a6b; $border-color: #d0d7e3; $row-alt: #f4f7fb; $header-bg: #1a3a6b; $header-text: #fff; // ─── Container ────────────────────────────────────────────────────────────── .passbook-container { padding: 16px; background: #eef1f7; min-height: 100%; } // ─── Filter Bar ───────────────────────────────────────────────────────────── .passbook-filter-bar { margin-bottom: 16px; background: #fff; border-radius: 8px; padding: 12px 16px; border: 1px solid $border-color; } .passbook-filter-form { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .passbook-date-field { width: 180px; } .passbook-filter-spacer { flex: 1; } // ─── Statement Wrapper ─────────────────────────────────────────────────────── .statement-wrapper { background: #fff; border: 1px solid $border-color; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 12px rgb(0 0 0 / 8%); font-family: 'Segoe UI', Arial, sans-serif; } // ─── Bank Header ───────────────────────────────────────────────────────────── .bank-header { background: $bank-primary; padding: 18px 24px; display: flex; justify-content: space-between; align-items: center; border-bottom: 4px solid $bank-accent; } .bank-logo-area { display: flex; align-items: center; gap: 14px; } .bank-logo-circle { width: 52px; height: 52px; border-radius: 50%; background: $bank-accent; display: flex; align-items: center; justify-content: center; mat-icon { color: $bank-primary; font-size: 28px; width: 28px; height: 28px; } } .bank-name-block { .bank-title { color: #fff; font-size: 18px; font-weight: 700; letter-spacing: 0.3px; } .bank-subtitle { color: $bank-accent; font-size: 11px; font-weight: 500; letter-spacing: 1.5px; text-transform: uppercase; margin-top: 2px; } } .statement-label { text-align: right; .stmt-label-text { color: $bank-accent; font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; } .stmt-period { color: rgb(255 255 255 / 75%); font-size: 11px; margin-top: 4px; } } // ─── Branch Identification Line ────────────────────────────────────────────── .branch-line { background: #e8edf5; border-bottom: 1px solid $border-color; padding: 6px 24px; display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: 11px; color: #4a5a7a; } // ─── Account Details Band ──────────────────────────────────────────────────── .account-details-band { background: #f0f3f9; border-bottom: 1px solid $border-color; padding: 14px 24px; } .account-details-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 24px; } .detail-block { .detail-label { font-size: 9px; font-weight: 700; color: #7a8aaa; text-transform: uppercase; letter-spacing: 0.8px; margin-bottom: 3px; } .detail-value { font-size: 13px; color: #222; &.bold { font-weight: 600; } &.mono { font-family: 'Courier New', monospace; letter-spacing: 1px; } &.status-badge { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; background: #eee; color: #555; &.active { background: #d4edda; color: #155724; } } } } // ─── Balance Summary Strip ─────────────────────────────────────────────────── .balance-summary-strip { display: flex; align-items: stretch; background: $bank-primary; padding: 0; } .balance-box { flex: 1; padding: 12px 20px; text-align: center; .balance-box-label { font-size: 10px; font-weight: 600; color: rgb(255 255 255 / 65%); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; } .balance-box-value { font-size: 16px; font-weight: 700; color: $bank-accent; } } .balance-divider { width: 1px; background: rgb(255 255 255 / 15%); margin: 8px 0; } // ─── Transactions Table ─────────────────────────────────────────────────────── .statement-table { width: 100%; border-collapse: collapse; font-size: 12.5px; thead tr { background: #e8edf5; border-top: 1px solid $border-color; border-bottom: 2px solid $bank-primary; } thead th { padding: 9px 10px; font-size: 11px; font-weight: 700; color: $bank-primary; text-transform: uppercase; letter-spacing: 0.4px; white-space: nowrap; } tbody tr { border-bottom: 1px solid #e8ecf3; transition: background 0.1s; &:nth-child(even) { background: $row-alt; } &:hover { background: #dce6f5; } &.reversed-row { opacity: 0.5; text-decoration: line-through; } } tbody td { padding: 7px 10px; vertical-align: middle; color: #333; } tfoot .total-row { background: #e8edf5; border-top: 2px solid $bank-primary; td { padding: 9px 10px; } } } // ─── Column widths ──────────────────────────────────────────────────────────── .col-sr { width: 38px; } .col-date { width: 110px; white-space: nowrap; } .col-desc { min-width: 160px; } .col-ref { width: 80px; } .col-amount { width: 110px; } .col-balance { width: 120px; } // ─── Amount colors ──────────────────────────────────────────────────────────── .debit-amount { color: $debit-color; font-weight: 500; } .credit-amount { color: $credit-color; font-weight: 500; } .balance-amount { color: $balance-color; font-weight: 600; font-family: 'Courier New', monospace; } .total-label { font-size: 12px; font-weight: 700; color: $bank-primary; text-transform: uppercase; letter-spacing: 0.5px; } .closing-balance { font-size: 14px; font-weight: 700; color: $bank-primary; font-family: 'Courier New', monospace; } // ─── Badges & misc ──────────────────────────────────────────────────────────── .txn-desc { font-weight: 500; } .reversed-badge { display: inline-block; margin-left: 8px; font-size: 9px; font-weight: 700; color: #fff; background: #e74c3c; padding: 1px 5px; border-radius: 3px; letter-spacing: 0.5px; } .text-right { text-align: right; } .text-center { text-align: center; } .text-muted { color: #999; } .mono { font-family: 'Courier New', monospace; font-size: 11px; } // ─── No Data ────────────────────────────────────────────────────────────────── .no-data-block { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px; color: #aaa; mat-icon { font-size: 48px; width: 48px; height: 48px; margin-bottom: 12px; } p { font-size: 14px; margin: 0; } } // ─── Statement Footer ───────────────────────────────────────────────────────── .statement-footer { background: #f0f3f9; border-top: 1px solid $border-color; padding: 12px 24px; text-align: center; .footer-note { font-size: 10px; color: #888; margin-bottom: 4px; font-style: italic; } .footer-meta { font-size: 10px; color: #aaa; letter-spacing: 0.3px; } } // ─── Responsive ─────────────────────────────────────────────────────────────── @media (width <= 768px) { .account-details-grid { grid-template-columns: 1fr 1fr; } .bank-header { flex-direction: column; gap: 12px; align-items: flex-start; } .statement-label { text-align: left; } .balance-summary-strip { flex-direction: column; } .balance-divider { width: auto; height: 1px; margin: 0 20px; } .passbook-filter-form { flex-direction: column; align-items: stretch; } .passbook-date-field { width: 100%; } .passbook-filter-spacer { display: none; } } @media (width <= 480px) { .account-details-grid { grid-template-columns: 1fr; } } // ─── Print ──────────────────────────────────────────────────────────────────── @media print { .no-print { display: none !important; } .passbook-container { background: #fff; padding: 0; } .statement-wrapper { border: none; box-shadow: none; border-radius: 0; } .bank-header { -webkit-print-color-adjust: exact; print-color-adjust: exact; } .balance-summary-strip { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }