/*
 * Maintenance planner v2 — scoped additions (.mp-*) layered on the REAL
 * app.css + scheduling-pro.css. Palette matches scheduling-pro.css exactly:
 * ink #24364b, borders #d7e0e9/#dce4ed/#dfe6ee, primary #2864ad (hover #225692),
 * hover row #edf3fa. New surfaces reuse the .sp-editor / .sp-preview idiom.
 */

/* full-height host so the board fills like the real page */

.maintenance-planner{flex:1;min-height:0;display:flex;flex-direction:column;font:var(--ds-text-sm) var(--ds-font);color:var(--ds-ink)}
.maintenance-planner .sched-pro{flex:1;min-height:0}
.maintenance-planner .sp-board{display:flex;flex-direction:column;min-width:0;flex:1}
.maintenance-planner .sp-scroll{flex:1;overflow:auto;position:relative}

/* command-bar additions */
.mp-search{border:1px solid var(--ds-field);background:var(--ds-canvas);border-radius:var(--ds-r-md);color:var(--ds-ink);font-size:var(--ds-text-sm);padding:5px 9px;min-width:220px}
.mp-search:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-1px;border-color:var(--ds-focus)}
.mp-opsel{display:flex;align-items:center;gap:6px;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-opsel select{border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:4px 6px;font-size:var(--ds-text-sm);color:var(--ds-ink);background:var(--ds-surface);font-weight:var(--ds-w-semi)}
.mp-spacer{flex:1}
/* work-queue show/hide toggle — labeled, with a side-panel icon + pressed state */
.mp-qtoggle{display:inline-flex;align-items:center;gap:6px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);border:1px solid var(--ds-field);background:var(--ds-surface);border-radius:var(--ds-r-md);padding:5px 10px;cursor:pointer}
.mp-qtoggle:hover{border-color:var(--ds-field)}
.mp-qtoggle.on{background:var(--ds-sel-bg);border-color:var(--ds-field);color:var(--ds-ink)}
.mp-qt-ico{width:14px;height:11px;border:1.5px solid currentColor;border-radius:var(--ds-r-tag);position:relative;flex:none}
.mp-qt-ico::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:currentColor;border-radius:var(--ds-r-tag) 0 0 var(--ds-r-tag)}

/* queue container + header + filters */
.mp-queue{width:326px;min-width:280px;max-width:420px;display:flex;flex-direction:column;background:var(--ds-surface);border-right:1px solid var(--ds-line)}
.mp-qhead{display:flex;align-items:center;gap:8px;padding:9px 11px 7px}
.mp-qhead>strong{font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-qcount{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3)}
.mp-qx{margin-left:auto;border:0;background:transparent;color:var(--ds-ink-3);font-size:var(--ds-text-md);line-height:1;cursor:pointer;padding:0 2px}
.mp-qsearch{padding:0 11px 8px}
.mp-qsearch input{width:100%;box-sizing:border-box;border:1px solid var(--ds-field);background:var(--ds-canvas);border-radius:var(--ds-r-md);font-size:var(--ds-text-sm);padding:6px 9px;color:var(--ds-ink)}
.mp-qsearch input:focus{outline:2px solid var(--ds-focus);outline-offset:-1px;border-color:var(--ds-focus)}
.mp-qfresh{margin:0 11px 8px;font-size:var(--ds-text-caps)}
.mp-seg{display:flex;background:var(--ds-canvas);border-radius:var(--ds-r-md);padding:2px}
.mp-qseg{margin:0 11px 7px}
.mp-seg button{flex:1;border:0;background:transparent;color:var(--ds-ink-3);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);padding:5px 3px;border-radius:var(--ds-r-md);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:3px;white-space:nowrap}
.mp-seg button em{font-style:normal;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3)}
.mp-seg button.on{background:var(--ds-surface);color:var(--ds-ink);box-shadow:none}
.mp-seg button.on em{color:var(--ds-ink)}
.mp-qsort{display:flex;align-items:center;gap:6px;padding:0 11px 8px;border-bottom:1px solid var(--ds-hair)}
.mp-qsort label{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px}
.mp-qsort select{flex:1;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);background:var(--ds-surface);padding:4px 7px}
.mp-qlist{flex:1;overflow:auto;padding:6px 8px}

/* work rows — full site name, native dot+text status (no pills) */
.mp-row{display:flex;flex-direction:column;gap:2px;border:1px solid var(--ds-field);border-left:3px solid var(--sp-color);border-radius:var(--ds-r-md);background:var(--ds-surface);padding:7px 10px;margin-bottom:5px;cursor:pointer}
.mp-row:hover{border-color:var(--ds-field);border-left-color:var(--sp-color);background:var(--ds-paper-hover);box-shadow:none}
.mp-row.mp-sel{border-color:var(--ds-action);border-left-color:var(--sp-color);box-shadow:0 0 0 1px var(--ds-focus) inset;background:var(--ds-sel-bg)}
.mp-row-site{font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink);line-height:1.3}
.mp-row-meta{font-size:var(--ds-text-caps);color:var(--ds-ink-3);line-height:1.35}
.mp-row-meta b{font-weight:var(--ds-w-semi);color:var(--ds-ink-2);font-variant-numeric:tabular-nums}
.mp-est-unit{white-space:nowrap}
.mp-row-status{display:flex;align-items:center;gap:6px;margin-top:1px}
.mp-row-status>i{width:7px;height:7px;border-radius:50%;background:var(--sp-color);flex:none;border:1px solid var(--ds-line)}
.mp-row-st{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);flex:none;white-space:nowrap}
.mp-row-st-warn{color:var(--ds-st-route-ink)}
.mp-row-when{margin-left:auto;flex:0 1 auto;min-width:0;font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-warn{color:var(--ds-st-route-ink);font-weight:var(--ds-w-semi)}

/* plan strip under the command bar */
.mp-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px;background:var(--ds-canvas);border-bottom:1px solid var(--ds-line)}
.mp-strip-info{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.mp-strip-info strong{color:var(--ds-ink)}
.mp-strip-btns{display:flex;gap:8px;flex:none}
.mp-btn.mp-ghost{color:var(--ds-ink-3)}

/* date-rail markers for days that have planned visits */
.maintenance-planner .sp-days>button.mp-hasplan{position:relative}
.mp-daydot{position:absolute;top:2px;right:3px;font-style:normal;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);line-height:1;color:var(--ds-action-fg);background:var(--ds-st-done);border-radius:var(--ds-r-full);min-width:11px;height:11px;display:flex;align-items:center;justify-content:center;padding:0 2px}
.maintenance-planner .sp-days>button.selected .mp-daydot{background:var(--ds-surface);color:var(--ds-ink)}

/* highlighted block (the visit being reviewed) */
.maintenance-planner .sp-block.mp-highlight{outline:2px solid var(--ds-focus)!important;outline-offset:1px;box-shadow:var(--ds-e-pop)!important;z-index:6}

/* planned vs busy block treatment */
.maintenance-planner .sp-block.mp-busy{opacity:.62;filter:saturate(.6)}
.maintenance-planner .sp-block.mp-planned{cursor:pointer!important}
.maintenance-planner .sp-block.mp-planned:hover{box-shadow:var(--ds-e-pop)}

