/** * 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/. */ // ── Search Bar ─────────────────────────────────────────────────────────────── .sc-search-bar { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 10px 14px; &__input-wrap { display: flex; align-items: center; gap: 8px; flex: 1 1 auto; } &__icon { color: #94a3b8; font-size: 20px; width: 20px; height: 20px; flex-shrink: 0; } &__input { flex: 1 1 auto; border: none; outline: none; font-size: 14px; font-family: inherit; color: #0d1b2a; background: transparent; &::placeholder { color: #94a3b8; } } } // ── Alert ──────────────────────────────────────────────────────────────────── .sc-alert { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 10px; font-size: 13px; font-weight: 500; mat-icon { font-size: 20px; width: 20px; height: 20px; flex-shrink: 0; } &--error { background: #fef2f2; border: 1px solid #fecaca; color: #dc2626; } } // ── Spinner ────────────────────────────────────────────────────────────────── .sc-spin { animation: sc-spin 1.2s linear infinite; display: block; margin: 0 auto 8px; font-size: 32px !important; width: 32px !important; height: 32px !important; color: #94a3b8; } @keyframes sc-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } // ── Member Card ────────────────────────────────────────────────────────────── .sc-member-card { display: flex; align-items: center; gap: 16px; background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 16px 20px; &__avatar { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; background: #eff6ff; flex-shrink: 0; mat-icon { color: #2563eb; font-size: 24px; width: 24px; height: 24px; } } &__info { flex: 1 1 auto; min-width: 0; } &__name { font-size: 16px; font-weight: 700; color: #1e293b; margin-bottom: 6px; } &__meta { display: flex; flex-wrap: wrap; gap: 6px; } &__shares { flex-shrink: 0; display: flex; align-items: center; } } // ── Badges ─────────────────────────────────────────────────────────────────── .sc-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 5px; font-size: 11px; font-weight: 700; background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0; &--account { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; font-family: 'Roboto Mono', monospace; } &--product { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; } &--pending { background: #fffbeb; color: #d97706; border-color: #fde68a; } &--active { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; } } // ── Editable Share Inputs ──────────────────────────────────────────────────── .sc-shares-inputs { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; } .sc-shares-field { display: flex; flex-direction: column; gap: 3px; } .sc-shares-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #94a3b8; } .sc-shares-input { width: 110px; height: 38px; border: 1.5px solid #e2e8f0; border-radius: 8px; padding: 0 10px; font-size: 14px; font-weight: 700; font-family: inherit; color: #1353a0; text-align: right; outline: none; background: #f8fafc; transition: border-color 0.15s; &:focus { border-color: #1353a0; background: #fff; } &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { appearance: none; } } .sc-shares-sep { font-size: 20px; font-weight: 300; color: #94a3b8; padding-top: 16px; } .sc-shares-result { text-align: right; } .sc-shares-total { font-size: 20px; font-weight: 800; color: #0f4f3c; font-variant-numeric: tabular-nums; } // ── Editable Charge Amount ─────────────────────────────────────────────────── .sc-charge-amount { padding: 4px 14px !important; } .sc-charge-input { width: 100px; height: 32px; border: 1.5px solid #e2e8f0; border-radius: 6px; padding: 0 8px; font-size: 13px; font-weight: 700; font-family: inherit; color: #1353a0; text-align: right; outline: none; background: #f8fafc; transition: border-color 0.15s; &:focus { border-color: #1353a0; background: #fff; } &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { appearance: none; } } // ── Split Layout ───────────────────────────────────────────────────────────── .sc-split { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; @media (width <= 900px) { grid-template-columns: 1fr; } } // ── Breakdown Card ─────────────────────────────────────────────────────────── .sc-breakdown { &__header { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; font-size: 13px; font-weight: 700; color: #334155; mat-icon { font-size: 18px; width: 18px; height: 18px; color: #0f4f3c; } } } .sc-gl-preview { .sc-breakdown__header { mat-icon { color: #1d4ed8; } } } .sc-gl-note { display: flex; align-items: flex-start; gap: 6px; padding: 10px 14px; font-size: 12px; color: #64748b; background: #f8fafc; border-top: 1px solid #e2e8f0; mat-icon { font-size: 16px; width: 16px; height: 16px; flex-shrink: 0; margin-top: 1px; color: #94a3b8; } } // ── Table helpers ──────────────────────────────────────────────────────────── .sc-dim { color: #94a3b8; font-size: 12px; } .sc-total-row td { background: #f8fafc; border-top: 2px solid #e2e8f0; font-size: 14px; } .sc-total-amount { color: #0f4f3c; } // ── Dr / Cr badges ─────────────────────────────────────────────────────────── .sc-dr-badge, .sc-cr-badge { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 20px; border-radius: 4px; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; } .sc-dr-badge { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; } .sc-cr-badge { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; } // ── Footer ─────────────────────────────────────────────────────────────────── .sc-footer { justify-content: space-between !important; &__summary { display: flex; flex-direction: column; gap: 2px; } &__label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #64748b; } &__amount { font-size: 22px; font-weight: 800; color: #0f4f3c; font-variant-numeric: tabular-nums; } &__actions { display: flex; align-items: center; gap: 10px; } } // ── Denomination Panel ──────────────────────────────────────────────────────── .sc-denom { padding: 0; overflow: hidden; } .sc-denom-body { padding: 14px 16px; } .sc-denom-table { width: 100%; th, td { padding: 7px 10px; font-size: 13px; } tfoot td { border-top: 2px solid #e2e8f0; background: #f8fafc; font-size: 14px; } } .sc-denom-chip { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 5px; font-size: 12px; font-weight: 700; background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; &--coin { background: #fffbeb; color: #d97706; border-color: #fde68a; } } .sc-denom-stepper { display: flex; align-items: center; gap: 4px; justify-content: flex-end; button { width: 26px; height: 26px; border: 1.5px solid #e2e8f0; border-radius: 5px; background: #f8fafc; color: #475569; font-size: 16px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; &:hover:not(:disabled) { background: #e0f2fe; border-color: #7dd3fc; color: #0369a1; } &:disabled { opacity: 0.35; cursor: not-allowed; } } input { width: 62px; height: 28px; border: 1.5px solid #e2e8f0; border-radius: 6px; padding: 0 6px; font-size: 13px; font-weight: 600; font-family: inherit; text-align: right; outline: none; background: #fff; &:focus { border-color: #1353a0; } &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { appearance: none; } } } .sc-denom-badge { margin-left: auto; display: inline-flex; align-items: center; height: 22px; padding: 0 10px; border-radius: 5px; font-size: 12px; font-weight: 700; &--match { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; } &--mismatch { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; } } .sc-denom-required { margin-left: auto; font-size: 12px; font-weight: 700; color: #d97706; } .sc-denom-mismatch { display: flex; align-items: center; gap: 6px; margin-top: 10px; padding: 9px 12px; background: #fef2f2; border: 1px solid #fecaca; border-radius: 8px; font-size: 12px; font-weight: 600; color: #dc2626; mat-icon { font-size: 16px; width: 16px; height: 16px; flex-shrink: 0; } } .sc-denom-actions { display: flex; justify-content: flex-end; margin-top: 10px; } // ── Success ────────────────────────────────────────────────────────────────── .sc-success { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 40px 24px; gap: 16px; background: #fff; border: 1px solid #e2e8f0; border-radius: 16px; &__icon-wrap { width: 72px; height: 72px; border-radius: 50%; background: #f0fdf4; display: flex; align-items: center; justify-content: center; mat-icon { font-size: 40px; width: 40px; height: 40px; color: #16a34a; } } &__title { font-size: 22px; font-weight: 700; color: #1e293b; margin: 0; } &__sub { font-size: 14px; color: #64748b; max-width: 480px; margin: 0; } &__ref { display: flex; align-items: center; gap: 10px; background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 16px; } &__ref-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #94a3b8; white-space: nowrap; } &__ref-val { font-family: 'Roboto Mono', 'Courier New', monospace; font-size: 13px; font-weight: 600; color: #1353a0; } &__note { font-size: 12px; color: #94a3b8; max-width: 420px; margin: 0; text-align: center; } &__gl { display: flex; flex-direction: column; gap: 6px; width: 100%; max-width: 400px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; } &__gl-row { display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; padding: 4px 0; border-bottom: 1px dotted #e2e8f0; &:last-child { border-bottom: none; } &--dr { color: #dc2626; } &--cr { color: #15803d; } } }