/** * 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 { --s-navy: #0b1e3d; --s-blue: #1d4ed8; --s-blue-l: #eff6ff; --s-teal: #0e7e6b; --s-teal-l: #e0f4f0; --s-green: #15803d; --s-green-l: #dcfce7; --s-amber: #d97706; --s-amber-l: #fef3c7; --s-red: #c0392b; --s-red-l: #fdecea; --s-purple: #6d28d9; --s-purple-l: #ede9fe; --s-pink: #db2777; --s-pink-l: #fce7f3; --s-g50: #f8fafc; --s-g100: #f1f5f9; --s-g200: #e2e8f0; --s-g300: #cbd5e1; --s-g500: #64748b; --s-g700: #334155; --s-g900: #0f172a; display: block; font-family: 'DM Sans', system-ui, -apple-system, sans-serif; background: var(--s-g50); color: var(--s-g900); font-size: 14px; line-height: 1.5; } .sft-root { padding: 18px 22px; max-width: 1500px; margin: 0 auto; } .sft-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; } .sft-head-left { display: flex; align-items: center; gap: 14px; } .sft-head-ic { font-size: 28px; color: var(--s-blue); } .sft-head-t { margin: 0; font-size: 18px; font-weight: 700; color: var(--s-g900); } .sft-head-s { font-size: 12px; color: var(--s-g500); } .sft-head-meta { display: flex; gap: 22px; > div { display: flex; flex-direction: column; .sft-meta-l { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--s-g500); } .sft-meta-v { font-size: 14px; font-weight: 600; color: var(--s-g900); } } } .sft-tabs { display: flex; gap: 4px; background: #fff; border: 1px solid var(--s-g200); border-radius: 10px; padding: 4px; margin-bottom: 16px; overflow-x: auto; } .sft-tab { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border: none; background: transparent; font-size: 13px; font-weight: 500; color: var(--s-g500); cursor: pointer; border-radius: 7px; white-space: nowrap; transition: all 0.15s; font-family: inherit; &:hover { color: var(--s-g900); } &.active { background: var(--s-blue); color: #fff; box-shadow: 0 2px 6px rgb(29 78 216 / 25%); } } .sft-section { display: flex; flex-direction: column; gap: 16px; } /* KPIs */ .sft-kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } .sft-kpi { background: #fff; border: 1px solid var(--s-g200); border-radius: 12px; padding: 14px 16px; display: flex; align-items: center; gap: 12px; box-shadow: 0 1px 3px rgb(0 0 0 / 5%); &:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgb(0 0 0 / 10%); } } .sft-kpi-ic { width: 42px; height: 42px; border-radius: 11px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; } .sft-kpi--blue .sft-kpi-ic { background: var(--s-blue-l); color: var(--s-blue); } .sft-kpi--teal .sft-kpi-ic { background: var(--s-teal-l); color: var(--s-teal); } .sft-kpi--amber .sft-kpi-ic { background: var(--s-amber-l); color: var(--s-amber); } .sft-kpi--purple .sft-kpi-ic { background: var(--s-purple-l); color: var(--s-purple); } .sft-kpi--green .sft-kpi-ic { background: var(--s-green-l); color: var(--s-green); } .sft-kpi-n { font-size: 18px; font-weight: 700; color: var(--s-g900); line-height: 1.1; } .sft-kpi-l { font-size: 12px; color: var(--s-g700); font-weight: 500; margin-top: 2px; } .sft-kpi-sub { font-size: 11px; color: var(--s-g500); margin-top: 1px; } /* SFT code summary cards */ .sft-codes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; } .sft-code-card { background: #fff; border: 1px solid var(--s-g200); border-radius: 12px; padding: 14px 16px; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); } .sft-code-h { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: 14px; font-weight: 600; color: var(--s-g900); } .sft-code-tag { display: inline-block; padding: 3px 10px; border-radius: 6px; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; font-family: 'DM Mono', monospace; background: var(--s-g100); color: var(--s-g700); &.t-001 { background: var(--s-blue-l); color: var(--s-blue); } &.t-002 { background: var(--s-teal-l); color: var(--s-teal); } &.t-003 { background: var(--s-purple-l); color: var(--s-purple); } &.t-004 { background: var(--s-amber-l); color: var(--s-amber); } &.t-015 { background: var(--s-pink-l); color: var(--s-pink); } &.t-016 { background: var(--s-green-l); color: var(--s-green); } } .sft-code-card p { margin: 0 0 10px; font-size: 12px; color: var(--s-g500); line-height: 1.5; } .sft-code-meta { font-size: 12px; color: var(--s-g700); font-weight: 600; } /* Toolbar */ .sft-toolbar { display: flex; justify-content: flex-end; gap: 8px; } /* Form header */ .sft-form-meta { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; } .sft-form-title { h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--s-g900); } p { margin: 2px 0 0; font-size: 12px; color: var(--s-g500); } } .sft-action-group { display: flex; gap: 8px; flex-wrap: wrap; } /* Buttons */ .sft-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--s-g300); background: #fff; border-radius: 8px; font-size: 13px; font-weight: 500; color: var(--s-g700); cursor: pointer; font-family: inherit; transition: all 0.15s; &:hover { background: var(--s-g50); border-color: var(--s-g500); } } .sft-btn-csv { background: #1d4ed8; border-color: #1d4ed8; color: #fff; &:hover { background: #1e40af; border-color: #1e40af; color: #fff; } } .sft-btn-xls { background: #16a34a; border-color: #16a34a; color: #fff; &:hover { background: #15803d; border-color: #15803d; color: #fff; } } /* Inputs */ .sft-inp { padding: 8px 12px; border: 1px solid var(--s-g200); border-radius: 8px; font-size: 13px; background: #fff; font-family: inherit; &:focus { outline: none; border-color: var(--s-blue); box-shadow: 0 0 0 3px rgb(29 78 216 / 15%); } } .sft-inp-narrow { width: 200px; } /* Table */ .sft-tbl-wrap { background: #fff; border: 1px solid var(--s-g200); border-radius: 12px; overflow: auto; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); } .sft-tbl { width: 100%; border-collapse: collapse; th { text-align: left; padding: 10px 12px; font-size: 11px; font-weight: 600; color: var(--s-g500); text-transform: uppercase; letter-spacing: 0.04em; background: var(--s-g50); border-bottom: 1px solid var(--s-g200); } td { padding: 10px 12px; border-bottom: 1px solid var(--s-g100); font-size: 12px; color: var(--s-g700); } tr:last-child td { border-bottom: none; } tr:hover td { background: var(--s-g50); } } .ta-c { text-align: center; } .ta-r { text-align: right; } .mono { font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.02em; } .muted { color: var(--s-g500); font-size: 11px; } .sft-empty { text-align: center; padding: 30px; color: var(--s-g500); font-style: italic; } .sft-empty-card { background: #fff; border: 1px dashed var(--s-g300); border-radius: 12px; padding: 50px; text-align: center; color: var(--s-g500); font-size: 13px; } /* Account-wise SFT-003 cards */ .sft-acc-list { display: flex; flex-direction: column; gap: 12px; } .acc-card { background: #fff; border: 1px solid var(--s-g200); border-radius: 12px; overflow: hidden; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); } .acc-card-h { padding: 12px 16px; background: var(--s-g50); border-bottom: 1px solid var(--s-g200); display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; } .acc-card-id { display: flex; align-items: center; gap: 10px; } .acc-rsn { font-family: 'DM Mono', monospace; font-size: 13px; font-weight: 700; color: var(--s-g900); } .acc-type-pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; background: var(--s-purple-l); color: var(--s-purple); } .acc-status-pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; background: var(--s-g100); color: var(--s-g500); &.act { background: var(--s-green-l); color: var(--s-green); } } .acc-card-amt { display: flex; align-items: baseline; gap: 6px; strong { font-size: 14px; color: var(--s-g900); font-family: 'DM Mono', monospace; } } .acc-card-body { padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; } .acc-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 18px; > div { display: flex; flex-direction: column; label { font-size: 10px; font-weight: 600; color: var(--s-g500); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1px; } span { font-size: 12px; color: var(--s-g900); } } } .acc-pc-block { background: var(--s-blue-l); border-radius: 8px; padding: 12px 14px; } .acc-pc-h { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; color: var(--s-blue); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 8px; } .acc-pc-addr { grid-column: 1 / -1; } /* Note */ .sft-note { background: var(--s-amber-l); border: 1px solid #fed7aa; border-radius: 10px; padding: 12px 16px; display: flex; gap: 10px; font-size: 12px; color: #92400e; line-height: 1.5; fa-icon { font-size: 14px; flex-shrink: 0; margin-top: 2px; } } /* Toast */ .sft-toast { position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%) translateY(20px); background: var(--s-navy); color: #fff; padding: 12px 22px; border-radius: 10px; font-size: 13px; font-weight: 500; box-shadow: 0 6px 20px rgb(0 0 0 / 25%); opacity: 0; pointer-events: none; transition: all 0.25s; z-index: 1500; &.show { opacity: 1; transform: translateX(-50%) translateY(0); } } @media (width <= 1100px) { .sft-kpis { grid-template-columns: repeat(3, 1fr); } .sft-codes { grid-template-columns: 1fr 1fr; } .acc-meta { grid-template-columns: 1fr 1fr; } } @media (width <= 720px) { .sft-kpis { grid-template-columns: 1fr 1fr; } .sft-codes { grid-template-columns: 1fr; } .acc-meta { grid-template-columns: 1fr; } }