/* ---------- sheet (one job) ---------- */
.mp-ln-t button{display:block;width:100%;border:0;background:transparent;padding:0;text-align:left;font:inherit;color:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.mp-ln-t button:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.mp-sheet-backdrop{position:fixed;inset:0;background:color-mix(in srgb, var(--ds-brand-ink) 32%, transparent);display:flex;justify-content:center;align-items:center;padding:20px;z-index:60}
.mp-sheet{width:min(1040px,96vw);max-height:92vh;background:var(--ds-surface);border-radius:var(--ds-r-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--ds-e-pop);animation:mpSlide .16s ease}
@keyframes mpSlide{from{transform:translateY(10px);opacity:.6}to{transform:none;opacity:1}}
.mp-sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-top:3px solid var(--sp-color);border-bottom:1px solid var(--ds-line);background:var(--ds-canvas);border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0}
.mp-sheet-title{min-width:0}
.mp-sheet-head h2{margin:0;font-size:var(--ds-text-d2);font-weight:var(--ds-w-semi);color:var(--ds-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-sheet-head p{margin:3px 0 0;font-size:var(--ds-text-sm);color:var(--ds-ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-stat{font-weight:var(--ds-w-semi)}
.mp-step{display:flex;align-items:center;gap:6px;flex:none;font-size:var(--ds-text-caps);color:var(--ds-ink-2);background:var(--ds-surface);border:1px solid var(--ds-field);border-radius:var(--ds-r-full);padding:2px 4px}
.mp-step button{border:0;background:transparent;color:var(--ds-ink);font-size:var(--ds-text-md);line-height:1;cursor:pointer;padding:2px 6px;border-radius:var(--ds-r-full)}
.mp-step button:disabled{color:var(--ds-ink-3);cursor:default}
.mp-step span{font-variant-numeric:tabular-nums;white-space:nowrap}
.mp-x{border:0;background:transparent;font-size:var(--ds-text-d2);line-height:1;color:var(--ds-ink-3);cursor:pointer;padding:0 4px;flex:none}

/* job facts strip in the sheet */
.mp-facts{display:flex;flex-wrap:wrap;gap:6px 28px}
.mp-fact{display:flex;flex-direction:column;gap:1px;min-width:0}
.mp-fact.mp-fact-wide{flex-basis:100%}
.mp-fact>span{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px}
.mp-fact>strong{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);line-height:1.3}
.mp-fact a{color:var(--ds-ink);text-decoration:none}
.mp-fact a:hover{text-decoration:underline}
.mp-sheet-body{flex:1;min-height:0;overflow:auto;display:block}
.mp-sec-facts{padding:9px 18px;border-bottom:1px solid var(--ds-line);background:var(--ds-surface)}
.mp-sec-facts .mp-facts{min-width:0}
/* top row: ranked suggestions (left) | email (right) */
.mp-two{display:flex;align-items:stretch}
.mp-two-sched{flex:1;min-width:0;display:flex;flex-direction:column;padding:12px 16px;border-right:1px solid var(--ds-line);background:var(--ds-surface)}
.mp-two-solo .mp-two-sched{border-right:0;background:var(--ds-surface)}
/* board-work sheet: cap the full-width ranked list so it doesn't read sparse and the day board stays in view */
.mp-two-solo .mp-nx-list{max-height:300px;overflow:auto}
.mp-two-solo .mp-av-title,.mp-two-solo .mp-nx-list{max-width:760px}
.mp-two-email{flex:1.1;min-width:0;display:flex;flex-direction:column;padding:12px 16px}
/* full-width day board below */
.mp-sec-board{padding:12px 16px;border-top:1px solid var(--ds-line)}
/* visit fields band */
.mp-sec-fields{padding:10px 16px 14px;border-top:1px solid var(--ds-hair);background:var(--ds-surface)}
.mp-sec-fields .mp-form{margin-bottom:0}
/* board-native scheduling: eligible techs as lanes for one day */
.mp-bd{border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);overflow:hidden;background:var(--ds-surface);margin-bottom:10px}
.mp-bd-h{display:flex;align-items:center;justify-content:space-between;padding:6px 9px;background:var(--ds-canvas);border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-2)}
.mp-bd-h button{flex:none;border:1px solid var(--ds-field);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-md);width:22px;height:22px;cursor:pointer;font-size:var(--ds-text-md);line-height:1;padding:0}
.mp-bd-ax,.mp-ln{display:grid;grid-template-columns:78px 1fr}
.mp-bd-ax{border-bottom:1px solid var(--ds-hair)}
.mp-axr{position:relative;height:14px}
.mp-axr span{position:absolute;transform:translateX(-50%);font-size:var(--ds-text-caps);color:var(--ds-ink-3);top:1px}
.mp-ln{border-bottom:1px solid var(--ds-hair)}
.mp-ln:last-child{border-bottom:0}
.mp-ln.on .mp-ln-t{background:var(--ds-sel-bg)}
.mp-ln-t{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);padding:5px 8px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--ds-hair);min-width:0}
.mp-ln-t small{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-weight:var(--ds-w-medium)}
.mp-ln-tr{position:relative;height:30px;background:var(--ds-canvas);background-image:linear-gradient(90deg,var(--ds-line) 1px,transparent 1px);background-size:20% 100%;background-position:10% 0}
.mp-ln-seg{position:absolute;top:3px;bottom:3px;border-radius:var(--ds-r-sm);font-size:var(--ds-text-caps);padding:2px 5px;overflow:hidden;white-space:nowrap;display:flex;align-items:center;box-sizing:border-box}
.mp-ln-seg.busy{background:var(--ds-canvas);color:var(--ds-ink-2);border:1px solid var(--ds-line)}
.mp-ln-seg.this{background:var(--sp-bg,var(--ds-st-done-bg));border:1.5px solid var(--sp-color,var(--ds-st-done));color:var(--ds-st-done-ink);font-weight:var(--ds-w-semi);box-shadow:none;z-index:2}
.mp-ln-slot{position:absolute;top:3px;bottom:3px;min-width:46px;border:1px dashed var(--ds-st-done);background:var(--ds-st-done-bg);border-radius:var(--ds-r-sm);font-size:var(--ds-text-caps);color:var(--ds-st-done-ink);font-weight:var(--ds-w-semi);cursor:pointer;padding:0 4px}
.mp-ln-slot:hover{background:var(--ds-st-done-bg);border-color:var(--ds-st-done);border-style:solid}
.mp-ln-none{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:var(--ds-text-caps);color:var(--ds-ink-2)}
.mp-two-email .mp-email{flex:1;min-height:0}
.mp-two-email .mp-em-top{grid-template-columns:1fr}
.mp-two-email .mp-field-msg{flex:1;min-height:0;display:flex;flex-direction:column}
.mp-two-email .mp-field-msg textarea{flex:1;min-height:180px;resize:vertical}
/* Cc — selectable site-contact chips */
.mp-cc-chips{display:flex;flex-wrap:wrap;gap:6px}
.mp-cc-chip{border:1px solid var(--ds-field);background:var(--ds-surface);color:var(--ds-ink-2);border-radius:var(--ds-r-full);padding:4px 11px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);cursor:pointer}
.mp-cc-chip:hover{background:var(--ds-paper-hover);border-color:var(--ds-field)}
.mp-cc-chip.on{background:var(--ds-sel-bg);border-color:var(--ds-field);color:var(--ds-ink)}
.mp-cc-none{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-style:italic}
/* queue toolbar: restrained command-menu filter (Linear-style) — monochrome, dense; the accent
   colour appears only on the selected/active state. No category colours, no icons on rows. */
