/** * 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 { --d-navy: #0b1e3d; --d-blue: #1d4ed8; --d-blue-l: #eff6ff; --d-teal: #0e7e6b; --d-teal-l: #e0f4f0; --d-green: #15803d; --d-green-l: #dcfce7; --d-amber: #d97706; --d-amber-l: #fef3c7; --d-red: #c0392b; --d-red-l: #fdecea; --d-purple: #6d28d9; --d-purple-l: #ede9fe; --d-g50: #f8fafc; --d-g100: #f1f5f9; --d-g200: #e2e8f0; --d-g300: #cbd5e1; --d-g500: #64748b; --d-g700: #334155; --d-g900: #0f172a; display: block; font-family: 'DM Sans', system-ui, -apple-system, sans-serif; background: var(--d-g50); color: var(--d-g900); font-size: 14px; line-height: 1.5; } .deaf-root { padding: 18px 22px; max-width: 1400px; margin: 0 auto; } /* HEADER */ .deaf-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; } .deaf-head-left { display: flex; align-items: center; gap: 14px; } .deaf-head-ic { font-size: 28px; color: var(--d-purple); } .deaf-head-t { margin: 0; font-size: 18px; font-weight: 700; color: var(--d-g900); } .deaf-head-s { font-size: 12px; color: var(--d-g500); } .deaf-head-meta { display: flex; gap: 22px; > div { display: flex; flex-direction: column; .deaf-meta-l { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--d-g500); } .deaf-meta-v { font-size: 14px; font-weight: 600; color: var(--d-g900); } } } /* TABS */ .deaf-tabs { display: flex; gap: 4px; background: #fff; border: 1px solid var(--d-g200); border-radius: 10px; padding: 4px; margin-bottom: 16px; overflow-x: auto; } .deaf-tab { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border: none; background: transparent; font-size: 13px; font-weight: 500; color: var(--d-g500); cursor: pointer; border-radius: 7px; white-space: nowrap; transition: all 0.15s; font-family: inherit; &:hover { color: var(--d-g900); } &.active { background: var(--d-purple); color: #fff; box-shadow: 0 2px 6px rgb(109 40 217 / 25%); } } .deaf-section { display: flex; flex-direction: column; gap: 16px; } /* KPIs */ .deaf-kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } .deaf-kpi { background: #fff; border: 1px solid var(--d-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%); } } .deaf-kpi-ic { width: 42px; height: 42px; border-radius: 11px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; } .deaf-kpi--blue .deaf-kpi-ic { background: var(--d-blue-l); color: var(--d-blue); } .deaf-kpi--teal .deaf-kpi-ic { background: var(--d-teal-l); color: var(--d-teal); } .deaf-kpi--green .deaf-kpi-ic { background: var(--d-green-l); color: var(--d-green); } .deaf-kpi--amber .deaf-kpi-ic { background: var(--d-amber-l); color: var(--d-amber); } .deaf-kpi--red .deaf-kpi-ic { background: var(--d-red-l); color: var(--d-red); } .deaf-kpi-n { font-size: 18px; font-weight: 700; color: var(--d-g900); line-height: 1.1; } .deaf-kpi-l { font-size: 12px; color: var(--d-g700); margin-top: 2px; font-weight: 500; } .deaf-kpi-sub { font-size: 11px; color: var(--d-g500); margin-top: 1px; } /* COMPLIANCE CARDS */ .deaf-compliance { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; } .dc-card { background: #fff; border: 1px solid var(--d-g200); border-radius: 12px; padding: 14px 18px; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); } .dc-card-h { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: var(--d-g900); margin-bottom: 8px; } .dc-ok { color: var(--d-green); } .dc-info { color: var(--d-blue); } .dc-meta { font-size: 12px; color: var(--d-g500); margin: 2px 0; strong { color: var(--d-g900); font-weight: 600; } } .dc-btn { margin-top: 10px; padding: 6px 12px; border: 1px solid var(--d-purple); background: var(--d-purple-l); color: var(--d-purple); border-radius: 8px; font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; display: inline-flex; align-items: center; gap: 6px; &:hover { background: var(--d-purple); color: #fff; } } /* FORM HEADER ROW */ .deaf-form-meta { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; } .deaf-form-title { h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--d-g900); } p { margin: 2px 0 0; font-size: 12px; color: var(--d-g500); } } .deaf-meta-grid { background: #fff; border: 1px solid var(--d-g200); border-radius: 12px; padding: 14px 18px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 24px; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); > div { display: flex; flex-direction: column; label { font-size: 10px; font-weight: 600; color: var(--d-g500); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; } span { font-size: 13px; color: var(--d-g900); font-weight: 500; } } } /* BUTTONS */ .deaf-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--d-g300); background: #fff; border-radius: 8px; font-size: 13px; font-weight: 500; color: var(--d-g700); cursor: pointer; font-family: inherit; transition: all 0.15s; &:hover { background: var(--d-g50); border-color: var(--d-g500); } } .deaf-btn-xls { background: #16a34a; border-color: #16a34a; color: #fff; &:hover { background: #15803d; border-color: #15803d; color: #fff; } } .deaf-btn-g { align-self: end; } /* INPUTS */ .deaf-inp { width: 100%; padding: 8px 12px; border: 1px solid var(--d-g200); border-radius: 8px; font-size: 13px; background: #fff; font-family: inherit; &:focus { outline: none; border-color: var(--d-purple); box-shadow: 0 0 0 3px rgb(109 40 217 / 15%); } } /* FILTERS */ .deaf-filters { background: #fff; border: 1px solid var(--d-g200); border-radius: 12px; padding: 14px; display: grid; grid-template-columns: repeat(3, 1fr) auto; gap: 12px; align-items: end; } .deaf-filter { display: flex; flex-direction: column; gap: 4px; label { font-size: 11px; font-weight: 600; color: var(--d-g500); text-transform: uppercase; letter-spacing: 0.05em; } } /* TABLE */ .deaf-tbl-wrap { background: #fff; border: 1px solid var(--d-g200); border-radius: 12px; overflow: auto; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); } .deaf-tbl { width: 100%; border-collapse: collapse; th { text-align: left; padding: 10px 12px; font-size: 11px; font-weight: 600; color: var(--d-g500); text-transform: uppercase; letter-spacing: 0.04em; background: var(--d-g50); border-bottom: 1px solid var(--d-g200); } th.hd-1, tr.hd-1 th { background: #f0f4ff; color: var(--d-blue); } td { padding: 10px 12px; border-bottom: 1px solid var(--d-g100); font-size: 13px; color: var(--d-g700); vertical-align: top; } tr:last-child td { border-bottom: none; } tr:hover td { background: var(--d-g50); } tr.amt-bold td { background: #f0fdf4; font-weight: 600; color: var(--d-g900); } tr.amt-neg td { color: var(--d-red); } } .ta-c { text-align: center; } .ta-r { text-align: right; } .mono { font-family: 'DM Mono', monospace; font-size: 12px; letter-spacing: 0.02em; } .deaf-empty { text-align: center; padding: 30px; color: var(--d-g500); font-style: italic; } /* SIGNATURE BLOCKS */ .deaf-sign { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; } .deaf-sign-block { background: #fff; border: 1px solid var(--d-g200); border-radius: 12px; padding: 14px 16px; box-shadow: 0 1px 3px rgb(0 0 0 / 4%); label { font-size: 10px; font-weight: 600; color: var(--d-g500); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 6px; display: block; } .sign-name { font-size: 14px; font-weight: 600; color: var(--d-g900); } .sign-desg { font-size: 12px; color: var(--d-g500); margin-top: 2px; } } /* NOTE / INFO */ .deaf-note { background: var(--d-blue-l); border: 1px solid #bfdbfe; border-radius: 10px; padding: 12px 16px; display: flex; gap: 10px; font-size: 12px; color: #1e3a8a; line-height: 1.5; fa-icon { font-size: 14px; flex-shrink: 0; margin-top: 2px; } } /* PILLS */ .bucket-pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; &.bk-ibd { background: var(--d-blue-l); color: var(--d-blue); } &.bk-nibd { background: var(--d-teal-l); color: var(--d-teal); } &.bk-oc { background: var(--d-purple-l); color: var(--d-purple); } } .status-pill { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; &.st-eligible-this-month { background: var(--d-amber-l); color: var(--d-amber); } &.st-transferred { background: var(--d-green-l); color: var(--d-green); } &.st-claim-pending { background: var(--d-red-l); color: var(--d-red); } &.st-refunded { background: var(--d-blue-l); color: var(--d-blue); } } /* TOAST */ .deaf-toast { position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%) translateY(20px); background: var(--d-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); } } /* RESPONSIVE */ @media (width <= 1100px) { .deaf-kpis { grid-template-columns: repeat(3, 1fr); } .deaf-compliance { grid-template-columns: 1fr; } .deaf-meta-grid { grid-template-columns: 1fr 1fr; } .deaf-sign { grid-template-columns: 1fr; } .deaf-filters { grid-template-columns: 1fr 1fr; } } @media (width <= 720px) { .deaf-kpis { grid-template-columns: 1fr 1fr; } .deaf-meta-grid { grid-template-columns: 1fr; } }