:root{--bg:#f6f7f4;--surface:#fff;--surface-soft:#eef3ee;--line:#d9ded7;--line-strong:#c5cec5;--text:#171b18;--muted:#687168;--green:#17705b;--green-dark:#0d4f42;--blue:#1d5f93;--amber:#b66b04;--red:#b93535;--purple:#7651a8;--cyan:#237b83;--shadow:0 18px 55px #171b1814;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(135deg, #1d5f9314, transparent 34rem), linear-gradient(315deg, #17705b14, transparent 36rem), var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,textarea{font:inherit}button{border:0}.app-shell{grid-template-columns:330px minmax(0,1fr);min-height:100vh;display:grid}.app-shell.compact-mode .sidebar,.app-shell.compact-mode .workspace{padding:14px}.app-shell.compact-mode .site-button,.app-shell.compact-mode .contractor-button,.app-shell.compact-mode .management-card,.app-shell.compact-mode .staff-form,.app-shell.compact-mode .staff-remove{padding:8px}.app-shell.compact-mode .cell-button{height:30px}.app-shell.compact-mode .timesheet td{height:32px}.login-screen{place-items:center;min-height:100vh;padding:22px;display:grid}.login-panel{border:1px solid var(--line);width:min(440px,100%);box-shadow:var(--shadow);background:#fffffff0;border-radius:8px;gap:22px;padding:24px;display:grid}.login-brand{border-bottom:1px solid var(--line);padding-bottom:16px}.login-form{gap:14px;display:grid}.form-error{color:var(--red);background:#fff5f5;border:1px solid #f3c6c6;border-radius:8px;padding:10px 12px;font-weight:750}.sidebar{border-right:1px solid var(--line);background:#fbfcfa;flex-direction:column;gap:18px;min-height:100vh;padding:22px 18px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand-mark{color:#fff;background:linear-gradient(145deg, var(--green), var(--blue));border-radius:8px;place-items:center;width:42px;height:42px;display:grid;box-shadow:0 12px 24px #17705b38}.brand strong{font-size:1.04rem;display:block}.brand small,.muted{color:var(--muted)}.user-card{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:12px;display:flex}.user-card strong,.user-card span{display:block}.user-card span{color:var(--muted);margin-top:2px;font-size:.8rem;font-weight:750}.sync-card{color:#0d4f42;background:#eef8f3;border:1px solid #c9ddd4;border-radius:8px;gap:4px;padding:10px 12px;display:grid}.sync-card strong{font-size:.82rem}.sync-card span{color:#4f5d52;font-size:.78rem;font-weight:700;line-height:1.35}.sync-card.error{color:#9f2424;background:#fff3f3;border-color:#f0b7b7}.sync-card.saving{color:var(--blue);background:#eef7fb;border-color:#b9d9ea}.section-label{color:#39413a;text-transform:uppercase;letter-spacing:0;justify-content:space-between;align-items:center;gap:7px;font-size:.77rem;font-weight:800;display:flex}.scope-switch,.module-nav,.site-switch,.status-palette{gap:8px;display:grid}.scope-switch{grid-template-columns:1fr 1fr}.site-switch{grid-template-columns:1fr}.utility-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.file-action{cursor:pointer;position:relative;overflow:hidden}.file-action input{opacity:0;cursor:pointer;position:absolute;inset:0}.month-archive{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:170px;padding-right:2px;display:grid;overflow:auto}.month-chip{border:1px solid var(--line);min-height:32px;color:var(--text);cursor:pointer;background:#fff;border-radius:8px;font-size:.76rem;font-weight:800;position:relative}.month-chip:hover,.month-chip.active{color:var(--green-dark);background:#e8f3ee;border-color:#17705b59}.month-chip.has-data:after{content:"";background:var(--green);border-radius:999px;width:6px;height:6px;position:absolute;top:6px;right:7px}.pill-button,.module-button,.site-button,.contractor-button,.icon-button,.status-button{border:1px solid var(--line);background:var(--surface);min-height:38px;color:var(--text);cursor:pointer;border-radius:8px;transition:border-color .16s,background .16s,transform .16s,box-shadow .16s}.pill-button,.module-button,.icon-button,.status-button{justify-content:center;align-items:center;gap:8px;padding:9px 11px;font-weight:750;display:inline-flex}.icon-button.compact{min-height:34px;padding:7px 9px}.pill-button:hover,.module-button:hover,.site-button:hover,.contractor-button:hover,.icon-button:hover,.status-button:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:0 10px 24px #171b1814}.pill-button.active,.module-button.active,.site-button.active,.contractor-button.active,.status-button.active{color:var(--green-dark);background:#e8f3ee;border-color:#17705b59}.module-button{text-align:left;justify-content:flex-start;width:100%;min-height:50px}.module-button span,.module-button strong,.module-button small{display:block}.module-button small{color:var(--muted);margin-top:2px;font-size:.74rem;font-weight:750}.field-group{gap:8px;display:grid}.field-group>span:not(.section-label),.field-group label{color:#39413a;font-size:.8rem;font-weight:800}.month-input,.search-input,.note-input,.select-input{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:8px;outline:0;padding:10px 12px}.month-input:focus,.search-input:focus,.note-input:focus,.select-input:focus{border-color:#17705b8c;box-shadow:0 0 0 4px #17705b1f}.select-input{min-height:41px}.site-button,.contractor-button{text-align:left;width:100%;padding:11px 12px}.site-button-top,.contractor-main{justify-content:space-between;align-items:center;gap:10px;display:flex}.site-button strong,.contractor-button strong{font-size:.92rem;display:block}.site-button small,.contractor-button small{color:var(--muted);margin-top:3px;line-height:1.3;display:block}.badge{color:#344139;background:#eef3ee;border-radius:8px;place-items:center;min-width:34px;height:26px;padding:0 8px;font-size:.78rem;font-weight:850;display:inline-grid}.contractor-list{gap:8px;padding-right:2px;display:grid;overflow:auto}.workspace{min-width:0;padding:22px;overflow-x:hidden}.topbar{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.eyebrow{color:var(--green-dark);text-transform:uppercase;letter-spacing:0;align-items:center;gap:8px;font-size:.78rem;font-weight:850;display:inline-flex}.page-title{letter-spacing:0;margin:6px 0;font-size:clamp(1.45rem,2.5vw,2.25rem);line-height:1.08}.topbar p{color:var(--muted);max-width:840px;margin:0;line-height:1.5}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.dashboard-grid{grid-template-columns:minmax(0,1fr) minmax(280px,318px);align-items:start;gap:18px;min-width:0;display:grid}.main-column{gap:16px;min-width:0;display:grid}.page-stack{gap:16px;display:grid}.metric-grid{grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-height:92px;padding:14px;box-shadow:0 12px 30px #171b180d}.metric-card small{color:var(--muted);font-weight:750}.metric-card strong{margin-top:9px;font-size:1.6rem;line-height:1;display:block}.metric-card span{color:var(--muted);margin-top:8px;font-size:.82rem;display:block}.overview-summary{grid-template-columns:minmax(180px,.42fr) minmax(280px,.78fr) minmax(320px,1fr);align-items:stretch;gap:12px;display:grid}.overview-main,.mini-metric,.site-summary-item,.role-preview,.user-detail-card{border:1px solid var(--line);background:#fff;border-radius:8px}.overview-main{color:var(--green-dark);align-content:center;gap:6px;padding:14px;display:grid}.overview-main small,.mini-metric small{color:var(--muted);font-weight:800}.overview-main strong{font-size:2rem;line-height:1}.overview-main span,.site-summary-item span{color:var(--muted);font-size:.82rem;font-weight:750}.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.mini-metric{align-content:center;gap:5px;padding:12px;display:grid}.mini-metric strong{font-size:1.2rem}.site-summary-list{gap:8px;display:grid}.site-summary-item{gap:4px;padding:10px 12px;display:grid}.control-band,.table-panel,.inspector,.visual-band,.staff-manager,.management-grid,.management-card,.admin-dashboard,.admin-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffeb;border-radius:8px}.control-band{grid-template-columns:minmax(230px,.72fr) minmax(430px,1.28fr);gap:14px;min-width:0;padding:12px;display:grid}.filter-strip,.bulk-tools,.filter-select-row{grid-column:1/-1}.filter-strip{flex-wrap:wrap;gap:7px;display:flex}.filter-chip{border:1px solid var(--line);min-height:32px;color:var(--text);cursor:pointer;background:#fff;border-radius:8px;padding:6px 10px;font-size:.78rem;font-weight:800}.filter-chip.active,.filter-chip:hover{color:var(--green-dark);background:#e8f3ee;border-color:#17705b59}.bulk-tools{flex-wrap:wrap;align-items:end;gap:8px;padding-top:2px;display:flex}.filter-select-row{grid-template-columns:repeat(2,minmax(180px,1fr));gap:8px;display:grid}.filter-select-row label{color:var(--muted);gap:5px;font-size:.72rem;font-weight:800;display:grid}.bulk-tools label{color:var(--muted);gap:4px;font-size:.72rem;font-weight:800;display:grid}.number-input{border:1px solid var(--line);border-radius:8px;outline:0;width:74px;padding:8px 9px}.compact-select{width:auto;min-width:150px}.status-palette{grid-template-columns:repeat(auto-fit,minmax(46px,1fr));align-items:center;width:100%;min-width:0;max-width:100%}.status-button{min-width:44px;min-height:40px;padding:8px 10px}.toast{z-index:80;max-width:min(360px,100vw - 44px);color:var(--green-dark);box-shadow:var(--shadow);background:#eefaf3;border:1px solid #b9d8c8;border-radius:8px;padding:12px 14px;font-weight:850;position:fixed;top:22px;right:22px}.toast.error{color:var(--red);background:#fff5f5;border-color:#f3c6c6}.modal-backdrop{z-index:90;background:#1018146b;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.confirm-modal{border:1px solid var(--line);width:min(430px,100%);box-shadow:var(--shadow);background:#fff;border-radius:8px;gap:12px;padding:18px;display:grid}.confirm-modal h2,.confirm-modal p{margin:0}.confirm-modal p{color:var(--muted);line-height:1.45}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.export-modal,.backup-modal{width:min(560px,100%)}.option-list{gap:9px;display:grid}.check-row{border:1px solid var(--line);color:#384239;background:#fbfcfa;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-weight:750;display:flex}.check-row input{width:18px;height:18px;accent-color:var(--green)}.backup-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.backup-summary div{border:1px solid var(--line);background:#fbfcfa;border-radius:8px;padding:10px}.backup-summary small,.backup-summary strong{display:block}.backup-summary small{color:var(--muted);font-size:.75rem;font-weight:800}.backup-summary strong{margin-top:5px;font-size:1.35rem}.icon-button.primary{color:#fff;background:var(--green);border-color:var(--green)}.icon-button.danger{color:var(--red);background:#fff5f5;border-color:#f3c6c6}.icon-button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none;transform:none}.staff-manager{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:14px;padding:14px;display:grid}.management-stack{gap:12px;display:grid}.tab-bar{border:1px solid var(--line);background:#ffffffeb;border-radius:8px;flex-wrap:wrap;gap:8px;padding:8px;display:flex;box-shadow:0 10px 26px #171b180d}.staff-tabs{grid-column:1/-1}.tab-button{border:1px solid var(--line);min-height:34px;color:var(--text);cursor:pointer;background:#fff;border-radius:8px;padding:7px 11px;font-weight:850}.tab-button.active,.tab-button:hover{color:var(--green-dark);background:#e8f3ee;border-color:#17705b59}.management-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;padding:14px;display:grid}.management-card{box-shadow:none;background:#fbfcfa;align-content:start;gap:12px;padding:12px;display:grid}.admin-dashboard{grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:14px;padding:14px;display:grid}.admin-card{box-shadow:none;background:#fbfcfa;align-content:start;gap:12px;padding:12px;display:grid}.staff-form{border:1px solid var(--line);background:#fbfcfa;border-radius:8px;grid-template-columns:1fr;align-items:stretch;gap:10px;padding:12px;display:grid}.staff-form h2,.management-card h2,.admin-card h2{margin:5px 0 0;font-size:1rem}.utility-card,.staff-form>div:first-child{grid-column:1/-1}.staff-remove{border:1px solid var(--line);background:#fbfcfa;border-radius:8px;align-content:start;gap:10px;padding:12px;display:grid}.remove-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.form-grid.compact{grid-template-columns:minmax(0,1fr) minmax(0,.8fr)}.permission-note,.role-hints{border:1px dashed var(--line-strong);color:var(--muted);background:#fff;border-radius:8px;padding:10px 12px;font-size:.82rem;font-weight:750}.role-hints{grid-template-columns:1fr 1fr;gap:8px;display:grid}.role-hints strong,.role-hints span{display:block}.role-hints span{margin-top:3px;font-weight:650;line-height:1.35}.role-preview{gap:10px;padding:11px 12px;display:grid}.role-preview strong,.role-preview span,.user-detail-card strong,.user-detail-card span{display:block}.role-preview>div:first-child span,.user-detail-card span{color:var(--muted);margin-top:3px;font-size:.82rem;font-weight:700}.permission-chip-list{flex-wrap:wrap;gap:6px;display:flex}.permission-chip{color:var(--green-dark);background:#e8f3ee;border:1px solid #17705b38;border-radius:8px;padding:5px 8px;font-size:.72rem;font-weight:850}.muted-chip{border-color:var(--line);color:var(--muted);background:#f6f7f4}.password-reset-row,.log-toolbar{gap:8px;display:grid}.password-reset-row{grid-template-columns:minmax(0,1fr) auto}.user-detail-card{gap:3px;padding:11px 12px;display:grid}.role-create-form{grid-template-columns:minmax(0,.85fr) minmax(0,1.25fr) auto;align-items:stretch;gap:10px;display:grid}.role-editor-list{gap:10px;display:grid}.role-editor{border:1px solid var(--line);background:#fff;border-radius:8px;gap:10px;padding:12px;display:grid}.role-editor-head{grid-template-columns:minmax(180px,.45fr) minmax(0,1fr);gap:10px;display:grid}.permission-grid{grid-template-columns:repeat(3,minmax(160px,1fr));gap:8px;display:grid}.permission-toggle{border:1px solid var(--line);min-height:42px;color:var(--text);background:#fbfcfa;border-radius:8px;align-items:center;gap:9px;padding:9px 10px;font-size:.82rem;font-weight:800;display:flex}.permission-toggle.active{color:var(--green-dark);background:#e8f3ee;border-color:#17705b59}.permission-toggle input{width:16px;height:16px;accent-color:var(--green);margin:0}.role-editor-head input:disabled{opacity:.78;cursor:not-allowed}.permission-toggle:has(input:disabled){opacity:.78;cursor:not-allowed}.log-toolbar{grid-template-columns:minmax(220px,1fr) repeat(3,minmax(150px,.7fr)) auto;align-items:stretch}.search-with-icon{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.search-with-icon input{width:100%;min-height:39px;color:var(--text);background:0 0;border:0;outline:0}.filter-summary{color:var(--muted);align-items:center;gap:7px;font-size:.78rem;font-weight:800;display:inline-flex}.log-list{gap:8px;max-height:310px;padding-right:2px;display:grid;overflow:auto}.log-item{border:1px solid var(--line);background:#fff;border-radius:8px;gap:6px;padding:10px;display:grid}.log-item strong,.log-item span,.log-item small{display:block}.log-item span,.log-item small,.log-item p{color:var(--muted)}.log-item p{margin:0;font-size:.82rem}.log-item small{font-weight:750}.table-panel{min-width:0;overflow:hidden}.table-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.table-heading h2{margin:0;font-size:1rem}.table-heading small{color:var(--muted)}.table-scroll{max-height:calc(100vh - 355px);overflow:auto}.timesheet{border-collapse:separate;border-spacing:0;width:100%;min-width:1180px;font-size:.86rem}.timesheet th,.timesheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.timesheet th{z-index:2;color:#3f4940;text-align:center;background:#f3f6f1;padding:9px 7px;font-size:.76rem;position:sticky;top:0}.timesheet th:first-child,.timesheet td:first-child{z-index:3;border-left:0;min-width:238px;max-width:238px;position:sticky;left:0}.timesheet th:first-child{z-index:4}.timesheet th:nth-child(2),.timesheet td:nth-child(2){z-index:3;min-width:112px;max-width:112px;position:sticky;left:238px}.timesheet th:nth-child(2){z-index:4}.timesheet tbody tr:hover td{background-color:#f4faf7}.timesheet tbody tr.selected-person-row td{background-color:#edf7f2}.timesheet tbody tr:hover .cell-button,.timesheet tbody tr.selected-person-row .cell-button{box-shadow:inset 0 0 0 1px #17705b1f}.person-cell{padding:10px 12px}.person-cell strong{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.person-cell small{color:var(--muted);margin-top:2px;display:block}.role-cell,.total-cell{text-align:center;color:#384239;min-width:96px;padding:8px;font-weight:750}.total-cell{background:#fbfcfa;min-width:78px}.day-head{min-width:44px}.day-head span,.day-head small{display:block}.day-head small{color:var(--muted);margin-top:2px}.weekend,.timesheet td.weekend{background:#faf1e7}.cell-button{color:#2b332d;cursor:pointer;background:0 0;border-radius:0;place-items:center;width:100%;min-width:43px;height:38px;font-size:.78rem;font-weight:850;display:grid}.cell-button:hover,.cell-button.selected{outline-offset:-2px;outline:2px solid #17705b52}.status-empty{color:#9aa39b}.status-present{color:var(--green-dark);background:#dcf1e6}.status-half{color:var(--amber);background:#fff0cf}.status-absent{color:var(--red);background:#ffe2e2}.status-leave{color:var(--blue);background:#e3f0fb}.status-weekly-leave{color:#3f6d12;background:#e7f8da}.status-annual-leave{color:#0f766e;background:#dff7ef}.status-excuse-leave{color:#925f00;background:#fff4d6}.status-paternity-leave{color:#3352a3;background:#e6edff}.status-maternity-leave{color:#a91f62;background:#ffe4f1}.status-report{color:var(--purple);background:#eee7f8}.status-overtime{color:var(--cyan);background:#dff4f5}.visual-band{grid-template-columns:minmax(0,1.15fr) minmax(210px,.85fr);gap:12px;padding:14px;display:grid}.site-map{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.map-tile{border:1px solid var(--line);border-left:5px solid var(--tile);background:#fbfcfa;border-radius:8px;min-height:54px;padding:8px;overflow:hidden}.map-tile.active{background:#edf7f2;border-color:#17705b57}.map-tile strong,.map-tile small{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.map-tile strong{font-size:.76rem}.map-tile small{color:var(--muted);margin-top:4px;font-size:.72rem}.capacity-panel{border-left:1px solid var(--line);gap:10px;padding-left:12px;display:grid}.capacity-panel h3{margin:0;font-size:.95rem}.progress-line{gap:5px;display:grid}.progress-line label{color:var(--muted);justify-content:space-between;gap:10px;font-size:.78rem;font-weight:800;display:flex}.progress-track{background:#e5ebe5;border-radius:8px;height:8px;overflow:hidden}.progress-track span{height:100%;width:var(--value);background:var(--color);display:block}.inspector{gap:16px;min-width:0;max-width:100%;padding:16px;display:grid;position:sticky;top:20px;overflow:hidden}.inspector h2,.inspector h3{margin:0}.inspector h2{font-size:1rem}.selected-record{border:1px solid var(--line);background:#fbfcfa;border-radius:8px;min-width:0;padding:12px}.selected-record strong,.selected-record span{display:block}.selected-record span{color:var(--muted);margin-top:3px}.note-input{resize:vertical;min-height:88px}.inspector .field-group,.inspector .search-input,.inspector .note-input,.inspector .selected-record{min-width:0;max-width:100%}.inspector .status-palette{grid-template-columns:repeat(auto-fit,minmax(38px,1fr));width:100%;min-width:0}.inspector .status-button{min-width:0;padding:8px 6px}.legend{grid-template-columns:1fr 1fr;gap:8px;display:grid}.legend-item{color:#414a42;align-items:center;gap:7px;font-size:.78rem;font-weight:750;display:flex}.legend-dot{border-radius:6px;place-items:center;width:22px;height:22px;font-size:.66rem;font-weight:900;display:grid}.empty-state{color:var(--muted);border:1px dashed var(--line-strong);border-radius:8px;gap:8px;padding:14px;display:grid}.empty-state strong{color:var(--text)}.department-strip{gap:8px;display:grid}.department-item{border:1px solid var(--line);color:#39413a;background:#fff;border-radius:8px;justify-content:space-between;gap:8px;padding:9px 10px;font-weight:750;display:flex}.side-stack,.analysis-panel,.workflow-panel,.warning-panel,.history-panel,.import-panel,.mobile-entry-panel,.preferences-panel{min-width:0}.side-stack{align-content:start;gap:14px;display:grid}.workflow-panel,.warning-panel,.history-panel,.import-panel,.mobile-entry-panel,.analysis-panel{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffeb;border-radius:8px}.workflow-panel,.warning-panel,.history-panel,.import-panel{gap:12px;padding:14px;display:grid}.workflow-panel.locked{background:#fff8f8;border-color:#b9353559}.workflow-head,.analysis-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.workflow-head h2,.analysis-head h2,.import-panel h2{margin:4px 0 0;font-size:1rem}.workflow-head small,.analysis-head small,.import-panel small{color:var(--muted);margin-top:5px;font-weight:750;display:block}.approval-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.approval-step{border:1px solid var(--line);min-height:74px;color:var(--text);cursor:pointer;text-align:left;background:#fbfcfa;border-radius:8px;align-content:center;gap:5px;padding:10px;display:grid}.approval-step.active{color:var(--green-dark);background:#e8f3ee;border-color:#17705b61}.approval-step:disabled,.file-action.disabled{opacity:.58;cursor:not-allowed}.approval-step span{color:var(--muted);font-size:.76rem;font-weight:750}.approval-badge{min-height:30px;color:var(--green-dark);background:#e8f3ee;border:1px solid #17705b33;border-radius:8px;align-items:center;padding:5px 9px;font-size:.76rem;font-weight:900;display:inline-flex}.approval-badge.approved{color:var(--red);background:#ffe2e2;border-color:#b9353540}.warning-panel.has-warning{border-color:#b66b043d}.warning-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;display:grid}.warning-item{border:1px solid var(--line);background:#fff;border-radius:8px;gap:4px;padding:10px;display:grid}.warning-item span{color:var(--muted);font-size:.8rem;font-weight:700}.warning-item.danger{background:#fff5f5;border-color:#b9353547}.warning-item.warning{background:#fff8ea;border-color:#b66b0447}.warning-item.ok,.warning-item.info{background:#f1faf5;border-color:#17705b3d}.history-list{gap:8px;max-height:420px;display:grid;overflow:auto}.history-item{border:1px solid var(--line);background:#fff;border-radius:8px;gap:4px;padding:10px;display:grid}.history-item span,.history-item small{color:var(--muted);font-size:.78rem;font-weight:720}.import-panel{grid-template-columns:minmax(0,1fr) auto;align-items:center}.preferences-panel{border-top:1px solid var(--line);gap:8px;margin-top:10px;padding-top:10px;display:grid}.setting-toggle{min-height:34px;color:var(--text);justify-content:space-between;align-items:center;gap:10px;font-size:.78rem;font-weight:850;display:flex}.setting-toggle span{align-items:center;gap:7px;display:inline-flex}.setting-toggle input{width:16px;height:16px;accent-color:var(--green)}.mobile-entry-panel{overflow:hidden}.mobile-day-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;padding:14px;display:grid}.mobile-day-card{border:1px solid var(--line);min-height:76px;color:var(--text);cursor:pointer;background:#fff;border-radius:8px;align-content:center;justify-items:center;gap:3px;display:grid}.mobile-day-card:disabled{cursor:not-allowed;opacity:.62}.mobile-day-card strong{font-size:1rem}.mobile-day-card small{color:var(--muted);text-align:center;font-size:.72rem;font-weight:800}.analysis-panel{gap:14px;padding:14px;display:grid}.report-filters{grid-template-columns:repeat(3,minmax(170px,1fr)) minmax(220px,1.2fr);align-items:end;gap:10px;display:grid}.report-filters label{color:var(--muted);gap:5px;font-size:.74rem;font-weight:850;display:grid}.report-search{align-self:end;min-height:42px}.report-cards,.profile-summary{grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;display:grid}.profile-summary{grid-template-columns:repeat(5,minmax(120px,1fr))}.report-card,.profile-card,.firm-total-item{border:1px solid var(--line);background:#fbfcfa;border-radius:8px}.report-card{gap:6px;padding:12px;display:grid}.report-card small,.report-card span,.firm-total-item span,.firm-total-item small,.profile-card span,.profile-card small{color:var(--muted);font-weight:750}.report-card strong{color:var(--green-dark);font-size:1.3rem}.report-split,.profile-detail-grid{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);align-items:start;gap:12px;display:grid}.report-table-wrap,.firm-total-list{min-width:0}.report-table-wrap h3,.firm-total-list h3{margin:0 0 8px;font-size:.95rem}.report-table{border-collapse:separate;border-spacing:0;border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;font-size:.82rem;overflow:hidden}.report-table th,.report-table td{border-bottom:1px solid var(--line);text-align:left;padding:9px 10px}.report-table th{color:var(--muted);background:#f3f6f1;font-size:.74rem}.report-table td small,.report-table td strong{display:block}.report-table td small{color:var(--muted);margin-top:2px}.firm-total-list{gap:8px;display:grid}.firm-total-item{gap:4px;padding:10px;display:grid}.profile-panel .analysis-head{align-items:center}.profile-panel .analysis-head .select-input{max-width:340px}.profile-card{gap:6px;padding:14px;display:grid}.profile-timeline{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:7px;display:grid}.profile-day{border:1px solid var(--line);min-height:54px;color:var(--text);background:#fff;border-radius:8px;place-items:center;gap:1px;display:grid}.profile-day strong,.profile-day span{line-height:1}.code-only-mode .legend-item span:last-child,.code-only-mode .mobile-day-card small{display:none}.free-columns-mode .timesheet th:first-child,.free-columns-mode .timesheet td:first-child,.free-columns-mode .timesheet th:nth-child(2),.free-columns-mode .timesheet td:nth-child(2){position:static}.large-text-mode{font-size:1.05rem}.dark-mode{--bg:#101815;--surface:#17231f;--surface-soft:#1e2d28;--line:#31423b;--line-strong:#43564e;--text:#eef5ef;--muted:#a9b8ae;background:var(--bg);color:var(--text)}.dark-mode .sidebar,.dark-mode .workspace{background:var(--bg)}.dark-mode .sync-card,.dark-mode .user-card,.dark-mode .overview-main,.dark-mode .mini-metric,.dark-mode .site-summary-item,.dark-mode .metric-card,.dark-mode .control-band,.dark-mode .table-panel,.dark-mode .inspector,.dark-mode .visual-band,.dark-mode .staff-manager,.dark-mode .management-grid,.dark-mode .management-card,.dark-mode .admin-dashboard,.dark-mode .admin-card,.dark-mode .workflow-panel,.dark-mode .warning-panel,.dark-mode .history-panel,.dark-mode .import-panel,.dark-mode .mobile-entry-panel,.dark-mode .analysis-panel,.dark-mode .warning-item,.dark-mode .history-item,.dark-mode .report-card,.dark-mode .profile-card,.dark-mode .firm-total-item,.dark-mode .report-table,.dark-mode .profile-day,.dark-mode .mobile-day-card,.dark-mode .selected-record,.dark-mode .empty-state,.dark-mode .staff-form,.dark-mode .staff-remove,.dark-mode .role-editor,.dark-mode .search-with-icon,.dark-mode .filter-chip,.dark-mode .tab-button,.dark-mode .approval-step{background:var(--surface);color:var(--text)}.dark-mode .timesheet th,.dark-mode .timesheet td,.dark-mode .report-table th{background:var(--surface-soft);color:var(--text)}.dark-mode .search-input,.dark-mode .select-input,.dark-mode .month-input,.dark-mode .number-input,.dark-mode .note-input{color:var(--text);border-color:var(--line);background:#0f1714}@media (width<=1180px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);min-height:auto}.contractor-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.dashboard-grid{grid-template-columns:1fr}.metric-grid,.report-cards,.profile-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.report-split,.profile-detail-grid,.overview-summary{grid-template-columns:1fr}.inspector{position:static}}@media (width<=820px){.workspace,.sidebar{padding:16px}.topbar,.table-heading{flex-direction:column;align-items:stretch}.metric-grid,.backup-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.control-band,.visual-band,.management-grid,.admin-dashboard,.approval-steps,.import-panel,.report-filters,.report-cards,.profile-summary,.role-hints,.role-create-form,.role-editor-head,.permission-grid,.password-reset-row,.log-toolbar,.filter-select-row,.form-grid,.form-grid.compact,.staff-manager,.staff-form,.remove-row{grid-template-columns:1fr}.status-palette{grid-template-columns:repeat(4,minmax(48px,1fr))}.contractor-list,.site-map{grid-template-columns:1fr}.capacity-panel,.staff-remove{border-left:0;border-top:1px solid var(--line);padding-top:12px;padding-left:0}.management-card,.admin-card{padding:10px}}@media print{body{background:#fff}.sidebar,.control-band,.actions,.inspector,.visual-band,.management-grid,.admin-dashboard,.staff-manager{display:none}.app-shell{display:block}.workspace{padding:0}.table-scroll{max-height:none;overflow:visible}.table-panel,.metric-card{box-shadow:none}}