.mp-qbar{display:flex;gap:6px;align-items:center;padding:2px 11px 9px}
.mp-fpop{position:relative;flex:1;min-width:0}
.mp-fctl{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;height:30px;border:1px solid var(--ds-field);background:var(--ds-surface);border-radius:var(--ds-r-md);padding:0 9px;font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.mp-fctl::-webkit-details-marker{display:none}
.mp-fctl:hover{background:var(--ds-paper-hover)}
.mp-fctl b{font-weight:var(--ds-w-semi);color:var(--ds-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.mp-fctl.active{border-color:var(--ds-field);background:var(--ds-sel-bg)}
.mp-fpop[open] .mp-fctl{border-color:var(--ds-field);background:var(--ds-sel-bg)}
.mp-fpop svg{stroke-linecap:round;stroke-linejoin:round}
.mp-fico{width:13px;height:13px;stroke:var(--ds-icon);stroke-width:1.8;fill:none;flex:none}
.mp-fctl.active .mp-fico,.mp-fpop[open] .mp-fico{stroke:var(--ds-ink)}
.mp-fcv{width:11px;height:11px;stroke:var(--ds-icon);stroke-width:2;fill:none;flex:none;transition:transform .16s}
.mp-fpop[open] .mp-fcv{transform:rotate(180deg)}
.mp-fpop:not([open]) .mp-fpop-body{display:none}
.mp-fpop-body{position:absolute;z-index:30;top:calc(100% + 4px);left:0;min-width:100%;width:max-content;max-width:min(322px,88vw);background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);padding:4px}
.mp-fgrp{display:flex;justify-content:space-between;align-items:center;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.05em;text-transform:uppercase;color:var(--ds-ink-3);padding:7px 8px 4px}
.mp-fgrp button{border:0;background:none;color:var(--ds-ink-3);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:0;text-transform:none;cursor:pointer}
.mp-fgrp button:hover{color:var(--ds-ink)}
.mp-foi{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:var(--ds-r-md);font-size:var(--ds-text-base);color:var(--ds-ink-2);cursor:pointer}
.mp-foi:hover{background:var(--ds-paper-hover)}
.mp-foi .mp-fck{width:14px;height:14px;stroke:var(--ds-ink);stroke-width:2.4;fill:none;flex:none;opacity:0}
.mp-foi.sel{color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-foi.sel .mp-fck{opacity:1}
.mp-foi .mp-nm{flex:1;white-space:nowrap}
.mp-foi .mp-ct{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-weight:var(--ds-w-semi);font-variant-numeric:tabular-nums}
.mp-fdiv{height:1px;background:var(--ds-canvas);margin:4px 6px}
.mp-fstx{display:flex;gap:2px;padding:2px 3px 5px}
.mp-fstx button{flex:1;height:26px;border:0;background:none;border-radius:var(--ds-r-md);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);display:flex;align-items:center;justify-content:center;gap:3px;cursor:pointer;white-space:nowrap;padding:0 2px}
.mp-fstx button:hover{background:var(--ds-paper-hover);color:var(--ds-ink-2)}
.mp-fstx button.on{background:var(--ds-sel-bg);color:var(--ds-ink)}
.mp-fstx .mp-ct{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-weight:var(--ds-w-semi)}
.mp-fstx button.on .mp-ct{color:var(--ds-ink-3)}
.mp-qsort{display:flex;align-items:center;gap:5px;flex:none;padding:0;border:0}
.mp-qsort label{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:none;letter-spacing:0}
.mp-qsort select{border:1px solid var(--ds-field);background:var(--ds-surface);border-radius:var(--ds-r-md);height:30px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);padding:0 6px;min-width:64px}
.mp-qcount{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);font-variant-numeric:tabular-nums;margin-left:5px}
/* monochrome cost-center tag on every queue row — a muted label + neutral dot (no rainbow) */
.mp-cc-tag{display:inline-flex;align-items:center;gap:5px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ds-ink-3);margin-right:6px;vertical-align:middle}
.mp-cc-tag::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--ds-line);flex:none}
.mp-row-board .mp-row-meta{color:var(--ds-ink-2)}
/* contract rate fact — emphasized */
.mp-fact-rate strong{color:var(--ds-ink)}
/* toast */
.mp-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(12px);background:var(--ds-chrome);color:var(--ds-action-fg);font-size:var(--ds-text-base);padding:10px 16px;border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);max-width:520px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:80}
.mp-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* inline-editable proposal form (no separate "adjust" step) */
.mp-form{display:flex;flex-direction:column;gap:9px;margin-bottom:12px}
.mp-fld-row{display:grid;grid-template-columns:1.2fr .95fr .95fr;gap:10px;align-items:end}
.mp-fld-row.mp-fld-5{grid-template-columns:1fr 1fr 1.2fr 1fr 1.2fr}
.mp-fld-row.mp-fld-4{grid-template-columns:1fr 1fr 1.2fr 1fr}
.mp-fld{display:flex;flex-direction:column;gap:3px;min-width:0;justify-content:flex-end}
.mp-fld>label{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-fld>small{font-size:var(--ds-text-caps);color:var(--ds-ink-3);line-height:1.3}
.mp-fld select,.mp-fld input{border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:7px 8px;font-size:var(--ds-text-sm);color:var(--ds-ink);background:var(--ds-surface);font-family:inherit;width:100%;box-sizing:border-box;font-weight:var(--ds-w-semi)}
.mp-fld select:hover,.mp-fld input:hover{border-color:var(--ds-field)}
.mp-fld select:focus,.mp-fld input:focus{outline:2px solid var(--ds-focus);outline-offset:-1px;border-color:var(--ds-focus)}
.mp-fld input:disabled{background:var(--ds-canvas);color:var(--ds-ink-3)}
.mp-fld .mp-arrseg{display:flex;background:var(--ds-canvas);border-radius:var(--ds-r-md);padding:2px}
.mp-fld .mp-arrseg button{flex:1;border:0;background:transparent;color:var(--ds-ink-3);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);padding:6px 4px;border-radius:var(--ds-r-sm);cursor:pointer}
.mp-fld .mp-arrseg button.on{background:var(--ds-surface);color:var(--ds-ink);box-shadow:none}
/* current selection summary */
.mp-sched-sel{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:var(--ds-text-base);color:var(--ds-ink-2);background:var(--ds-canvas);border:1px solid var(--ds-line);border-radius:var(--ds-r-md);padding:8px 11px;margin:2px 0 10px}
.mp-sched-sel .mp-ss-l{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px;margin-right:2px}
.mp-sched-sel strong{color:var(--ds-ink);font-weight:var(--ds-w-semi)}
/* section title (shared) */
.mp-av-title{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.3px;text-transform:uppercase;color:var(--ds-ink-2);margin:2px 0 6px;display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.mp-av-title span{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:0;text-transform:none;color:var(--ds-ink-3)}
/* Option A — next availability by technician (fills the schedule column, scrolls) */
.mp-nx-list{display:flex;flex-direction:column;gap:5px;flex:1;min-height:0;overflow:auto;padding-right:2px}
.mp-nx{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;text-align:left;width:100%;border:1px solid var(--ds-field);border-radius:var(--ds-r-lg);background:var(--ds-surface);padding:7px 10px;cursor:pointer}
.mp-nx:hover{border-color:var(--ds-field);background:var(--ds-paper-hover)}
.mp-nx.on{border-color:var(--ds-action);box-shadow:0 0 0 1px var(--ds-focus) inset;background:var(--ds-sel-bg)}
.mp-nx-tech{min-width:0}
.mp-nx-tech strong{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-nx-tech small{display:block;font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin-top:1px}
.mp-nx-when{text-align:right;white-space:nowrap}
.mp-nx-when strong{font-size:var(--ds-text-sm);color:var(--ds-ink);font-variant-numeric:tabular-nums}
.mp-nx-when span{display:block;font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-variant-numeric:tabular-nums}
.mp-nx-flag{display:inline-block;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);border-radius:var(--ds-r-full);padding:1px 6px;margin-left:5px;vertical-align:middle}
.mp-nx-flag.soon{background:var(--ds-st-done-bg);color:var(--ds-st-done-ink)}
.mp-nx-flag.close{background:var(--ds-canvas);color:var(--ds-ink)}
.mp-nx-none{opacity:.62;cursor:default}
.mp-nx-none .mp-nx-when{color:var(--ds-ink-3);font-size:var(--ds-text-caps)}
.mp-basisline{font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin:-3px 0 2px;display:flex;align-items:center;gap:6px}
.mp-basis{display:inline-block;background:var(--ds-canvas);color:var(--ds-ink-2);border-radius:var(--ds-r-sm);padding:1px 6px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi)}
.mp-basis-real{background:var(--ds-st-done-bg);color:var(--ds-st-done-ink)}

