:host { display: block; } .payroll-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; } .payroll-header h1 { letter-spacing: -.025em; } .payroll-header .header-actions { display: flex; align-items: center; gap: 10px; } .ui-button { min-height: 44px; padding: 0 16px; border-radius: 12px; font-size: 13px; font-weight: 750; } .refresh-action { border-color: #d6e2de; color: #38534a; background: #fff; } .export-action { border-color: #b9dace; color: #176c55; background: #edf8f4; } .refresh-action:hover, .export-action:hover { border-color: #86b7a6; color: #125e49; background: #f4faf7; } .payroll-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; gap: 12px; margin: 0 0 18px; padding: 8px; border: 1px solid #dfe8e4; border-radius: 14px; background: #fff; box-shadow: 0 6px 20px rgba(29, 62, 51, .04); } .payroll-tabs button { display: inline-flex; min-width: 0; white-space: nowrap; min-height: 44px; align-items: center; justify-content: center; gap: 10px; padding: 0 20px; border: 0; border-radius: 10px; color: #667972; background: transparent; font-weight: 750; } .payroll-tabs button:hover { color: #176c55; background: #f1f7f4; } .payroll-tabs button.active { border: 0; color: #fff; background: #176c55; box-shadow: 0 6px 14px rgba(23, 108, 85, .2); } .required-mark { color: #c84b45; } .evidence-field { display: grid; gap: 5px; } .evidence-field small { color: #87968f; font-size: 11px; } .payroll-toolbar { display: grid; grid-template-columns: 190px 220px minmax(260px, 1fr) auto auto; align-items: end; gap: 14px; padding: 18px; border-radius: 18px; } .payroll-toolbar label { min-width: 0; } .month-picker-field { position: relative; display: grid; gap: 6px; min-width: 0; color: #62716c; font-size: 12px; font-weight: 700; } .month-picker-trigger { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; width: 100%; height: 46px; align-items: center; gap: 8px; padding: 9px 11px; border: 1px solid #d7e1dd; border-radius: 12px; color: #486058; background: #fff; text-align: left; cursor: pointer; } .month-picker-trigger strong { overflow: hidden; color: #2a3c36; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .month-picker-trigger:hover, .month-picker-trigger.active, .month-picker-trigger:focus-visible { border-color: #7fae9f; outline: 0; background: #fbfefd; box-shadow: 0 0 0 3px rgba(31, 128, 102, .11); } .picker-chevron { color: #657972; } .month-calendar-popover { position: absolute; z-index: 85; top: calc(100% + 9px); left: 0; width: 310px; padding: 14px; border: 1px solid #d9e5e0; border-radius: 16px; background: #fff; box-shadow: 0 20px 55px rgba(24, 62, 49, .2); } .month-calendar-popover header { display: grid; grid-template-columns: 34px 1fr 34px; align-items: center; margin-bottom: 12px; } .month-calendar-popover header strong { color: #263b34; font-size: 14px; text-align: center; } .month-calendar-popover button { border: 0; border-radius: 9px; color: #415a51; background: transparent; cursor: pointer; } .month-calendar-popover button:hover, .month-calendar-popover button:focus-visible { outline: 0; color: #176c55; background: #edf7f3; } .month-calendar-popover header button { display: grid; width: 34px; height: 34px; place-items: center; } .month-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; } .month-grid button { min-height: 39px; font-size: 13px; font-weight: 700; } .month-grid button.selected { color: #fff; background: #1f8066; box-shadow: 0 6px 14px rgba(31, 128, 102, .2); } .month-calendar-popover footer { display: flex; justify-content: flex-end; margin-top: 10px; padding-top: 10px; border-top: 1px solid #e6eeeb; } .month-calendar-popover footer button { min-height: 34px; padding: 0 10px; font-weight: 700; } .payroll-toolbar input, .payroll-toolbar select { height: 46px; border-radius: 12px; } .filter-actions { display: flex; gap: 10px; } .reset-action { min-width: 80px; height: 46px; } .query-action { min-width: 96px; height: 46px; box-shadow: 0 8px 18px rgba(23, 108, 85, .16); } .source-chip { display: inline-flex; height: 46px; align-items: center; gap: 8px; padding: 0 16px; border: 1px solid #b9dfd2; border-radius: 14px; color: #167459; background: #edf9f5; font-size: 12px; font-weight: 750; white-space: nowrap; } .source-chip i { width: 8px; height: 8px; border-radius: 50%; background: #20a374; box-shadow: 0 0 0 4px rgba(32, 163, 116, .12); } .source-chip.cache { border-color: #f1c5c5; color: #b42318; background: #fff2f2; } .source-chip.cache i { background: #d92d20; box-shadow: 0 0 0 4px rgba(217, 45, 32, .1); } .payroll-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin: 18px 0; } .payroll-metrics article { position: relative; min-height: 138px; overflow: hidden; padding: 22px; border: 1px solid #dce7e3; border-radius: 18px; background: #fff; box-shadow: 0 10px 24px rgba(22, 52, 43, .05); } .payroll-metrics article::before { position: absolute; inset: 0 0 auto; height: 3px; background: #2f8c70; content: ''; } .payroll-metrics article:nth-child(2)::before, .payroll-metrics article:nth-child(3)::before { background: #4f80b5; } .payroll-metrics article:nth-child(4)::before, .payroll-metrics article:nth-child(5)::before { background: #d3902b; } .payroll-metrics .exception-card::before { background: #c85a5a; } .payroll-metrics span { display: block; color: #667c75; font-weight: 700; } .payroll-metrics strong { display: block; margin: 12px 0 6px; color: #16352d; font-size: clamp(24px, 2vw, 30px); line-height: 1.1; } .payroll-metrics small { color: #84958f; line-height: 1.45; } .payroll-metrics .exception-card strong { color: #b42318; } .content-card { border-radius: 18px; } .content-card > header { min-height: 72px; padding: 17px 20px; background: linear-gradient(180deg, #fff, #fbfdfc); } .content-card > header > div { display: flex; flex-direction: column; gap: 5px; } .content-card > header strong { color: #20352e; font-size: 16px; } .content-card > header span { color: #83918c; font-size: 12px; } .create-payroll-action { min-width: 190px; } .data-table td small { display: block; margin-top: 4px; color: #84958f; } .payroll-summary-table th, .payroll-summary-table td { white-space: nowrap; } .payroll-summary-table th { position: sticky; z-index: 1; top: 0; height: 44px; color: #64756f; background: #f5f9f7; font-weight: 750; letter-spacing: .02em; } .payroll-summary-table tbody tr:hover { background: #f7fbf9; } .payroll-summary-table td:first-child strong { color: #243a33; font-size: 13px; } .view-action { width: 36px; height: 36px; border-radius: 11px; color: #176c55; background: #f2f9f6; } .type4-note { margin: 0; padding: 14px 20px; border-top: 1px solid #e6eeeb; color: #667c75; background: #fafcfb; } .payroll-drawer { width: min(1180px, 92vw); } .payroll-drawer .table-scroll { max-height: 54vh; border: 1px solid #e2e9e6; border-radius: 14px; } .payroll-drawer footer { gap: 10px; } .ui-button.compact { min-height: 30px; padding: 0 9px; border-radius: 8px; font-size: 11px; } .money { color: #167459; font-weight: 800; } .standards-summary { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 14px; } .standards-summary article { padding:18px 20px;border:1px solid #dce7e3;border-radius:16px;background:#fff; } .standards-summary article.warn { border-color:#efc78e;background:#fff9ef; } .standards-summary span,.standards-summary strong { display:block; } .standards-summary span { color:#71837d;font-size:12px;font-weight:700; } .standards-summary strong { margin-top:8px;color:#173d32;font-size:24px; } .standards-nav { display:flex;gap:8px;margin-bottom:14px;overflow-x:auto;scrollbar-width:thin; } .standards-nav button { flex:0 0 auto;min-height:42px;padding:0 16px;border:1px solid #d7e3df;border-radius:12px;color:#50665e;background:#fff;font-weight:750;white-space:nowrap; } .standards-nav button.active { border-color:#176c55;color:#fff;background:#176c55; } .standards-nav button span { margin-left:5px;padding:2px 6px;border-radius:999px;color:#9a5a00;background:#fff2d9;font-size:11px; } .standard-editor .form-grid { grid-template-columns:repeat(5,minmax(130px,1fr)) minmax(220px,1.4fr) auto;align-items:end; } .effective-date-filter { --date-filter-height:46px; } .credit-preview { min-height:64px;padding:10px 13px;border:1px solid #d9e5e1;border-radius:12px;background:#f7fbf9; } .credit-preview span,.credit-preview strong { display:block; } .credit-preview span { color:#71837d;font-size:11px; } .credit-preview strong { margin-top:4px;color:#23493e;font-size:12px; } .standards-table td,.mapping-table td { white-space:nowrap; } .rate-matrix th:nth-child(3),.rate-matrix td:nth-child(3) { background:#f3faf7; } .rate-matrix th:nth-child(4),.rate-matrix td:nth-child(4) { background:#fff8ed; } .rate-matrix .offline-price { color:#9b6417; } .matrix-actions { display:flex;gap:6px; } .delivery-badge { display:inline-flex;padding:4px 9px;border-radius:999px;color:#156c54;background:#e9f8f2;font-size:12px;font-weight:750; } .delivery-badge.offline { color:#855411;background:#fff2d9; } .mapping-search { width:min(340px,100%); } .mapping-search input,.mapping-table select { min-height:42px;border:1px solid #d7e3df;border-radius:11px;background:#fff; } .mapping-table select { min-width:138px;padding:0 34px 0 11px; } .stage-badge { display:inline-flex;min-height:32px;align-items:center;padding:0 11px;border:1px solid #b9dace;border-radius:999px;color:#176c55;background:#edf8f4;font-size:12px;font-weight:800; } .stage-badge.missing { border-color:#efc7c2;color:#b42318;background:#fff2f0; } .stage-overview { display:flex;gap:10px;padding:18px 18px 0; } .stage-overview span { display:inline-flex;min-width:92px;min-height:38px;align-items:center;justify-content:center;border:1px solid #b9dace;border-radius:999px;color:#176c55;background:#edf8f4;font-weight:800; } .category-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px; } .category-grid article { padding:18px;border:1px solid #dce7e3;border-radius:14px;background:#fbfdfc; } .category-grid span,.category-grid strong,.category-grid small { display:block; } .category-grid span { color:#8a9a94;font-size:11px; } .category-grid strong { margin:5px 0;color:#1d4136; } .category-grid input { width:100%;margin:8px 0;border:1px solid #d5e2de;border-radius:10px;padding:9px 10px;background:#fff;color:#193a31;font:inherit; } .category-actions { display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 8px; } .muted-text { color:#98a7a2; } .reconciliation-card .header-actions { display:flex;align-items:center;gap:8px; } .reconciliation-summary { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:18px; } .reconciliation-summary.three-column { grid-template-columns:repeat(3,minmax(0,1fr)); } .reconciliation-summary article { padding:16px 18px;border:1px solid #dce7e3;border-radius:14px;background:#f8fbfa; } .reconciliation-summary span,.reconciliation-summary strong { display:block; } .reconciliation-summary span { color:#71837d;font-size:12px;font-weight:700; } .reconciliation-summary strong { margin-top:7px;color:#176c55;font-size:24px; } @media (max-width: 1400px) { .payroll-metrics { grid-template-columns: repeat(3, 1fr); } .payroll-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); } .source-chip { grid-column: 1 / -1; justify-self: start; } } @media (max-width: 900px) { .standards-summary,.category-grid,.reconciliation-summary,.reconciliation-summary.three-column { grid-template-columns:repeat(2,minmax(0,1fr)); } .standard-editor .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .payroll-header { align-items: stretch; flex-direction: column; } .payroll-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); } .payroll-toolbar .search-field { grid-column: 1 / -1; } .query-action { justify-self: start; } } @media (max-width: 700px) { .standards-summary,.category-grid,.standard-editor .form-grid { grid-template-columns:1fr; } .standards-nav { overflow-x:auto; } .payroll-header .header-actions { display: grid; grid-template-columns: 1fr 1fr; } .payroll-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .payroll-tabs button { min-height: 42px; padding: 0 10px; } .payroll-toolbar { grid-template-columns: 1fr; padding: 15px; } .payroll-toolbar .search-field, .source-chip { grid-column: auto; } .month-calendar-popover { position: fixed; top: 50%; left: 50%; width: min(330px, calc(100vw - 28px)); transform: translate(-50%, -50%); } .filter-actions > button { flex: 1; } .query-action, .source-chip { width: 100%; justify-self: stretch; justify-content: center; } .payroll-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .payroll-metrics article { min-height: 118px; padding: 16px; border-radius: 16px; } .payroll-metrics strong { font-size: 25px; } .content-card > header { align-items: stretch; flex-direction: column; } .create-payroll-action { width: 100%; } .payroll-drawer { width: 100vw; } .payroll-drawer .panel .form-grid { grid-template-columns: 1fr; } .payroll-drawer footer { display: grid; grid-template-columns: 1fr; } .stage-overview { overflow-x:auto; } } @media (max-width: 420px) { .payroll-header .header-actions, .payroll-metrics { grid-template-columns: 1fr; } }