/** * 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 'theme/mifosx-theme'; @use 'theme/material-web' as *; @use 'theme/pictonblue-yellowgreen' as *; @use 'theme/indigo-pink' as *; @use 'theme/pink-bluegrey' as *; @use 'theme/deeppurple-amber' as *; @use 'theme/purple-green.scss' as *; @use 'assets/styles/helper'; @use 'lightgallery/scss/lightgallery' as *; @use 'lightgallery/scss/lg-thumbnail' as *; @use 'lightgallery/scss/lg-zoom' as *; @use 'lightgallery/scss/lg-fullscreen' as *; @use 'app/core/error-handler/error-handler.component'; // Global Imports /* You can add global styles to this file, and also import other style files */ .custom-snackbar-top-right { top: 48px !important; right: 24px !important; left: auto !important; transform: none !important; position: fixed !important; z-index: 9999; } .snack-error .mdc-snackbar__surface { background-color: #dc2626 !important; color: #fff !important; } .snack-error .mat-mdc-snack-bar-label { color: #fff !important; } .snack-error .mat-mdc-button { color: #fecaca !important; } // ===== Image Preview Dialog (election candidate photo/symbol viewer) ===== .ipd-dialog .mat-mdc-dialog-container { padding: 0; border-radius: 20px; overflow: hidden; background: transparent; box-shadow: none; } .ipd-dialog .mdc-dialog__surface { border-radius: 20px !important; background: transparent !important; box-shadow: none !important; } .ipd-backdrop { background: rgb(0 0 0 / 82%); backdrop-filter: blur(6px); } // ===== Sub-menu Mega Panels (rendered in CDK overlay) ===== .deposits-mega-panel, .hrm-mega-panel { max-width: 700px !important; } .share-mega-panel, .others-mega-panel { max-width: 850px !important; } .share-grid, .others-grid { grid-template-columns: repeat(4, 1fr) !important; } .others-grid, .npa-grid { grid-template-columns: repeat(3, 1fr) !important; } .npa-mega-panel, .advances-mega-panel { max-width: 800px !important; } .advances-grid { grid-template-columns: repeat(3, 1fr) !important; } .letter-mega-panel { max-width: 850px !important; } .letter-grid { grid-template-columns: repeat(4, 1fr) !important; } .reconciliation-mega-panel { max-width: 1100px !important; } .reconciliation-grid { grid-template-columns: repeat(5, minmax(190px, 1fr)) !important; min-width: 1040px; } /* Admin Mega Menu — 3-column rectangular panel (Setup · Catalog · Audit & Compliance). Reuses the deposit-mega-menu grid + group chrome and retints the group-title accent to Admin purple. */ .admin-mega-panel { max-width: 760px !important; } .admin-grid { grid-template-columns: repeat(3, minmax(220px, 1fr)) !important; min-width: 680px; .deposit-group-title { color: #7c3aed !important; border-bottom-color: #7c3aed !important; } } // ===== Material Select Panel Styles (Material Design 3) ===== .mat-mdc-select-panel { background: var(--md-sys-color-surface-container, #fff); border-radius: 8px; box-shadow: 0 2px 4px #00000014, 0 4px 12px #0000000f, 0 8px 24px #00000014; .mat-mdc-option { font-size: 0.875rem; min-height: 48px; padding: 0 16px; color: var(--md-sys-color-on-surface, #1a1c1e); transition: background-color 0.2s ease; &:hover { background-color: #1074b914; } &.mat-mdc-option-active { background-color: #1074b91f; } &.mdc-list-item--selected { background-color: #1074b91f; color: var(--md-sys-color-primary, #1074b9); font-weight: 500; } .mdc-list-item__primary-text { color: inherit; } } } // Dark theme select panel .dark-theme .mat-mdc-select-panel { background: var(--md-sys-color-surface-container, #2c2f36); .mat-mdc-option { color: var(--md-sys-color-on-surface, #e2e2e5); &:hover { background-color: #5ba2ec14; } &.mat-mdc-option-active { background-color: #5ba2ec1f; } &.mdc-list-item--selected { background-color: #5ba2ec1f; color: var(--md-sys-color-primary, #5ba2ec); font-weight: 500; } } } .scrollbar-styling { scrollbar-width: thin; scrollbar-color: #889 #f1f1f1; } ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #889; &:hover { background: #555; } } /* === Global Layout Utilities === */ .layout-row-wrap { display: flex; flex-flow: row wrap; } .layout-column { display: flex; flex-direction: column; } .layout-row { display: flex; flex-direction: row; } .align-flex-end { justify-content: flex-end; } .flex-align-center { display: flex; align-items: center; justify-content: center; } .flex-center { display: flex; justify-content: center; align-items: center; } .responsive-column { @media (width <=768px) { flex-direction: column; } } .gap-2px { gap: 2%; } .gap-5px { gap: 5px; } .gap-20px { gap: 20px; } .gap-25px { gap: 25px; } .gap-32px { gap: 32px; } .gap-40px { gap: 40px; } .align-start { justify-content: flex-start; } .align-end { justify-content: flex-end; } .align-center-start { justify-content: flex-start; align-items: center; } .align-center { justify-content: center; } .align-center-center { justify-content: center; align-items: center; } .align-between { justify-content: space-between; } .align-items-center { align-items: center; } .align-start-baseline { align-items: baseline; justify-content: flex-start; } .layout-align-end { display: flex; justify-content: flex-end; align-items: center; } .align-start-center { display: flex; justify-content: flex-start; align-items: center; } .align-start-start { display: flex; justify-content: flex-start; align-items: flex-start; } .layout-align-center { align-items: center; justify-content: center; } .layout-gt-sm-row { @media (width >=600px) { flex-direction: row; } } .align-gt-sm-start-center { @media (width >=600px) { justify-content: flex-start; align-items: center; } } .flex-auto { flex: 0.1 0 auto; } .flex-3-auto { flex: 3 0 auto; } .flex-4 { flex: 0 0 4%; } .flex-5 { flex: 0 0 5%; } .flex-8 { flex: 0 0 8%; } .flex-9 { flex: 0 0 9%; } .flex-10 { flex: 0 0 10%; } .flex-13 { flex: 0 0 13%; } .flex-14 { flex: 0 0 12%; } .flex-15 { flex: 0 0 15%; } .flex-16 { flex: 0 0 16%; } .flex-18 { flex: 0 0 18%; } .flex-20 { flex: 0 0 20%; } .flex-23 { flex: 0 0 23%; } .flex-24 { flex: 0 0 24%; } .flex-25 { flex: 0 0 25%; } .flex-28 { flex: 0 0 28%; } .flex-29 { flex: 0 0 29%; } .flex-30 { flex: 0 0 30%; } .flex-31 { flex: 0 0 31%; } .flex-32 { flex: 0 0 32%; } .flex-33 { flex: 0 0 33%; } .flex-34 { flex: 0 0 34%; } .flex-38 { flex: 0 0 38%; } .flex-40 { //flex: 0 0 40%; flex: 1; width: 40%; } .flex-43 { flex: 0 0 43%; } .flex-45 { flex: 0 0 45%; } .flex-46 { flex: 0 0 46%; } .flex-47 { flex: 0 0 47%; } .flex-48 { flex: 0 0 48%; } @media (width <=768px) { .hide-lt-md { display: none !important; } } .flex-49 { flex: 0 0 49%; } .flex-50 { flex: 0 0 50%; margin-bottom: 1rem; } .flex-53 { flex: 0 0 53%; } .flex-60 { // flex: 0 0 60%; flex: 1; width: 60%; } .flex-63 { flex: 0 0 63%; } .flex-65 { flex: 0 0 65%; } .flex-67 { flex: 0 0 67%; } .flex-68 { flex: 0 0 68%; } .flex-70 { flex: 0 0 70%; } .flex-73 { flex: 0 0 73%; } .flex-75 { flex: 0 0 75%; } .flex-83 { flex: 0 0 83%; } .flex-90 { flex: 0 0 90%; } .flex-94 { flex: 0 0 94%; } .flex-95 { flex: 0 0 95%; } .flex-96 { flex: 0 0 96%; } @media screen and (width <=599px) { .flex-xs-15 { flex: 0 0 15%; max-width: 15%; } } @media screen and (width >=600px) and (width <=959px) { .flex-sm-10 { flex: 0 0 10%; max-width: 10%; } } @media screen and (width >=960px) and (width <=1279px) { .flex-md-5 { flex: 0 0 5%; max-width: 5%; } } .hide-lt-sm { @media (width <=599px) { display: none !important; } } .flex-98 { flex: 0 0 98%; } .flex-100 { flex: 0 0 100%; width: 100%; } .flex-contents { display: contents; flex: 1; } .flex-fill { display: flex; flex: 1 1 auto; min-width: 0; min-height: 0; } .gap-8px { gap: 8px; } .gap-10px { gap: 10px; } .gap-12px { gap: 12px; } .gap-1percent { gap: 1%; } .gap-2percent { gap: 2%; } .gap-3percent { gap: 3%; } .gap-4percent { gap: 4%; } .gap-5percent { gap: 5%; } .gap-15percent { gap: 15%; } .gap-20percent { gap: 20%; } .gap-25percent { gap: 25%; } .gap-70percent { gap: 70%; } .flex { flex: 1 1 0%; } .layout-row-reverse { display: flex; flex-direction: row-reverse; } .flex-gt-sm-30 { @media (width >=600px) { flex: 1 0 30%; } } @media (width <=1199px) { .hide-lt-lg { display: none !important; } } @media (width <=768px) { .flex-25 { flex: 0 0 50%; } } @media (width <=599px) { .layout-xs-column { flex-direction: column; } } .flex-50-minus-25px { flex: 1 1 calc(50% - 25px); } .flex-85-minus-20px { flex: 1 1 calc(85% - 20px); } .flex-90-minus-20px { flex: 1 1 calc(90% - 20px); } .layout-lt-md-column { @media (width <=768px) { flex-direction: column; } } .layout-column.lt-md { @media (width <=599px) { flex-direction: column !important; } } .responsive-flex-full { @media (width <=768px) { flex: 0 0 100% !important; } } .align-space-evenly-center { justify-content: space-evenly; align-items: center; } .mat-mdc-form-field { margin-bottom: 16px; .mat-mdc-input-element::placeholder { font-size: 14px !important; color: #999 !important; } .mdc-floating-label { font-size: 14px !important; } } mat-stepper { ::ng-deep .mat-vertical-content { padding: 16px; } ::ng-deep .mat-vertical-stepper-content { padding-top: 16px; } } @media (width <=768px) { .flex-lt-md-50 { flex: 0 0 50%; } } @media (width <=768px) { .flex-50-lt-md { flex: 0 0 50%; } } @media (width <=599px) { .layout-column-xs { flex-direction: column !important; } } .menu-explanation { font-size: 14px; margin: 0; word-wrap: break-word; overflow-wrap: break-word; } .menu-list-item-content { display: flex; width: 100%; overflow: hidden; } .menu-left-section { display: flex; align-items: center; width: 100%; gap: 10px; min-width: 0; flex: 1; overflow: hidden; } .menu-right-section fa-icon { z-index: 1000; } .menu-right-section { margin-left: auto; display: flex; gap: 4px; margin-right: 10px; flex-shrink: 0; } mat-nav-list { overflow: hidden; mat-list-item { overflow: hidden; .mat-list-item-content { overflow: hidden; } } } .content { display: contents; flex: 1; } mifosx-notifications-page td { text-align: center; padding: 16px; color: #999; } .red { color: red; } // ===== Global Delete/Trash Icon Styling ===== // Makes standalone delete icons red, but keeps them white inside warn (red) buttons .fa-trash { color: #f44336 !important; } .mat-mdc-raised-button.mat-warn .fa-trash { color: inherit !important; } // ===== Global Button Icon Alignment ===== // Handles the span + mat-icon pattern used throughout the application .mat-mdc-button, .mat-mdc-raised-button, .mat-mdc-outlined-button { span { display: inline-flex; align-items: center; gap: 8px; mat-icon { display: inline-flex; align-items: center; justify-content: center; } } } .full-width-flex { display: flex; justify-content: flex-start; width: 100%; } /* Global overflow helpers to avoid repeated component overrides */ .overflow-hidden { overflow: hidden; } mat-card { overflow: hidden; } .layout-row.responsive-column { overflow: hidden; > [class] { overflow: hidden; } } .dark-theme { .tox.tox-tinymce { border-color: #444 !important; } .tox .tox-editor-header, .tox .tox-toolbar-overlord, .tox .tox-toolbar, .tox .tox-toolbar__overflow, .tox .tox-toolbar__primary { background-color: #303135 !important; } .tox .tox-tbtn { background-color: transparent !important; color: rgb(255 255 255 / 87%) !important; svg { fill: rgb(255 255 255 / 87%) !important; } &:hover { background-color: rgb(255 255 255 / 12%) !important; } &:focus { background-color: rgb(255 255 255 / 8%) !important; } } .tox .tox-tbtn--bevel { background: transparent !important; } .tox .tox-tbtn--select { background-color: transparent !important; } .tox .tox-split-button { background-color: transparent !important; &:hover { box-shadow: none !important; } } .tox .tox-edit-area { background-color: #303135 !important; iframe { background-color: transparent !important; } } .tox .tox-sidebar-wrap { background-color: #303135 !important; } .tox .tox-menubar { background-color: #303135 !important; } .tox .tox-menu { background-color: #303135 !important; border-color: #444 !important; } .tox .tox-collection__item { color: rgb(255 255 255 / 87%) !important; &:hover { background-color: rgb(255 255 255 / 8%) !important; } } .tox .tox-statusbar { background-color: #303135 !important; border-color: #444 !important; color: rgb(255 255 255 / 60%) !important; } } .app-sidenav { .mat-mdc-nav-list .mat-mdc-list-item { .mdc-list-item__primary-text { display: flex; align-items: center; gap: 8px; } [matlisticon] { flex-shrink: 0; width: 24px; min-width: 24px; display: inline-flex; align-items: center; justify-content: center; fa-icon { display: inline-flex; align-items: center; justify-content: center; } .fa { display: inline-block; width: 1em; text-align: center; } } } } /* Print styles — hide app shell, show only receipt content */ @media print { mat-sidenav, mifosx-toolbar, mifosx-breadcrumb, mifosx-footer, .sidebar-panel, .mat-mdc-tab-header, .mat-stepper-vertical-line, .mat-step-header { display: none !important; } mat-sidenav-content.sidenav { margin-left: 0 !important; } body, html { background: #fff !important; } @page { /* stylelint-disable-next-line unit-allowed-list */ margin: 1.5cm; } } /* ─── Ensure mat-menu overlays appear above header ─── */ .cdk-overlay-container { z-index: 1001 !important; } /* ─── CRR/SLR Dialog Panel ─── */ .crr-slr-dialog-panel { .mat-mdc-dialog-container { padding: 0; border-radius: 16px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 16px !important; } } /* ─── Full-Screen Dialog Panel (e.g. FD/RD Entry) — edge-to-edge, no rounded corners ─── */ .fdrd-fullscreen-panel { max-width: 100vw !important; width: 100vw !important; height: 100vh !important; max-height: 100vh !important; .mat-mdc-dialog-container { border-radius: 0 !important; } .mat-mdc-dialog-surface { border-radius: 0 !important; } } /* ─── CIC DQR Dialog Backdrop — ensure outside clicks register ─── */ .cic-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── PSL Report Dialog Backdrop ─── */ .psl-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── ALM Report Dialog Backdrop ─── */ .alm-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── CIMS / XBRL Returns Dialog Backdrop ─── */ .cims-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── CKYC Compliance Reports Dialog Backdrop ─── */ .ckyc-rpt-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── Accounting Reports Dialog Backdrop ─── */ .acct-rpt-dlg-backdrop { background: rgb(15 23 42 / 45%); pointer-events: auto; } /* ─── NEFT / RTGS Entry Dialog Panel ─── */ .nr-entry-dialog { .mat-mdc-dialog-container { padding: 0; border-radius: 14px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 14px !important; box-shadow: 0 24px 48px rgb(15 23 42 / 25%), 0 12px 24px rgb(15 23 42 / 15%) !important; } } /* NEFT / RTGS Entry Dialog Backdrop — darker so the report behind dims out */ .nr-entry-backdrop { background: rgb(15 23 42 / 55%); pointer-events: auto; } /* ─── Savings Account Actions Menu ─── Modern Nexora dropdown for the kebab on the savings account view hero. Groups actions semantically (Transact · Restrict · Interest · Admin · Danger zone) and colour-codes each row's icon by category. */ .sav-action-menu.mat-mdc-menu-panel { min-width: 280px !important; max-width: 320px !important; border-radius: 14px !important; border: 1px solid #e2e8f0; box-shadow: 0 12px 32px -8px rgb(15 23 42 / 18%), 0 4px 12px -4px rgb(15 23 42 / 10%) !important; padding: 0 !important; overflow: hidden; } .sav-action-menu .mat-mdc-menu-content { padding: 0 !important; overflow: hidden !important; } .sav-menu { display: flex; flex-direction: column; font-family: Inter, 'DM Sans', Roboto, sans-serif; max-height: 440px; overflow: hidden; } .sav-menu__body { overflow-y: auto; scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; } .sav-menu__body::-webkit-scrollbar { width: 4px; } .sav-menu__body::-webkit-scrollbar-track { background: transparent; } .sav-menu__body::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } .sav-menu__head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 45%, #4338ca 100%); color: #fff; } .sav-menu__head-ico { width: 28px; height: 28px; border-radius: 8px; background: rgb(255 255 255 / 18%); border: 1px solid rgb(255 255 255 / 28%); display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; flex-shrink: 0; } .sav-menu__head-title { font-size: 13px; font-weight: 800; letter-spacing: 0.01em; line-height: 1.1; } .sav-menu__head-sub { margin-top: 1px; font-size: 10.5px; color: rgb(255 255 255 / 78%); } .sav-menu__group { padding: 6px 0; & + & { border-top: 1px solid #f1f5f9; } &--danger { background: #fefafa; } &:empty { display: none; } } .sav-menu__group-title { font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: #94a3b8; padding: 4px 14px 2px; } .sav-menu__item.mat-mdc-menu-item { display: flex !important; align-items: center; gap: 10px; min-height: 38px !important; height: 38px !important; padding: 0 14px !important; font-size: 13px !important; font-weight: 500 !important; color: #0d1b2a !important; background: transparent !important; transition: background 0.12s ease; /* Hide Material's default trailing chevron/state container so our icon + label are the only visual elements. */ .mat-mdc-menu-item-text { display: contents; } &:hover { background: #f1f5f9 !important; } } .sav-menu__ico { width: 26px; height: 26px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; font-size: 11.5px; flex-shrink: 0; background: #e0e7ff; color: #4338ca; border: 1px solid transparent; transition: transform 0.12s ease, background 0.12s ease, color 0.12s ease; } .sav-menu__label { flex: 1 1 auto; min-width: 0; } .sav-menu__item.mat-mdc-menu-item .mat-mdc-menu-item-text, .sav-menu__item.mat-mdc-menu-item .mdc-list-item__primary-text, .sav-menu__item.mat-mdc-menu-item .mdc-list-item__content { display: flex !important; flex-direction: row !important; align-items: center !important; gap: 10px !important; width: 100%; } /* Hover lift on the icon */ .sav-menu__item:hover .sav-menu__ico { transform: scale(1.06); } /* Variant tints */ .sav-menu__item--transact .sav-menu__ico { background: #ecfdf5; color: #047857; } .sav-menu__item--block .sav-menu__ico { background: #fff7ed; color: #c2410c; } .sav-menu__item--interest .sav-menu__ico { background: #eff6ff; color: #1d4ed8; } .sav-menu__item--admin .sav-menu__ico { background: #f5f3ff; color: #6d28d9; } .sav-menu__item--danger.mat-mdc-menu-item { color: #991b1b !important; } .sav-menu__item--danger .sav-menu__ico { background: #fee2e2; color: #b91c1c; } .sav-menu__item--danger:hover { background: #fef2f2 !important; } /* ─── Current Account action menu (mirrors sav-action-menu styling) ─────── */ .cur-action-menu.mat-mdc-menu-panel { min-width: 280px !important; max-width: 320px !important; border-radius: 14px !important; box-shadow: 0 8px 30px -6px rgb(15 23 42 / 22%), 0 0 0 1px rgb(15 23 42 / 6%) !important; border: none !important; overflow: hidden; } .cur-action-menu .mat-mdc-menu-content { padding: 0 !important; overflow: hidden !important; } .cur-menu { display: flex; flex-direction: column; font-family: Inter, 'DM Sans', Roboto, sans-serif; max-height: 440px; overflow: hidden; } .cur-menu__body { overflow-y: auto; scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; } .cur-menu__body::-webkit-scrollbar { width: 4px; } .cur-menu__body::-webkit-scrollbar-track { background: transparent; } .cur-menu__body::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } .cur-menu__head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 45%, #4338ca 100%); color: #fff; } .cur-menu__head-ico { width: 28px; height: 28px; border-radius: 8px; background: rgb(255 255 255 / 18%); border: 1px solid rgb(255 255 255 / 28%); display: flex; align-items: center; justify-content: center; font-size: 12px; flex-shrink: 0; } .cur-menu__head-title { font-size: 13px; font-weight: 800; letter-spacing: 0.01em; line-height: 1.1; } .cur-menu__head-sub { margin-top: 1px; font-size: 10.5px; color: rgb(255 255 255 / 78%); } .cur-menu__group { padding: 6px 0; & + & { border-top: 1px solid #f1f5f9; } &--danger { background: #fff8f8; & + & { border-top-color: #fee2e2; } } } .cur-menu__group-title { font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: #94a3b8; padding: 4px 14px 2px; } .cur-menu__item.mat-mdc-menu-item { display: flex !important; align-items: center; gap: 10px; min-height: 38px !important; padding: 5px 14px !important; font-size: 13px !important; font-weight: 600; color: #1e293b; transition: background 0.12s ease, color 0.12s ease; } .cur-menu__ico { width: 26px; height: 26px; border-radius: 7px; display: flex; align-items: center; justify-content: center; font-size: 11px; flex-shrink: 0; background: #f1f5f9; color: #64748b; transition: transform 0.12s ease, background 0.12s ease, color 0.12s ease; } .cur-menu__label { flex: 1 1 auto; min-width: 0; } /* Material 20 wraps projected content in .mat-mdc-menu-item-text — make it flex so the icon square and label sit side-by-side instead of stacking. */ .cur-menu__item.mat-mdc-menu-item .mat-mdc-menu-item-text, .cur-menu__item.mat-mdc-menu-item .mdc-list-item__primary-text, .cur-menu__item.mat-mdc-menu-item .mdc-list-item__content { display: flex !important; flex-direction: row !important; align-items: center !important; gap: 10px !important; width: 100%; } .cur-menu__item:hover .cur-menu__ico { transform: scale(1.06); } /* Variant tints */ .cur-menu__item--transact .cur-menu__ico { background: #ecfdf5; color: #047857; } .cur-menu__item--block .cur-menu__ico { background: #fff7ed; color: #c2410c; } .cur-menu__item--interest .cur-menu__ico { background: #eff6ff; color: #1d4ed8; } .cur-menu__item--admin .cur-menu__ico { background: #f5f3ff; color: #6d28d9; } .cur-menu__item--danger.mat-mdc-menu-item { color: #991b1b !important; } .cur-menu__item--danger .cur-menu__ico { background: #fee2e2; color: #b91c1c; } .cur-menu__item--danger:hover { background: #fef2f2 !important; } /* ─── Identity-Verify Dialog Panel ─── Strip Material's default surface padding so the teal gradient header on the Withdraw "Verify Customer Identity" pop-up reaches edge-to-edge (no white gutter around the gradient). */ .idv-panel { .mat-mdc-dialog-container { padding: 0 !important; border-radius: 14px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 14px !important; overflow: hidden; } .mat-mdc-dialog-content { padding: 0 !important; max-height: 72vh; } .mat-mdc-dialog-actions { padding: 0 !important; margin: 0 !important; } } /* ─── Transaction-Confirm Dialog Panel ─── Same flush surface treatment for the Deposit/Withdraw confirmation. */ .tcd-panel { .mat-mdc-dialog-container { padding: 0 !important; border-radius: 14px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 14px !important; overflow: hidden; } .mat-mdc-dialog-content { padding: 0 !important; max-height: 72vh; } .mat-mdc-dialog-actions { padding: 0 !important; margin: 0 !important; } } /* ─── Add Beneficiary Dialog Panel ─── */ .abd-dialog-panel { .mat-mdc-dialog-container { padding: 0; border-radius: 14px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 14px !important; } .mat-mdc-dialog-content { padding: 0 20px !important; max-height: 72vh; } .mat-mdc-dialog-actions { padding: 0 !important; margin: 0 !important; } } /* ─── Add Related Client Dialog Panel ─── */ .arc-dialog-panel { .mat-mdc-dialog-container { padding: 0; border-radius: 14px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 14px !important; } .mat-mdc-dialog-content { padding: 0 20px !important; max-height: 70vh; } .mat-mdc-dialog-actions { padding: 0 !important; margin: 0 !important; } } /* ===================== Two-factor authentication dialog ===================== */ .tfa-dialog-panel { .mat-mdc-dialog-surface { background: linear-gradient(160deg, #0b1220 0%, #0f172a 60%, #111c33 100%) !important; border-radius: 18px !important; padding: 0 !important; box-shadow: 0 30px 80px rgb(0 0 0 / 55%) !important; overflow: hidden; } .mat-mdc-dialog-container { --mdc-dialog-container-color: transparent; padding: 0 !important; } } .cdk-overlay-pane.tfa-dialog-panel { border-radius: 18px; } .tfa-dialog-backdrop { background: rgb(2 6 23 / 75%) !important; backdrop-filter: blur(4px); } /* ─── DSC Enroll Dialog Panel — edge-to-edge hero ─── */ .ed-dialog-panel { .mat-mdc-dialog-container { padding: 0; border-radius: 16px; overflow: hidden; } .mat-mdc-dialog-surface { padding: 0 !important; border-radius: 16px !important; overflow: hidden !important; } } /* ═══════════════════════════════════════════════════════════════ Client stepper — disabled (read-only) form-field overrides ─── Applied GLOBALLY so they bypass component view-encapsulation. `::ng-deep` inside a component SCSS sometimes loses specificity battles with Material 3's MDC token cascade — a global rule scoped to the stepper's component selectors avoids that entirely. ═══════════════════════════════════════════════════════════════ */ mifosx-client-general-step, mifosx-client-india-address-step, mifosx-client-address-step, mifosx-client-kyc-step, mifosx-client-entity-kyc-step, mifosx-client-family-members-step, mifosx-client-datatable-step { /* Token-level overrides — these are the colours MDC reads when computing disabled state. Forcing them at the host avoids fighting MDC rule by rule. */ --mdc-outlined-text-field-disabled-input-text-color: #0f172a; --mdc-outlined-text-field-disabled-label-text-color: #64748b; --mdc-outlined-text-field-disabled-outline-color: #cbd5e1; --mdc-outlined-text-field-disabled-supporting-text-color: #64748b; --mdc-outlined-text-field-disabled-leading-icon-color: #475569; --mdc-outlined-text-field-disabled-trailing-icon-color: #475569; --mdc-filled-text-field-disabled-input-text-color: #0f172a; --mdc-filled-text-field-disabled-label-text-color: #64748b; --mat-select-disabled-trigger-text-color: #0f172a; --mat-form-field-disabled-input-text-color: #0f172a; --mat-form-field-disabled-input-text-placeholder-color: #64748b; .mat-mdc-form-field.mat-form-field-disabled, .mat-mdc-form-field-disabled { opacity: 1 !important; .mat-mdc-input-element, input.mat-mdc-input-element, textarea.mat-mdc-input-element { color: #0f172a !important; -webkit-text-fill-color: #0f172a !important; font-weight: 600; caret-color: transparent; opacity: 1 !important; } .mat-mdc-floating-label, .mdc-floating-label, .mat-mdc-form-field-required-marker { color: #64748b !important; opacity: 1 !important; } .mdc-notched-outline__leading, .mdc-notched-outline__notch, .mdc-notched-outline__trailing { border-color: #cbd5e1 !important; } .mat-mdc-select-value, .mat-mdc-select-value-text, .mat-mdc-select-min-line, .mat-mdc-select-placeholder { color: #0f172a !important; -webkit-text-fill-color: #0f172a !important; font-weight: 600; opacity: 1 !important; } .mat-mdc-select-arrow { color: #94a3b8 !important; } .mat-mdc-form-field-icon-prefix, .mat-mdc-form-field-icon-suffix, .field-prefix-icon mat-icon, .mat-mdc-form-field-icon-prefix mat-icon, .mat-mdc-form-field-icon-suffix mat-icon { color: #475569 !important; opacity: 1 !important; } .mat-mdc-form-field-hint { color: #64748b !important; opacity: 1 !important; } } /* The disabled mat-select element itself (sibling of mat-form-field-disabled in some Material 3 builds) — drop the opacity drop. */ .mat-mdc-select-disabled, .mat-mdc-select-disabled .mat-mdc-select-trigger, .mat-mdc-select-disabled .mat-mdc-select-value, .mat-mdc-select-disabled .mat-mdc-select-value-text, .mat-mdc-select-disabled .mat-mdc-select-min-line { color: #0f172a !important; -webkit-text-fill-color: #0f172a !important; font-weight: 600; opacity: 1 !important; } /* MDC text-field root with its own disabled modifier */ .mdc-text-field--disabled { opacity: 1 !important; .mdc-text-field__input, input, textarea, .mat-mdc-select-min-line { color: #0f172a !important; -webkit-text-fill-color: #0f172a !important; opacity: 1 !important; } } /* Native UA stylesheet — Chrome/Safari force `-webkit-text-fill-color: rgb(84,84,84)` on any disabled control. This beats `color`, so reset both. */ input:disabled, select:disabled, textarea:disabled { color: #0f172a !important; -webkit-text-fill-color: #0f172a !important; opacity: 1 !important; } /* Disabled checkboxes — Material 3's MDC checkbox uses `border-color` to paint the filled box (not `background-color`), so we force BOTH and also target the SVG path's stroke for the tick. Specificity is bumped via chained selectors to beat MDC's own rules. */ /* Checked + disabled — solid green box, white tick */ mat-checkbox.mat-mdc-checkbox.mat-mdc-checkbox-checked.mat-mdc-checkbox-disabled .mdc-checkbox .mdc-checkbox__background, .mat-mdc-checkbox.mat-mdc-checkbox-checked.mat-mdc-checkbox-disabled .mdc-checkbox__background, .mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-checked .mdc-checkbox__background, .mat-mdc-checkbox-disabled .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background, .mdc-checkbox--selected.mdc-checkbox--disabled .mdc-checkbox__background { background-color: #059669 !important; border-color: #059669 !important; opacity: 1 !important; } /* Tick (white SVG path) */ mat-checkbox.mat-mdc-checkbox-checked.mat-mdc-checkbox-disabled .mdc-checkbox__checkmark, mat-checkbox.mat-mdc-checkbox-checked.mat-mdc-checkbox-disabled .mdc-checkbox__checkmark-path, .mat-mdc-checkbox-disabled.mat-mdc-checkbox-checked .mdc-checkbox__checkmark-path { color: #fff !important; stroke: #fff !important; opacity: 1 !important; } /* Unchecked + disabled — outlined slate box (visible but empty) */ .mat-mdc-checkbox-disabled:not(.mat-mdc-checkbox-checked) .mdc-checkbox__background { background-color: transparent !important; border-color: #94a3b8 !important; opacity: 1 !important; } /* Full opacity at every layer of MDC's checkbox tree */ mat-checkbox.mat-mdc-checkbox-disabled, .mat-mdc-checkbox-disabled, .mat-mdc-checkbox-disabled .mdc-checkbox, .mat-mdc-checkbox-disabled .mdc-checkbox__ripple, .mat-mdc-checkbox-disabled .mdc-form-field { opacity: 1 !important; } /* Label */ .mat-mdc-checkbox-disabled .mdc-form-field > label, .mat-mdc-checkbox-disabled .mat-mdc-checkbox-label, .mat-mdc-checkbox-disabled .mdc-label { color: #0f172a !important; opacity: 1 !important; font-weight: 500; } } /* Token-level overrides at :root so they cascade EVERYWHERE under the stepper (MDC sometimes reads tokens at the component root, which lives outside our `mifosx-client-*-step` host element). Limiting to a class scope to avoid bleeding into other parts of the app. Descendant variants intentionally use `*` so the CSS variables are picked up by Material's deeply nested host elements. */ /* stylelint-disable selector-max-universal */ mifosx-client-general-step, mifosx-client-india-address-step, mifosx-client-address-step, mifosx-client-kyc-step, mifosx-client-entity-kyc-step, mifosx-client-family-members-step, mifosx-client-datatable-step, mifosx-client-general-step *, mifosx-client-india-address-step *, mifosx-client-address-step *, mifosx-client-kyc-step *, mifosx-client-entity-kyc-step *, mifosx-client-family-members-step *, mifosx-client-datatable-step * { --mdc-checkbox-disabled-selected-icon-color: #059669; --mdc-checkbox-disabled-unselected-icon-color: #94a3b8; --mdc-checkbox-selected-icon-color: #059669; --mdc-checkbox-selected-focus-icon-color: #059669; --mdc-checkbox-selected-hover-icon-color: #059669; --mdc-checkbox-selected-pressed-icon-color: #059669; } /* stylelint-enable selector-max-universal */