/** * 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/. */ :host { display: block; } .pg { padding: 20px 24px; display: flex; flex-direction: column; gap: 16px; } .pg-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; } .pg-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; color: #0f4f3c; } .pg-title { font-size: 26px; font-weight: 600; margin: 4px 0 2px; color: #1a1a1a; } .pg-sub { font-size: 13px; color: #64748b; margin: 0; max-width: 560px; } .pg-toolbar { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; } .pg-field { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 600; color: #64748b; input { height: 36px; padding: 0 10px; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 13px; color: #0d1b2a; font-family: inherit; } } .pg-select { height: 36px; min-width: 180px; padding: 0 10px; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 13px; color: #0d1b2a; font-family: inherit; background: #fff; cursor: pointer; } .pg-toolbar--mat { align-items: flex-start; gap: 12px; mat-form-field { flex: 0 0 210px; } .pg-note-field { flex: 1 1 240px; } } .pg-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; } .pg-table { width: 100%; border-collapse: collapse; font-size: 13px; th { text-align: left; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: #94a3b8; padding: 10px 14px; border-bottom: 1px solid #e2e8f0; background: #f8fafc; } td { padding: 9px 14px; border-bottom: 1px dotted #eef2f7; color: #0d1b2a; } tr:hover td { background: #f8fafc; } .num { text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; } tr.pg-section td { background: #f1f5f9; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.07em; color: #64748b; padding: 6px 14px; } tr.pg-section:hover td { background: #f1f5f9; } } .pg-empty { padding: 28px; text-align: center; color: #94a3b8; font-size: 13px; } .pg-btn { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 16px; border-radius: 999px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid transparent; font-family: inherit; mat-icon { font-size: 18px; height: 18px; width: 18px; } &--ghost { background: #fff; border-color: #e2e8f0; color: #475569; } &--primary { background: linear-gradient(135deg, #1f7a4d, #0f4f3c); color: #fff; &:disabled { opacity: 0.45; cursor: not-allowed; } } } .pg-chip { display: inline-flex; align-items: center; justify-content: center; min-width: 52px; height: 26px; padding: 0 8px; border-radius: 6px; font-size: 12px; font-weight: 700; background: linear-gradient(135deg, #ecfeff, #cffafe); color: #155e75; border: 1px solid #a5f3fc; &--coin { border-radius: 50%; min-width: 34px; width: 34px; height: 34px; padding: 0; background: linear-gradient(135deg, #fef9c3, #fde68a); color: #854d0e; border: 1px solid #fcd34d; } } // Shared Notes / Coins section divider — used in position, reconciliation, closing report .pos-section-label { padding: 6px 14px; font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: #1e40af; background: #eff6ff; border-bottom: 1px solid #dbeafe; border-top: 1px solid #e2e8f0; &--coin { color: #92400e; background: #fffbeb; border-bottom-color: #fde68a; border-top-color: #fde68a; } } // Closing cash report — column colour hints .col-in { color: #15803d !important; } .col-out { color: #dc2626 !important; } .col-net { font-weight: 800 !important; } // Closing cash summary totals bar .closing-summary { display: flex; align-items: center; gap: 0; background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; &__item { flex: 1; padding: 14px 20px; display: flex; flex-direction: column; gap: 4px; border-right: 1px solid #e2e8f0; &--in { background: #f0fdf4; } &--out { background: #fef2f2; } &--net-pos { background: #f0fdf4; } &--net-neg { background: #fef2f2; } } &__sep { padding: 0 12px; font-size: 22px; font-weight: 300; color: #94a3b8; } &__label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #64748b; } &__value { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; color: #0f172a; } } .pg-step { display: flex; align-items: stretch; height: 30px; width: 120px; border: 1px solid #e2e8f0; border-radius: 7px; overflow: hidden; button { width: 30px; background: #f8fafc; border: none; font-size: 16px; font-weight: 700; color: #475569; cursor: pointer; &:disabled { opacity: 0.4; cursor: not-allowed; } } input { flex: 1 1 auto; width: 100%; border: none; outline: none; text-align: center; font-size: 13px; font-weight: 700; color: #0d1b2a; appearance: textfield; &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { appearance: none; margin: 0; } } } .pg-total-bar { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding: 12px 16px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; font-weight: 700; strong { font-size: 18px; color: #0f4f3c; font-variant-numeric: tabular-nums; } } /* ── Cash Exchange section header ───────────────────────────────────── */ .closing-exchange-head { display: flex; align-items: flex-start; gap: 10px; padding: 12px 16px 10px; border-bottom: 1px solid #e2e8f0; margin-bottom: 2px; mat-icon { color: #0f4f3c; font-size: 22px; height: 22px; width: 22px; margin-top: 2px; flex-shrink: 0; } } .closing-exchange-title { font-size: 14px; font-weight: 700; color: #1a1a1a; } .closing-exchange-sub { font-size: 12px; color: #64748b; margin-top: 2px; } // Excess Transaction Report — type badges .etr-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 5px; font-size: 11px; font-weight: 700; white-space: nowrap; &--savings { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; } &--exchange { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; } } // GL View toggle button active state .pg-btn--active { background: #1e3a5f; color: #fff; border-color: #1e3a5f; } // GL Card .gl-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; &__header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; gap: 16px; flex-wrap: wrap; } &__header-left { display: flex; align-items: center; gap: 12px; } &__icon { width: 40px; height: 40px; border-radius: 10px; background: #1e3a5f; display: flex; align-items: center; justify-content: center; mat-icon { color: #fff; font-size: 20px; width: 20px; height: 20px; } } &__title { font-size: 15px; font-weight: 700; color: #1e293b; } &__sub { font-size: 12px; color: #64748b; margin-top: 2px; } &__totals { display: flex; align-items: center; gap: 16px; } &__total-sep { color: #cbd5e1; font-size: 18px; } &__total { display: flex; flex-direction: column; align-items: flex-end; } &__total-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #94a3b8; } &__total-value { font-size: 18px; font-weight: 800; font-variant-numeric: tabular-nums; } &__total--dr .gl-card__total-value { color: #dc2626; } &__total--cr .gl-card__total-value { color: #15803d; } &__filters { display: flex; align-items: flex-end; gap: 12px; padding: 14px 20px; border-bottom: 1px solid #f1f5f9; flex-wrap: wrap; background: #fff; } } // GL Table .gl-table { .gl-th--voucher { width: 110px; } .gl-th--dr { color: #dc2626 !important; } .gl-th--cr { color: #15803d !important; } .gl-voucher { font-family: 'Roboto Mono', 'Courier New', monospace; font-size: 12px; font-weight: 700; color: #475569; } .gl-acno { font-family: 'Roboto Mono', 'Courier New', monospace; font-size: 12px; color: #1d4ed8; } .gl-acname { font-weight: 500; color: #1e293b; } .gl-amt--dr { color: #dc2626; font-weight: 700; } .gl-amt--cr { color: #15803d; font-weight: 700; } .gl-row--dr td { background: #fff5f5; } .gl-row--cr td { background: #f0fdf4; } .gl-row--dr:hover td { background: #fee2e2; } .gl-row--cr:hover td { background: #dcfce7; } .gl-foot { background: #f1f5f9; border-top: 2px solid #e2e8f0; &__label { font-size: 13px; font-weight: 800; color: #1e293b; padding: 12px 14px; } &__val { font-size: 14px; font-weight: 800; padding: 12px 14px; } } }