:root{font-family:Inter,system-ui,sans-serif;color:#17231f;background:#f4f7f5}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.loading,.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-shell{background:linear-gradient(145deg,#173f32,#0d251e)}.login-card{width:min(440px,100%);background:#fff;border-radius:24px;padding:32px}.brand-mark{width:68px;height:68px;display:grid;place-items:center;border-radius:18px;background:#173f32;color:#efd66e;font-size:24px;font-weight:900}.login-card form{display:grid;gap:10px;margin-top:24px}.login-card input{padding:13px;border:1px solid #ccd6d1;border-radius:12px}.login-card button,.primary{padding:12px 16px;border:0;border-radius:10px;background:#173f32;color:#fff;font-weight:800}.error{margin-top:16px;color:#a32121;background:#fff1f1;padding:12px;border-radius:10px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:18px 28px;background:#173f32;color:#fff}.brand-inline{font-size:22px;font-weight:900;color:#efd66e}.brand-inline span{color:#fff}.brand-inline.dark span{color:#173f32}.subtle{font-size:12px;color:#bfd1ca}.ghost{border:1px solid #4c7465;background:transparent;color:#fff;border-radius:10px;padding:9px 12px}.nav{display:flex;gap:8px;padding:10px 28px;background:#fff;border-bottom:1px solid #e0e8e4;overflow:auto}.nav button{border:0;background:transparent;padding:10px 14px;border-radius:10px;font-weight:700;color:#53655d}.nav button.active{background:#e8f2ed;color:#173f32}.content{max-width:1280px;margin:auto;padding:28px}.hero{display:flex;justify-content:space-between;gap:20px;align-items:center}.hero h1{margin:0}.hero p{color:#607069}.pill{background:#dff5e8;color:#16643d;padding:7px 12px;border-radius:999px;font-weight:800}.metrics{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:14px;margin-top:24px}.metric,.panel{background:#fff;border:1px solid #e3e9e6;border-radius:18px;padding:20px;box-shadow:0 5px 18px #1432270a}.metric div{color:#607069;font-size:13px}.metric strong{display:block;font-size:30px;margin-top:8px}.panel{margin-top:22px}.panel h2{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px}.form-grid label{display:grid;gap:6px;font-size:13px;font-weight:700}.form-grid input,.form-grid select{padding:11px 12px;border:1px solid #ccd6d1;border-radius:10px;background:#fff}.wide{grid-column:1/-1}.notice{margin-top:14px;padding:10px 12px;background:#eef7f2;border-radius:10px;color:#285942}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 10px;border-bottom:1px solid #e8eeeb;white-space:nowrap}th{font-size:12px;color:#607069;text-transform:uppercase}td button{border:1px solid #ccd6d1;background:#fff;border-radius:8px;padding:7px 10px}.danger{color:#9b2929!important}.mini-label{font-size:13px;font-weight:700;color:#53655d}.calculated{font-size:24px;font-weight:900;margin-top:8px}.action-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.action-row button:not(.primary){border:1px solid #ccd6d1;background:#fff;border-radius:8px;padding:9px 12px}.staff-link{width:100%;margin-top:14px;border:0!important;background:transparent!important;color:#315f4e!important;text-decoration:underline;font-weight:700!important}.staff-shell{min-height:100vh;background:#edf3f0;padding:18px;display:flex;justify-content:center;align-items:flex-start}.staff-card{width:min(620px,100%);background:#fff;border-radius:22px;padding:20px;box-shadow:0 12px 36px #1432271f}.staff-login{margin-top:10vh}.staff-login form{display:grid;gap:12px}.pin-input{font-size:30px;letter-spacing:10px;text-align:center;padding:16px;border:2px solid #bfd1ca;border-radius:14px;width:100%}.staff-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.staff-head h1{margin:4px 0 0}.staff-head button{border:1px solid #ccd6d1;background:#fff;border-radius:9px;padding:8px 11px}.staff-status{display:flex;justify-content:space-between;margin:20px 0;padding:14px 16px;border-radius:14px;background:#f3f5f4}.staff-status.good{background:#dff5e8;color:#16643d}.current-box{display:grid;gap:5px;padding:18px;border-radius:16px;background:#fff8d8;border:1px solid #eadb8a;margin-bottom:16px}.current-box>div{font-size:13px;font-weight:800;color:#75620a}.current-box strong{font-size:25px}.current-box span{color:#6e746f}.break-box{background:#e9f3ff;border-color:#b9d6f2}.staff-controls label{display:grid;gap:7px;font-weight:800}.staff-controls select{padding:14px;border:1px solid #ccd6d1;border-radius:12px;background:#fff}.activity-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.activity-grid button,.break-grid button,.big-action,.clockout{padding:16px 12px;border:0;border-radius:13px;font-weight:900}.activity-grid button{background:#edf2ef;color:#173f32}.activity-grid .cleaning{grid-column:1/-1;background:#173f32;color:#fff}.big-action{width:100%;margin:12px 0}.stop{background:#9b2929;color:#fff}.break-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.break-grid button{background:#e8eef6;color:#254b6e}.clockout{width:100%;margin-top:16px;background:#343c38;color:#fff}.staff-card button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:900px){.metrics,.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.content,.topbar,.nav{padding-left:16px;padding-right:16px}.metrics,.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.hero{align-items:flex-start}.activity-grid{grid-template-columns:1fr}.activity-grid .cleaning{grid-column:auto}}.live-money .metric small{display:block;margin-top:7px;font-size:12px;color:#607069;font-weight:700}.metric-profit{border-color:#bfe3cf;background:#fbfffc}.metric-loss{border-color:#efc8c8;background:snow}.metric-profit strong,.positive{color:#147a49}.metric-loss strong,.negative{color:#b42318}.section-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.section-head h2{margin-bottom:4px}.section-head p{margin:0 0 14px;color:#607069;font-size:13px;max-width:850px;line-height:1.45}.history-filter .section-head{align-items:flex-end;gap:18px}.preset-row{display:flex;flex-wrap:wrap;gap:8px}.preset-row button{border:1px solid #d4dfda;background:#fff;color:#173f32;border-radius:10px;padding:9px 12px;font-weight:700}.compact-grid{grid-template-columns:repeat(5,minmax(150px,1fr));align-items:end}.filter-action{display:flex;align-items:flex-end}.filter-action button{width:100%}.history-metrics{grid-template-columns:repeat(6,minmax(140px,1fr))}.warning-cell{background:#fff2cc;color:#7a4f00;font-weight:800}@media(max-width:1100px){.compact-grid{grid-template-columns:repeat(2,1fr)}.history-metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.compact-grid,.history-metrics{grid-template-columns:1fr}}.job-metrics{grid-template-columns:repeat(5,minmax(140px,1fr))}.schedule-notice{margin-top:18px}.job-status{display:inline-block;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:900}.job-status.scheduled{background:#edf3f0;color:#315f4e}.job-status.in-progress{background:#fff3cd;color:#7a5b00}.job-status.completed{background:#dff5e8;color:#16643d}.job-status.overdue{background:#ffe7e5;color:#a52b21}.job-status.missed{background:#f3e7ff;color:#6a2ca0}.job-status.cancelled{background:#ececec;color:#666}.subtle-dark{color:#7b8882}@media(max-width:1100px){.job-metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.job-metrics{grid-template-columns:1fr}}.expense-filter{grid-template-columns:repeat(4,minmax(160px,1fr))}.expense-metrics{grid-template-columns:repeat(3,minmax(160px,1fr))}.profit-metrics{grid-template-columns:repeat(6,minmax(145px,1fr))}.reconcile-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px}.reconcile-grid>div{border:1px solid #e3e9e6;border-radius:14px;padding:15px;background:#f8fbf9}.reconcile-grid span{display:block;color:#607069;font-size:12px;font-weight:700}.reconcile-grid strong{display:block;margin-top:7px;font-size:20px}@media(max-width:1100px){.profit-metrics{grid-template-columns:repeat(3,1fr)}.reconcile-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.expense-filter,.expense-metrics,.profit-metrics,.reconcile-grid{grid-template-columns:1fr}}.stock-alert{border-color:#e5c55d;background:#fff9df}.stock-filter-row{display:flex;gap:8px;flex-wrap:wrap}.stock-filter-row button{border:1px solid #ccd6d1;background:#fff;border-radius:10px;padding:9px 12px;font-weight:800;color:#53655d}.stock-filter-row button.active{background:#173f32;color:#fff;border-color:#173f32}.stock-metrics{grid-template-columns:repeat(4,minmax(140px,1fr))}.stock-status{display:inline-block;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:900}.stock-status.open{background:#ffe9b8;color:#755400}.stock-status.ordered{background:#e5efff;color:#23528a}.stock-status.delivered{background:#dff5e8;color:#16643d}.stock-status.closed{background:#ecefee;color:#5d6964}.stock-items{white-space:normal;min-width:190px;max-width:360px}.staff-stock-section{margin-top:24px;padding-top:22px;border-top:1px solid #e3e9e6}.staff-stock-section h2{margin:0 0 4px}.staff-stock-section>p{margin-top:0;color:#607069}.staff-stock-section form{display:grid;gap:12px}.staff-stock-section label{display:grid;gap:7px;font-weight:800}.staff-stock-section select,.staff-stock-section textarea{width:100%;padding:13px;border:1px solid #ccd6d1;border-radius:12px;background:#fff}.staff-stock-section textarea{min-height:96px;resize:vertical}.recent-stock{margin-top:22px}.recent-stock h3{margin-bottom:10px}.recent-stock-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(180px,2fr) auto;gap:10px;align-items:start;padding:12px 0;border-top:1px solid #e8eeeb}.recent-stock-row>div:first-child{display:grid;gap:2px}.recent-stock-row span{font-size:12px;color:#607069}.recent-stock-row .stock-status{color:inherit}.recent-stock-row small{grid-column:1/-1;color:#53655d}.stock-request-text{white-space:pre-wrap}@media(max-width:700px){.stock-metrics{grid-template-columns:repeat(2,1fr)}.recent-stock-row{grid-template-columns:1fr auto}.stock-request-text{grid-column:1/-1}}.site-location-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px;border:1px dashed #b8c9c1;border-radius:12px;background:#f8fbf9}.site-location-tools small{color:#607069;max-width:620px}.site-verified-chip{display:inline-block;margin-top:8px;padding:6px 9px;border-radius:999px;background:#dff5e8;color:#16643d;font-size:12px;font-weight:900}.site-address-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.site-address-tools small{flex-basis:100%;line-height:1.45}.site-advanced{border:1px solid #dde6e1;border-radius:12px;padding:12px 14px;background:#fafcfb}.site-advanced summary{cursor:pointer;font-weight:800;color:#42574e}.site-coordinate-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px;margin-top:12px}.site-advanced small{display:block;margin-top:8px;color:#607069}@media(max-width:700px){.site-coordinate-grid{grid-template-columns:1fr}.site-address-tools button{width:100%}}.timesheet-print-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:18px}.timesheet-company{font-size:14px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:#315f4e}.timesheet-print-header h2{margin:4px 0 0;font-size:28px}.timesheet-period{display:grid;gap:6px;text-align:right}.timesheet-table th,.timesheet-table td{white-space:nowrap}.timesheet-table tfoot th{background:#f2f6f4;border-top:2px solid #8fa69c}.timesheet-summary{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:14px;margin-top:18px}.timesheet-summary>div{border:1px solid #dde6e1;border-radius:14px;padding:16px;background:#f8fbf9}.timesheet-summary span{display:block;color:#607069;font-size:12px;font-weight:800}.timesheet-summary strong{display:block;margin-top:6px;font-size:24px}.timesheet-signatures{display:grid;grid-template-columns:repeat(2,1fr);gap:46px;margin-top:44px}.timesheet-signatures span{font-weight:800}.signature-line{height:34px;border-bottom:1px solid #333;margin-bottom:7px}.timesheet-signatures small{color:#66756f}.timesheet-note{margin-top:30px;font-size:12px;color:#607069;line-height:1.5}@media(max-width:800px){.timesheet-print-header{display:grid}.timesheet-period{text-align:left}.timesheet-summary,.timesheet-signatures{grid-template-columns:1fr}}@media print{body{background:#fff!important}.topbar,.nav,.no-print{display:none!important}.app-shell,.content,.timesheet-page{display:block!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important}.printable-timesheet{box-shadow:none!important;border:none!important;padding:0!important;margin:0!important}.timesheet-table-wrap{overflow:visible!important}.timesheet-table{width:100%!important;font-size:10pt!important}.timesheet-table th,.timesheet-table td{padding:7px 5px!important}.timesheet-print-header{display:flex!important}.timesheet-summary,.timesheet-signatures{grid-template-columns:repeat(2,1fr)!important}@page{size:A4 landscape;margin:12mm}}.timesheet-controls-grid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(320px,1fr);gap:24px;align-items:start}.staff-multi-select{border:1px solid #dde6e1;border-radius:14px;padding:14px;background:#fafcfb}.multi-select-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.multi-select-head span{font-size:12px;color:#607069;font-weight:800}.staff-select-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.staff-select-actions button{padding:7px 10px}.staff-check-list{display:grid;gap:3px;max-height:240px;overflow:auto;border-top:1px solid #e6ece9;padding-top:8px}.staff-check-row{display:flex!important;grid-template-columns:none!important;align-items:center;gap:9px!important;padding:7px 5px;font-weight:700!important;cursor:pointer}.staff-check-row input{width:auto!important;margin:0}.timesheet-date-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px}.timesheet-date-controls label{display:grid;gap:7px;font-weight:800}.timesheet-load-actions{grid-column:1/-1;margin-top:4px}.timesheet-print-stack{display:grid;gap:22px}.employee-timesheet-sheet{break-inside:avoid}@media(max-width:800px){.timesheet-controls-grid,.timesheet-date-controls{grid-template-columns:1fr}.timesheet-load-actions{grid-column:auto}}@media print{.timesheet-print-stack{display:block!important}.employee-timesheet-sheet{break-after:page;page-break-after:always;break-inside:auto!important;page-break-inside:auto!important;box-shadow:none!important;border:none!important;padding:0!important;margin:0!important}.employee-timesheet-sheet:last-child{break-after:auto;page-break-after:auto}}.ready-payroll-panel{border-color:#cfe3d9;background:#fbfefc}.timesheet-approval-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px;padding:12px;border:1px solid #e0e8e4;border-radius:12px;background:#fafcfb}.approval-status{display:inline-block;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:900}.approval-status.pending{background:#f0f2f1;color:#5b6862}.approval-status.employee-signed{background:#fff0c9;color:#725300}.approval-status.owner-signed{background:#dff5e8;color:#16643d}.timesheet-signoff-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:18px;margin-top:26px}.timesheet-signoff-grid>div{border:1px solid #dde6e1;border-radius:14px;padding:16px;min-height:108px;background:#fafcfb}.timesheet-signoff-grid span{display:block;color:#607069;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px}.timesheet-signoff-grid strong{display:block;font-size:20px;margin-bottom:6px}.timesheet-signoff-grid small{display:block;color:#5d6e66;line-height:1.45;margin-top:3px}.staff-timesheet-section{margin-top:24px;padding-top:22px;border-top:1px solid #e3e9e6}.staff-section-head h2{margin:0 0 4px}.staff-section-head p{margin:0;color:#607069;line-height:1.45}.staff-week-buttons{display:flex;gap:8px;margin:14px 0 12px}.staff-week-buttons button{border:1px solid #ccd6d1;background:#fff;border-radius:10px;padding:9px 12px;font-weight:800}.staff-week-buttons button.active{background:#173f32;color:#fff;border-color:#173f32}.staff-timesheet-period{margin-bottom:10px;color:#41564d}.staff-timesheet-table{border:1px solid #dde6e1;border-radius:12px;overflow:hidden;background:#fff}.staff-timesheet-row{display:grid;grid-template-columns:1.2fr 1fr .8fr;gap:10px;padding:10px 12px;border-top:1px solid #edf1ef;align-items:center}.staff-timesheet-row:first-child{border-top:0}.staff-timesheet-row.head{background:#f4f8f6;color:#566961;font-size:11px;font-weight:900;text-transform:uppercase}.staff-timesheet-row strong{text-align:right}.staff-timesheet-empty{padding:14px;color:#68766f}.staff-timesheet-total{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;font-weight:800}.staff-timesheet-total strong{font-size:22px}.staff-sign-box{display:grid;gap:10px;margin-top:8px;padding:14px;border:1px solid #dbe5e0;border-radius:12px;background:#fafcfb}.staff-sign-box label{display:grid;gap:7px;font-weight:800}.staff-sign-box input{width:100%;padding:12px;border:1px solid #ccd6d1;border-radius:10px}.staff-sign-box small{color:#67766f;line-height:1.45}.timesheet-staff-status{display:grid;gap:4px;padding:13px 14px;border-radius:12px;margin-top:8px}.timesheet-staff-status.signed{background:#fff5d7;color:#6c5200}.timesheet-staff-status.complete{background:#e4f6eb;color:#165f3a}.timesheet-staff-status span{font-size:12px}@media(max-width:700px){.timesheet-signoff-grid{grid-template-columns:1fr}.staff-timesheet-row{grid-template-columns:1.15fr .8fr .7fr;font-size:13px}}@media print{.timesheet-signoff-grid{grid-template-columns:repeat(2,1fr)!important}.timesheet-signoff-grid>div{background:#fff!important}}.export-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}.export-grid button{display:grid;gap:5px;text-align:left;padding:16px;border:1px solid #d8e2dd;background:#fafcfb;border-radius:14px}.export-grid button strong{font-size:15px}.export-grid button span{font-size:12px;color:#607069;line-height:1.4}.backup-panel{border-color:#dacb98;background:#fffdf5}.backup-warning{font-size:12px;color:#6f6040;margin-bottom:0}.customer-report-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;border-bottom:1px solid #dfe7e3;padding-bottom:14px;margin-bottom:18px}.customer-report-header h2{margin:4px 0 0}.customer-report-header>div:last-child{text-align:right}.customer-report-metrics{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;margin-bottom:24px}.customer-report-metrics>div{border:1px solid #dfe7e3;border-radius:12px;padding:13px;background:#fafcfb}.customer-report-metrics span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#607069;font-weight:800}.customer-report-metrics strong{display:block;font-size:20px;margin-top:5px}.customer-print-report h3{margin-top:26px}@media(max-width:1000px){.export-grid,.customer-report-metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.export-grid,.customer-report-metrics{grid-template-columns:1fr}.customer-report-header{display:grid}.customer-report-header>div:last-child{text-align:left}}@media print{.reports-page>.panel.no-print,.reports-page>.hero.no-print{display:none!important}.customer-print-report{display:block!important;box-shadow:none!important;border:none!important;margin:0!important;padding:0!important}}html{-webkit-text-size-adjust:100%}button,input,select,textarea{touch-action:manipulation}.staff-shell{padding-bottom:max(18px,env(safe-area-inset-bottom))}.staff-card{width:min(680px,100%)}.staff-card button{min-height:44px}.pin-input{font-size:24px!important;letter-spacing:.18em;text-align:center}@media(max-width:700px){.staff-shell{padding:0;background:#f4f7f5}.staff-card{min-height:100dvh;border-radius:0!important;border:0!important;box-shadow:none!important;padding:18px 16px 28px!important}.staff-head{position:sticky;top:0;z-index:5;background:#fff;padding:8px 0 12px;border-bottom:1px solid #e6ece9}.staff-status,.current-box{border-radius:14px}.activity-grid{grid-template-columns:1fr!important}.activity-grid button,.big-action,.clockout,.break-grid button{min-height:56px;font-size:16px}.break-grid{grid-template-columns:1fr 1fr}.staff-controls select,.staff-stock-section select,.staff-stock-section textarea,.staff-sign-box input{font-size:16px}.staff-timesheet-row{grid-template-columns:1.1fr .9fr .8fr!important}}@media(display-mode:standalone){body{overscroll-behavior-y:none}}
