/** * 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/. */ /* Manage-Savings-Account screen — drives four flows: Hold Amount (blue), Block Deposit (orange), Block Withdrawal (orange), Block Account (red). Hero gradient + Confirm button tint shift per modifier class. */ $navy: #0d1b2a; $slate: #475569; $muted: #64748b; $border: #e2e8f0; $soft: #f8fafc; $blue: #1e88e5; $blue-d: #1e40af; $amber: #d97706; $amber-d: #b45309; $red: #b91c1c; $red-d: #7f1d1d; .msa { max-width: 720px; margin: 0 auto; padding: 14px 18px 22px; display: flex; flex-direction: column; gap: 12px; } /* ─── Hero ─────────────────────────────────────────────────────────── */ .msa__hero { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-radius: 12px; color: #fff; position: relative; overflow: hidden; /* Default (Hold Amount) — calm blue. Modifier classes override below. */ background: linear-gradient(135deg, #0f172a 0%, $blue-d 45%, $blue 100%); box-shadow: 0 6px 18px -10px rgb(30 64 175 / 50%); &::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at top right, rgb(255 255 255 / 12%), transparent 55%); pointer-events: none; } } /* Hero gradient variants */ .msa--block-deposit .msa__hero, .msa--block-withdrawal .msa__hero { background: linear-gradient(135deg, #7c2d12 0%, $amber-d 45%, $amber 100%); box-shadow: 0 6px 18px -10px rgb(180 83 9 / 50%); } .msa--block-account .msa__hero { background: linear-gradient(135deg, $red-d 0%, $red 45%, #dc2626 100%); box-shadow: 0 6px 18px -10px rgb(153 27 27 / 55%); } .msa__back { height: 30px !important; min-width: 30px !important; width: 30px !important; padding: 0 !important; border-radius: 50% !important; background: rgb(255 255 255 / 14%) !important; color: #fff !important; border: 1px solid rgb(255 255 255 / 28%) !important; font-size: 12px !important; flex-shrink: 0; position: relative; z-index: 1; &:hover { background: rgb(255 255 255 / 26%) !important; } } .msa__hero-ico { width: 36px; height: 36px; border-radius: 9px; background: rgb(255 255 255 / 18%); border: 1px solid rgb(255 255 255 / 28%); display: inline-flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; position: relative; z-index: 1; } .msa__hero-text { flex: 1 1 auto; min-width: 0; position: relative; z-index: 1; } .msa__title { margin: 0; font-size: 14.5px; font-weight: 800; letter-spacing: 0.01em; line-height: 1.15; } .msa__sub { margin: 2px 0 0; font-size: 11.5px; color: rgb(255 255 255 / 82%); line-height: 1.4; } .msa__hero-pill { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 10px; border-radius: 999px; background: rgb(255 255 255 / 16%); border: 1px solid rgb(255 255 255 / 30%); font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.07em; color: #fff; flex-shrink: 0; position: relative; z-index: 1; fa-icon { font-size: 10px; opacity: 0.95; } } /* ─── Form card ────────────────────────────────────────────────────── */ .msa__card { background: #fff; border: 1px solid $border; border-radius: 12px; box-shadow: 0 1px 3px rgb(15 23 42 / 4%); overflow: hidden; } .msa__card-head { display: flex; align-items: center; gap: 8px; padding: 9px 14px; background: $soft; border-bottom: 1px solid $border; } .msa__card-ico { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; border-radius: 7px; background: linear-gradient(135deg, $blue 0%, $blue-d 100%); color: #fff; font-size: 11px; } .msa--block-deposit .msa__card-ico, .msa--block-withdrawal .msa__card-ico { background: linear-gradient(135deg, $amber 0%, $amber-d 100%); } .msa--block-account .msa__card-ico { background: linear-gradient(135deg, $red 0%, $red-d 100%); } .msa__card-title { margin: 0; font-size: 12.5px; font-weight: 700; color: $navy; letter-spacing: 0.01em; } .msa__card-body { padding: 16px 18px 4px; display: flex; flex-direction: column; gap: 4px; } .msa__field { width: 100%; ::ng-deep .mat-mdc-text-field-wrapper { background: #fff; border-radius: 10px; } ::ng-deep .mat-mdc-form-field-infix { min-height: 46px; padding-top: 11px !important; padding-bottom: 11px !important; } ::ng-deep .mdc-notched-outline__leading, ::ng-deep .mdc-notched-outline__notch, ::ng-deep .mdc-notched-outline__trailing { border-color: #cbd5e1 !important; } } .msa__field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; @media (width <= 600px) { grid-template-columns: 1fr; } } /* ─── Actions ─────────────────────────────────────────────────────── */ .msa__actions { display: flex; justify-content: flex-end; gap: 10px; padding: 12px 18px 14px; border-top: 1px solid #f1f5f9; button { height: 38px !important; border-radius: 9px !important; font-weight: 700 !important; padding: 0 18px !important; letter-spacing: 0.01em; } } .msa__cancel { color: $slate !important; border-color: $border !important; } .msa__confirm { /* Default — blue (Hold Amount) */ background: linear-gradient(135deg, $blue 0%, $blue-d 100%) !important; color: #fff !important; box-shadow: 0 3px 10px -2px rgb(30 64 175 / 35%) !important; &:disabled { opacity: 0.55; filter: grayscale(0.3); background: linear-gradient(135deg, #9ca3af 0%, #6b7280 100%) !important; box-shadow: none !important; } } .msa--block-deposit .msa__confirm, .msa--block-withdrawal .msa__confirm { background: linear-gradient(135deg, $amber 0%, $amber-d 100%) !important; box-shadow: 0 3px 10px -2px rgb(180 83 9 / 35%) !important; &:disabled { background: linear-gradient(135deg, #9ca3af 0%, #6b7280 100%) !important; } } .msa--block-account .msa__confirm { background: linear-gradient(135deg, $red 0%, $red-d 100%) !important; box-shadow: 0 3px 10px -2px rgb(153 27 27 / 40%) !important; &:disabled { background: linear-gradient(135deg, #9ca3af 0%, #6b7280 100%) !important; } } .m-r-6 { margin-right: 6px; } @media (width <= 600px) { .msa { padding: 12px; } .msa__hero { flex-wrap: wrap; } .msa__actions { flex-direction: column-reverse; button { width: 100%; } } }