.payroll-page{display:flex;flex-direction:column;gap:1rem;overflow:auto;padding:1.25rem;color:#1e293b}.payroll-page-header,.section-heading,.batch-overview{align-items:center;display:flex;justify-content:space-between}.payroll-page-header h1{font-size:1.7rem;margin-bottom:.2rem}.payroll-page-header p,.payroll-card p{color:#64748b}.payroll-card{background:#fff;border:1px solid #dbe4ef;border-radius:.65rem;box-shadow:0 1px 3px rgba(15,23,42,.05);padding:1rem 1.15rem}.payroll-card h2{font-size:1.05rem;margin-bottom:.2rem}.upload-card{align-items:center;display:flex;gap:1rem;justify-content:space-between}.upload-card form{align-items:center;display:flex;gap:.65rem}.form-message{font-size:.9rem;margin:0}.form-message.error{color:#b91c1c}.form-message.success{color:#047857}#payroll-workspace{display:flex;flex-direction:column;gap:1rem}.workflow{display:grid;gap:.35rem;grid-template-columns:repeat(3,1fr)}.workflow span{background:#e2e8f0;border-radius:.3rem;color:#64748b;font-size:.75rem;font-weight:700;padding:.55rem;text-align:center}.workflow span.done{background:#dcfce7;color:#166534}.workflow span.current{background:#dbeafe;color:#1d4ed8}.status-pill,.badge{border-radius:999px;display:inline-flex;font-size:.73rem;font-weight:700;padding:.25rem .55rem}.status-pill{background:#dbeafe;color:#1d4ed8}.status-pill.finalized{background:#dcfce7;color:#166534}.batch-overview{gap:2rem}.batch-overview>div:first-child{display:flex;flex:1;flex-direction:column;gap:.2rem}.batch-overview small{color:#64748b}.eyebrow{color:#64748b;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.overview-stat{border-left:1px solid #e2e8f0;display:flex;flex-direction:column;min-width:8rem;padding-left:1.25rem}.overview-stat strong{font-size:1.35rem}.overview-stat span{color:#64748b;font-size:.8rem}.exception-stat strong{color:#b91c1c}.section-heading{gap:1rem;margin-bottom:1rem}.search-field input{border:1px solid #cbd5e1;border-radius:.35rem;padding:.5rem .65rem;width:15rem}.table-scroll-wrap{overflow-x:auto}.payroll-table{border-collapse:collapse;width:100%}.payroll-table th{background:#f8fafc;color:#475569;font-size:.72rem;letter-spacing:.03em;padding:.65rem;text-align:left;text-transform:uppercase;white-space:nowrap}.payroll-table td{border-top:1px solid #e2e8f0;font-size:.84rem;padding:.65rem;vertical-align:middle}.payroll-table tr.needs-review{background:#fff7ed}.payroll-table .muted{color:#94a3b8}.payroll-table button{font-size:.78rem;padding:.35rem .55rem}.badge.normal,.badge.clear{background:#dcfce7;color:#166534}.badge.replacement{background:#fef3c7;color:#92400e}.badge.unmatched,.badge.ambiguous,.badge.pending{background:#fee2e2;color:#991b1b}.badge.confirmed{background:#dbeafe;color:#1d4ed8}.empty-state{color:#64748b;padding:1.25rem;text-align:center}.exception-list,.tip-list{display:flex;flex-direction:column;gap:.5rem}.exception-item,.tip-item{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.4rem;display:flex;gap:.75rem;justify-content:space-between;padding:.65rem .75rem}.exception-item.open{background:#fff7ed;border-color:#fed7aa}.exception-item span,.tip-item span{color:#64748b;font-size:.8rem}.payroll-grid{display:grid;gap:1rem;grid-template-columns:1.15fr .85fr}.reconciliation-head,.reconciliation-row{align-items:center;display:grid;gap:.5rem;grid-template-columns:1fr repeat(3,minmax(5rem,.75fr))}.reconciliation-head{color:#64748b;font-size:.7rem;text-transform:uppercase}.reconciliation-row{border-top:1px solid #e2e8f0;padding:.65rem 0}.reconciliation-row input{border:1px solid #cbd5e1;border-radius:.3rem;min-width:0;padding:.45rem}.reconciliation-row output{font-variant-numeric:tabular-nums}.reconciliation-row output.mismatch{color:#b91c1c;font-weight:700}.reconciliation-row output.match{color:#047857;font-weight:700}.report-table td:not(:first-child),.report-table th:not(:first-child){text-align:right}.report-table tfoot{background:#f1f5f9;font-weight:700}.review-alerts{display:flex;flex-wrap:wrap;gap:.35rem}.review-alerts span{background:#fee2e2;border-radius:.3rem;color:#991b1b;font-size:.78rem;font-weight:700;padding:.4rem .55rem}.source-grid,.field-grid{display:grid;gap:.75rem;grid-template-columns:repeat(3,1fr)}.field-grid{grid-template-columns:1fr 1fr}.source-grid>div{background:#f8fafc;border-radius:.35rem;display:flex;flex-direction:column;padding:.6rem}.source-grid span{color:#64748b;font-size:.75rem}.payroll-review-modal label{display:flex;flex-direction:column;font-size:.82rem;font-weight:700;gap:.3rem}.payroll-review-modal input,.payroll-review-modal select,.payroll-review-modal textarea{border:1px solid #cbd5e1;border-radius:.3rem;font:inherit;padding:.55rem}.audit-note{background:#eff6ff;border-radius:.35rem;font-size:.8rem;padding:.6rem}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}
@media(max-width:960px){.payroll-page{padding:.75rem}.upload-card,.payroll-page-header,.section-heading{align-items:stretch;flex-direction:column}.upload-card form{align-items:stretch;flex-direction:column;width:100%}.workflow{grid-template-columns:repeat(3,1fr)}.payroll-grid{grid-template-columns:1fr}.batch-overview{align-items:flex-start;flex-wrap:wrap}.overview-stat{border-left:0;padding-left:0}.search-field input{width:100%}.source-grid{grid-template-columns:1fr}.field-grid{grid-template-columns:1fr}.reconciliation-head,.reconciliation-row{grid-template-columns:1fr repeat(3,minmax(4.25rem,.75fr));font-size:.8rem}.review-card .payroll-table{min-width:62rem}}

.payroll-title {
    align-items: center;
    display: flex;
    gap: 0.65rem;
}

.payroll-page-header h1 {
    margin: 0;
}

.header-upload-form {
    align-items: center;
    display: flex;
    gap: 0.65rem;
    justify-content: flex-end;
}

.form-message:empty {
    display: none;
}

.review-action {
    align-items: center;
    display: flex;
    gap: 0.4rem;
    white-space: nowrap;
}

.payroll-table tr.excluded td:not(:last-child) {
    text-decoration: line-through;
}

.review-shift-meta {
    align-items: center;
    background: #f8fafc;
    border-radius: 0.35rem;
    display: grid;
    gap: 0.75rem;
    grid-template-columns: 1.5fr 1fr 1fr;
    padding: 0.6rem 0;
}

.review-shift-meta #source-name {
    color: #1f2937;
    font-size: 1.18rem;
    font-weight: 700;
}