/* email — full-width band: To/Cc/Subject in a row, then the message */
.mp-email{display:flex;flex-direction:column;gap:9px}
.mp-em-top{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:10px}
.mp-email .mp-field-msg textarea{min-height:210px;resize:vertical}
.mp-emhead{display:flex;align-items:center;gap:7px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px}
.mp-opsel-inline{font:inherit;text-transform:none;letter-spacing:0;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink);border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:3px 6px;background:var(--ds-surface);cursor:pointer}
.mp-emhead-out{color:var(--ds-ink-3)}
.mp-sig{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);padding:2px 7px;border-radius:var(--ds-r-full);text-transform:none;letter-spacing:0}
.mp-sig.ok{background:var(--ds-st-done-bg);color:var(--ds-st-done-ink)}
.mp-sig.warn{background:var(--ds-tint);color:var(--ds-st-route-ink)}
.mp-field{display:flex;flex-direction:column;gap:3px}
.mp-field>label{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.3px}
.mp-field input,.mp-field textarea{border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:8px 10px;font-size:var(--ds-text-base);color:var(--ds-ink);background:var(--ds-surface);font-family:inherit;width:100%;box-sizing:border-box}
.mp-field textarea{line-height:1.5;resize:vertical;white-space:pre-wrap}
.mp-field input:focus,.mp-field textarea:focus{outline:2px solid var(--ds-focus);outline-offset:-1px;border-color:var(--ds-focus)}
.mp-norecip{background:var(--ds-tint);border:1px solid var(--ds-st-route-bd);color:var(--ds-st-route-ink);border-radius:var(--ds-r-md);padding:8px 10px;font-size:var(--ds-text-sm)}
.mp-stale{background:var(--ds-canvas);border:1px solid var(--ds-line);color:var(--ds-ink-2);border-radius:var(--ds-r-md);padding:7px 10px;font-size:var(--ds-text-sm);display:flex;justify-content:space-between;align-items:center;gap:8px}
.mp-stale button{border:1px solid var(--ds-action);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-md);padding:3px 9px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);cursor:pointer;white-space:nowrap}
.mp-note{background:var(--ds-canvas);border:1px solid var(--ds-line);color:var(--ds-ink-2);border-radius:var(--ds-r-md);padding:8px 10px;font-size:var(--ds-text-sm);margin-bottom:10px;line-height:1.4}
.mp-note b{color:var(--ds-ink)}
.mp-note.mp-note-amber{background:var(--ds-tint);border-color:var(--ds-st-route-bd);color:var(--ds-st-route-ink)}
/* reschedule / replan banner in the sheet */
.mp-rebanner{background:var(--ds-canvas);border:1px solid var(--ds-line);border-left:3px solid var(--ds-action);border-radius:var(--ds-r-md);padding:9px 11px;margin-bottom:12px}
.mp-rebanner.mp-rb-amber{background:var(--ds-tint);border-color:var(--ds-st-route-bd);border-left-color:var(--ds-st-route-bd)}
.mp-rb-t{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-rb-amber .mp-rb-t{color:var(--ds-st-route-ink)}
.mp-rb-a{font-size:var(--ds-text-sm);color:var(--ds-ink-2);margin-top:3px}
.mp-rb-a b{color:var(--ds-ink)}
.mp-rb-h{font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin-top:4px;line-height:1.35}
/* customer page: request-another-date chips */
.mp-calt2{margin-top:14px;border-top:1px solid var(--ds-hair);padding-top:14px;text-align:left}
.mp-calt2>label{display:block;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);margin-bottom:8px}
.mp-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.mp-chips button{border:1px solid var(--ds-field);background:var(--ds-surface);color:var(--ds-ink-2);border-radius:var(--ds-r-full);padding:6px 12px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);cursor:pointer}
.mp-chips button:hover{background:var(--ds-paper-hover);border-color:var(--ds-field)}
.mp-calt2 textarea{width:100%;box-sizing:border-box;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:9px 11px;font-size:var(--ds-text-base);font-family:inherit;line-height:1.4}
.mp-calt2 textarea.mp-err{border-color:var(--ds-st-late-bd);background:var(--ds-st-late-bg)}
.mp-calt2 .mp-btn{margin-top:10px}
.mp-calt2 .mp-calt-note{display:block;font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin-top:8px}

/* sheet footer */
.mp-sheet-foot,.mp-rev-foot{display:flex;justify-content:space-between;align-items:center;padding:11px 18px;border-top:1px solid var(--ds-line);background:var(--ds-surface)}
.mp-preview-note{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-style:italic}
.mp-foot-btns{display:flex;gap:8px}
.mp-btn{border:1px solid var(--ds-field);background:var(--ds-surface);color:var(--ds-ink-2);border-radius:var(--ds-r-md);padding:8px 14px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);cursor:pointer}
.mp-btn:hover{background:var(--ds-paper-hover)}
.mp-btn:disabled{opacity:.5;cursor:default}
.mp-btn.mp-primary{background:var(--ds-action);border-color:var(--ds-action);color:var(--ds-action-fg)}
.mp-btn.mp-primary:hover{background:var(--ds-action-hover)}
.mp-btn.mp-big{padding:11px 20px;font-size:var(--ds-text-md)}

/* ---------- review mode ---------- */
.mp-review{flex:1;display:flex;flex-direction:column;min-height:0}
.mp-rev-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--ds-line);background:var(--ds-canvas)}
.mp-rev-bar>strong{font-size:var(--ds-text-base);color:var(--ds-ink)}
.mp-rev-count{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-rev-workspace{flex:1;display:flex;min-height:0}
.mp-rev-list{width:300px;min-width:260px;overflow:auto;border-right:1px solid var(--ds-line);background:var(--ds-surface);padding:8px}
.mp-rev-row{display:block;width:100%;text-align:left;border:1px solid var(--ds-field);border-left:3px solid var(--sp-color);background:var(--ds-surface);border-radius:var(--ds-r-md);padding:8px 9px;margin-bottom:6px;cursor:pointer}
.mp-rev-row:hover{background:var(--ds-paper-hover)}
.mp-rev-row.on{border-color:var(--ds-action);box-shadow:0 0 0 2px var(--ds-focus) inset;background:var(--ds-sel-bg)}
.mp-rev-top{display:flex;justify-content:space-between;align-items:center;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-rev-sub{font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin-top:2px}
.mp-rev-sent{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-st-done-ink);background:var(--ds-st-done-bg);border-radius:var(--ds-r-full);padding:1px 7px}
.mp-rev-detail{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}

/* ---------- sync failure banner ---------- */
.mp-sync{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--ds-tint);border-bottom:1px solid var(--ds-st-route-bd);padding:10px 18px}
.mp-sync strong{display:block;font-size:var(--ds-text-base);color:var(--ds-st-route-ink)}
.mp-sync span{font-size:var(--ds-text-sm);color:var(--ds-st-route-ink)}

