:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172033;background:#f5f6f8;--panel:#fff;--muted:#667085;--line:#d9dee8;--accent:#2563eb;--danger:#b42318;--ok:#067647;--warn:#b54708}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.wrap{max-width:1500px;margin:auto;padding:16px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px 18px;margin-bottom:14px}.top-main{font-size:clamp(18px,2vw,30px);font-weight:750;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.muted{color:var(--muted)}.layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:14px}.nav,.card{background:var(--panel);border:1px solid var(--line);border-radius:18px}.nav{padding:10px;display:grid;align-content:start;gap:8px}.nav button,.btn{min-height:48px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 14px}.nav button.active,.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.danger{color:var(--danger)}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.content{min-width:0}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px}.stat{padding:16px}.stat strong{display:block;font-size:32px}.tasks{display:grid;gap:10px}.task{padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.task h3{margin:0 0 5px;font-size:clamp(18px,1.8vw,25px)}.badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}.badge{border:1px solid var(--line);border-radius:999px;padding:4px 8px;font-size:12px}.badge.overdue{color:var(--danger)}.done{opacity:.62}.done h3{text-decoration:line-through}.admin-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(310px,.8fr);gap:14px}.panel{padding:16px}.row{border:1px solid var(--line);border-radius:13px;padding:12px;margin-bottom:10px}.row-head{display:flex;align-items:start;justify-content:space-between;gap:12px}.form{display:grid;gap:11px}.form label{display:grid;gap:5px;font-size:13px;font-weight:650}.form input,.form select{min-height:46px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff}.checks{display:flex;flex-wrap:wrap;gap:7px}.check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:6px!important;border:1px solid var(--line);border-radius:10px;padding:9px 11px}.login{max-width:420px;margin:10vh auto;padding:22px}.notice{padding:10px 12px;border-radius:10px;background:#eef4ff}.offline{background:#fff3e8;color:#7a2e0e}.ok{color:var(--ok)}.error{color:var(--danger)}@media(max-width:850px){.layout{grid-template-columns:1fr}.nav{display:flex;overflow-x:auto}.nav button{min-width:125px}.admin-grid{grid-template-columns:1fr}}@media(max-width:600px){.wrap{padding:8px}.topbar{border-radius:13px;padding:11px 13px}.stats{grid-template-columns:1fr}.task{grid-template-columns:1fr}.task .btn{width:100%}.row-head{display:grid}.toolbar>*{flex:1 1 auto}}
.device-result{margin-top:12px}.url-actions{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;margin-top:10px}.url-actions input{min-height:48px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff;min-width:0}.url-actions a{text-decoration:none;display:flex;align-items:center;justify-content:center}.inactive-option{opacity:.6}.badge{display:inline-block}.badge+ .badge{margin-left:4px}@media(max-width:600px){.url-actions{grid-template-columns:1fr}.url-actions .btn,.url-actions a{width:100%}}