.review-shift-meta strong:nth-child(n+2) {
    text-align: right;
}

.review-shift-meta strong:nth-child(n+2),
.payroll-review-modal .clock-row-label,
.payroll-review-modal .modal-content > label {
    color: #1f2937;
    font-size: 0.95rem;
    font-weight: 700;
}

.clock-review-grid {
    align-items: center;
    display: grid;
    gap: 0.5rem 0.75rem;
    grid-template-columns: minmax(7rem, auto) 1fr 1fr;
}

.clock-review-grid output,
.clock-review-grid input {
    font-variant-numeric: tabular-nums;
}

.clock-review-grid output {
    background: #f8fafc;
    border-radius: 0.3rem;
    color: #1e293b;
    font-weight: 700;
    padding: 0.55rem;
}

.payroll-review-modal select,
.payroll-review-modal textarea {
    box-sizing: border-box;
    color: #1e293b;
    font-size: 1rem;
    font-weight: 400;
    width: 100%;
}

.schedule-match-actions {
    display: grid;
    gap: 0.5rem;
    grid-template-columns: repeat(3, 1fr);
}

.schedule-match-actions button {
    color: #fff;
    font-size: 0.78rem;
    white-space: nowrap;
    width: 100%;
}

@media(max-width: 960px) {
    .payroll-page-header {
        gap: 0.75rem;
    }

    .header-upload-form {
        align-items: flex-start;
    }
}