/* ---------- customer confirmation page ---------- */
.mp-confirm{flex:1;overflow:auto;background:var(--ds-canvas);display:flex;justify-content:center;padding:40px 16px}
.mp-cwrap{width:min(560px,100%)}
.mp-clogo{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);color:var(--ds-ink);letter-spacing:.3px;margin-bottom:14px;text-align:center}
.mp-ccard{background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);padding:26px 26px 22px;margin-bottom:14px}
.mp-ccard h1{margin:0 0 14px;font-size:var(--ds-text-d2);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-csum{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:6px 0 18px}
.mp-csum>div{display:flex;flex-direction:column;gap:2px}
.mp-csum span{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);text-transform:uppercase;letter-spacing:.4px}
.mp-csum strong{font-size:var(--ds-text-base);color:var(--ds-ink)}
.mp-cbtns{margin:6px 0}
.mp-calt{margin-top:14px;border-top:1px solid var(--ds-hair);padding-top:12px}
.mp-calt summary{cursor:pointer;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-calt label{display:block;font-size:var(--ds-text-sm);color:var(--ds-ink-3);margin:10px 0 4px}
.mp-calt textarea{width:100%;box-sizing:border-box;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:8px 10px;font-size:var(--ds-text-base);font-family:inherit}
.mp-calt textarea.mp-err{border-color:var(--ds-st-late-bd);background:var(--ds-st-late-bg)}
.mp-calt-note,.mp-cnote{font-size:var(--ds-text-caps);color:var(--ds-ink-3);margin-top:8px}
.mp-cnote{text-align:center}

/* responsive: narrow */
@media(max-width:820px){
  .mp-sheet-backdrop{padding:0}
  .mp-sheet{width:100vw;max-height:100vh;border-radius:0}
  .mp-two{flex-direction:column}
  .mp-two-sched{border-right:0;border-bottom:1px solid var(--ds-line)}
  .mp-nx-list{max-height:240px}
  .mp-fld-row.mp-fld-5,.mp-fld-row.mp-fld-4{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .mp-nx{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .mp-nx-when{white-space:normal;overflow-wrap:anywhere}
  .mp-em-top{grid-template-columns:1fr}
  .mp-csum{grid-template-columns:1fr}
  /* phone: the queue (the dispatcher's work list) is the primary full-height surface;
     the desktop technician-lane board is a wide-screen affordance and is hidden here */
  .maintenance-planner .sp-command{flex-wrap:wrap;height:auto;row-gap:6px}
  .maintenance-planner .sp-workspace{flex-direction:column;min-height:0}
  .mp-queue{position:static!important;width:auto!important;max-width:none!important;min-width:0!important;flex:1;height:auto!important;max-height:none!important;border-right:0;box-shadow:none!important;inset:auto!important}
  .mp-qx{display:none}
  .maintenance-planner .sp-board{display:none}
  .mp-fld-row{grid-template-columns:1fr 1fr}
  .mp-flag{display:none}
  .mp-top{padding:9px 14px}
  .mp-nav{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  .mp-nav button{white-space:nowrap}
  /* plan-all banner: stack so the primary "Send all reviewed" CTA is never clipped on a phone */
  .mp-strip{flex-direction:column;align-items:stretch;gap:8px}
  .mp-strip-btns{flex-wrap:wrap;flex:1 1 auto}
  .mp-strip-btns .mp-btn{flex:1 1 auto;justify-content:center}
  .mp-strip-btns .mp-primary{flex-basis:100%}
  .mp-toast{left:12px;right:12px;transform:translateY(12px);max-width:none}
  .mp-toast.on{transform:translateY(0)}
}

/* Composition host: keep the maintained board controller and DOM intact. */
.maintenance-planner{position:relative;display:flex;flex:1;min-width:0;max-width:100%;min-height:0;flex-direction:column}
.maintenance-planner .mp-composed-workspace{display:flex;flex:1;min-width:0;min-height:0}
.maintenance-planner #maintenanceQueueHost{display:flex;min-height:0;flex-shrink:0}
.maintenance-planner #maintenanceQueueHost:empty{display:none}
.maintenance-planner .mp-board-host{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}
.maintenance-planner .mp-board-host .sp-queue{display:none}
.maintenance-planner .mp-board-host [data-sched-show-queue],.maintenance-planner .mp-board-host [data-sched-toggle-queue]{display:none}
.maintenance-planner .mp-status{padding:8px 12px;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}
.maintenance-planner [data-maintenance-status]:empty{display:none}
.maintenance-planner>.sp-command>.sp-primary{border:1px solid var(--ds-action);background:var(--ds-action);color:var(--ds-action-fg);border-radius:var(--ds-r-md);padding:6px 12px;font-family:inherit;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);cursor:pointer}
.maintenance-planner>.sp-command>.sp-primary:hover{background:var(--ds-action-hover)}
.maintenance-planner .mp-row-st{white-space:normal;flex-shrink:1}
.maintenance-planner .mp-row-meta{overflow-wrap:anywhere}
.maintenance-planner .mp-foi:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-2px}
.maintenance-planner .mp-board-commands{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}
.maintenance-planner .mp-board-commands .mp-spacer{display:none}
.maintenance-planner>[data-maintenance-commands]>.sp-primary{display:inline-flex}
@media(min-width:821px){.maintenance-planner>[data-maintenance-commands].mp-commands-mounted{display:none}}
@media(max-width:820px){.maintenance-planner .mp-board-host{display:none}.maintenance-planner .mp-composed-workspace{flex-direction:column}}

/* Work queue toolbar: inline chips + sort pills (no menus). */
.mp-qchips{display:flex;flex-wrap:wrap;gap:4px;padding:0 11px 6px}
.mp-qchips-status{padding-top:0}
.mp-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 8px 3px 7px;font-size:var(--ds-text-caps);line-height:1.3;font-weight:var(--ds-w-semi);border:1px solid var(--ds-field);border-radius:var(--ds-r-full);background:var(--ds-canvas);color:var(--ds-ink-2);cursor:pointer}
.mp-chip span{color:var(--ds-ink-3);font-weight:var(--ds-w-semi);font-variant-numeric:tabular-nums}
.mp-chip.on{background:var(--ds-sel-bg);border-color:var(--ds-field);color:var(--ds-ink)}
.mp-chip.on span{color:var(--ds-ink)}
.mp-chip:hover{border-color:var(--ds-field)}
.mp-chip-all{background:var(--ds-surface)}
.mp-chip-clear{background:var(--ds-tint);border-color:var(--ds-st-route-bd);color:var(--ds-st-route-ink)}
.mp-cc-dot{width:8px;height:8px;border-radius:50%;flex:none;background:#92b2d1}
.mp-cc-dot.mp-cc-m{background:#2a8f5a}.mp-cc-dot.mp-cc-w{background:#2866d8}.mp-cc-dot.mp-cc-h{background:#c2611a}.mp-cc-dot.mp-cc-v{background:#7a4fb8}.mp-cc-dot.mp-cc-d{background:#92b2d1}
.mp-qsortrow{display:flex;flex-wrap:wrap;align-items:center;gap:3px;padding:0 11px 8px;border-bottom:1px solid var(--ds-hair);font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-qsortrow>span{margin-right:3px;font-weight:var(--ds-w-semi)}
.mp-qsortrow button{padding:3px 7px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);border:0;border-radius:var(--ds-r-sm);background:var(--ds-canvas);color:var(--ds-ink-2);cursor:pointer}
.mp-qsortrow button[aria-pressed=true]{background:var(--ds-sel-bg);color:var(--ds-ink)}
/* Crew rows on the sheet. */
.mp-visit-head{justify-content:space-between}
.mp-visit-x{border:0;background:transparent;color:var(--ds-ink-3);font-size:var(--ds-text-md);line-height:1;cursor:pointer;padding:0 4px}
.mp-visit-x:hover{color:var(--ds-st-late-ink)}
.mp-crew-actions{display:flex;align-items:center;gap:10px;margin:8px 0 2px}
.mp-crew-actions small{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-btn-sm{padding:5px 10px;margin-top:0}
.mp-crew-n{font-style:normal;font-weight:var(--ds-w-semi);font-size:var(--ds-text-caps);color:var(--ds-ink);background:var(--ds-canvas);border-radius:var(--ds-r-full);padding:1px 7px;margin-left:4px}
/* Command bar stays on one line: "Plan all maintenance" sits with the other commands. */
@media(min-width:821px){
  /* overflow stays visible: clipping here hid the Dispatch roster and Colours menus behind the schedule (2026-09-21) */
  .maintenance-planner .sp-command{flex-wrap:nowrap;height:auto;row-gap:0;overflow:visible}
  .maintenance-planner .sp-command>input{flex:1 1 90px;min-width:90px;width:auto}
  .maintenance-planner .mp-board-commands{flex:none;margin-left:auto;gap:6px}
  .maintenance-planner .mp-board-commands .mp-qtoggle{padding:5px 8px}
  /* The board fills the workspace height exactly like the queue beside it. */
  .maintenance-planner .mp-board-host>.sched-host{flex:1;min-height:0;display:flex;flex-direction:column}
  .maintenance-planner .mp-board-host .sched-pro{flex:1;min-height:0;height:auto}
}
/* The planner is the whole Schedules screen: pin it to the viewport so the queue list
   scrolls inside its panel and the board fills the same height (no page-long queue). */
@media(min-width:821px){
  .maintenance-planner{height:calc(100dvh - 59px);max-height:calc(100dvh - 59px);overflow:hidden}
  .maintenance-planner .mp-queue{min-height:0;overflow:hidden}
  .maintenance-planner .mp-qlist{min-height:0}
}

/* Explicit Refresh: the Simpro reconcile runs for tens of seconds; show it and block repeat clicks. */
body.sched-refreshing [data-sched-refresh]{pointer-events:none;opacity:.65;font-size:0}
body.sched-refreshing [data-sched-refresh]::after{content:'Syncing with Simpro\2026';font-size:var(--ds-text-base)}

/* Note under the Cc box: the operations mailbox is always copied on scheduling emails. */
.mp-autocc,.sp-autocc{display:block;margin-top:4px;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}

/* 2026-09-21 draft card: pager pinned beside ×, compact rows, one-screen three-column layout on wide windows */
.mp-sheet-title{flex:1}
.mp-sheet{width:min(1560px,97vw);max-height:95vh}
.mp-sheet-head{padding:8px 16px}
.mp-sec-facts{padding:6px 16px}
.mp-nx{padding:3px 9px;border-radius:var(--ds-r-md);gap:6px}
.mp-nx-list{gap:3px}
.mp-nx-tech small{margin-top:0;line-height:1.2}
.mp-nx-tech strong,.mp-nx-when strong,.mp-nx-when span{line-height:1.2}
.mp-email{gap:6px}
.mp-field input,.mp-field textarea{padding:5px 8px}
.mp-email .mp-field-msg textarea{min-height:150px}
.mp-sec-board{padding:8px 14px}
.mp-sec-fields{padding:8px 14px 10px}
.mp-two-sched,.mp-two-email{padding:8px 14px}
@media(min-width:1300px){
  .mp-sheet-body{display:grid;grid-template-columns:300px minmax(0,1fr) 440px;grid-template-rows:auto auto 1fr;align-content:start}
  .mp-sheet-body>*{grid-column:1/-1}
  .mp-two{display:contents}
  .mp-two-sched{grid-column:1;grid-row:2/4;border-right:1px solid var(--ds-line)}
  .mp-two-email{grid-column:3;grid-row:2/4;border-left:1px solid var(--ds-line)}
  .mp-sheet-body>.mp-sec-board{grid-column:2;grid-row:2;border-top:0}
  .mp-sheet-body>.mp-sec-fields{grid-column:2;grid-row:3}
  .mp-email,.mp-email .mp-field-msg{flex:1}
  .mp-email .mp-field-msg textarea{flex:1;min-height:260px}
  .mp-two-solo .mp-av-title,.mp-two-solo .mp-nx-list{max-width:none}
}
/* every draft card is the same size, so the pager never moves between cards */
.mp-sheet{height:95vh}
.mp-step span{display:inline-block;min-width:58px;text-align:center}

.mp-rep-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}
.mp-cc-note{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}

/* drafts stepper: filter + sort, clash/unchecked warning */
.mp-rvctl{display:flex;gap:10px;flex:none;align-items:center}
.mp-rvctl label{display:flex;align-items:center;gap:5px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.3px;text-transform:uppercase;color:var(--ds-ink-3)}
.mp-rvctl select{font:inherit;font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);text-transform:none;letter-spacing:0;color:var(--ds-ink);border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:3px 6px;background:var(--ds-surface)}
.mp-sched-warn{background:var(--ds-tint);border-color:var(--ds-st-route-bd);color:var(--ds-st-route-ink)}

/* ── Navy system, Phase 3 (2026-09-24): maintenance planner (the live Schedules page) ──
   Queue = paper column with 0.5px rules (§6.5); equipment codes as the stamped tag (D23);
   "Plan all maintenance" is the one filled primary on the page (D7); fields §6.11; banners D16.
   The Simpro status colour stays on each row's status dot (D24 spirit: staff match Simpro). */
.maintenance-planner{font:var(--ds-text-base)/var(--ds-lh-base) var(--ds-font);color:var(--ds-ink);font-variant-numeric:var(--ds-nums);background:var(--ds-canvas)}
.maintenance-planner button:focus-visible,.maintenance-planner input:focus-visible,.maintenance-planner select:focus-visible,.maintenance-planner textarea:focus-visible,.maintenance-planner summary:focus-visible,.maintenance-planner [tabindex]:focus-visible,.mp-sheet-backdrop button:focus-visible,.mp-sheet-backdrop input:focus-visible,.mp-sheet-backdrop select:focus-visible,.mp-sheet-backdrop textarea:focus-visible{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}

/* Command bar additions */
.maintenance-planner .sp-primary,.maintenance-planner>.sp-command>.sp-primary{height:var(--ds-control-h);padding:0 var(--ds-s-4);border:0;border-radius:var(--ds-r-md);font-size:var(--ds-text-base)}
.mp-qtoggle{height:var(--ds-control-h);padding:0 var(--ds-s-3);border:0;border-radius:var(--ds-r-md);box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-base);font-weight:var(--ds-w-medium)}
.mp-qtoggle:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.mp-qtoggle.on{background:var(--ds-sel-bg);box-shadow:inset 0 0 0 1px var(--ds-ink-3);color:var(--ds-ink)}
.maintenance-planner .mp-board-commands .mp-qtoggle{padding:0 var(--ds-s-3)}
.mp-search,.mp-qsearch input{height:var(--ds-control-h);border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-base)}
.mp-search:focus-visible,.mp-qsearch input:focus{box-shadow:inset 0 0 0 1px var(--ds-line);outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.maintenance-planner .mp-status{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}

/* Plan strip: a neutral banner (D16). The planner's one primary is "Plan all maintenance",
   so the strip's buttons are secondary. */
.mp-strip{background:var(--ds-canvas);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);padding:var(--ds-s-2) var(--ds-s-4);min-height:48px}
.mp-strip-info{font-size:var(--ds-text-base);color:var(--ds-ink-2)}
.mp-strip-info strong{color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-warn{color:var(--ds-st-late-ink);font-weight:var(--ds-w-semi)}
.mp-strip .mp-btn.mp-primary{background:var(--ds-surface);color:var(--ds-ink);box-shadow:var(--ds-e-secondary);font-weight:var(--ds-w-semi)}
.mp-strip .mp-btn.mp-primary:hover{background:var(--ds-paper-hover)}
.mp-strip .mp-btn.mp-primary:disabled{background:var(--ds-disabled-bg);color:var(--ds-disabled-fg);box-shadow:inset 0 0 0 1px var(--ds-disabled-bd)}

/* Buttons (D17) */
.mp-btn{height:var(--ds-control-h);padding:0 var(--ds-s-3);border:0;border-radius:var(--ds-r-md);box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-s-2)}
.mp-btn:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.mp-btn:active{background:var(--ds-canvas);box-shadow:var(--ds-e-secondary)}
.mp-btn:disabled{opacity:1;cursor:not-allowed;background:var(--ds-disabled-bg);color:var(--ds-disabled-fg);box-shadow:inset 0 0 0 1px var(--ds-disabled-bd)}
.mp-btn.mp-primary{background:var(--ds-action);color:var(--ds-action-fg);box-shadow:var(--ds-e-primary);font-weight:var(--ds-w-semi)}
.mp-btn.mp-primary:hover{background:var(--ds-action-hover);box-shadow:var(--ds-e-primary)}
.mp-btn.mp-primary:active{background:var(--ds-action-press);box-shadow:var(--ds-e-primary-press)}
.mp-btn.mp-primary:disabled{background:var(--ds-disabled-primary-bg);color:var(--ds-disabled-primary-fg);box-shadow:none}
.mp-btn.mp-big{height:var(--ds-primary-h);padding:0 var(--ds-s-5);font-size:var(--ds-text-base)}
.mp-btn-sm{height:28px;padding:0 var(--ds-s-2);font-size:var(--ds-text-sm)}
.mp-btn.mp-ghost{box-shadow:none;background:transparent;color:var(--ds-ink-2)}
.mp-x,.mp-qx,.mp-visit-x{color:var(--ds-icon);border-radius:var(--ds-r-md)}
.mp-x:hover,.mp-qx:hover{background:var(--ds-paper-hover);color:var(--ds-ink)}
.mp-visit-x:hover{color:var(--ds-st-late-ink)}

