:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Noto Sans Thai",Tahoma,sans-serif;color:#172c3b;background:#f4f7f8;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.hidden{display:none!important}#loading{display:flex;gap:12px;align-items:center;justify-content:center;height:100dvh;color:#3a5565;font-size:14px}.spinner{width:23px;height:23px;border:3px solid #ccdedb;border-top-color:#0d8278;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{min-height:100dvh;display:grid;place-items:center;background:radial-gradient(circle at top left,#d0f0e8,transparent 42%),linear-gradient(145deg,#ecf7f5,#f1f5fa);padding:24px}.login-card{background:white;border-radius:22px;padding:35px;width:min(430px,100%);box-shadow:0 12px 48px #0d4b5520;border:1px solid #dbe7e8}.login-card h1{font-size:28px;margin:12px 0 4px}.login-card h1 span{color:#087f77}.login-card p{color:#657986;margin:0 0 30px}.logo{background:#0b857c;color:white;border-radius:14px;font-weight:850;width:56px;height:56px;display:grid;place-items:center;letter-spacing:-1px;font-size:21px}.login-card form{display:grid;gap:17px}.small{font-size:12px;color:#78919e;margin-top:25px}.app{display:flex;min-height:100dvh}.sidebar{width:254px;background:#102c37;display:flex;flex-direction:column;padding:21px 14px;color:#c7d7d9;flex-shrink:0;position:sticky;top:0;height:100dvh;z-index:20}.brand{display:flex;align-items:center;gap:10px;padding:3px 8px 23px;border-bottom:1px solid #34515a}.brand strong{display:block;font-size:17px;color:#f8ffff}.brand small{font-size:10px;color:#a5c1c8}.small-logo{width:41px;height:41px;border-radius:12px;font-size:16px}.workspace{display:flex;align-items:center;gap:7px;padding:22px 12px 14px;font-size:12px;color:#c5d9d9}.dot{width:7px;height:7px;background:#50e2b4;border-radius:100%}nav{display:grid;gap:5px}nav button{border:0;text-align:left;background:transparent;color:#c4d5d8;border-radius:9px;padding:13px 12px;font-size:13px}nav button span{font-size:17px;margin-right:8px;opacity:.9}nav button.active,nav button:hover{background:#207d77;color:white}.side-bottom{margin-top:auto;padding:15px 7px;border-top:1px solid #34515a;font-size:13px}.side-bottom small{display:block;color:#91adb4;margin:4px 0 12px}.main-wrap{min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:72px;background:#fff;display:flex;align-items:center;padding:0 29px;gap:15px;border-bottom:1px solid #e7eff0;position:sticky;top:0;z-index:10}.topbar strong{display:block;font-size:17px}.topbar small{font-size:11px;color:#7d929e}.top-right{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:12px;color:#5a737e}.icon-btn{border:0;background:transparent;font-size:24px;color:#365561;display:none}.main-wrap main{padding:28px;flex:1;max-width:1600px;width:100%;margin:auto}.main-wrap footer{text-align:right;padding:16px 26px;color:#8ea0a9;font-size:10px}.view-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:20px}.view-head h1{font-size:24px;margin:0 0 4px}.view-head p{margin:0;color:#80929b;font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;padding:10px 16px;border-radius:9px;font-weight:650;font-size:13px;white-space:nowrap;transition:.15s}.btn.primary{background:#087f78;color:white}.btn.primary:hover{background:#096c66}.btn.outline{background:white;color:#166d6a;border-color:#d4e5e4}.btn.ghost{background:#244753;color:#e0f0ed}.btn.danger{background:#fdf0f0;color:#b43a48}.btn.tiny{font-size:11px;padding:7px 10px}.btn.wide{width:100%}.grid-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric,.panel{background:#fff;border:1px solid #e2eaed;border-radius:14px;box-shadow:0 2px 8px #123c4510}.metric{padding:18px}.metric .label{font-size:12px;color:#77909a}.metric .number{font-size:27px;font-weight:800;margin-top:7px;color:#123d49}.metric:nth-child(2) .number{color:#1b9270}.metric:nth-child(3) .number{color:#196aa6}.metric:nth-child(4) .number{color:#ce8a19}.panel{padding:19px;margin-bottom:18px}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.filters>*{min-width:0}.search{flex:1;min-width:230px}.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));gap:14px}.board-col{background:#eef3f5;border:1px solid #e0e9ec;border-radius:13px;padding:12px;min-height:190px}.board-head{font-size:13px;font-weight:750;margin:2px 2px 12px;display:flex;justify-content:space-between}.board-head small{color:#81929a}.task{background:#fff;border:1px solid #dee7e9;border-radius:11px;padding:14px;margin-bottom:11px;box-shadow:0 1px 6px #123b4110}.task .code{color:#087f78;font-weight:800;font-size:11px}.task h3{font-size:14px;margin:9px 0}.task .meta{font-size:12px;color:#718692;line-height:1.9}.task .foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:10px;flex-wrap:wrap}.tag{font-size:10px;font-weight:750;padding:4px 8px;border-radius:100px;background:#e9f3fa;color:#1b709c;display:inline-block}.tag.done{background:#e6f6ee;color:#158562}.tag.planned{background:#fff5df;color:#a16f11}.tag.in_progress{background:#e5f0ff;color:#1b6ca4}.tag.cancelled,.tag.pending{background:#fde8eb;color:#b34254}.chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:10px}.chip{background:#eaf3f2;color:#206b69;font-size:10px;padding:5px 8px;border-radius:100px}.empty{padding:42px 18px;text-align:center;color:#91a2aa;font-size:13px}.table-wrap{overflow:auto;border:1px solid #e3e9ec;border-radius:12px;background:white}table{width:100%;border-collapse:collapse;font-size:12px}th{background:#f4f8f9;text-align:left;padding:13px 12px;color:#617782;font-weight:700;white-space:nowrap}td{border-top:1px solid #edf1f2;padding:12px;vertical-align:middle}td:first-child{font-weight:650}.table-actions{display:flex;gap:5px;flex-wrap:wrap}input,select,textarea{width:100%;background:#fff;border:1px solid #d3e0e4;border-radius:8px;padding:10px 11px;color:#233d4b;min-height:40px}input:focus,select:focus,textarea:focus{outline:2px solid #86cfc6;border-color:#0d8a81}textarea{min-height:85px;resize:vertical}label{display:grid;gap:6px;font-size:12px;color:#526a76;font-weight:650}.filters input,.filters select{width:auto;min-width:145px}.filters .search{width:100%}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.day-name{text-align:center;padding:11px 5px;color:#78939a;font-size:12px}.day-cell{background:#fff;min-height:94px;border:1px solid #e1e9ec;border-radius:10px;padding:10px;text-align:left;color:#285565;display:flex;flex-direction:column;align-items:stretch;gap:6px}.day-cell:hover{border-color:#0f9184}.day-cell.muted{background:#f6f8f9;color:#acb6b9}.day-cell.today{border:2px solid #118a7d}.day-cell strong{font-size:12px}.day-cell .count{font-size:11px;background:#e5f5f0;color:#16836d;border-radius:6px;padding:4px}.day-cell small{color:#92a4ae;font-size:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1/-1}.modal-backdrop{position:fixed;inset:0;background:#122d389c;display:grid;place-items:center;z-index:40;padding:17px}.modal-box{background:#fff;border-radius:16px;padding:22px;max-width:640px;width:100%;max-height:92dvh;overflow:auto;box-shadow:0 15px 55px #0b303855}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:17px}.modal-header h2{font-size:19px;margin:0}.close{font-size:26px;border:0;background:none;color:#7a929c}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}#toast{position:fixed;right:22px;bottom:22px;z-index:70;display:none;background:#183d48;color:white;padding:12px 17px;border-radius:10px;font-size:13px;max-width:min(400px,90vw);box-shadow:0 5px 22px #183d4840}#toast.error{background:#9e2937}.admin-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.admin-card{border:1px solid #deebeb;border-radius:12px;padding:17px;background:white}.admin-card h3{font-size:15px;margin:0 0 7px}.admin-card p{font-size:12px;color:#7e929c;min-height:40px}.text-muted{color:#8699a4}.muted-small{font-size:11px;color:#7b909a}.status{display:flex;gap:8px;align-items:center;font-size:12px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:9px;flex-wrap:wrap}.side-bottom .btn{margin-top:7px}.gps-prompt{border:1px dashed #a3d8d0;background:#f0f9f7;border-radius:10px;padding:13px;font-size:12px;line-height:1.7;margin-bottom:14px}.gps-actions{display:flex;gap:7px;flex-wrap:wrap}.map-link{color:#087e78;text-decoration:none;font-size:12px}.map-link:hover{text-decoration:underline}
@media(max-width:1250px){.grid-metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.sidebar{position:fixed;transform:translateX(-105%);transition:transform .2s;box-shadow:10px 0 30px #081c2230}.sidebar.open{transform:none}.icon-btn{display:block}.main-wrap main{padding:18px}.topbar{padding:0 18px}.admin-cards{grid-template-columns:1fr 1fr}}@media(max-width:600px){.grid-metrics{grid-template-columns:repeat(2,1fr);gap:8px}.metric{padding:12px}.metric .number{font-size:22px}.view-head{flex-wrap:wrap}.view-head h1{font-size:21px}.calendar{gap:3px}.day-cell{padding:4px;min-height:67px;border-radius:5px}.day-cell .count{font-size:9px;padding:2px}.day-cell small{display:none}.day-name{font-size:10px;padding:8px 1px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:1}.admin-cards{grid-template-columns:1fr}.top-right #todayChip{display:none}.task h3{font-size:13px}.panel{padding:12px}.modal-box{padding:17px}.filters input,.filters select{max-width:100%;flex:1}.board{grid-template-columns:1fr}.topbar{height:60px}}
.demo-notice{font-size:11px;background:#fff4de;color:#925c08;border:1px solid #ecd5a1;border-radius:12px;padding:5px 9px;white-space:nowrap}@media(max-width:600px){.demo-notice{display:none}}
.employee-state{display:inline-flex;padding:4px 8px;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap}.employee-state.enabled{background:#e6f6ee;color:#128058}.employee-state.disabled{background:#fcebef;color:#b44452}.employee-filters{margin-bottom:14px}.employee-filters .search{min-width:250px}@media(max-width:600px){.employee-filters .search{min-width:100%}.employee-filters label{width:100%}.employee-filters select{width:100%}}
.schedule-stack{display:grid;gap:6px;min-width:260px}.schedule-line{padding:5px 0;border-bottom:1px dashed #dce6e8;line-height:1.6}.text-link{color:#087f78;background:transparent;border:0;text-decoration:underline;padding:0;font:inherit;cursor:pointer}.current-workers{border:1px solid #e3eeee;border-radius:9px;padding:8px 12px;margin-bottom:15px}.worker-entry{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid #edf3f3}.worker-entry:last-child{border-bottom:0}

/* v1.3.1: show site names on calendar instead of a count of plans. */
.calendar-scroll{width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.calendar .day-cell{min-height:119px;gap:5px}
.calendar .calendar-site{display:block;max-width:100%;background:#e5f5f0;color:#126c62;border-radius:6px;padding:5px 6px;line-height:1.3;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.calendar .calendar-site-qty{font-size:10px;font-weight:400;white-space:nowrap;color:#397c75}
.calendar .calendar-overflow{font-size:10px;line-height:1.4;color:#376d78;padding:2px 1px}
.calendar .day-cell small{margin-top:auto;padding-top:4px;white-space:nowrap}
@media(max-width:760px){.calendar-scroll .calendar{min-width:840px}.calendar .day-cell{min-height:119px;padding:7px}.calendar .day-cell small{display:block;font-size:10px}}


/* v1.3.2: Development-only unverified email sign-in banner */
.dev-login-alert{background:#fff7e5;border:1px solid #f0d493;border-radius:11px;color:#785019;padding:12px 14px;margin:0 0 18px;font-size:12px;line-height:1.6;display:grid;gap:4px}
.dev-login-alert strong{font-size:13px;color:#87510a}
.dev-login-alert span{font-weight:450}
.dev-top-notice{border:1px solid #e5b86b;background:#fff0cd;color:#885a17;border-radius:7px;padding:6px 8px;font-weight:750;font-size:10px;white-space:nowrap}

/* v1.4.1 Leaflet + OpenStreetMap geofencing */
.sf-map{width:100%;height:340px;border-radius:12px;border:1px solid #d4e4e8;background:#edf3f5;overflow:hidden}
.sf-map-modal{height:310px}
.sf-map-hint{font-size:12px;color:#516d77;line-height:1.65}
.sf-map-status{padding:9px 12px;margin-top:9px;border-radius:9px;background:#eaf3f6;color:#29495a;font-size:12px;line-height:1.6}
.sf-map-status.inside{background:#e6f6ef;color:#117657}
.sf-map-status.outside{background:#fff0e9;color:#ae5531}
.sf-site-map-panel{display:grid;gap:10px;margin-bottom:15px}
.sf-site-mapping{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.sf-radius-line{display:flex;gap:12px;align-items:center}
.sf-radius-line input[type=range]{flex:1;min-width:100px;padding:0}
.sf-radius-line input[type=number]{max-width:120px}
.sf-map-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:9px}
.sf-map-message{margin:8px 0;font-size:12px;color:#72511b}
@media(max-width:600px){.sf-map{height:280px}.sf-map-modal{height:250px}.sf-site-mapping{grid-template-columns:1fr}}
.sf-map .leaflet-container{width:100%;height:100%;font:inherit}
.sf-center-pin{display:block;width:16px;height:16px;border-radius:50%;background:#087f78;border:3px solid white;box-shadow:0 2px 7px #263f4970}
.sf-radius-pin{display:block;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid #087f78;box-shadow:0 1px 6px #263f4970}
.sf-map .leaflet-control-attribution{font-size:10px}
.sf-map .leaflet-popup-content{font:inherit}
/* v1.4.2: independent startup recovery if session/bootstrap RPC hangs */
#loading{flex-wrap:wrap;padding:20px;text-align:center}
#sfBootRecovery{flex-basis:100%;max-width:430px;margin:10px auto;background:#fff;border:1px solid #d9e6e8;border-radius:12px;padding:18px;color:#314b55;font-size:13px;box-shadow:0 4px 18px #19313a0c;line-height:1.6}
#sfBootRecovery .sf-boot-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:14px 0}
#sfBootRecovery button{background:#087f78;color:#fff;border:0;border-radius:8px;padding:10px 12px;font-size:12px}
#sfBootRecovery button+button{background:#eef4f5;color:#28636a;border:1px solid #d6e2e5}
#sfBootRecovery small{font-size:11px;color:#6f8492}

/* v1.4.8 GPS workspace: responsive, real assignment statuses, linked geofence */
.sf-gps-layout{display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1.04fr);gap:20px;align-items:stretch}
.sf-gps-left,.sf-gps-right{padding:22px;display:flex;flex-direction:column;gap:16px;margin:0;min-width:0}
.sf-gps-left h3,.sf-gps-right h3,.sf-gps-history h3{font-size:16px;color:#173945;margin:0}
.sf-gps-left label{font-size:13px;color:#1a3c45}
.sf-gps-left label small{font-size:11px;font-weight:400;color:#7a8d96}
.sf-gps-left textarea{min-height:62px}
.sf-gps-feedback{background:#e9f7f2;border-radius:11px;padding:15px;color:#116f62;line-height:1.6;font-size:13px;white-space:normal}
.sf-gps-feedback.warn{background:#fff3e5;color:#a26c1b}
.sf-gps-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sf-gps-buttons .btn{min-height:55px;font-size:14px}
.sf-gps-buttons button:disabled{opacity:.48;cursor:not-allowed}
.sf-gps-jobs{display:grid;gap:9px;max-height:245px;overflow:auto}
.sf-gps-job{display:grid;gap:5px;text-align:left;border:1px solid #dde8eb;background:#fff;border-radius:12px;padding:13px;cursor:pointer;font:inherit;color:inherit}
.sf-gps-job.selected{border-color:#0d8882;box-shadow:0 0 0 2px #15a89920}
.sf-gps-job strong{font-size:13px;color:#153c48}
.sf-gps-job span{font-size:11px;color:#77919a}
.sf-gps-job em{justify-self:start;font-size:11px;border-radius:100px;padding:4px 9px;font-style:normal;font-weight:700;background:#fff3dc;color:#ae7812}
.sf-gps-job em.active,.sf-gps-job em.done{background:#dff5e7;color:#087b58}
.sf-gps-map-header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:3px}
.sf-gps-right .sf-map{height:310px}
.sf-gps-map-link{color:#077c72;font-size:12px;text-decoration:underline;align-self:flex-end}
.sf-gps-demo{background:#e2f5f0;border:1px solid #c2e9e0;color:#087d70;font-size:11px;font-weight:700;border-radius:40px;padding:9px 13px}
.sf-gps-saving{border:1px solid #d9e5e7;background:#f4f9fa;border-radius:9px;padding:11px;font-size:12px}
.sf-gps-history{margin-top:18px}
.sf-gps-empty{color:#83949d;font-size:12px;background:#f6f8f9;border-radius:9px;padding:18px}
@media(max-width:1100px){.sf-gps-layout{grid-template-columns:1fr}.sf-gps-right .sf-map{height:330px}}
@media(max-width:600px){.sf-gps-left,.sf-gps-right{padding:16px;gap:13px}.sf-gps-buttons{grid-template-columns:1fr 1fr;gap:7px}.sf-gps-buttons .btn{min-height:49px;font-size:12px}.sf-gps-right .sf-map{height:280px}}

/* v1.4.9 Management Dashboard */
.sf-ex-filters{display:flex;align-items:end;gap:13px;flex-wrap:wrap;padding:18px;margin-bottom:14px}
.sf-ex-filters label{min-width:155px;flex:1 1 155px;max-width:260px}
.sf-ex-filters .btn{min-height:41px}.sf-ex-period{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 14px;font-size:12px;color:#597580}
.sf-ex-period strong{color:#123f46}.sf-ex-period span{font-size:11px;color:#7f959f}
.sf-ex-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:20px}
.sf-ex-kpi{border:1px solid #e1eae9;border-radius:14px;background:#fff;padding:19px;box-shadow:0 2px 10px #113a4610;min-width:0}
.sf-ex-kpi-title{font-size:12px;color:#5d7882;font-weight:700}.sf-ex-kpi-value{font-size:32px;color:#0f5155;font-weight:850;margin:8px 0 3px;line-height:1.1}
.sf-ex-kpi-sub{font-size:11px;color:#8a9ba3;line-height:1.55}.sf-ex-panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}.sf-ex-panels .panel{min-width:0}
.sf-ex-panels h3,.sf-ex-panel-head h3{margin:0 0 17px;color:#1c3e49;font-size:16px}.sf-ex-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.sf-ex-panel-head span{font-size:11px;color:#8296a0}
.sf-ex-status-summary{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-bottom:13px}.sf-ex-ring{border-radius:50%;width:154px;height:154px;flex:none;display:grid;place-items:center;background:conic-gradient(#158969 0 var(--sf-done),#388cc0 var(--sf-done) var(--sf-doing),#ecb458 var(--sf-doing) var(--sf-wait),#d9e1e6 var(--sf-wait) 100%)}
.sf-ex-ring span{background:#fff;width:112px;height:112px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#0a746b;font-weight:800;font-size:27px}
.sf-ex-ring small{font-size:10px;color:#778d95;margin-top:5px;font-weight:500}.sf-ex-legend{flex:1;min-width:150px}.sf-ex-legend div{display:flex;align-items:center;gap:10px;font-size:12px;color:#486575;margin:10px 0}.sf-ex-legend b{margin-left:auto;color:#143b43}
.sf-ex-legend i{width:10px;height:10px;border-radius:100%;display:inline-block}.sf-ex-legend .done{background:#158969}.sf-ex-legend .doing{background:#388cc0}.sf-ex-legend .wait{background:#ecb458}.sf-ex-legend .cancel{background:#d9e1e6}
.sf-ex-progress{width:100%;height:9px;border-radius:30px;background:#eaf1f1;overflow:hidden}.sf-ex-progress span{display:block;height:100%;background:#148a77;border-radius:30px}
.sf-ex-detail-list{display:grid;gap:10px}.sf-ex-detail-list>div{display:flex;justify-content:space-between;gap:13px;border-bottom:1px solid #eef2f3;padding:8px 0;font-size:12px}.sf-ex-detail-list>div span{color:#54717a}.sf-ex-detail-list b{color:#193d47}.sf-ex-jump{margin-top:16px}
.sf-trend-scroll{overflow-x:auto}.sf-trend-grid{display:flex;gap:8px;align-items:stretch;height:185px;padding:12px 0 0}.sf-trend-col{flex:1 0 25px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px}.sf-trend-col strong{font-size:9px;color:#406372;min-height:12px}.sf-trend-rail{height:131px;width:100%;display:flex;align-items:end;justify-content:center}.sf-trend-bar{width:min(28px,95%);background:#79bac6;border-radius:5px 5px 0 0;overflow:hidden;display:flex;align-items:end}.sf-trend-bar span{display:block;width:100%;background:#148a75}.sf-trend-col small{height:20px;font-size:9px;white-space:nowrap;color:#77909a}
.sf-ex-empty{padding:30px 15px;color:#8799a0;text-align:center;font-size:12px}.sf-ex-note{font-size:11px;line-height:1.7;color:#82949e;margin:0 0 18px}.sf-ex-info{background:#eaf6f4;color:#135f59;border:1px solid #cce9e5;padding:13px 17px;border-radius:10px;font-size:12px;margin-bottom:18px}
.sf-ex-staff{display:grid;gap:9px}.sf-ex-person{background:#fff;border:1px solid #e2ebed;border-radius:12px;overflow:hidden}.sf-ex-person summary{display:flex;align-items:center;gap:12px;cursor:pointer;padding:13px 16px;list-style:none}.sf-ex-person summary::-webkit-details-marker{display:none}.sf-ex-avatar{flex:none;width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:#e1f4ee;color:#10776b;font-weight:800}.sf-ex-person-name{display:grid;gap:4px;flex:1;min-width:0}.sf-ex-person-name strong{font-size:13px;color:#254b56}.sf-ex-person-name small{font-size:10px;color:#8b9ca5}.sf-ex-chevron{font-size:16px;color:#8099a4}.sf-ex-state{font-size:11px;border-radius:50px;padding:6px 10px;font-weight:700;white-space:nowrap}.sf-state-not_started{background:#fff1db;color:#a36d0f}.sf-state-working{background:#e4f0ff;color:#216fa5}.sf-state-checked_out{background:#e1f6eb;color:#147755}.sf-state-pending_approval{background:#fff0e9;color:#bd5b33}.sf-ex-tasks{border-top:1px solid #e3ecee;padding:6px 17px 14px;background:#fbfdfd}.sf-ex-task{display:flex;justify-content:space-between;gap:12px;align-items:start;padding:12px 0;border-bottom:1px dashed #dde7e9;font-size:12px;color:#325664}.sf-ex-task:last-child{border-bottom:0}.sf-ex-task small{display:block;font-size:11px;color:#8a9ca5;margin-top:5px}.sf-ex-timestamps{display:grid;gap:4px;color:#55717b;min-width:150px}.sf-ex-attention{color:#b36b28!important;font-weight:700}
@media(max-width:1080px){.sf-ex-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.sf-ex-panels{grid-template-columns:1fr}}
@media(max-width:600px){.sf-ex-filters label{max-width:none;min-width:100%}.sf-ex-kpis{gap:9px}.sf-ex-kpi{padding:14px}.sf-ex-kpi-value{font-size:26px}.sf-ex-status-summary{gap:15px}.sf-ex-ring{width:132px;height:132px}.sf-ex-ring span{width:94px;height:94px;font-size:23px}.sf-ex-person summary{gap:7px;padding:12px 8px}.sf-ex-person-name strong{font-size:12px}.sf-ex-state{font-size:10px;padding:5px 7px}.sf-ex-task{flex-direction:column}}

/* v1.5.0 import workspace and visible Thai DD/MM/YYYY for all date pickers. */
.sf-import-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);gap:18px;align-items:start}
.sf-import-layout .panel{display:grid;gap:12px}.sf-import-buttons,.sf-import-source{display:flex;gap:12px;flex-wrap:wrap}.sf-import-source{background:#f4f9f8;border-radius:9px;padding:12px}.sf-import-source label{display:flex;align-items:center;gap:7px}
.sf-import-layout input[type=file],.sf-import-layout input[type=url]{display:block;width:100%;margin-top:8px;padding:10px;border:1px solid #dae5e9;border-radius:8px}
.sf-import-help{display:grid;gap:11px}.sf-import-help>div{border-bottom:1px solid #e4ebed;padding-bottom:9px}.sf-import-help small{display:block;color:#637984;margin-top:4px}
.sf-import-warn{border-radius:8px;background:#fff6e8;color:#895c0b;padding:12px;font-size:13px}.sf-import-state{min-height:28px;font-size:13px;color:#365b64}
.sf-import-results{background:white;border-radius:14px;padding:20px;margin-top:16px;border:1px solid #e2e9ec}.sf-import-summary{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.sf-import-summary span{background:#eef8f6;padding:8px 12px;border-radius:8px;font-size:13px}
.sf-import-error{color:#b42318}.sf-import-success{background:#edfaf6;color:#075a52;margin-top:16px}.sf-import-results .table-wrap{max-height:420px;overflow:auto;margin-bottom:18px}.sf-import-results td small{color:#5c6d77}.sf-import-results td{min-width:70px}.sf-import-error,.sf-import-skip{font-weight:650;color:#b42318}.sf-import-create,.sf-import-add_plan{font-weight:650;color:#047b67}
.sf-date-wrap{display:block;position:relative;min-height:39px;isolation:isolate;background:#fff;border:1px solid #cddce0;border-radius:8px;cursor:pointer;overflow:hidden}
.sf-date-wrap .sf-date-text{display:block;padding:9px 40px 9px 12px;white-space:nowrap;color:#163a46;pointer-events:none;font-size:inherit}.sf-date-wrap .sf-date-icon{position:absolute;right:12px;top:9px;pointer-events:none;color:#486570}
.sf-date-wrap input.sf-date-native{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;opacity:0!important;cursor:pointer;z-index:2}
.sf-date-wrap:focus-within{outline:2px solid #0b827a;outline-offset:1px}
@media(max-width:900px){.sf-import-layout{grid-template-columns:1fr}.sf-import-results{padding:12px}}

/* v1.5.1 — manual place search for Admin geofence (no Google API key). */
.sf-site-search{border:1px solid #dbe8e9;border-radius:10px;padding:12px;background:#f7fbfb;display:grid;gap:9px}
.sf-site-search>label{font-weight:750;font-size:13px;color:#1a5154}
.sf-site-search-row{display:flex;gap:9px;align-items:stretch}
.sf-site-search-row input{min-width:0;flex:1}
.sf-site-search-row button{flex-shrink:0}
.sf-site-search-country{display:flex!important;flex-direction:row;align-items:center;gap:8px;font-size:12px;font-weight:500!important}
.sf-site-search-country input{width:auto;min-height:0;margin:0;accent-color:#0c857b}
.sf-site-search-results{display:grid;max-height:193px;overflow:auto;gap:5px}
.sf-site-search-results>small,.sf-site-search-credit{color:#748a94;font-size:11px;line-height:1.5}
.sf-site-search-result{display:grid;text-align:left;gap:5px;border:1px solid #d4e6e5;border-radius:8px;background:#fff;padding:9px 11px;white-space:normal;cursor:pointer}
.sf-site-search-result:hover,.sf-site-search-result:focus{border-color:#129687;background:#eaf8f4}
.sf-site-search-result strong{font-size:12px;color:#1b5661}.sf-site-search-result small{font-size:11px;line-height:1.45;color:#768992}
.sf-site-search-message{font-size:12px;line-height:1.5;padding:9px 10px;border-radius:8px;background:#eaf4f2;color:#1b6660}
@media(max-width:500px){.sf-site-search-row{gap:6px}.sf-site-search-row button{padding:9px 10px}.sf-site-search{padding:9px}}