:root{--orange:#ffb36b;--orange-dark:#b35316;--pale:#fff0e3;--ink:#363a3d;--side:#222f34;--side-item:#2b3b41;--muted:#829aa3;--line:#e0e3e7;--bg:#edf2fa;--sidebar:clamp(240px,16.8vw,345px);--top:clamp(52px,3.5vw,72px)}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:Arial,"Segoe UI",sans-serif;font-size:clamp(14px,1vw,20px)}button,input,select{font:inherit}button,a,input,select{outline-offset:3px}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:var(--orange-dark);text-decoration:none}[hidden]{display:none!important}button{border:0;background:none;color:inherit}svg.ico{width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.16em}input,select{border:1px solid #d6dce5;border-radius:3px;padding:10px 12px;background:white;color:var(--ink)}input:focus{outline:2px solid #ffd292;border-color:var(--orange)}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:11.5vh 20px 60px;background:white}.login-logo{width:240px;height:150px;object-fit:contain;margin:0 0 24px}.login-card{width:760px;max-width:100%;min-height:438px;background:#ffcf9f;padding:35px 60px 45px;color:#3f4145}.login-card h1{text-align:center;font-size:30px;margin:0 0 43px;font-weight:700}.login-row{display:grid;grid-template-columns:185px 1fr;align-items:center;margin-bottom:21px}.login-row label{font-size:20px;letter-spacing:1px;font-weight:700}.login-row input{height:50px;border-radius:4px;background:#e9f0ff;color:#111;border:1px solid #d1d8e4;font-size:20px;width:100%}.login-options{margin:33px 0 34px 185px;display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:18px;white-space:nowrap}.login-options input{accent-color:#208bff;width:17px;height:17px;margin:0;vertical-align:-2px}.forgot{padding:0;color:#6c2a00;font-size:17px}.forgot:hover{text-decoration:underline}.login-submit{display:block;margin:auto;background:#26363c;color:white;padding:17px 33px;border-radius:5px;font-size:22px;letter-spacing:1px;font-weight:bold;box-shadow:0 1px 1px #0001}.login-submit:hover{background:#17252b}#login-error{font-size:15px;text-align:center;background:#fff1df;color:#9b3000;padding:10px}.side{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--side);color:#afbdc3;z-index:30;overflow:auto}.brand{height:var(--top);display:flex;align-items:center;gap:14px;padding:10px 18px;color:white;font-size:clamp(20px,1.2vw,25px)}.brand-mark{display:grid;place-items:center;background:white;border-radius:7px;width:43px;height:43px}.brand-mark img{width:37px;height:34px;object-fit:contain}.nav-search{margin:18px 14px;position:relative}.nav-search input{background:#394c55;color:white;border:0;border-radius:0;width:100%;padding-left:32px;height:43px}.nav-search input::placeholder{color:#a1aeb4}.nav-search .ico{position:absolute;left:8px;top:12px}.nav-item{width:100%;text-align:left;padding:clamp(13px,1vw,21px) 18px;display:flex;align-items:center;gap:12px;line-height:1.3;border-left:3px solid transparent}.nav-item:hover{background:#34464e;color:white}.nav-item.active{border-left-color:var(--orange);background:#1d292e;color:white}.nav-item.sub{background:var(--side-item);color:#91a9b3;padding-top:12px;padding-bottom:12px}.nav-item.sub.active{color:white;background:#34464e}.nav-item .chevron{margin-left:auto}.nav-section{color:#ecf0f2;padding:14px 18px;background:#1e2b30}.side-bottom{padding:25px 18px;font-size:12px;color:#78939f}.status-dot{display:inline-block;width:6px;height:6px;background:var(--orange);border-radius:50%;margin-right:6px}.main{margin-left:var(--sidebar);min-height:100vh;background:var(--bg)}.topbar{height:var(--top);background:white;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;position:sticky;top:0;z-index:20}.module-tabs{display:flex}.module-tabs button{padding:0 15px;font-weight:bold;color:#263238}.module-tabs small{font-size:11px}.module-tabs button.selected{background:#fff3e3}.module-tabs button:hover{background:#fff7ee}.top-actions{display:flex;align-items:center;gap:18px;padding-right:16px;position:relative}.icon-button{padding:6px;color:var(--orange-dark);font-size:24px;display:inline-grid;place-items:center}.profile{border-radius:10px;background:#f8e8d3;width:42px;height:42px;color:#9a5100;font-weight:bold;border:1px solid #ffe1b8}.account-menu{position:absolute;right:12px;top:54px;background:white;padding:18px;box-shadow:0 4px 20px #0002;border:1px solid var(--line);min-width:190px;font-size:15px;z-index:50}.account-menu strong{display:block;padding-bottom:12px}.account-menu button{color:#b33922}.toolbar{height:clamp(52px,3.4vw,70px);display:flex;justify-content:space-between;gap:12px;align-items:center;background:white;border-bottom:1px solid #cdd2d7;box-shadow:0 1px 2px #0001;padding:8px 14px}.toolbar h1{font-size:clamp(20px,1.45vw,30px);font-weight:400;margin:0;white-space:nowrap}#toolbar-actions{display:flex;gap:4px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 12px;border-radius:3px;background:var(--pale);color:#53565a;white-space:nowrap}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--orange);color:#373d43}.btn.outline{background:white;border:1px solid var(--line)}.toolbar input,.toolbar select{height:39px;padding:5px 10px;border-radius:0}.notice{background:#fff1d7;border-bottom:1px solid #f2d4a8;padding:10px 18px;font-size:14px}.notice.error{background:#fff0ee;color:#a53226}.page-pad{padding:16px 18px}.white-panel{background:white;border:1px solid var(--line);border-radius:4px;box-shadow:0 1px 1px #0001}.onboarding{padding:14px 12px 18px;margin-bottom:16px}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel-heading h2{font-size:clamp(21px,1.4vw,29px);margin:0 0 20px}.panel-heading button{align-self:flex-start}.onboard-body{display:grid;grid-template-columns:34% 1fr;gap:32px}.steps{display:grid;gap:2px}.step{text-align:left;display:flex;align-items:center;gap:12px;line-height:1.5;padding:9px 14px;border-radius:9px}.step.active{background:#f4f5f7}.step b{background:#258eea;color:white;font-weight:400;display:grid;place-items:center;min-width:27px;height:27px;border-radius:50%}.onboard-description h3{font-size:clamp(20px,1.3vw,27px);margin:0 0 12px}.onboard-description p{margin:0 0 16px;line-height:1.5}.text-link{padding:0;color:var(--orange-dark)}.project-layout{display:grid;grid-template-columns:1fr 25%;gap:24px}.project-summary{display:grid;grid-template-columns:1fr 1.12fr 1fr;gap:16px}.status-box{min-height:145px;display:flex;align-items:center;gap:28px;padding:12px 15px;background:var(--orange);color:#373d43}.zero-ring{border:2px solid #c46d27;border-radius:50%;width:49px;height:49px;display:grid;place-items:center;font-size:24px;font-weight:bold;flex-shrink:0}.status-box ul{list-style:none;margin:0;padding:0;flex:1}.status-box li{display:flex;align-items:center;gap:6px;margin:7px 0;font-size:.94em;white-space:nowrap}.status-box li span:last-child{margin-left:auto}.swatch{width:16px;height:16px;display:inline-block;border:1px solid white;background:var(--swatch)}.participation{padding:12px 10px;background:white;border:1px solid var(--line);border-radius:4px;font-size:.93em}.participation h3{text-align:center;font-size:1em;margin:0 0 23px}.roles{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px}.roles span{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #f4f4f4;padding-bottom:8px}.empty-project{text-align:center;font-weight:bold;padding:14px}.today{display:flex;align-items:center;background:white;min-height:65px;margin-bottom:0;color:var(--orange-dark);white-space:nowrap;font-size:.9em}.today strong{background:var(--orange);color:#373d43;padding:12px;margin-left:-12px;clip-path:polygon(0 0,90% 0,100% 50%,90% 100%,0 100%);padding-right:24px;margin-right:5px;font-size:1.1em}.right-panel{background:white;margin-bottom:17px;border:1px solid var(--line);border-top:3px solid var(--accent,#f1a126);border-radius:4px;box-shadow:0 1px 1px #0001}.right-panel h3{font-size:1.3em;font-weight:400;margin:0;padding:12px;border-bottom:1px solid #f6f6f6;display:flex;justify-content:space-between}.right-panel h3 button{color:#929daf}.empty-state{color:#999;text-align:center;padding:28px 8px}.empty-state .ico{width:48px;height:48px;display:block;margin:auto auto 9px;color:#b1b1b1}.project-note{font-size:12px;color:#89919a;text-align:center;margin:8px}.dashboard{background:white;min-height:calc(100vh - 110px)}.dashboard-top{display:grid;grid-template-columns:2.05fr 1fr;gap:32px;padding:18px 26px 24px;border-bottom:1px solid var(--line);box-shadow:0 2px 2px #0001}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px 32px}.metric{border-radius:4px;overflow:hidden;background:var(--tile);box-shadow:0 1px 2px #0002;display:flex;flex-direction:column}.metric-main{padding:12px 12px 22px;min-height:110px;flex:1}.metric-number{font-size:clamp(33px,2.3vw,47px);font-weight:bold;margin-bottom:12px}.metric-label{font-weight:bold;line-height:1.5}.metric-foot{background:var(--foot);padding:12px 10px;font-weight:bold;display:flex;align-items:center;justify-content:center;gap:12px}.metric-foot i{background:#ffffffeb;border-radius:50%;display:grid;place-items:center;color:var(--foot);font-size:24px;width:26px;height:26px;font-style:normal}.violations{background:#fff5f8;align-self:start;border-radius:4px;overflow:hidden}.violations h2{display:flex;justify-content:space-between;background:#f1acae;padding:16px 12px;margin:0;font-size:1.4em}.violation-row{display:flex;justify-content:space-between;margin:0 10px;padding:13px 0;border-bottom:1px dotted #efc1c7}.violation-row:last-child{border-bottom:0}.violation-row b{color:#f13248}.chart{padding:10px 20px 12px}.chart h3{text-align:center;font-size:1em;margin:0 0 14px}.chart svg{width:100%;height:145px;display:block}.chart-note{text-align:center;color:#8c9299;font-size:12px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:5px}.tabs button{padding:13px 16px;border-bottom:3px solid transparent}.tabs button.active{color:var(--orange-dark);border-bottom-color:var(--orange)}.table-scroll{overflow:auto}.data-table{width:100%;border-collapse:collapse;background:white;text-align:left;font-size:.95em}.data-table th{font-weight:bold;white-space:nowrap;padding:13px 10px;border-bottom:1px solid var(--line)}.data-table td{padding:15px 10px;border-bottom:1px solid var(--line);line-height:1.45}.data-table.grid th,.data-table.grid td{border:1px solid #e4e6ea}.data-table.striped tr:nth-child(odd) td{background:#fafafa}.data-table .name{color:var(--orange-dark)}.data-table .empty-cell{padding:46px 20px;text-align:center;color:#90979f}.table-pad{padding:12px}.location-layout{display:grid;grid-template-columns:50% 50%;height:calc(100vh - var(--top) - 70px);min-height:560px}.location-table{overflow:auto;background:white}.location-table thead{position:sticky;top:0;z-index:3;background:var(--orange);color:#373d43}.location-table .data-table th{padding:12px 8px}.location-table .data-table td{height:74px;padding:12px 10px}.location-layout.list-only{grid-template-columns:1fr}.location-layout.list-only .map-panel{display:none}.location-layout.map-only{grid-template-columns:1fr}.location-layout.map-only .location-table{display:none}.map-panel{position:relative;background:#e8ecee;border-left:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.map-toolbar{display:flex;padding:10px 10px 0;gap:0;z-index:2;background:#e8ecee}.map-toolbar button{border:1px solid #d5d9df;background:#fafafa;padding:9px 10px;white-space:nowrap}.map-toolbar input{min-width:70px;width:100%;border-radius:5px}.map-canvas{flex:1;min-height:450px;z-index:1}.map-legend{position:absolute;bottom:28px;right:10px;background:#fffffff0;z-index:5;box-shadow:0 1px 6px #0003;font-size:13px}.map-legend strong{background:var(--orange);color:#373d43;display:block;padding:9px}.map-legend div{padding:3px 10px}.map-legend i{display:inline-block;width:21px;height:14px;vertical-align:-2px;margin-right:7px}.map-pin{width:32px;height:32px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0008;border:3px solid var(--orange);display:grid;place-items:center;color:#333}.map-tip{position:absolute;left:15px;top:70px;z-index:4;background:#fffffff0;padding:8px;font-size:12px;max-width:75%}.office-form{padding:24px;max-width:760px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label{display:grid;gap:8px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;gap:10px;margin-top:22px}.camera-layout{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;padding:20px}.camera-wrap{position:relative;background:#172228;border-radius:5px;overflow:hidden;min-height:360px;display:grid;place-items:center}.camera-wrap video{width:100%;max-height:500px;transform:scaleX(-1)}.face-guide{position:absolute;width:35%;height:65%;border:2px dashed #ffd085;border-radius:50%;pointer-events:none;top:15%;left:32.5%}.camera-message{position:absolute;bottom:12px;color:white;background:#0009;border-radius:4px;padding:8px;font-size:14px;left:15px;right:15px;text-align:center}.camera-controls{padding:24px;display:flex;flex-direction:column;align-items:flex-start;gap:15px}.camera-controls h2{margin:0}.camera-controls p{line-height:1.6;font-size:15px}.camera-controls input{width:100%}.camera-controls .btn{min-width:160px}.section-note{font-size:13px;color:#939ba4;padding:10px 16px}.filter-input{max-width:220px}.mobile-menu{display:none}dialog{border:1px solid var(--line);border-radius:5px;padding:0;max-width:520px;width:90vw;box-shadow:0 10px 60px #0004;color:var(--ink)}dialog::backdrop{background:#14242c88}.dialog-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 18px}.dialog-head h2{font-size:21px;margin:0}#dialog-content{padding:22px;line-height:1.7;font-size:16px}#dialog-content ul{padding-left:22px}.map-failed{color:#a65d13;background:#fff3dd;padding:10px;font-size:13px}.leaflet-container{font-family:inherit}.leaflet-control-attribution{font-size:10px!important}.toolbar .active-layout{color:var(--orange-dark);background:#fff0de}
@media(min-width:1800px){.metric-main{min-height:140px}.status-box{min-height:175px}.onboarding{padding:18px 15px 24px}.step{padding:11px 16px}.step b{height:33px;min-width:33px}.chart svg{height:190px}.right-panel .empty-state{padding:38px 10px}}
@media(max-width:1200px){.project-layout{grid-template-columns:1fr 28%;gap:14px}.project-summary{gap:9px;grid-template-columns:1fr 1fr}.participation{grid-column:1/-1}.roles{grid-template-columns:repeat(4,1fr)}.status-box{padding:10px;gap:10px}.metric-grid{gap:15px}.dashboard-top{gap:18px;padding:18px}.toolbar .optional{display:none}.login-page{padding-top:8vh}.location-layout{grid-template-columns:55% 45%}.map-toolbar button{padding:8px 5px;font-size:12px}}
@media(max-width:900px){:root{--sidebar:205px}.brand{padding-left:12px;gap:8px}.brand strong{font-size:19px}.top-actions{gap:5px}.project-layout{grid-template-columns:1fr}.project-aside{display:grid;grid-template-columns:1fr 1fr;gap:12px}.today{grid-column:1/-1}.dashboard-top{grid-template-columns:1fr}.violations{display:none}.onboard-body{grid-template-columns:1fr;gap:18px}.location-layout{display:flex;flex-direction:column;height:auto}.location-table{max-height:450px}.map-panel{height:500px}.map-canvas{min-height:400px}.camera-layout{grid-template-columns:1fr}.toolbar input{max-width:155px}.onboard-description{padding:0 15px}}
@media(max-width:650px){.side{transform:translateX(-100%);transition:transform .2s;width:245px}.workspace.menu-open .side{transform:translateX(0);box-shadow:5px 0 20px #0005}.main{margin-left:0}.mobile-menu{display:inline-grid}.topbar{padding-left:4px}.module-tabs button{padding:0 9px;font-size:13px}.top-actions>.icon-button{display:none}.top-actions{padding-right:8px}.profile{width:33px;height:33px}.toolbar{height:auto;min-height:56px;flex-wrap:wrap;padding:10px}.toolbar h1{font-size:20px}#toolbar-actions{max-width:100%;flex-wrap:wrap}.page-pad{padding:12px}.project-summary{grid-template-columns:1fr 1fr}.status-box{font-size:12px}.zero-ring{width:33px;height:33px;font-size:20px}.status-box li{gap:4px}.roles{grid-template-columns:1fr 1fr}.project-aside{display:block}.metric-grid{grid-template-columns:repeat(2,1fr);gap:14px}.metric-main{min-height:110px}.dashboard-top{padding:15px}.chart{padding:10px}.chart svg{height:120px}.tabs{font-size:12px}.tabs button{padding:12px 9px}.data-table{font-size:13px}.login-page{padding:6vh 18px 35px}.login-logo{width:190px;height:125px;margin-bottom:20px}.login-card{padding:26px 22px;min-height:unset}.login-card h1{font-size:23px;margin-bottom:27px}.login-row{grid-template-columns:1fr;gap:9px;margin-bottom:18px}.login-row label{font-size:14px}.login-row input{font-size:17px;height:45px}.login-options{margin:24px 0;white-space:normal;font-size:13px;align-items:flex-start}.forgot{font-size:13px;text-align:right;max-width:145px}.login-submit{font-size:17px;padding:14px 25px}.form-grid{grid-template-columns:1fr}.camera-layout{padding:12px}.camera-wrap{min-height:280px}.camera-controls{padding:15px}.map-legend{font-size:11px}.form-actions{flex-wrap:wrap}}

.directory-filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.directory-filters input,.directory-filters select,.camera-controls select{padding:10px;border:1px solid #ddd;border-radius:4px;max-width:100%;font:inherit}.directory-filters input{min-width:220px}.directory-filters span{color:#666;font-size:14px}
/* Annual leave balances and audited administration. */
.leave-positive { color: #168447; }
.leave-event { display: block; color: #777; margin-top: 7px; }
.leave-form { display: grid; gap: 14px; }
.leave-form label { display: grid; gap: 6px; }
.leave-form input, .leave-form select, .leave-form textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font: inherit; }
.leave-form textarea { min-height: 80px; }
#leave-error { color: #b53636; }