/* Work queue (§6.5) */
.mp-queue{background:var(--ds-surface);border-right:0;box-shadow:inset -1px 0 0 var(--ds-line)}
.mp-qhead{padding:var(--ds-s-4) var(--ds-s-4) var(--ds-s-3)}
.mp-qhead>strong{font-size:var(--ds-text-md);line-height:var(--ds-lh-md);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-tight);color:var(--ds-ink)}
.mp-qcount{font-size:var(--ds-text-base);font-weight:var(--ds-w-regular);color:var(--ds-ink-3)}
.mp-qsearch,.mp-qchips,.mp-qsortrow{padding-left:var(--ds-s-4);padding-right:var(--ds-s-4)}
.mp-qfresh{margin:0 var(--ds-s-4) var(--ds-s-2)}
.mp-chip{height:28px;padding:0 var(--ds-s-2);border:0;border-radius:var(--ds-r-md);box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);gap:6px}
.mp-chip span{color:var(--ds-ink-3);font-weight:var(--ds-w-regular)}
.mp-chip:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.mp-chip.on{background:var(--ds-sel-bg);box-shadow:inset 0 0 0 1px var(--ds-ink-3);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-chip.on span{color:var(--ds-ink-2)}
.mp-chip-all{background:var(--ds-surface)}
.mp-chip-clear{background:var(--ds-surface);color:var(--ds-st-late-ink)}
/* Cost-centre chip dots keep their live colours (orchestrator 2026-09-24: dispatchers tell work types apart by them). */
.mp-qsortrow{border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);font-size:var(--ds-text-sm);color:var(--ds-ink-3);gap:4px;padding-bottom:var(--ds-s-3)}
.mp-qsortrow>span{font-weight:var(--ds-w-medium)}
.mp-qsortrow button{height:28px;padding:0 var(--ds-s-2);border-radius:var(--ds-r-md);background:transparent;color:var(--ds-ink-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium)}
.mp-qsortrow button:hover{background:var(--ds-paper-hover)}
.mp-qsortrow button[aria-pressed=true]{background:var(--ds-sel-bg);box-shadow:inset 0 0 0 1px var(--ds-ink-3);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-qlist{padding:0}
.mp-row{gap:4px;margin:0;border:0;border-radius:0;background:transparent;box-shadow:inset 0 -.5px 0 var(--ds-rule);padding:var(--ds-s-3) var(--ds-s-4)}
.mp-row:hover{border:0;background:var(--ds-paper-hover);box-shadow:inset 0 -.5px 0 var(--ds-rule)}
.mp-row.mp-sel{border:0;background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection),inset 0 -.5px 0 var(--ds-rule)}
.mp-row-site{font-size:var(--ds-text-md);line-height:var(--ds-lh-md);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-tight);color:var(--ds-ink)}
.mp-row-meta,.mp-row-board .mp-row-meta{font-size:var(--ds-text-base);line-height:var(--ds-lh-base);color:var(--ds-ink-2)}
.mp-row-meta b{font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-code{display:inline-flex;align-items:center;height:var(--ds-tag-h);padding:0 5px;margin-right:6px;border-radius:var(--ds-r-tag);background:var(--ds-tag-bg);color:var(--ds-ink);font-size:var(--ds-text-caps);line-height:1;font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-tag);text-transform:uppercase;vertical-align:1px;white-space:nowrap}
.mp-cc-tag{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-caps);color:var(--ds-ink-3);vertical-align:1px}
.mp-cc-tag::before{background:var(--ds-icon)}
.mp-row-status{gap:6px}
.mp-row-status>i{width:8px;height:8px;border:0;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink))}
.mp-row-st{font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink-2)}
.mp-row-st-warn{color:var(--ds-st-late-ink)}
.mp-row-when{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.maintenance-planner .sp-empty{padding:var(--ds-s-6) var(--ds-s-4);text-align:left}

/* Board blocks the planner marks (highlight = the visit being reviewed; D20 selection ring). */
.maintenance-planner .sp-block.mp-highlight{outline:0!important;box-shadow:inset 0 0 0 2px var(--ds-selection),var(--ds-e-blk-sel)!important}
.maintenance-planner .sp-block.mp-planned:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink)),var(--ds-e-pop)}