/* V3.3 daily-operations enhancements */
.admin-actions{position:sticky;top:0;z-index:5;background:#f5f6f8;padding:4px 0}.quick-add{margin-bottom:12px;border-color:#b9cffb}.quick-form{display:grid;grid-template-columns:2fr 1.2fr 1fr 1fr 1fr auto;gap:10px;align-items:end}.quick-form label{display:grid;gap:5px;font-size:13px;font-weight:650}.quick-form input,.quick-form select,.task-list-tools input,.task-list-tools select{min-height:46px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff;min-width:0}.quick-save{min-width:120px}.quick-message{grid-column:1/-1}.task-list-tools{display:grid;grid-template-columns:minmax(100px,1fr) minmax(180px,1.2fr) minmax(145px,.75fr) minmax(135px,.7fr);gap:8px;align-items:center;margin-bottom:12px}.device-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.health{display:inline-flex;align-items:center;min-height:25px;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700;border:1px solid var(--line)}.health-online{color:var(--ok);background:#ecfdf3;border-color:#abefc6}.health-warn{color:var(--warn);background:#fffaeb;border-color:#fedf89}.health-off{color:var(--danger);background:#fef3f2;border-color:#fecdca}
@media(max-width:1050px){.quick-form{grid-template-columns:repeat(3,minmax(0,1fr))}.quick-save{width:100%}.task-list-tools{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.admin-actions{position:static}.admin-actions .btn{flex:1 1 calc(50% - 8px)}.quick-add{padding:13px}.quick-form{grid-template-columns:1fr}.quick-message{grid-column:auto}.task-list-tools{grid-template-columns:1fr}.task-list-tools h2{margin-bottom:3px!important}.quick-save{width:100%}}

/* V3.4 Phase 2 — staff accountability */
.sep{border:0;border-top:1px solid var(--line);margin:22px 0}.pin-mode-card{border-color:#b9cffb}.switch-row{display:flex;align-items:center;gap:9px;font-weight:700;min-height:48px}.switch-row input{width:22px;height:22px}.audit-list{display:grid;gap:8px}.audit-row{border:1px solid var(--line);border-radius:12px;padding:11px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.58);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}.modal-card{width:min(680px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border-radius:20px;padding:18px;border:1px solid var(--line)}.staff-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:16px 0}.staff-choice{display:grid;gap:2px;min-height:68px;text-align:left}.staff-choice span{font-size:12px;opacity:.8}.staff-choice.primary span{color:#fff}.pin-area{text-align:center;margin:14px 0}.pin-dots{font-size:30px;letter-spacing:8px;font-weight:800;margin:8px 0}.pin-pad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:430px;margin:0 auto}.pin-key{min-height:62px;font-size:20px;font-weight:750}.pin-confirm{width:100%;margin-top:12px;min-height:58px}.pin-confirm:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:700px){.staff-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.audit-row{align-items:start}.modal-backdrop{padding:8px}.modal-card{padding:13px;max-height:calc(100vh - 16px)}}
@media(max-width:420px){.staff-choices{grid-template-columns:1fr}.pin-key{min-height:56px}}

/* V3.4.1 — weekly status view */
.week-day{display:grid;gap:8px;margin-bottom:14px}.week-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:5px 4px 0}.week-day-head strong{font-size:18px}.week-day-tasks{display:grid;gap:9px}.status-done{color:var(--ok);background:#ecfdf3;border-color:#abefc6}.status-pending{color:#344054;background:#f9fafb}.status-today{color:#175cd3;background:#eff8ff;border-color:#b2ddff}.task.done{opacity:1;background:#f6fef9}.task.done h3{text-decoration:line-through;color:#475467}.task.done .muted{color:#667085}
@media(max-width:600px){.week-day-head{align-items:flex-start;flex-direction:column;gap:2px}.week-day{margin-bottom:10px}}

/* V3.5 Phase 3 — reports and history */
.report-filter-card{margin-bottom:14px}.report-presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.report-filters{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr)) auto;gap:9px;align-items:end;margin-top:10px}.report-filters label{display:grid;gap:5px;font-size:12px;font-weight:700}.report-filters input,.report-filters select{min-height:46px;border:1px solid var(--line);border-radius:11px;padding:9px 10px;background:#fff;min-width:0}.report-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:4px 2px 10px}.report-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.report-stats .stat strong{font-size:27px}.report-breakdowns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.table-scroll{width:100%;overflow-x:auto}.report-table{width:100%;border-collapse:collapse;min-width:620px}.report-table th,.report-table td{text-align:left;border-bottom:1px solid var(--line);padding:10px 9px;vertical-align:top;font-size:13px}.report-table th{color:#475467;font-size:12px;text-transform:uppercase;letter-spacing:.03em;background:#f9fafb;position:sticky;top:0;z-index:1}.report-history{max-height:620px;overflow:auto}.report-status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;border:1px solid var(--line);font-size:12px;font-weight:750;white-space:nowrap}.report-ok{color:var(--ok);background:#ecfdf3;border-color:#abefc6}.report-warn{color:var(--warn);background:#fffaeb;border-color:#fedf89}.report-bad{color:var(--danger);background:#fef3f2;border-color:#fecdca}.report-pending{color:#344054;background:#f9fafb}
@media(max-width:1100px){.report-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.report-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.report-breakdowns{grid-template-columns:1fr}.report-filters{grid-template-columns:1fr 1fr}.report-actions .btn{flex:1}.report-history{max-height:none}}
@media(max-width:480px){.report-filters{grid-template-columns:1fr}.report-stats{grid-template-columns:1fr 1fr}.report-presets .btn{flex:1 1 calc(50% - 8px)}}
@media print{body{background:#fff}.wrap{max-width:none;padding:0}.topbar,.admin-actions,.no-print,#login{display:none!important}.hidden{display:none!important}#reportsTab{display:block!important}.card{border-color:#d0d5dd;border-radius:8px;break-inside:avoid}.report-filter-card{display:none!important}.report-history{max-height:none;overflow:visible}.table-scroll{overflow:visible}.report-table{min-width:0}.report-table th{position:static;background:#fff}.report-stats{grid-template-columns:repeat(4,1fr)}.report-breakdowns{grid-template-columns:1fr 1fr}.report-heading{margin-top:0}button{display:none!important}}

/* V3.6 Phase 4 — reliability, offline queue and PWA */
.status-queued{color:#7a2e0e;background:#fff3e8;border-color:#f7b27a}.task .btn:disabled{opacity:.48;cursor:not-allowed}.reliability-alert{background:#fff3e8;color:#7a2e0e;border:1px solid #f7b27a}.reliability-status{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:10px 0}.reliability-status:last-of-type{border-bottom:0}.reliability-device{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-bottom:8px}.reliability-device:last-child{margin-bottom:0}
@media(max-width:600px){.reliability-device{align-items:flex-start}.reliability-status{align-items:flex-start}}


/* V3.7 — DoubleTick WhatsApp PDF automation */
.wa-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.wa-status-grid .reliability-status{border:1px solid var(--line);border-radius:12px;padding:12px}.wa-settings-grid{display:grid;grid-template-columns:2fr 1.2fr .7fr;gap:10px}.wa-settings-grid label,.wa-automation-card label{display:grid;gap:5px;font-size:13px;font-weight:650}.wa-settings-grid input,.wa-settings-grid textarea,.wa-automation-card input{min-height:46px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff;min-width:0;font:inherit}.wa-settings-grid textarea{resize:vertical;min-height:88px}.wa-wide{grid-column:1/-1}.wa-automation-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wa-automation-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfcfe}.wa-log-table{min-width:850px}.wa-log-sent{color:var(--ok);font-weight:750}.wa-log-failed{color:var(--danger);font-weight:750}.wa-log-skipped{color:var(--muted);font-weight:750}
@media(max-width:900px){.wa-status-grid,.wa-automation-grid{grid-template-columns:1fr}.wa-settings-grid{grid-template-columns:1fr 1fr}.wa-wide{grid-column:1/-1}}
@media(max-width:600px){.wa-settings-grid{grid-template-columns:1fr}.wa-wide{grid-column:auto}.wa-automation-card .row-head{gap:8px}.wa-automation-card .switch-row{justify-content:flex-start}}

.wa-location-routes{display:grid;gap:10px}.wa-location-route{display:grid;grid-template-columns:minmax(140px,.8fr) minmax(220px,2fr) auto;gap:10px;align-items:start;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}.wa-location-route textarea{width:100%;min-height:68px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font:inherit;resize:vertical}.wa-location-name{font-weight:750}.wa-location-route.removed{opacity:.65;background:#f8fafc}@media(max-width:760px){.wa-location-route{grid-template-columns:1fr}.wa-location-route .toolbar{justify-content:flex-start}}

/* V3.8 completion proof */
.completion-proof-card{max-width:620px}
.completion-proof-card textarea{min-height:96px;resize:vertical}
.proof-upload{display:flex;flex-direction:column;gap:7px}
.proof-upload input[type=file]{font-size:16px;padding:12px;border:1px solid var(--border,#d0d5dd);border-radius:10px;background:#fff;min-height:48px}
.proof-preview{display:block;max-width:100%;max-height:260px;object-fit:contain;border:1px solid var(--border,#d0d5dd);border-radius:10px;margin-top:10px;background:#f8fafc}


/* V3.8.2 — completion proof in reports */
.report-history-table{min-width:1120px}
.report-note{max-width:300px;white-space:pre-wrap;overflow-wrap:anywhere}
.report-proof-link{display:inline-block}
.report-proof-thumb{display:block;width:96px;height:72px;object-fit:cover;border:1px solid var(--line);border-radius:8px;background:#f8fafc}
.report-proof-unavailable{color:var(--warn);font-size:12px;max-width:120px}
@media print{.report-history-table{min-width:0;font-size:9px}.report-history-table th,.report-history-table td{padding:5px 4px;font-size:9px}.report-note{max-width:180px}.report-proof-thumb{width:74px;height:56px;object-fit:contain}.report-proof-link{text-decoration:none;color:inherit}}

/* V3.8.3 — kiosk Quick / Unscheduled Tasks */
.kiosk-toolbar .toolbar-spacer{flex:1 1 auto}.quick-task-btn{background:#0f766e;color:#fff;border-color:#0f766e;font-weight:750}.quick-task-btn:disabled{opacity:.45;cursor:not-allowed}.quick-task-card{width:min(720px,100%)}.quick-task-form{display:grid;gap:12px}.quick-task-form label{display:grid;gap:6px;font-size:13px;font-weight:700}.quick-task-form input,.quick-task-form select,.quick-task-form textarea{width:100%;min-height:46px;border:1px solid var(--line);border-radius:11px;padding:9px 11px;background:#fff;font:inherit}.quick-task-form textarea{resize:vertical}.quick-field-help{font-size:12px;font-weight:400}.quick-task-row{border-color:#99d5cf}.quick-badge{color:#0f766e;background:#f0fdfa;border-color:#99f6e4;font-weight:800}.task-type-badges{margin-top:0;margin-bottom:6px}.quick-task-details{margin-top:8px;padding:8px 10px;border-radius:9px;background:#f8fafc;border:1px solid #e4e7ec;white-space:pre-wrap;overflow-wrap:anywhere}.quick-ref{display:inline-flex;align-items:center;gap:8px;margin-top:8px;text-decoration:none;color:#175cd3;font-size:12px;font-weight:700}.quick-ref img{width:68px;height:52px;object-fit:cover;border:1px solid var(--line);border-radius:7px;background:#f8fafc}.quick-stat{border-color:#99d5cf}
@media(max-width:600px){.kiosk-toolbar .toolbar-spacer{display:none}.kiosk-toolbar .quick-task-btn{flex:1 1 100%;width:100%}.quick-ref img{width:58px;height:44px}}
