.bpms-site-overview-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.35fr);gap:18px;margin:20px 0}
.bpms-site-card{min-width:0;padding:18px;border:1px solid #dbe3ef;border-radius:16px;background:#fff;box-shadow:0 5px 18px rgba(15,42,102,.07)}
.bpms-site-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.bpms-site-card-head small{display:block;margin-bottom:4px;color:#64748b;font-size:11px;font-weight:900;letter-spacing:.07em}.bpms-site-card h2{margin:0;color:#102a66;font-size:22px}.bpms-site-card-head button{margin:0;padding:8px 11px;border:0;border-radius:8px;background:#294fa3;color:#fff;font-weight:800;cursor:pointer}
.bpms-site-delivery-value{font-size:42px;font-weight:950;line-height:1;color:#173f91}.bpms-site-delivery-caption{margin:4px 0 12px;color:#64748b;font-weight:700}
.bpms-site-delivery-road{position:relative;height:52px;overflow:hidden;border-radius:10px;background:#475569}.bpms-site-delivery-road:after{content:"";position:absolute;left:8px;right:8px;top:25px;border-top:3px dashed rgba(255,255,255,.8)}.bpms-site-delivery-road .truck{position:absolute;z-index:2;left:clamp(5px,calc(var(--progress) - 25px),calc(100% - 66px));bottom:5px;font-size:34px;line-height:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3));transition:left .8s ease;animation:bpms-site-truck-bob .8s ease-in-out infinite alternate}.bpms-site-delivery-road .site{position:absolute;z-index:2;right:5px;bottom:4px;font-size:31px}
@keyframes bpms-site-truck-bob{to{transform:translateY(-2px)}}
.bpms-site-delivery-stack{display:flex;height:12px;margin:12px 0 10px;overflow:hidden;border-radius:999px;background:#e2e8f0}.bpms-site-delivery-stack span{display:block;height:100%;transition:width .5s ease}.bpms-site-delivery-stack .done{background:#169447}.bpms-site-delivery-stack .partial{background:#f2a51a}.bpms-site-delivery-stack .outstanding{background:#cbd5e1}
.bpms-site-delivery-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.bpms-site-delivery-stat{padding:9px;border-radius:10px;background:#f8fafc}.bpms-site-delivery-stat b{display:block;color:#102a66;font-size:18px}.bpms-site-delivery-stat span{color:#64748b;font-size:11px;font-weight:800}.bpms-site-delivery-stat.done{border-top:4px solid #169447}.bpms-site-delivery-stat.partial{border-top:4px solid #f2a51a}.bpms-site-delivery-stat.outstanding{border-top:4px solid #94a3b8}
.bpms-site-card-link{display:inline-block;margin-top:13px;color:#2452aa;font-size:13px;font-weight:900;text-decoration:none}
.bpms-today-tools{display:flex;gap:7px}.bpms-today-tools button.secondary{background:#e8eef8;color:#173f91}.bpms-today-list{display:grid;gap:8px;max-height:360px;overflow:auto}.bpms-today-empty,.bpms-site-loading{padding:18px;border:1px dashed #b8c4d6;border-radius:11px;background:#f8fafc;color:#64748b;text-align:center}
.bpms-today-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;padding:12px;border:1px solid #dfe5ef;border-left:5px solid #f2a51a;border-radius:11px;background:#fbfdff}.bpms-today-row[data-status="completed"]{border-left-color:#169447}.bpms-today-row[data-status="on hold"]{border-left-color:#b42318}.bpms-today-row h3{margin:0;color:#102a66;font-size:16px;line-height:1.25}.bpms-today-row p{grid-column:1/-1;margin:0;color:#475569;font-size:13px}.bpms-today-meta{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-top:5px;color:#64748b;font-size:12px}.bpms-today-status{padding:4px 7px;border-radius:999px;background:#fff0c2;color:#765100;font-size:11px;font-weight:900}.bpms-today-status[data-status="completed"]{background:#dcfce7;color:#166534}.bpms-today-status[data-status="on hold"]{background:#fee2e2;color:#991b1b}.bpms-today-actions{display:flex;gap:5px;align-self:start}.bpms-today-actions button{margin:0;padding:6px 8px;border:0;border-radius:6px;font-size:11px;font-weight:900;cursor:pointer}.bpms-today-actions .edit{background:#e8eef8;color:#173f91}.bpms-today-actions .delete{background:#b42318;color:#fff}
.bpms-work-modal{position:fixed;inset:0;z-index:10060;padding:20px;overflow:auto;background:rgba(15,23,42,.68);backdrop-filter:blur(2px)}.bpms-work-modal[hidden]{display:none!important}.bpms-work-dialog{width:min(620px,100%);margin:5vh auto;padding:20px;border-radius:16px;background:#fff;box-shadow:0 22px 60px rgba(0,0,0,.3)}.bpms-work-dialog-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.bpms-work-dialog h2{margin:0;color:#102a66}.bpms-work-close{width:42px;height:42px;margin:0;padding:0;border:0;border-radius:50%;background:#e8eef8;color:#173f91;font-size:26px}.bpms-work-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.bpms-work-form label{display:grid;gap:6px;color:#1e293b;font-weight:800}.bpms-work-form .full{grid-column:1/-1}.bpms-work-form input,.bpms-work-form select,.bpms-work-form textarea{width:100%;padding:10px;border:1px solid #aebdce;border-radius:8px;font:inherit}.bpms-work-form textarea{min-height:85px}.bpms-work-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.bpms-work-form-actions button{margin:0;padding:10px 14px;border:0;border-radius:8px;font-weight:900}.bpms-work-cancel{background:#e8eef8;color:#173f91}.bpms-work-save{background:#169447;color:#fff}
@media(max-width:820px){.bpms-site-overview-grid{grid-template-columns:1fr}.bpms-site-card{padding:15px}.bpms-site-card-head{display:block}.bpms-today-tools{margin-top:11px}.bpms-site-delivery-value{font-size:36px}}
@media(max-width:520px){.bpms-site-delivery-stats{gap:5px}.bpms-site-delivery-stat{padding:7px}.bpms-site-delivery-stat b{font-size:16px}.bpms-work-modal{padding:0}.bpms-work-dialog{min-height:100%;margin:0;border-radius:0}.bpms-work-form{grid-template-columns:1fr}.bpms-work-form .full{grid-column:1}.bpms-today-row{grid-template-columns:1fr}.bpms-today-actions{grid-row:3}.bpms-today-tools{display:grid;grid-template-columns:1fr 1fr}.bpms-today-tools button{width:100%}}
@media(prefers-reduced-motion:reduce){.bpms-site-delivery-road .truck{animation:none;transition:none}}
@media print{.bpms-site-overview-grid,.bpms-work-modal{display:none!important}}