/* Draft sheet (one job) */
.mp-sheet-backdrop{background:color-mix(in srgb,var(--ds-brand-ink) 32%,transparent)}
.mp-sheet{border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);font:var(--ds-text-base)/var(--ds-lh-base) var(--ds-font);color:var(--ds-ink)}
.mp-sheet-head{background:var(--ds-surface);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0}
.mp-sheet-head h2{font-family:var(--ds-display);font-size:var(--ds-text-d2);line-height:var(--ds-lh-d2);font-weight:var(--ds-display-weight);letter-spacing:var(--ds-display-track);color:var(--ds-ink)}
.mp-sheet-head p{font-size:var(--ds-text-base);color:var(--ds-ink-2)}
.mp-step{border:0;box-shadow:var(--ds-e-secondary);border-radius:var(--ds-r-md);background:var(--ds-surface);font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.mp-step button{color:var(--ds-ink);border-radius:var(--ds-r-sm)}
.mp-step button:disabled{color:var(--ds-disabled-fg)}
.mp-sec-facts,.mp-two-sched,.mp-sec-fields,.mp-sheet-foot,.mp-rev-foot,.mp-rev-bar{background:var(--ds-canvas)}
.mp-two-solo .mp-two-sched{background:var(--ds-surface)}
.mp-sec-facts,.mp-rev-bar{border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line)}
.mp-sheet-foot,.mp-rev-foot{border-top:0;box-shadow:var(--ds-e-bar);min-height:64px}
.mp-fact>span,.mp-fld>label,.mp-field>label,.mp-csum span,.mp-sched-sel .mp-ss-l,.mp-emhead,.mp-rvctl label,.mp-qsort label{font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);letter-spacing:0;text-transform:none;color:var(--ds-ink-2)}
.mp-fact>strong{font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);color:var(--ds-ink)}
.mp-fact a{color:var(--ds-ink);font-weight:var(--ds-w-medium);text-decoration:underline;text-decoration-color:var(--ds-field);text-underline-offset:3px}
.mp-av-title{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);letter-spacing:0;text-transform:none;color:var(--ds-ink)}
.mp-av-title span{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.mp-fld select,.mp-fld input,.mp-field input,.mp-field textarea,.mp-opsel select,.mp-opsel-inline,.mp-rvctl select,.mp-qsort select,.mp-calt textarea,.mp-calt2 textarea{min-height:var(--ds-control-h);border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-base);font-weight:var(--ds-w-regular)}
.mp-fld select:hover,.mp-fld input:hover{box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.mp-fld select:focus,.mp-fld input:focus,.mp-field input:focus,.mp-field textarea:focus{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off);box-shadow:inset 0 0 0 1px var(--ds-line)}
.mp-fld input:disabled{background:var(--ds-disabled-bg);color:var(--ds-disabled-fg);box-shadow:inset 0 0 0 1px var(--ds-disabled-bd)}
.mp-fld>small{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.mp-calt2 textarea.mp-err,.mp-calt textarea.mp-err{box-shadow:inset 0 0 0 1px var(--ds-st-late);background:var(--ds-surface)}
.mp-seg,.mp-fld .mp-arrseg{background:var(--ds-surface);box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md)}
.mp-seg button,.mp-fld .mp-arrseg button{color:var(--ds-ink-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium)}
.mp-seg button.on,.mp-fld .mp-arrseg button.on{background:var(--ds-sel-bg);box-shadow:inset 0 0 0 1px var(--ds-ink-3);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-seg button em,.mp-seg button.on em{color:var(--ds-ink-3)}
/* next availability by technician: list rows, the chosen one on the navy rail */
.mp-nx{border:0;box-shadow:inset 0 0 0 1px var(--ds-line);border-radius:var(--ds-r-md);background:var(--ds-surface)}
.mp-nx:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-field)}
.mp-nx.on{background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection),inset 0 0 0 1px var(--ds-field)}
.mp-nx-tech strong,.mp-nx-when strong{font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-nx-tech small,.mp-nx-when span,.mp-basisline{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.mp-nx-flag{border-radius:var(--ds-r-sm);font-size:var(--ds-text-caps);font-weight:var(--ds-w-medium);color:var(--ds-ink-2)}
.mp-nx-flag.soon{background:var(--ds-st-done-bg);color:var(--ds-ink-2)}
.mp-nx-flag.close{background:var(--ds-st-site-bg);color:var(--ds-ink-2)}
.mp-basis,.mp-basis-real,.mp-sig,.mp-sig.ok,.mp-sig.warn,.mp-rev-sent,.mp-crew-n{border-radius:var(--ds-r-sm);font-size:var(--ds-text-caps);font-weight:var(--ds-w-medium);color:var(--ds-ink-2)}
.mp-basis{background:var(--ds-tint)}
.mp-basis-real,.mp-sig.ok,.mp-rev-sent{background:var(--ds-st-done-bg)}
.mp-sig.warn{background:var(--ds-st-route-bg)}
.mp-crew-n{background:var(--ds-sel-bg)}
/* banners: neutral tint, the status colour only in the 12px glyph (D16) */
.mp-note,.mp-stale,.mp-norecip,.mp-rebanner,.mp-sync,.mp-sched-sel,.mp-sched-warn{border:0;border-radius:var(--ds-r-md);background:var(--ds-tint);color:var(--ds-ink-2);font-size:var(--ds-text-base)}
.mp-sync{border-radius:0;box-shadow:inset 0 -1px 0 var(--ds-line)}
.mp-note b,.mp-rb-t,.mp-rb-a b,.mp-sched-sel strong,.mp-sync strong{color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-rebanner.mp-rb-amber,.mp-note.mp-note-amber{border:0;background:var(--ds-tint);color:var(--ds-ink-2)}
.mp-rb-amber .mp-rb-t{color:var(--ds-ink)}
.mp-rb-h,.mp-sync span{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.mp-norecip::before,.mp-note-amber::before,.mp-rb-amber .mp-rb-t::before,.mp-sync strong::before,.mp-sched-warn::before{content:"";display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px;background:var(--ds-st-route);-webkit-mask:var(--sp-g-warn) center / 12px 12px no-repeat;mask:var(--sp-g-warn) center / 12px 12px no-repeat}
.mp-stale button{height:28px;border:0;box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-md);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium)}
.mp-cc-chip,.mp-chips button{border:0;box-shadow:inset 0 0 0 1px var(--ds-line);border-radius:var(--ds-r-sm);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium)}
.mp-cc-chip:hover,.mp-chips button:hover{background:var(--ds-paper-hover)}
.mp-cc-chip.on{background:var(--ds-sel-bg);box-shadow:inset 0 0 0 1px var(--ds-ink-3);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-cc-none,.mp-preview-note,.mp-autocc,.sp-autocc,.mp-cc-note,.mp-crew-actions small,.mp-calt-note,.mp-cnote{font-size:var(--ds-text-sm);color:var(--ds-ink-3);font-style:normal}
/* day board inside the sheet */
.mp-bd{border:0;box-shadow:inset 0 0 0 1px var(--ds-line);border-radius:var(--ds-r-md);background:var(--ds-canvas)}
.mp-bd-h{background:var(--ds-canvas);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-bd-h button{border:0;box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-md);width:28px;height:28px}
.mp-axr span{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-ln-t{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-ln-t small{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.mp-ln.on .mp-ln-t{background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection)}
.mp-ln-tr{background-color:var(--ds-canvas);background-image:linear-gradient(90deg,var(--ds-hair) 1px,transparent 1px)}
.mp-ln-seg{border-radius:var(--ds-r-block);font-size:var(--ds-text-caps)}
.mp-ln-seg.busy{background:var(--ds-surface);border:0;box-shadow:inset 0 0 0 1px var(--ds-field-quiet);color:var(--ds-ink-2)}
.mp-ln-seg.this{border:0;box-shadow:inset 0 0 0 2px var(--ds-selection),var(--ds-e-blk-sel);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.mp-ln-slot{border:1px dashed var(--ds-st-done);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-block);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi)}
.mp-ln-slot:hover{background:var(--ds-st-done-bg);border-style:solid}
.mp-ln-none{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
/* queue filter menu (details popover) */
.mp-fctl{height:var(--ds-control-h);border:0;box-shadow:var(--ds-e-secondary);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ds-ink);font-size:var(--ds-text-base)}
.mp-fpop-body{border:0;border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop)}
.mp-fgrp{font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);letter-spacing:0;text-transform:none;color:var(--ds-ink-2)}
.mp-foi{font-size:var(--ds-text-base);color:var(--ds-ink)}
.mp-foi .mp-ct,.mp-fstx .mp-ct{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.mp-foi .mp-fck{stroke:var(--ds-ink)}
.mp-fstx button{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.mp-fstx button.on{background:var(--ds-sel-bg);color:var(--ds-ink)}
/* review list */
.mp-rev-bar>strong{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi)}
.mp-rev-count{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.mp-rev-list{background:var(--ds-canvas);border-right:0;box-shadow:inset -1px 0 0 var(--ds-line);padding:0}
.mp-rev-row{margin:0;border:0;border-radius:0;background:transparent;box-shadow:inset 0 -.5px 0 var(--ds-rule);padding:var(--ds-s-3) var(--ds-s-4)}
.mp-rev-row:hover{background:var(--ds-paper-hover)}
.mp-rev-row.on{border:0;background:var(--ds-sel-bg);box-shadow:inset 3px 0 0 var(--ds-selection),inset 0 -.5px 0 var(--ds-rule)}
.mp-rev-top{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.mp-rev-sub{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
/* toast (§6.17) */
.mp-toast{background:var(--ds-chrome);color:var(--ds-action-fg);font-size:var(--ds-text-base);border-radius:var(--ds-r-md);box-shadow:var(--ds-e-pop),var(--ds-e-toast)}
@media(max-width:1679px){.maintenance-planner .mp-board-commands{gap:6px}.maintenance-planner .mp-board-commands .mp-qtoggle,.maintenance-planner .sp-primary{padding:0 10px}}
/* Board search never shrinks below 160px: under 1680px the command bar wraps to a second line instead (orchestrator 2026-09-24). */
@media(min-width:821px) and (max-width:1679px){.maintenance-planner .sp-command{flex-wrap:wrap;row-gap:6px}.maintenance-planner .sp-command>input{flex:1 1 160px;min-width:160px}}
@media(min-width:1680px){.maintenance-planner .sp-command>input{min-width:160px}}
.mp-btn{white-space:nowrap}
.mp-nx{grid-template-columns:minmax(72px,max-content) minmax(0,1fr);align-items:start;padding:6px 10px}
.mp-nx-when{min-width:0;white-space:normal;overflow-wrap:anywhere}
.mp-nx-tech strong{display:block;line-height:var(--ds-lh-base)}
.maintenance-planner .sp-primary{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}

/* Test mode banner (2026-09-29): a browser left in test mode refuses every customer write, so say so and offer the way out. */
.mp-testbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:var(--ds-st-late-bg);border-bottom:1px solid var(--ds-st-late-bd);color:var(--ds-st-late-ink);font-size:var(--ds-text-sm)}
.mp-testbar strong{font-weight:var(--ds-w-semi)}
.mp-testbar .mp-btn{flex:none}
@media (max-width:820px){.mp-testbar{flex-direction:column;align-items:stretch}}
.mp-queue [data-card],.mp-queue [data-board]{cursor:grab;user-select:none;-webkit-user-select:none}

/* Compact work queue (owner 2026-10-14: filters took too much room; see far more jobs without scrolling).
   Title, count and search share one line; each filter group is one non-wrapping line that scrolls sideways;
   every job is two lines (site + est hours, then status · scope · city · when). */
.mp-qhead{gap:var(--ds-s-2);padding:var(--ds-s-2) var(--ds-s-3)}
.mp-qhead>strong{font-size:var(--ds-text-base);white-space:nowrap}
.mp-qcount{font-size:var(--ds-text-sm);margin-left:0;white-space:nowrap}
.mp-qhead .mp-qsearch{flex:1;min-width:0;padding:0}
.mp-qhead .mp-qsearch input{height:28px;font-size:var(--ds-text-sm);padding:0 var(--ds-s-2)}
.mp-qhead .mp-qx{margin-left:0}
.mp-qfresh{margin:0 var(--ds-s-3) var(--ds-s-1)}
.mp-qchips,.mp-qsortrow{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:4px;padding:0 var(--ds-s-3) var(--ds-s-1)}
.mp-qchips::-webkit-scrollbar,.mp-qsortrow::-webkit-scrollbar{display:none}
.mp-chip,.mp-qsortrow button{flex:none;height:24px;white-space:nowrap}
.mp-qsortrow{padding-bottom:var(--ds-s-2)}
.mp-qsortrow>span{flex:none}
.mp-row{gap:1px;padding:var(--ds-s-1) var(--ds-s-3)}
.mp-row-l1{display:flex;align-items:baseline;gap:var(--ds-s-2);min-width:0}
.mp-row-site{flex:1;min-width:0;font-size:var(--ds-text-base);line-height:var(--ds-lh-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-row-l1 .mp-est-unit,.mp-row-l1 .mp-row-when{flex:none;margin-left:0;max-width:45%;font-size:var(--ds-text-sm);color:var(--ds-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-row-status{min-width:0;margin-top:0}
.maintenance-planner .mp-row-st,.mp-row-st{flex:none;white-space:nowrap}
.mp-row-status .mp-row-meta,.maintenance-planner .mp-row-status .mp-row-meta{flex:1 1 auto;min-width:0;font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);color:var(--ds-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}

.mp-row-status .mp-row-when{flex:none;max-width:40%}
/* Nothing in a queue row is cut off: line 2 wraps instead of truncating. */
.mp-row-site{white-space:normal;overflow:visible}
.mp-row-status{flex-wrap:wrap;column-gap:var(--ds-s-1);row-gap:0}
.mp-row-status .mp-row-meta,.maintenance-planner .mp-row-status .mp-row-meta{flex:0 1 auto;white-space:normal;overflow:visible;overflow-wrap:anywhere}
.mp-row-status .mp-row-when{max-width:none;margin-left:auto}