.status-pill {
    text-transform: capitalize;
}
.schedule-review-actions{align-items:center;display:flex;gap:.5rem;white-space:nowrap}
.schedule-switch{position:relative}
.switch-employee-menu{background:#fff;border:1px solid #cbd5e1;border-radius:.4rem;box-shadow:0 8px 20px rgba(15,23,42,.16);display:flex;flex-direction:column;max-height:16rem;min-width:12rem;overflow-y:auto;padding:.3rem;position:absolute;right:0;top:calc(100% + .25rem);z-index:20}
.switch-employee-menu[hidden]{display:none}
.switch-employee-menu button{background:transparent;border:0;border-radius:.25rem;color:#1e293b;cursor:pointer;font-size:.82rem;padding:.45rem .55rem;text-align:left;white-space:nowrap}
.switch-employee-menu button:hover,.switch-employee-menu button:focus{background:#eff6ff;color:#1d4ed8}
.switch-employee-menu span{padding:.45rem .55rem}
.editable-hours{cursor:text;font-variant-numeric:tabular-nums;position:relative}
.editable-hours:hover{background:#eff6ff}
.hours-editor-sizing{visibility:hidden}
.hours-editor{background:#fff;border:2px solid #2563eb;border-radius:0;box-sizing:border-box;color:#1e293b;font:inherit;font-variant-numeric:tabular-nums;height:100%;inset:0;outline:0;padding:.65rem;position:absolute;width:100%}
.editable-schedule{cursor:text;font-variant-numeric:tabular-nums;position:relative}
.editable-schedule:hover{background:#eff6ff}
.schedule-editor-sizing{visibility:hidden;white-space:nowrap}
.schedule-editor{background:#fff;border:2px solid #2563eb;border-radius:0;box-sizing:border-box;color:#1e293b;font:inherit;font-variant-numeric:tabular-nums;height:100%;inset:0;outline:0;padding:.65rem;position:absolute;width:100%}
.workflow{grid-template-columns:repeat(4,1fr)}
@media(max-width:960px){.workflow{grid-template-columns:repeat(4,1fr)}}
.batch-overview>div.period-selector{align-items:center;display:flex;flex-direction:row;gap:.75rem;position:relative}
.payroll-period-select{min-width:15rem;position:relative}
.period-select-toggle{align-items:center;background:#fff;border:1px solid #cbd5e1;border-radius:.35rem;color:#1e293b;cursor:pointer;display:flex;font:inherit;font-weight:700;gap:1rem;justify-content:space-between;padding:.5rem .65rem;width:100%}
.period-select-options{background:#fff;border:1px solid #cbd5e1;border-radius:.35rem;box-shadow:0 8px 20px rgba(15,23,42,.16);left:0;max-height:11.25rem;overflow-y:auto;position:absolute;right:0;top:calc(100% + .25rem);z-index:30}
.period-select-options[hidden]{display:none}
.period-select-options button{background:#fff;border:0;box-sizing:border-box;color:#1e293b;cursor:pointer;display:block;font-size:.84rem;height:2.25rem;padding:.45rem .65rem;text-align:left;white-space:nowrap;width:100%}
.period-select-options button:hover,.period-select-options button:focus{background:#eff6ff;color:#1d4ed8}
.period-select-options button[aria-selected="true"]{background:#dbeafe;color:#1d4ed8;font-weight:700}
@media(max-width:960px){.batch-overview>div.period-selector{width:100%}.payroll-period-select{flex:1}}
