/* Accepted Scheduling Pro Day workspace. Scoped to the maintained page host. */
.sched-host{min-height:320px}.sched-pro{--sp-hour:69.6px;--sp-text:.85;--sp-row:45.4px;height:100%;min-height:0;display:flex;flex-direction:column;background:var(--ds-surface);color:var(--ds-ink);font:var(--ds-text-sm) var(--ds-font);position:relative;overflow:hidden}.sched-pro *{box-sizing:border-box}.sched-pro button,.sched-pro input,.sched-pro select{font:inherit}.sched-pro button:where(:not(.mapboxgl-ctrl-attrib-button)){cursor:pointer;border:1px solid var(--ds-field);background:var(--ds-surface);color:var(--ds-ink-2);border-radius:var(--ds-r-md);padding:5px 8px;display:inline-flex;align-items:center;justify-content:center;gap:5px}.sched-pro button:hover{background:var(--ds-paper-hover)}.sched-pro button:focus-visible,.sched-pro input:focus-visible,.sched-pro select:focus-visible,.sched-pro summary:focus-visible{outline:3px solid var(--ds-focus);outline-offset:1px}.sched-pro .sp-primary{background:var(--ds-action);border-color:var(--ds-action);color:var(--ds-action-fg)}.sched-pro .sp-primary:hover{background:var(--ds-action-hover)}.sp-command{display:flex;align-items:center;gap:8px;min-height:43px;padding:6px 10px;border-bottom:1px solid var(--ds-line);flex-shrink:0}.sp-command>button{white-space:nowrap}.sp-command .sp-date{display:flex;align-items:center;gap:3px;flex-shrink:0}.sp-date>strong{font-size:var(--ds-text-sm);white-space:nowrap;font-weight:var(--ds-w-semi);margin:0 3px}.sp-date button{border-color:transparent;padding:4px}.sp-command>input{flex:1;min-width:80px;width:180px;padding:6px 8px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ds-ink-2)}.sp-command>select{max-width:110px;padding:5px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);background:var(--ds-surface);color:var(--ds-ink-3)}.sp-legend{position:relative;flex-shrink:0}.sp-legend summary{cursor:pointer;padding:5px;list-style:none;color:var(--ds-ink-3)}.sp-legend summary:after{content:' ▾'}.sp-legend>div{position:absolute;right:0;top:28px;width:220px;max-height:60vh;overflow:auto;padding:12px;background:var(--ds-surface);border:1px solid var(--ds-line);box-shadow:var(--ds-e-pop);border-radius:var(--ds-r-md);z-index:40}.sp-legend>div>span{display:flex;gap:7px;align-items:center;font-size:var(--ds-text-caps);margin:8px 0}.sp-legend i{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sp-workspace{display:flex;flex:1;min-height:0;overflow:hidden}.sp-queue{width:280px;min-width:235px;max-width:400px;resize:horizontal;flex-shrink:0;overflow:auto;border-right:1px solid var(--ds-line);display:flex;flex-direction:column;background:var(--ds-surface)}.sp-hidden{display:none!important}.sp-qhead{display:flex;align-items:center;justify-content:space-between;padding:12px 13px 9px}.sp-qhead strong{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi)}.sp-qhead strong>span{font-size:var(--ds-text-caps);color:var(--ds-ink-3);font-weight:var(--ds-w-regular);margin-left:5px}.sp-qhead>button{padding:0 5px;border:0;font-size:var(--ds-text-d2);color:var(--ds-ink-3)}.sp-categories{display:flex;gap:3px;padding:0 12px 8px}.sp-categories button{font-size:var(--ds-text-caps);border:0;background:var(--ds-canvas);padding:5px 6px}.sp-categories button.selected{background:var(--ds-sel-bg);color:var(--ds-ink)}.sp-status-filter{margin:0 12px 9px;border:1px solid var(--ds-line);padding:6px 7px;border-radius:var(--ds-r-md);color:var(--ds-ink-3);background:var(--ds-surface);font-size:var(--ds-text-caps)!important;max-width:calc(100% - 24px)}.sp-qhint{padding:0 13px 10px;color:var(--ds-ink-3);font-size:var(--ds-text-caps);line-height:1.4}.sp-qlist{flex:1;overflow:auto;padding:0 10px 12px}.sp-qcard{border:1px solid var(--ds-field);border-left:3px solid var(--sp-color);padding:8px 9px;border-radius:var(--ds-r-md);margin-bottom:6px;cursor:grab;background:var(--ds-surface)}.sp-qcard:hover{border-color:var(--ds-field);box-shadow:none}.sp-qmeta{display:flex;justify-content:space-between;gap:5px;color:var(--ds-ink-3);font-size:var(--sp-fs-caps);margin-bottom:4px}.sp-qcard>strong{display:block;font-size:var(--sp-fs-md);line-height:1.3;color:var(--ds-ink)}.sp-qcard>p{font-size:var(--sp-fs-sm);line-height:1.4;color:var(--ds-ink-3);margin:4px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sp-qstatus{font-size:var(--sp-fs-caps);line-height:1.4;color:var(--ds-ink-3);margin:6px 0;display:flex;align-items:center;gap:5px}.sp-qstatus>i{height:6px;width:6px;border-radius:50%;background:var(--sp-color);flex-shrink:0}.sp-qcard footer{display:flex;justify-content:space-between;align-items:center;font-size:var(--sp-fs-caps);color:var(--ds-ink-3)}.sp-qcard footer button{font-size:var(--ds-text-caps);padding:3px 6px;border:0;background:var(--ds-canvas);color:var(--ds-ink)}.sp-board{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.sp-date-rail{height:43px;min-height:43px;display:flex;gap:5px;align-items:stretch;padding:3px 6px;background:var(--ds-canvas);border-bottom:1px solid var(--ds-line)}.sp-period{display:flex;align-items:center;gap:2px;flex-shrink:0}.sp-period>span{font-size:var(--ds-text-caps);color:var(--ds-ink-3);max-width:84px;text-align:center;line-height:1.3}.sp-period>button{border:0;background:none;padding:3px 4px;font-size:var(--ds-text-d2)}.sp-days{display:flex;flex:1;min-width:0;gap:1px;overflow:auto;scrollbar-width:none;position:relative}.sp-days::-webkit-scrollbar{display:none}.sp-days>button{flex:1 0 29px;min-width:29px;display:flex;flex-direction:column;gap:1px;border:0;background:transparent;padding:3px;color:var(--ds-ink-3)}.sp-days>button>span{font-size:var(--ds-text-caps)}.sp-days>button>strong{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi)}.sp-days>button.weekend{background:var(--ds-canvas);color:var(--ds-ink-3)}.sp-days>button.selected{background:var(--ds-action);color:var(--ds-action-fg)}.sp-date-rail>button{align-self:center;padding:4px 6px;font-size:var(--ds-text-caps);height:25px;flex-shrink:0}.sp-scroll{flex:1;min-height:0;overflow:auto;position:relative;overscroll-behavior:contain}.sp-timeline{position:relative;min-height:100%;background:var(--ds-surface)}.sp-ruler{display:grid;height:34px;position:sticky;top:0;z-index:10;background:var(--ds-surface);border-bottom:1px solid var(--ds-line)}.sp-ruler>div:first-child{position:sticky;left:0;background:var(--ds-canvas);border-right:1px solid var(--ds-line);padding:10px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.5px;color:var(--ds-ink-3);z-index:11}.sp-hours{position:relative}.sp-hour{position:absolute;top:0;width:var(--sp-hour);height:34px;padding:7px 4px;border-left:1px solid var(--ds-line);font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-hour>small{position:absolute;left:50%;top:9px;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-lane{display:grid;min-height:var(--sp-row);border-bottom:1px solid var(--ds-line)}.sp-tech{position:sticky;left:0;z-index:5;background:var(--ds-surface);border-right:1px solid var(--ds-line);padding:3px 9px;min-height:0;overflow:hidden}.sp-tech>strong{font-size:var(--sp-fs-sm);font-weight:var(--ds-w-semi);display:block;line-height:1.15}.sp-tech>span,.sp-tech>small{font-size:var(--sp-fs-caps);display:block;line-height:1.1;margin-top:2px;color:var(--ds-ink-3)}.sp-tech>small{color:var(--ds-st-done-ink)}.sp-track{position:relative;min-height:var(--sp-row);background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour) - 1px),var(--ds-line) calc(var(--sp-hour) - 1px),var(--ds-line) var(--sp-hour)),repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour)/2 - 1px),var(--ds-line) calc(var(--sp-hour)/2 - 1px),var(--ds-line) calc(var(--sp-hour)/2)),repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour)/4 - 1px),var(--ds-line) calc(var(--sp-hour)/4 - 1px),var(--ds-line) calc(var(--sp-hour)/4))}.sp-block{position:absolute;top:1px;height:calc(var(--sp-row) - 2px);padding:3px 6px!important;border:1px solid var(--sp-color)!important;border-left:3px solid var(--sp-color)!important;border-radius:var(--ds-r-sm)!important;background:var(--sp-bg)!important;color:var(--sp-ink)!important;display:block!important;text-align:left;overflow:hidden;cursor:grab!important}.sp-block>strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--sp-fs-sm);font-weight:var(--ds-w-semi);line-height:1.15}.sp-purpose{display:block;font-size:var(--sp-fs-caps);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-top:2px;line-height:1.15}.sp-blocktime{display:flex;font-size:var(--sp-fs-caps);margin-top:2px;white-space:nowrap;line-height:1.15;justify-content:space-between;gap:5px}.sp-blocktime>em{font-style:normal;overflow:hidden;text-overflow:ellipsis}.sp-block:hover{z-index:8;filter:brightness(.97)}.sp-block.conflict{outline:1px dashed var(--ds-focus);outline-offset:-2px}.sp-block.dim{opacity:.35}.sp-block.micro{padding:2px!important}.sp-micro-id{display:block;font-size:var(--sp-fs-caps);font-weight:var(--ds-w-semi);white-space:nowrap}.sp-micro-time{display:block;font-size:var(--sp-fs-caps);line-height:1.1;white-space:nowrap}.sp-resize{position:absolute;right:0;top:0;width:7px;bottom:0;cursor:ew-resize}.sp-track.drop-target:after{content:attr(data-drop-time);position:absolute;top:0;bottom:0;left:var(--sp-drop-x);width:2px;background:var(--ds-action);color:var(--ds-ink);white-space:nowrap;pointer-events:none;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);z-index:12}.sp-now{position:absolute;top:34px;bottom:0;width:1px;background:var(--ds-st-late);z-index:8;pointer-events:none}.sp-now>span{position:absolute;top:-19px;left:-13px;background:var(--ds-st-late);color:var(--ds-action-fg);padding:2px 4px;border-radius:var(--ds-r-block);font-size:var(--ds-text-caps)}.sp-empty{padding:35px 20px;color:var(--ds-ink-3);font-size:var(--ds-text-sm);text-align:center}.sp-agenda{display:none}.sp-saving{font-size:var(--ds-text-caps);color:var(--ds-ink-3);white-space:nowrap}.sp-preview{position:fixed;z-index:50;width:510px;max-width:calc(100vw - 24px);background:var(--ds-surface);border:1px solid var(--ds-line);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);display:flex;flex-direction:column;overflow:hidden}.sp-preview>header{display:flex;align-items:flex-start;justify-content:space-between;padding:17px 20px 14px;background:var(--sp-bg);border-top:4px solid var(--sp-color);flex-shrink:0}.sp-preview header small{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-preview header h2{font-size:var(--ds-text-d2);font-weight:var(--ds-w-semi);line-height:1.25;margin:6px 0 8px;color:var(--ds-ink)}.sp-preview header span{font-size:var(--ds-text-caps);color:var(--ds-ink-2)}.sp-preview header button{border:0;background:none;font-size:var(--ds-text-d2);padding:0 4px;color:var(--ds-ink-3)}.sp-preview-body{padding:17px 20px;overflow:auto;min-height:0;font-size:var(--ds-text-sm);line-height:1.5;color:var(--ds-ink-3)}.sp-preview-body p{margin:5px 0 12px}.sp-preview-body h3{font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink-2);margin:14px 0 7px}.sp-preview-body h4{font-size:var(--ds-text-sm);margin:13px 0 5px;color:var(--ds-ink-3)}.sp-preview-body details{margin:15px 0}.sp-preview-body summary{cursor:pointer;font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink-3)}.sp-preview-body section>button{width:100%;justify-content:flex-start;text-align:left;background:var(--ds-canvas);border:0;margin:4px 0;padding:8px;font-size:var(--ds-text-caps)}.sp-preview-body .sp-overlap>button{background:var(--ds-tint)}.sp-longtext{white-space:pre-line;overflow-wrap:anywhere}.sp-customer{font-weight:var(--ds-w-semi);color:var(--ds-ink-2)}.sp-appointment{display:flex;flex-direction:column;gap:3px;padding:12px;background:var(--ds-canvas);border-radius:var(--ds-r-md);color:var(--ds-ink-3)}.sp-appointment>strong{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi)}.sp-appointment>span{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-preview-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:var(--ds-text-caps);margin:10px 0}.sp-preview>footer{display:flex;gap:9px;padding:12px 19px;border-top:1px solid var(--ds-line);background:var(--ds-surface);flex-shrink:0}.sp-preview>footer button{padding:8px 13px}.sp-preview-loading{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-editor-backdrop{position:fixed;inset:0;z-index:60;background:color-mix(in srgb, var(--ds-brand-ink) 32%, transparent);display:flex;justify-content:flex-end}.sp-editor{width:400px;max-width:100vw;background:var(--ds-surface);overflow:auto;padding:22px;box-shadow:var(--ds-e-pop)}.sp-editor>header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:23px}.sp-editor>header small{color:var(--ds-ink-3)}.sp-editor>header h2{font-size:var(--ds-text-d2);margin:7px 0;line-height:1.3;color:var(--ds-ink-2)}.sp-editor>header button{border:0;font-size:var(--ds-text-d2);color:var(--ds-ink-3);padding:0 5px}.sp-editor form>label,.sp-form-row>label{font-size:var(--ds-text-caps);color:var(--ds-ink-3);display:block;margin:15px 0}.sp-editor input,.sp-editor select{width:100%;padding:9px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);color:var(--ds-ink-2);background:var(--ds-surface);display:block;margin-top:7px}.sp-form-row{display:flex;gap:15px}.sp-form-row>label{width:50%}.sp-editor footer{display:flex;gap:10px;margin-top:20px}.sp-editor footer button{padding:9px 13px}.sp-form-note{font-size:var(--ds-text-caps);line-height:1.5;color:var(--ds-ink-3)}.sp-form-error{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}.sp-display{position:absolute;right:12px;top:46px;width:265px;z-index:45;background:var(--ds-surface);border:1px solid var(--ds-field);box-shadow:var(--ds-e-pop);border-radius:var(--ds-r-lg);padding:17px;max-height:calc(100% - 55px);overflow:auto}.sp-display header{display:flex;justify-content:space-between;margin-bottom:20px}.sp-display header strong{font-size:var(--ds-text-md)}.sp-display header button{border:0;font-size:var(--ds-text-d2);padding:0;color:var(--ds-ink-3)}.sp-display label{display:block;font-size:var(--ds-text-sm);color:var(--ds-ink-3);margin:17px 0}.sp-display output{float:right;font-size:var(--ds-text-caps)}.sp-display input[type=range]{display:block;width:100%;margin:9px 0 0;accent-color:var(--ds-action)}.sp-display label.sp-check{display:flex;gap:8px;align-items:center;font-size:var(--ds-text-caps)}.sp-display label.sp-check input{margin:0}.sp-display>button{font-size:var(--ds-text-caps)}
@media(max-width:1100px){.sp-command{gap:5px}.sp-date>strong{font-size:var(--ds-text-caps)}.sp-command>select{max-width:95px}.sp-command>button{font-size:var(--ds-text-caps)}.sp-period>span{max-width:65px;font-size:var(--ds-text-caps)}.sp-date-rail{gap:3px}.sp-days>button{flex-basis:27px;min-width:27px}}@media(max-width:800px){.sp-command{flex-wrap:wrap}.sp-command>input{order:5;flex-basis:50%}.sp-command>select{order:6}.sp-command>.sp-primary{order:7}.sp-queue{position:absolute;left:0;top:83px;bottom:0;width:280px;z-index:18;box-shadow:var(--ds-e-pop)}.sp-preview{left:12px!important;right:12px;top:auto!important;bottom:12px;width:auto;max-height:calc(100dvh - 24px)!important}.sp-display{top:85px}.sp-days>button{flex:0 0 29px}.sp-period>span{max-width:55px}.sp-date-rail>button{font-size:var(--ds-text-caps);padding:3px}}@media(max-width:520px){.sp-queue{width:100%;max-width:none;resize:none;top:83px}.sp-command .sp-date{flex:1;justify-content:space-between}.sp-date>strong{font-size:var(--ds-text-caps)}.sp-command>.sp-primary{display:none}.sp-command>input{min-width:100px}.sp-scroll{display:none}.sp-agenda{display:block;overflow:auto;flex:1;padding:12px}.sp-agenda h3{font-size:var(--ds-text-sm);margin:15px 0 7px}.sp-agenda>button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:12px!important;background:var(--sp-bg)!important;border-color:var(--sp-color)!important;color:var(--sp-ink)!important;margin-bottom:8px;gap:4px;text-align:left}.sp-agenda button strong{font-size:var(--ds-text-base)}.sp-agenda button span{font-size:var(--ds-text-caps)}.sp-agenda button small{font-size:var(--ds-text-caps)}.sp-preview header h2{font-size:var(--ds-text-d2)}.sp-editor{width:100%;padding:20px}.sp-display{right:8px}}
.sp-technician-picker { position: relative; font-size: var(--ds-text-sm); }
.sp-technician-picker summary { cursor: pointer; white-space: nowrap; padding: 6px 8px; }
.sp-technician-picker > div { position: absolute; top: 100%; left: 0; z-index: 40; width: 260px; max-height: 360px; overflow: auto; padding: 12px; background: var(--ds-surface); border: 1px solid var(--ds-line); border-radius: var(--ds-r-lg); box-shadow: var(--ds-e-pop); }
.sp-technician-picker small { display: block; color: var(--ds-ink-3); line-height: 1.4; margin-bottom: 8px; }
.sp-technician-picker label { display: flex; align-items: center; gap: 8px; padding: 6px 0; cursor: pointer; }
.sp-home-address { margin: 0 0 8px 24px; padding-bottom: 8px; border-bottom: 1px solid var(--ds-hair); }
.sp-home-address > button { border: 0; background: transparent; color: var(--ds-ink-2); padding: 2px 0; font: inherit; font-size: var(--ds-text-caps); cursor: pointer; }
.sp-home-address > button:hover { color: var(--ds-ink); text-decoration: underline; }
.sp-home-address > button + button { margin-left: 12px; }
.sp-tech-photo-avatar { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; overflow: hidden; border-radius: var(--ds-r-md); background: var(--ds-canvas); color: var(--ds-ink-2); }
.sp-tech-photo-avatar img { width: 64px; height: 64px; object-fit: cover; }
.sp-tech-photo input:disabled { opacity: .55; cursor: default; }
.sp-tech-photo [role="status"] { color: var(--ds-ink-3); }
.sp-home-address > div { margin-top: 6px; }
.sp-technician-picker .sp-home-address label { display: block; font-size: var(--ds-text-caps); line-height: 1.4; cursor: default; }
.sp-home-address input { box-sizing: border-box; width: 100%; min-width: 0; margin-top: 4px; padding: 7px 8px; border: 1px solid var(--ds-field); border-radius: var(--ds-r-md); background: var(--ds-surface); color: var(--ds-ink); font: inherit; }
.sp-home-address input:focus-visible { outline: 2px solid var(--ds-focus); outline-offset: 1px; }
.sp-home-address > div > button { padding: 5px 10px; margin: 0 5px 0 0; border: 1px solid var(--ds-field); border-radius: var(--ds-r-md); background: var(--ds-canvas); color: var(--ds-ink); font: inherit; cursor: pointer; }
.sp-home-address > div > button:disabled { opacity: .55; cursor: default; }
.sp-home-address p { margin: 6px 0 0; font-size: var(--ds-text-caps); line-height: 1.4; overflow-wrap: anywhere; }
.sp-home-address p:empty { display: none; }
.sp-home-address [role="alert"] { color: var(--ds-st-late-ink); }
.sp-approval fieldset{border:0;padding:0;margin:0;min-width:0}.sp-approval fieldset>label{display:block;font-size:var(--ds-text-sm);margin:16px 0}.sp-approval fieldset:disabled{opacity:.8}
.sp-approval{width:560px}.sp-approval>label{display:block;margin:16px 0;font-size:var(--ds-text-sm)}.sp-approval textarea{display:block;width:100%;padding:10px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);margin-top:6px;resize:vertical;font-size:var(--ds-text-base);line-height:1.5;font-family:inherit}.sp-approval .recipient-field-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.sp-approval .recipient-field-head select{width:auto;max-width:65%;font-size:var(--ds-text-caps)}.sp-approval .recipient-site-caption,.sp-approval .recipient-entry-hint{font-size:var(--ds-text-caps);line-height:1.5;color:var(--ds-ink-3)}.sp-approval .recipient-site-caption span{display:block}.sp-approval-notice{padding:7px 12px;font-size:var(--ds-text-sm);background:var(--ds-canvas);border-bottom:1px solid var(--ds-line)}.sp-approval-notice button{margin-left:8px}.sp-upcoming>div{display:flex;flex-wrap:wrap;gap:4px}
.sp-drop-backdrop{align-items:center;justify-content:center;padding:16px}.sp-drop-choice{width:380px;max-height:calc(100dvh - 32px);border-radius:var(--ds-r-lg);padding:20px}.sp-drop-choice>header{margin-bottom:12px}.sp-drop-choice>header h2{font-size:var(--ds-text-d2)}.sp-drop-choice>p{font-size:var(--ds-text-sm);line-height:1.5;color:var(--ds-ink-3)}.sp-drop-choice footer{margin-top:15px}.sp-drop-choice footer button{flex:1}.sp-drop-choice input[type=hidden]{display:none}
.sp-queue-states{display:flex;gap:3px;padding:0 10px 8px}.sched-pro .sp-queue-states button{flex:1;min-width:0;padding:6px 3px;font-size:var(--ds-text-caps);gap:3px}.sp-queue-states button[aria-pressed=true]{background:var(--ds-sel-bg);border-color:var(--ds-field);color:var(--ds-ink)}.sp-queue-states span{color:var(--ds-ink-3)}.sp-upcoming{display:flex;flex-wrap:wrap;gap:4px}.sched-pro .sp-upcoming button{font-size:var(--ds-text-caps);padding:4px 6px}.sp-qcard[draggable=false]{cursor:pointer}

/* Dense operator presentation: the queue is a working list, not a stack of
   dashboard cards. Keep the identifying fields and action in the first
   viewport while retaining the full value in the native preview tooltip. */
.sched-pro .sp-qhead{padding:8px 11px 6px}
.sched-pro .sp-qhead strong{font-size:var(--ds-text-base)}
.sched-pro .sp-categories{padding:0 10px 5px}
.sched-pro .sp-categories button{padding:4px 6px}
.sched-pro .sp-qhint{padding:0 11px 6px;font-size:var(--ds-text-caps);line-height:1.3}
.sched-pro .sp-qlist{padding:0 8px 10px}
.sched-pro .sp-qcard{padding:6px 8px 7px;margin-bottom:4px;border-radius:var(--ds-r-md)}
.sched-pro .sp-qmeta{margin-bottom:2px;line-height:1.1}
.sched-pro .sp-qmeta>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sched-pro .sp-qcard>strong{font-size:var(--sp-fs-base);line-height:1.18;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;overflow:hidden}
.sched-pro .sp-qcard>p{font-size:var(--sp-fs-caps);line-height:1.2;margin:2px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;overflow:hidden}
.sched-pro .sp-qstatus{font-size:var(--sp-fs-caps);line-height:1.15;margin:3px 0;min-height:12px;min-width:0}
.sched-pro .sp-qstatus>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sched-pro .sp-qstatus em{font-style:normal;margin-left:auto;color:var(--ds-ink-3);font-size:var(--sp-fs-caps);white-space:nowrap}
.sched-pro .sp-maintenance-estimate{display:flex;align-items:baseline;gap:5px;min-width:0;margin:3px 0 4px;font-size:var(--sp-fs-caps);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-maintenance-estimate strong{font-size:var(--sp-fs-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);flex-shrink:0}
.sched-pro .sp-maintenance-estimate span{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--ds-ink-3)}
.sched-pro .sp-maintenance-estimate[role="status"]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ds-ink-3)}
.sched-pro .sp-qcard footer{min-height:18px;line-height:1.1;gap:5px}
.sched-pro .sp-qcard footer>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sched-pro .sp-qcard footer button{padding:3px 6px;flex-shrink:0}
.sched-pro .sp-qcard .sp-upcoming{gap:2px;min-width:0;max-width:100%;overflow:auto;scrollbar-width:thin}
.sched-pro .sp-qcard .sp-upcoming>div{gap:2px;align-items:center}
.sched-pro .sp-qcard .sp-upcoming button{font-size:var(--ds-text-caps);padding:2px 4px}

/* Three short lines fit the compact lane without hiding the time row. A
   narrow block still exposes a recognizable site label; title/preview retains
   the unabridged value for inspection. */
.sched-pro .sp-block{padding:2px 5px!important}
.sched-pro .sp-block>strong{font-size:var(--sp-fs-caps);line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-purpose{font-size:var(--sp-fs-caps);line-height:1;max-height:2em;margin-top:1px;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.sched-pro .sp-blocktime{font-size:var(--sp-fs-caps);line-height:1.05;margin-top:1px}
.sched-pro .sp-block.micro{padding:2px 4px!important}
.sched-pro .sp-micro-id,.sched-pro .sp-micro-site,.sched-pro .sp-micro-time{display:block;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-micro-id{font-size:var(--sp-fs-caps);font-weight:var(--ds-w-semi)}
.sched-pro .sp-micro-site{font-size:var(--sp-fs-caps)}
.sched-pro .sp-micro-time{font-size:var(--sp-fs-caps)}
.sched-pro .sp-tech>strong,.sched-pro .sp-tech>span,.sched-pro .sp-tech>small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-preview header h2{overflow-wrap:anywhere}
.sched-pro .sp-preview-body{overflow-wrap:anywhere}
.sched-pro .sp-workspace{position:relative}
@media(max-width:800px){.sched-pro .sp-queue{top:43px}.sched-pro .sp-display{top:85px}}
@media(max-width:520px){.sched-pro .sp-queue{top:43px}}

/* Full-value inspection: queue cards may grow, while schedule lanes keep
   their compact height. A focused/hovered block temporarily rises above its
   lane so the complete site, purpose and status remain readable without
   changing row geometry or making conflicts create a second row. */
.sched-pro .sp-qmeta>span,
.sched-pro .sp-qcard>strong,
.sched-pro .sp-qcard>p,
.sched-pro .sp-qstatus>span,
.sched-pro .sp-qcard footer>span:first-child,
.sched-pro .sp-maintenance-estimate,
.sched-pro .sp-maintenance-estimate span,
.sched-pro .sp-maintenance-estimate[role="status"] {
  min-width: 0;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  display: block;
  overflow-wrap: anywhere;
  -webkit-line-clamp: unset;
  -webkit-box-orient: initial;
}
.sched-pro .sp-qmeta { align-items: flex-start; flex-wrap: wrap; }
.sched-pro .sp-qcard>strong { display: block; }
.sched-pro .sp-qcard>p { display: block; }
.sched-pro .sp-qstatus { align-items: flex-start; flex-wrap: wrap; }
.sched-pro .sp-qstatus em { margin-left: 0; }
.sched-pro .sp-qcard footer { align-items: flex-start; flex-wrap: wrap; }
.sched-pro .sp-block:hover,
.sched-pro .sp-block:focus-visible {
  z-index: 30;
  height: auto !important;
  min-height: calc(var(--sp-row) - 2px);
  max-height: none;
  overflow: visible !important;
  white-space: normal;
  filter: brightness(.98);
  box-shadow: var(--ds-e-pop);
}
.sched-pro .sp-block:hover>strong,
.sched-pro .sp-block:focus-visible>strong,
.sched-pro .sp-block:hover .sp-purpose,
.sched-pro .sp-block:focus-visible .sp-purpose,
.sched-pro .sp-block:hover .sp-blocktime,
.sched-pro .sp-block:focus-visible .sp-blocktime,
.sched-pro .sp-block:hover .sp-blocktime>em,
.sched-pro .sp-block:focus-visible .sp-blocktime>em {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  display: block;
  max-height: none;
  -webkit-line-clamp: unset;
  overflow-wrap: anywhere;
}
.sched-pro .sp-block:hover .sp-blocktime,
.sched-pro .sp-block:focus-visible .sp-blocktime { display: flex; flex-wrap: wrap; }
.sched-pro .sp-block:hover .sp-micro-id,
.sched-pro .sp-block:hover .sp-micro-site,
.sched-pro .sp-block:hover .sp-micro-time,
.sched-pro .sp-block:focus-visible .sp-micro-id,
.sched-pro .sp-block:focus-visible .sp-micro-site,
.sched-pro .sp-block:focus-visible .sp-micro-time {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
}
.sched-pro .sp-home-suggestion { margin: 13px 0; padding: 10px 12px; border: 1px solid var(--ds-line); border-radius: var(--ds-r-md); background: var(--ds-canvas); color: var(--ds-ink-3); }
.sched-pro .sp-home-suggestion>strong { display: block; color: var(--ds-ink-2); font-size: var(--ds-text-sm); }
.sched-pro .sp-home-suggestion>p { margin: 5px 0 0; line-height: 1.4; }
.sched-pro .sp-home-suggestion ol { margin: 7px 0 4px; padding-left: 20px; }
.sched-pro .sp-home-suggestion li { padding: 3px 0; line-height: 1.35; }
.sched-pro .sp-home-suggestion li strong { display: inline; color: var(--ds-ink-2); }
.sched-pro .sp-home-suggestion li span { display: block; font-size: var(--ds-text-caps); color: var(--ds-ink-3); }
.sched-pro .sp-home-suggestion small { display: block; margin-top: 7px; line-height: 1.4; color: var(--ds-ink-3); }

/* Keep the existing half-hour grid, but make the returned business window
   visibly different from the surrounding non-business time. The board passes
   these offsets from Simpro's workdayStart/workdayEnd values; blocks remain
   above the shading and conflicts stay in one lane. */
.sched-pro .sp-track { isolation: isolate; background-color: var(--ds-surface); }
.sched-pro .sp-track::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(to right,
    var(--ds-canvas) 0 var(--sp-business-start),
    var(--ds-surface) var(--sp-business-start) var(--sp-business-end),
    var(--ds-canvas) var(--sp-business-end) 100%);
}
.sched-pro .sp-track > .sp-block { z-index: 1; }
.sched-pro .sp-hour { border-left-color: var(--ds-line); }
.sched-pro .sp-hour.business { background: var(--ds-surface); color: var(--ds-ink-3); }
.sched-pro .sp-hour.nonbusiness { background: var(--ds-canvas); color: var(--ds-ink-3); }

/* Lane order is a local display preference. The small arrow pair is always
   available without adding a second row or changing the Simpro assignment. */
.sched-pro .sp-tech { position: relative; padding-right: 38px; }
.sched-pro .sp-tech-order {
  position: absolute;
  top: 4px;
  right: 4px;
  z-index: 3;
  display: flex;
  gap: 2px;
}
.sched-pro .sp-tech-order button {
  width: 17px;
  height: 16px;
  padding: 0;
  border: 1px solid var(--ds-field);
  border-radius: var(--ds-r-block);
  background: var(--ds-canvas);
  color: var(--ds-ink-3);
  font-size: var(--ds-text-caps);
  line-height: 14px;
  cursor: pointer;
}
.sched-pro .sp-tech-order button:hover:not(:disabled),
.sched-pro .sp-tech-order button:focus-visible { background: var(--ds-paper-hover); border-color: var(--ds-field); color: var(--ds-ink); }
.sched-pro .sp-tech-order button:disabled { opacity: .32; cursor: default; }

/* Date reads stay on the current board while a slow day loads, with a clear
   retry path instead of a blank workspace or a generic toast. */
.sched-pro .sp-date-notice {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 27px;
  padding: 5px 11px;
  border-bottom: 1px solid var(--ds-line);
  font-size: var(--ds-text-caps);
  line-height: 1.35;
}
.sched-pro .sp-date-loading { background: var(--ds-canvas); color: var(--ds-ink-3); }
.sched-pro .sp-date-error { background: transparent; color: var(--ds-ink-3);border:0;border-radius:0;padding:2px 0;margin:4px 0 0;font-size:var(--ds-text-sm) }
.sched-pro .sp-date-notice button {
  margin-left: auto;
  padding: 3px 8px;
  border: 1px solid currentColor;
  border-radius: var(--ds-r-sm);
  background: transparent;
  color: inherit;
  font-size: var(--ds-text-caps);
  cursor: pointer;
}

.sp-approval-summary{margin:4px 0 6px}.sp-approval-facts{display:grid;grid-template-columns:max-content 1fr;gap:7px 14px;margin:0 0 10px;font-size:var(--ds-text-base)}.sp-approval-facts>div{display:contents}.sp-approval-facts dt{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);text-transform:uppercase;letter-spacing:.4px;color:var(--ds-ink-3);padding-top:2px}.sp-approval-facts dd{margin:0;color:var(--ds-ink);line-height:1.4}.sp-approval-facts dd small{display:block;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-approval .sp-form-note{margin:4px 0 0;padding:2px 0;background:transparent;border:0;border-radius:0;font-size:var(--ds-text-sm);line-height:1.5;color:var(--ds-ink-3)}.sp-approval .sp-form-note button{margin-top:6px}
.sp-approval .recipient-fields .ifrow{display:grid;grid-template-columns:1fr;gap:10px}.sp-approval .recipient-site-caption{margin:12px 0 6px;font-size:var(--ds-text-sm)}.sp-approval .recipient-site-caption span{color:var(--ds-ink-3);font-size:var(--ds-text-caps)}.sp-approval .recipient-field-head label{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-ink)}.sp-approval .recipient-field-head select{max-width:60%;font-size:var(--ds-text-caps)}.sp-approval .recipient-entry-hint{margin:4px 0 0}.sp-approval>fieldset>label{margin:12px 0}.sp-approval-hint{display:block;margin-top:4px;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}.sp-approval section[aria-label="Email signature"] p{font-size:var(--ds-text-caps);color:var(--ds-ink-3);line-height:1.35;margin:2px 0 0}
.sp-approval .recipient-field-head{justify-content:space-between}.sp-approval .recipient-field-head label{flex:1;text-align:left;margin:0}.sp-approval .recipient-field-head select{flex:0 0 auto;max-width:55%}

.sp-qcard,[data-sched-block]{user-select:none;-webkit-user-select:none}body.sp-pointer-dragging{cursor:grabbing;user-select:none}body.sp-pointer-dragging *{cursor:grabbing!important}.sp-drag-ghost{position:fixed;z-index:9999;pointer-events:none;max-width:260px;padding:6px 10px;border-radius:var(--ds-r-md);background:var(--ds-chrome);color:var(--ds-action-fg);font-size:var(--ds-text-sm);box-shadow:var(--ds-e-pop)}

/* Work-queue toolbar: filters are inline chips and sort is a row of pills, so no menu
   has to be opened to filter or reorder the list. */
.sched-pro .sp-qsearch{padding:0 10px 6px}.sched-pro .sp-qsearch input{width:100%;padding:6px 8px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);font-size:var(--ds-text-caps)}
.sched-pro .sp-qchips{display:flex;flex-wrap:wrap;gap:4px;padding:0 10px 6px}
.sched-pro .sp-qchips button{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 7px 3px 5px;font-size:var(--ds-text-caps);line-height:1.3;border:1px solid var(--ds-field);border-radius:var(--ds-r-full);background:var(--ds-canvas);color:var(--ds-ink-2)}
.sched-pro .sp-qchips button i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.sched-pro .sp-qchips button span{color:var(--ds-ink-3);font-variant-numeric:tabular-nums}
.sched-pro .sp-qchips button[aria-pressed=true]{background:var(--ds-sel-bg);border-color:var(--ds-field);color:var(--ds-ink)}
.sched-pro .sp-qchips .sp-qclear{background:transparent;border-color:var(--ds-line);color:var(--ds-ink-3);border:0;border-radius:0;padding:0}
.sched-pro .sp-qchip-empty{font-size:var(--ds-text-caps);color:var(--ds-ink-3);padding:3px 0}
.sched-pro .sp-qsort{display:flex;flex-wrap:wrap;align-items:center;gap:3px;padding:0 10px 8px;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.sched-pro .sp-qsort>span{margin-right:2px}
.sched-pro .sp-qsort button{padding:3px 6px;font-size:var(--ds-text-caps);border:0;border-radius:var(--ds-r-sm);background:var(--ds-canvas);color:var(--ds-ink-2)}
.sched-pro .sp-qsort button[aria-pressed=true]{background:var(--ds-sel-bg);color:var(--ds-ink);font-weight:var(--ds-w-semi)}

/* The hour grid continues below the last technician so the board and the queue
   beside it read as one full-height surface. */
.sched-pro .sp-timeline{display:flex;flex-direction:column}
.sched-pro .sp-lane-fill{flex:1;border-bottom:0;min-height:var(--ds-s-10)}
.sched-pro .sp-lane-fill .sp-tech{background:transparent}
/* Technician names stay in view while the day scrolls sideways (owner, 2026-09-17). */
.sched-pro .sp-lane>.sp-tech{position:sticky!important;left:0;z-index:6;background:var(--ds-surface)}
.sched-pro .sp-lane-fill>.sp-tech{background:var(--ds-surface)}
.sched-pro .sp-ruler>div:first-child{position:sticky!important;left:0;z-index:11}

/* Actual on-site time in the block detail (van stops against the schedule). */
.sp-onsite{margin:8px 0 2px;padding:7px 10px;border-radius:var(--ds-r-lg);background:var(--ds-canvas);color:var(--ds-ink);font-size:var(--ds-text-base);line-height:1.35}
.sp-onsite strong{font-weight:var(--ds-w-semi)}
.sp-onsite-muted{background:var(--ds-canvas);color:var(--ds-ink-3)}
span.sp-onsite-muted{background:none;padding:0}
.sp-onsite-diff{color:var(--ds-ink-3)}

/* 2026-09-21: the roster and Colours menus open above the schedule (the toolbar clipped them and sat under the day strip and blocks) */
.sp-command{overflow:visible;position:relative;z-index:45}

/* ── Navy system, Phase 3 (2026-09-24): Schedules board ─────────────────────────────────
   Tokens only (design-tokens.css). Block fills keep their Simpro colour blended to pastel
   (statusPaint, D24); everything else follows docs/design-system/README.md §6.1–6.3, 6.10–6.12.
   Text sizes follow the operator's Display "Text size" setting: --sp-k = 1 at the 85% default. */
.sched-pro,.maintenance-planner{
  --sp-k:calc(var(--sp-text,.85) / .85);
  --sp-fs-caps:calc(var(--ds-text-caps) * var(--sp-k));
  --sp-fs-sm:calc(var(--ds-text-sm) * var(--sp-k));
  --sp-fs-base:calc(var(--ds-text-base) * var(--sp-k));
  --sp-fs-md:calc(var(--ds-text-md) * var(--sp-k));
  --sp-g-sched:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");
  --sp-g-route:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Cpath d='M6 2.75a3.25 3.25 0 0 1 0 6.5z'/%3E%3C/svg%3E");
  --sp-g-site:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Ccircle cx='6' cy='6' r='3.25'/%3E%3C/svg%3E");
  --sp-g-done:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cmask id='m'%3E%3Crect width='12' height='12' fill='%23fff'/%3E%3Cpath d='M3.7 6.1 5.3 7.7 8.4 4.4' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Ccircle cx='6' cy='6' r='5.5' mask='url%28%23m%29'/%3E%3C/svg%3E");
  --sp-g-warn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.75' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Cpath d='M6 3.7v2.6' stroke='%23000' stroke-width='1.4' stroke-linecap='round'/%3E%3Ccircle cx='6' cy='8.1' r='.8'/%3E%3C/svg%3E");
  --sp-g-late:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cmask id='m'%3E%3Crect width='12' height='12' fill='%23fff'/%3E%3Cpath d='M6 3.2v3.3' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3Ccircle cx='6' cy='8.6' r='.85' fill='%23000'/%3E%3C/mask%3E%3Ccircle cx='6' cy='6' r='5.5' mask='url%28%23m%29'/%3E%3C/svg%3E");
  --sp-g-flag:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 11.25V1.25' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M3 1.5h6.9l-1.7 2.6 1.7 2.6H3z'/%3E%3C/svg%3E");
}
.sched-pro{background:var(--ds-surface);color:var(--ds-ink);font:var(--ds-text-base)/var(--ds-lh-base) var(--ds-font);font-variant-numeric:var(--ds-nums);letter-spacing:var(--ds-track-base)}

/* Buttons (D17): secondary is flat white with a 1px field line; one navy primary. */
.sched-pro button:where(:not(.mapboxgl-ctrl-attrib-button)){border:0;box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-md);font-weight:var(--ds-w-medium)}
.sched-pro button:where(:not(.mapboxgl-ctrl-attrib-button)):hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.sched-pro button:where(:not(.mapboxgl-ctrl-attrib-button)):active{background:var(--ds-canvas);box-shadow:var(--ds-e-secondary)}
.sched-pro button:where(:not(.mapboxgl-ctrl-attrib-button)):disabled{background:var(--ds-disabled-bg);color:var(--ds-disabled-fg);box-shadow:inset 0 0 0 1px var(--ds-disabled-bd);cursor:not-allowed;opacity:1}
.sched-pro button:focus-visible,.sched-pro input:focus-visible,.sched-pro select:focus-visible,.sched-pro summary:focus-visible,.sched-pro [tabindex]:focus-visible{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.sched-pro .sp-primary,.maintenance-planner .sp-primary{background:var(--ds-action);color:var(--ds-action-fg);box-shadow:var(--ds-e-primary);border:0;font-weight:var(--ds-w-semi)}
.sched-pro .sp-primary:hover,.maintenance-planner .sp-primary:hover{background:var(--ds-action-hover);box-shadow:var(--ds-e-primary)}
.sched-pro .sp-primary:active,.maintenance-planner .sp-primary:active{background:var(--ds-action-press);box-shadow:var(--ds-e-primary-press);transform:translateY(.5px)}
.sched-pro .sp-primary:disabled,.maintenance-planner .sp-primary:disabled{background:var(--ds-disabled-primary-bg);color:var(--ds-disabled-primary-fg);box-shadow:none}

/* Command bar: paper, one row; board date in Saira (D3); controls 32px. */
.sp-command{background:var(--ds-surface);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);min-height:48px;padding:8px var(--ds-s-4);gap:var(--ds-s-2)}
.sp-command>button,.sp-command .sp-date>button[data-sched-nav="today"],.sp-command>details>summary,.sp-command .sp-technician-picker>summary{height:var(--ds-control-h);padding:0 var(--ds-s-3);font-size:var(--ds-text-base);line-height:var(--ds-lh-base);font-weight:var(--ds-w-medium)}
.sp-command .sp-date>button[data-sched-nav="prev"],.sp-command .sp-date>button[data-sched-nav="next"]{width:var(--ds-control-h);height:var(--ds-control-h);padding:0;box-shadow:none;background:transparent;color:var(--ds-ink-2)}
.sp-command .sp-date>button[data-sched-nav="prev"]:hover,.sp-command .sp-date>button[data-sched-nav="next"]:hover{background:var(--ds-paper-hover)}
.sp-date>strong{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);margin:0 var(--ds-s-1)}
.sp-command>input,.sp-command>select{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);padding:0 var(--ds-s-2)}
.sp-command>input::placeholder{color:var(--ds-ink-3)}
.sp-command>input:focus-visible,.sp-command>select:focus-visible{box-shadow:inset 0 0 0 1px var(--ds-line)}
.sp-legend summary,.sp-technician-picker summary{display:inline-flex;align-items:center;border-radius:var(--ds-r-md);color:var(--ds-ink);background:var(--ds-surface);box-shadow:var(--ds-e-secondary)}
.sp-legend summary:hover,.sp-technician-picker summary:hover{background:var(--ds-paper-hover)}
.sp-legend>div,.sp-technician-picker>div{border:0;border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);background:var(--ds-surface)}
.sp-legend>div>span{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
/* Legend swatches are painted like the blocks: the Simpro colour blended to pastel, with the same edge. */
.sp-legend i{width:12px;height:12px;border-radius:var(--ds-r-tag);background:var(--sp-bg);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink))}
.sp-saving{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}

/* Date rail: paper; the selected day is the navy selection. */
.sp-date-rail{background:var(--ds-surface);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line);height:48px;min-height:48px;padding:4px var(--ds-s-2)}
.sp-period>span{font-size:var(--ds-text-caps);line-height:var(--ds-lh-caps);color:var(--ds-ink-3)}
.sched-pro .sp-period>button{box-shadow:none;background:transparent;color:var(--ds-ink-2);font-size:var(--ds-text-d2)}
.sched-pro .sp-days>button{box-shadow:none;background:transparent;color:var(--ds-ink-2);border-radius:var(--ds-r-md)}
.sched-pro .sp-days>button:hover{background:var(--ds-paper-hover);box-shadow:none}
.sp-days>button>span{font-size:var(--ds-text-caps);line-height:var(--ds-lh-caps)}
.sp-days>button>strong{font-size:var(--ds-text-base);line-height:var(--ds-lh-md);font-weight:var(--ds-w-semi)}
.sched-pro .sp-days>button.weekend{background:transparent;color:var(--ds-ink-3)}
.sched-pro .sp-days>button.selected{background:var(--ds-selection);color:var(--ds-action-fg);box-shadow:none}
.sched-pro .sp-date-rail>button{height:28px;font-size:var(--ds-text-sm);padding:0 var(--ds-s-2)}

/* Grid (D5): paper canvas, hour lines 1px --ds-line, half hours --ds-hair, rows 1px. */
.sp-timeline{background:var(--ds-surface)}
.sched-pro .sp-track{background-color:var(--ds-surface);background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour) - 1px),var(--ds-grid-hour) calc(var(--sp-hour) - 1px),var(--ds-grid-hour) var(--sp-hour)),repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour)/2 - 1px),var(--ds-grid-half) calc(var(--sp-hour)/2 - 1px),var(--ds-grid-half) calc(var(--sp-hour)/2)),repeating-linear-gradient(to right,transparent 0,transparent calc(var(--sp-hour)/4 - 1px),var(--ds-grid-half) calc(var(--sp-hour)/4 - 1px),var(--ds-grid-half) calc(var(--sp-hour)/4)),linear-gradient(to right,var(--ds-board-offhours) 0 var(--sp-business-start),transparent var(--sp-business-start) var(--sp-business-end),var(--ds-board-offhours) var(--sp-business-end) 100%)}
/* After-hours shading is the bottom background layer so the hour and half-hour lines stay visible over it. */
.sched-pro .sp-track::before{background:none}
.sp-lane{border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line)}
.sp-lane-fill{box-shadow:none}

/* Hour axis (D13 AM/PM) with the now pill on its own strip below the labels (D4). */
.sp-ruler{height:44px;background:var(--ds-surface);border-bottom:0;box-shadow:inset 0 -1px 0 var(--ds-line)}
.sp-ruler>div:first-child{background:var(--ds-surface);border-right:0;box-shadow:inset -1px 0 0 var(--ds-line);padding:8px var(--ds-s-4) 0;font-size:var(--ds-text-caps);line-height:var(--ds-lh-caps);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-caps);color:var(--ds-ink-3)}
.sched-pro .sp-hour{height:44px;padding:6px 4px 0;border-left:0;box-shadow:inset 1px 0 0 var(--ds-line);font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);font-weight:var(--ds-w-medium);letter-spacing:var(--ds-track-sm);color:var(--ds-ink-3);white-space:nowrap}
.sched-pro .sp-hour.business{background:var(--ds-surface);color:var(--ds-ink-3)}
.sched-pro .sp-hour.nonbusiness{background:var(--ds-board-offhours);color:var(--ds-ink-3)}
.sp-hour>small{top:24px;left:50%;transform:translateX(-50%);font-size:var(--ds-text-caps);line-height:var(--ds-lh-caps);color:var(--ds-ink-3);font-weight:var(--ds-w-regular)}
.sp-nowtag{position:absolute;bottom:4px;z-index:2;transform:translateX(-50%);height:18px;padding:0 6px;border-radius:var(--ds-r-sm);background:var(--ds-now);color:var(--ds-action-fg);font-size:var(--ds-text-caps);line-height:18px;font-weight:var(--ds-w-semi);white-space:nowrap;pointer-events:none}
.sp-nowtag::after{content:"";position:absolute;left:50%;bottom:-4px;width:var(--ds-board-now-w);height:4px;margin-left:-.75px;background:var(--ds-now)}
.sp-now{top:44px;width:var(--ds-board-now-w);margin-left:-.75px;background:var(--ds-now)}
.sp-now>span{display:none}

/* Technician column: paper, 1px line; name 13/600, meta 12 ink-3; overlap flag (D9). */
.sched-pro .sp-lane>.sp-tech,.sched-pro .sp-lane-fill>.sp-tech{background:var(--ds-surface)}
.sp-tech{border-right:0;box-shadow:inset -1px 0 0 var(--ds-line);padding:0 var(--ds-s-3) 0 var(--ds-s-4);display:flex;flex-direction:column;justify-content:center}
.sp-tech>strong{font-size:var(--sp-fs-base);line-height:calc(16px * var(--sp-k));font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-base);color:var(--ds-ink)}
.sp-tech>span:not(.sp-tech-order),.sp-tech>small{font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));margin-top:0;color:var(--ds-ink-3);letter-spacing:var(--ds-track-sm)}
.sp-tech>small{color:var(--ds-ink-3)}
.sp-tech>small:has(.sp-flag){color:var(--ds-st-late-ink);font-weight:var(--ds-w-medium)}
.sp-flag{display:inline-block;width:12px;height:12px;margin-right:4px;vertical-align:-1px;background:var(--ds-st-late);-webkit-mask:var(--sp-g-flag) center / 12px 12px no-repeat;mask:var(--sp-g-flag) center / 12px 12px no-repeat}
.sched-pro .sp-tech-order button{width:20px;height:20px;border:0;box-shadow:none;background:transparent;color:var(--ds-icon);border-radius:var(--ds-r-sm);font-size:var(--ds-text-sm);line-height:20px}
.sched-pro .sp-tech-order button:hover:not(:disabled),.sched-pro .sp-tech-order button:focus-visible{background:var(--ds-paper-hover);color:var(--ds-ink);box-shadow:none}
.sched-pro .sp-tech-order button:disabled{background:transparent;box-shadow:none;color:var(--ds-disabled-bd);opacity:1}

/* ── Visit blocks (§6.1, D1, D13, D14, D20, D21, D24) ──
   Fill = Simpro colour at 28% on white (statusPaint). Edge = 1px, the Simpro colour mixed
   into navy ink, so it keeps the hue and clears 3:1 on the paper for every Simpro colour. */
.sched-pro .sp-block{padding:6px 8px 4px!important;border:0!important;border-radius:var(--ds-r-block)!important;background:var(--sp-bg)!important;color:var(--ds-ink)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink));font-size:var(--sp-fs-sm);line-height:calc(16px * var(--sp-k));letter-spacing:var(--ds-track-sm);text-align:left;white-space:nowrap}
.sched-pro .sp-block.one,.sched-pro .sp-block.half{padding:0 4px!important}
.sched-pro .sp-block.mko{padding:0!important}
.sched-pro .sp-block:hover{filter:none}
.sp-block .sp-face{display:block}
.sp-block .sp-full{display:none}
.sp-block .sp-l1{display:flex;align-items:center;gap:6px;height:calc(16px * var(--sp-k));min-width:0}
.sp-block .sp-t{color:var(--ds-ink-2);font-variant-numeric:var(--ds-nums);flex:none}
.sp-block .sp-t.dot::before{content:"·";margin-right:6px;color:var(--ds-ink-3)}
.sp-block .sp-w{display:inline-flex;align-items:center;gap:6px;flex:none;color:var(--ds-ink-2);font-weight:var(--ds-w-medium)}
.sp-block .sp-sn{display:block;height:calc(15px * var(--sp-k));line-height:calc(15px * var(--sp-k))}
.sp-block .sp-s{font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-block .sp-jb{display:block;height:calc(16px * var(--sp-k));color:var(--ds-ink-2)}
.sp-block .sp-n{font-weight:var(--ds-w-medium);font-variant-numeric:var(--ds-nums)}
.sp-block .sp-sc{white-space:pre;font-variant-numeric:lining-nums proportional-nums}
.sp-block .sp-one{display:flex;align-items:center;gap:6px;height:100%;min-width:0}
.sp-block .sp-stk{display:flex;flex-direction:column;justify-content:center;height:100%;min-width:0;line-height:calc(13px * var(--sp-k))}
.sp-block .sp-mk{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.sp-gl{display:inline-block;flex:none;width:calc(12px * var(--sp-k));height:calc(12px * var(--sp-k));background:var(--ds-st-sched);-webkit-mask:var(--sp-g-sched) center / 100% 100% no-repeat;mask:var(--sp-g-sched) center / 100% 100% no-repeat}
.sp-gl.g-route{background:var(--ds-st-route);-webkit-mask-image:var(--sp-g-route);mask-image:var(--sp-g-route)}
.sp-gl.g-site{background:var(--ds-st-site);-webkit-mask-image:var(--sp-g-site);mask-image:var(--sp-g-site)}
.sp-gl.g-done{background:var(--ds-st-done);-webkit-mask-image:var(--sp-g-done);mask-image:var(--sp-g-done)}
.sp-gl.g-sched{background:var(--ds-ink-2)}
/* D9: overlapping visits are two half-lanes; the late edge marks them; the hatch sits only in the gutter. */
.sched-pro .sp-block.conflict{outline:0;box-shadow:inset 0 0 0 1px var(--ds-st-late-bd)}
.sp-clash{position:absolute;z-index:0;height:3px;pointer-events:none;background:repeating-linear-gradient(135deg,var(--ds-st-late) 0 1.5px,transparent 1.5px 4px)}
/* Full values on hover / keyboard focus (the live inspection behaviour, kept). */
.sched-pro .sp-block:hover,.sched-pro .sp-block:focus-visible{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink)),var(--ds-e-pop);padding:6px 8px 6px!important;white-space:normal}
.sched-pro .sp-block:hover .sp-face,.sched-pro .sp-block:focus-visible .sp-face{display:none}
.sched-pro .sp-block:hover .sp-full,.sched-pro .sp-block:focus-visible .sp-full{display:block}
.sp-block .sp-full>strong{display:block;font-size:var(--sp-fs-sm);line-height:calc(16px * var(--sp-k));font-weight:var(--ds-w-semi)}
.sched-pro .sp-block .sp-purpose{display:block;font-size:var(--sp-fs-sm);line-height:calc(16px * var(--sp-k));color:var(--ds-ink-2);max-height:none;-webkit-line-clamp:unset;margin:0}
.sched-pro .sp-block .sp-blocktime{display:flex;flex-wrap:wrap;gap:0 8px;font-size:var(--sp-fs-sm);line-height:calc(16px * var(--sp-k));color:var(--ds-ink-2);margin:0}
.sp-block .sp-blocktime>em{font-style:normal;font-weight:var(--ds-w-medium)}
.sp-block.sp-ghost{box-shadow:none;border:1px dashed var(--ds-field)!important}

/* Work queue (demo board queue; the live page uses the planner queue .mp-queue). */
.sp-queue{background:var(--ds-surface);border-right:0;box-shadow:inset -1px 0 0 var(--ds-line)}
.sp-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)}
.sp-qhead strong>span{font-size:var(--ds-text-base);color:var(--ds-ink-3);font-weight:var(--ds-w-regular)}
.sched-pro .sp-qhead>button{box-shadow:none;background:transparent;color:var(--ds-icon)}
.sched-pro .sp-queue-states button,.sched-pro .sp-categories button,.sched-pro .sp-qchips button,.sched-pro .sp-qsort button{height:28px;padding:0 var(--ds-s-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);border:0;border-radius:var(--ds-r-md);background:var(--ds-surface);box-shadow:var(--ds-e-secondary);color:var(--ds-ink-2)}
.sched-pro .sp-qsort button{box-shadow:none;background:transparent}
.sched-pro .sp-queue-states button[aria-pressed=true],.sched-pro .sp-categories button.selected,.sched-pro .sp-qchips button[aria-pressed=true],.sched-pro .sp-qsort 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)}
.sp-queue-states span,.sched-pro .sp-qchips button span{color:var(--ds-ink-3)}
.sched-pro .sp-qchips .sp-qclear{background:var(--ds-surface);color:var(--ds-st-late-ink)}
.sched-pro .sp-qsort{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.sched-pro .sp-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);font-size:var(--ds-text-base);color:var(--ds-ink)}
.sched-pro .sp-qhint{font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);color:var(--ds-ink-3)}
.sched-pro .sp-qlist{padding:0}
.sched-pro .sp-qcard{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)}
.sched-pro .sp-qcard:hover{background:var(--ds-paper-hover);box-shadow:inset 0 -.5px 0 var(--ds-rule)}
.sched-pro .sp-qmeta{font-size:var(--sp-fs-sm);color:var(--ds-ink-3)}
.sched-pro .sp-qcard>strong{font-size:var(--sp-fs-md);line-height:calc(20px * var(--sp-k));font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-tight);color:var(--ds-ink)}
.sched-pro .sp-qcard>p{font-size:var(--sp-fs-base);line-height:calc(20px * var(--sp-k));color:var(--ds-ink-2)}
.sched-pro .sp-qstatus{font-size:var(--sp-fs-sm);line-height:calc(16px * var(--sp-k));color:var(--ds-ink-2);font-weight:var(--ds-w-medium);gap:6px}
.sp-qstatus>i{width:8px;height:8px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-color) 45%,var(--ds-brand-ink))}
.sched-pro .sp-qstatus em{color:var(--ds-ink-3);font-size:var(--sp-fs-sm)}
.sched-pro .sp-qcard footer{font-size:var(--sp-fs-sm);color:var(--ds-ink-3)}
.sched-pro .sp-qcard footer button{height:28px;padding:0 var(--ds-s-2);font-size:var(--ds-text-sm);background:var(--ds-surface);box-shadow:var(--ds-e-secondary);color:var(--ds-ink)}
.sched-pro .sp-maintenance-estimate,.sched-pro .sp-maintenance-estimate span,.sched-pro .sp-maintenance-estimate[role="status"]{font-size:var(--sp-fs-sm);color:var(--ds-ink-3)}
.sched-pro .sp-maintenance-estimate strong{font-size:var(--sp-fs-sm);color:var(--ds-ink-2)}
.sp-empty{font-size:var(--ds-text-base);color:var(--ds-ink-2)}

/* Map / new-job handles (bottom of the board): secondary tabs. */

/* Popovers and dialogs: white, radius 8, one pop shadow, no border (§6.4, D8). */
.sp-preview,.sp-display{border:0;border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop)}
.sp-preview header small{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.sp-preview header h2{font-size:var(--ds-text-d2);line-height:var(--ds-lh-d2);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-tight);color:var(--ds-ink)}
.sp-preview header span{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.sp-preview header button,.sp-editor>header button,.sp-display header button{box-shadow:none!important;background:transparent!important;color:var(--ds-icon)}
.sp-preview-body{font-size:var(--ds-text-base);line-height:var(--ds-lh-base);color:var(--ds-ink-2)}
.sp-preview-body h3{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-preview-body h4{font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-preview-body summary{font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);color:var(--ds-ink)}
.sp-preview-body section>button{background:var(--ds-canvas);box-shadow:none;font-size:var(--ds-text-sm)}
.sp-appointment{background:var(--ds-canvas);border-radius:var(--ds-r-md);color:var(--ds-ink-2)}
.sp-appointment>strong{font-size:var(--ds-text-base);color:var(--ds-ink)}
.sp-appointment>span{font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.sp-preview-meta{font-size:var(--ds-text-sm)}
.sp-customer{color:var(--ds-ink)}
.sp-preview>footer{background:var(--ds-canvas);border-top:0;box-shadow:inset 0 1px 0 var(--ds-line)}
.sched-pro .sp-preview>footer button,.sp-editor footer button{height:var(--ds-control-h);padding:0 var(--ds-s-3);font-size:var(--ds-text-base)}
.sp-editor-backdrop{background:color-mix(in srgb,var(--ds-brand-ink) 32%,transparent)}
.sp-editor{box-shadow:var(--ds-e-pop)}
.sp-editor>header small{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.sp-editor>header h2{font-size:var(--ds-text-d2);line-height:var(--ds-lh-d2);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-editor form>label,.sp-form-row>label,.sp-display label{font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink-2)}
.sp-editor input,.sp-editor select,.sp-approval textarea,.sp-home-address input{min-height:var(--ds-control-h);border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md);color:var(--ds-ink);font-size:var(--ds-text-base)}
.sp-editor input:focus-visible,.sp-editor select:focus-visible,.sp-approval textarea:focus-visible,.sp-home-address input:focus-visible{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)}
.sp-form-note{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.sp-form-error{font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-st-late-ink)}
.sp-display header strong{font-size:var(--ds-text-md);font-weight:var(--ds-w-semi)}
.sp-display output{font-size:var(--ds-text-sm);color:var(--ds-ink-2);font-variant-numeric:var(--ds-nums)}
.sched-pro .sp-date-notice{background:var(--ds-tint);color:var(--ds-ink-2);border-bottom:0;font-size:var(--ds-text-sm)}
.sched-pro .sp-date-error{color:var(--ds-ink-3);background:transparent;border:0;border-radius:0;padding:2px 0;margin:4px 0 0;font-size:var(--ds-text-sm)}
.sp-drag-ghost{background:var(--ds-chrome);color:var(--ds-action-fg);border-radius:var(--ds-r-md);box-shadow:var(--ds-e-pop);font-size:var(--ds-text-sm)}
.sched-pro .sp-track.drop-target:after{background:var(--ds-now);color:var(--ds-ink);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi)}
.sp-onsite{background:var(--ds-st-done-bg);color:var(--ds-ink);border-radius:var(--ds-r-md);font-size:var(--ds-text-base)}
.sp-onsite-muted{background:var(--ds-canvas);color:var(--ds-ink-2)}
.sched-pro .sp-queue-states{flex-wrap:wrap;gap:4px}
.sched-pro .sp-queue-states button{flex:1 1 auto;padding:0 6px}
.sched-pro .sp-qstatus,.sched-pro .sp-qcard .sp-qstatus{align-items:center}
.sched-pro .sp-categories,.sched-pro .sp-qchips,.sched-pro .sp-qsort{gap:4px}
/* The live command bar holds 13 controls on one line (owner, 2026-09-21): tighter steps below 1680px. */
@media(max-width:1679px){
  .sp-command{gap:6px;padding-left:var(--ds-s-3);padding-right:var(--ds-s-3)}
  .sp-command>button,.sp-command .sp-date>button[data-sched-nav="today"],.sp-command>details>summary,.sp-command .sp-technician-picker>summary{padding:0 10px}
  .sp-command .sp-date>button[data-sched-nav="prev"],.sp-command .sp-date>button[data-sched-nav="next"]{width:28px}
  .sp-date>strong{font-size:var(--ds-text-p-body);line-height:var(--ds-lh-md)}
  .sp-command{flex-wrap:wrap;row-gap:6px}
  .sp-command>input{flex:1 1 160px;min-width:160px}
}
/* The hovered block's full values rise above the next technician's row. */
.sched-pro .sp-lane:has(.sp-block:hover),.sched-pro .sp-lane:has(.sp-block:focus-visible){position:relative;z-index:7}
/* The reorder arrows sit on the name line only; the meta lines may use that width (no clipped "Overlapping visits"). */
.sched-pro .sp-tech>span:not(.sp-tech-order),.sched-pro .sp-tech>small{margin-right:-26px}
.sp-command>input{min-width:160px}
/* Saved board copy on first open: read-only until the live board lands */
.sched-saved{padding:6px 14px;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}.sched-host[inert]{opacity:.72}
.sp-pics{margin-block:var(--ds-s-3)}
.sp-pics>h3{margin:0 0 var(--ds-s-2)}.sp-pics>h3>span{color:var(--ds-ink-3);font-weight:var(--ds-w-regular)}
.sp-pics .sp-pics-visit{margin:var(--ds-s-3) 0 var(--ds-s-2);color:var(--ds-ink-3);font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);font-weight:var(--ds-w-medium)}
.sp-pics-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ds-s-2)}
.sched-pro .sp-pics-thumb,.sched-pro .sp-pics-thumb:hover{position:relative;display:block;aspect-ratio:1;padding:0;border:0;box-shadow:none;border-radius:var(--ds-r-lg);overflow:hidden;background:var(--ds-thumb);cursor:zoom-in}
.sp-pics-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.sp-pics-thumb:focus-visible{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.sp-pics-thumb .photo-image-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}
.sp-pics-thumb .photo-image-error[hidden]{display:none}
.sp-pics-pending .sp-pics-thumb{cursor:default}
.sp-pics .sp-pics-more{margin-block-start:var(--ds-s-3)}
.sp-pics .sp-pics-retry{margin-block-start:var(--ds-s-2);padding:0;border:0;background:transparent;box-shadow:none;color:var(--ds-ink-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);cursor:pointer}
.sp-pics .sp-pics-retry:hover{background:transparent;text-decoration:underline}
.sp-worknotes-card h4 .sp-nb{white-space:nowrap}
/* Schedules photo viewer: solid backdrop, photo + filmstrip on the left, that day's notes in a column on the right. */
.photolb.photolb-solid{background:var(--ds-chrome);grid-template-columns:minmax(0,1fr) min(40%,calc(var(--ds-s-10) * 9));grid-template-rows:auto minmax(0,1fr) auto}
.photolb.photolb-solid .plb-top{grid-column:1/-1}
.photolb.photolb-solid .plb-stage{grid-column:1;grid-row:2;margin-inline:var(--ds-s-4)}
.photolb.photolb-solid .plb-stage img{max-width:calc(100% - var(--ds-s-12) * 2);max-height:100%}
.photolb.photolb-solid .plb-prev{left:0}.photolb.photolb-solid .plb-next{right:0}
.photolb.photolb-solid .plb-strip{grid-column:1;grid-row:3;display:flex;gap:var(--ds-s-2);overflow-x:auto;scrollbar-width:none;padding:var(--ds-s-3) var(--ds-s-4) var(--ds-s-4)}
.photolb.photolb-solid .plb-strip::-webkit-scrollbar{display:none}
.photolb.photolb-solid .plb-thumb{flex:0 0 auto;width:var(--ds-s-12);height:var(--ds-s-12);padding:0;border:0;border-radius:var(--ds-r-sm);overflow:hidden;background:var(--ds-thumb);opacity:.55;cursor:pointer}
.photolb.photolb-solid .plb-thumb:hover{opacity:.85}
.photolb.photolb-solid .plb-thumb[aria-current="true"]{opacity:1;outline:var(--ds-focus-w) solid var(--ds-chrome-fg);outline-offset:var(--ds-focus-off)}
.photolb.photolb-solid .plb-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.photolb.photolb-solid .plb-dock{grid-column:2;grid-row:2/4;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ds-chrome-fg-3) transparent;text-align:left;padding:var(--ds-s-2) var(--ds-s-5) var(--ds-s-4) var(--ds-s-2);cursor:default}
.photolb.photolb-solid .pcap{display:block;max-width:none;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);line-height:var(--ds-lh-base)}
.photolb.photolb-solid .pcap .pcap-note{max-height:none;overflow:visible;margin-top:var(--ds-s-3);color:var(--ds-chrome-fg);font-size:var(--ds-text-base);font-weight:var(--ds-w-regular);line-height:var(--ds-lh-base)}
.photolb.photolb-solid .plb-dl{display:flex;margin:var(--ds-s-3) 0 0;font-size:var(--ds-text-base);font-weight:var(--ds-w-medium)}
@media (max-width:900px){.photolb.photolb-solid{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}.photolb.photolb-solid .plb-dock{grid-column:1;grid-row:4;max-height:30vh;padding:var(--ds-s-2) var(--ds-s-4)}}
.sp-pics-error{margin:0;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}
.sp-worknotes{margin-block:var(--ds-s-3)}.sp-worknotes.sp-worknotes-pending{margin:0}
.sp-worknotes>h3{margin:0 0 var(--ds-s-2)}
.sp-worknotes-loading{margin:0;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}
.sp-worknotes-empty,.sp-worknotes-error,.sp-worknotes-source{margin:0;color:var(--ds-ink-3);font-size:var(--ds-text-sm)}
.sp-worknotes .sp-worknotes-retry{margin-block-start:var(--ds-s-1);padding:0;border:0;background:transparent;box-shadow:none;color:var(--ds-ink-3);font-size:var(--ds-text-sm);cursor:pointer;text-decoration:underline}
.sp-worknotes .sp-worknotes-retry:hover{background:transparent}
.sp-worknotes-card{margin-block:var(--ds-s-2);padding:var(--ds-s-2) var(--ds-s-3);border-inline-start:var(--ds-s-1) solid var(--ds-line);border-radius:var(--ds-r-sm);background:var(--ds-canvas)}
.sp-worknotes-this{border-inline-start-color:var(--ds-selection)}
.sp-worknotes-card h4{margin:0;color:var(--ds-ink);font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);font-weight:var(--ds-w-semi)}
.sp-worknotes-copy{margin-block-start:var(--ds-s-2);margin-block-end:0}
.sp-worknotes-copy>strong{display:block;color:var(--ds-ink-2);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi)}
.sp-worknotes-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;color:var(--ds-ink-2);white-space:pre-wrap}
.sp-worknotes-open .sp-worknotes-text,.sp-worknotes-full .sp-worknotes-text{display:block;-webkit-line-clamp:unset}
.sp-worknotes .sp-worknotes-toggle{margin-block-start:var(--ds-s-1);padding:0;border:0;background:transparent;box-shadow:none;color:var(--ds-ink-2);font-size:var(--ds-text-sm);cursor:pointer;text-decoration:underline}
.sp-worknotes-more>summary{display:inline-flex;align-items:center;cursor:pointer;list-style:none;margin-block:var(--ds-s-2);padding:var(--ds-s-1) var(--ds-s-2);border-radius:var(--ds-r-md);background:var(--ds-surface);box-shadow:var(--ds-e-secondary);color:var(--ds-ink);font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium)}
.sp-worknotes-more>summary::-webkit-details-marker{display:none}
/* Hovering or focusing a block shows all of it: site, scope and time, never abbreviated (owner 2026-10-14). */
.sched-pro .sp-block:hover,.sched-pro .sp-block:focus-visible{min-width:max-content;max-width:max(340px,var(--bw,0px));height:auto!important;min-height:calc(var(--sp-row) - 2px);z-index:30!important;overflow:visible}
.sched-pro .sp-block:hover .sp-face,.sched-pro .sp-block:focus-visible .sp-face{display:none}
.sched-pro .sp-block:hover .sp-full,.sched-pro .sp-block:focus-visible .sp-full{display:block;white-space:normal}
.sched-pro .sp-block .sp-full>strong,.sched-pro .sp-block .sp-full>.sp-purpose,.sched-pro .sp-block .sp-full>.sp-blocktime{display:block;white-space:normal;overflow:visible}
.sp-block .sp-jb{height:auto;white-space:normal}
.sp-block .sp-sc-cut{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Full job names (owner 2026-10-14): every line of the name shows; rows grow to fit. */
.sched-pro .sp-block.full{padding:4px 4px!important;white-space:normal}
.sp-block .sp-fullface .sp-sn,.sp-block .sp-fullface .sp-l1,.sp-block .sp-fullface .sp-jb{overflow:visible}
.sp-block .sp-fullface .sp-jb.sp-sc-cut{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ══ Schedules board, Option 1 (owner approved the mockup 2026-10-28: "Yes, build it") ═══════════════════════
   Owner's words: "I need more solid colors, the pastels are not working for me" · "Too much info gets cut off in
   the schedule blocks" · "The lanes between techs need better horizontal line separation" · "the menu bar above
   the schedule feels sort of cluttered and badly organized" · "I want all the options to have a banded name row".
   Solid Simpro fills (statusPaint → --sp-bg / --sp-ink / --sp-edge) supersede the D24 pastel blend. */

/* Command bar: one row, every control 32px, ghost secondaries, 1px dividers between groups, one navy "+ New job". */
.sched-pro .sp-command,.maintenance-planner .sched-pro .sp-command{flex-wrap:nowrap;row-gap:0;gap:0;height:52px;min-height:52px;padding:0 var(--ds-s-4);align-items:center;overflow:visible;background:var(--ds-surface);box-shadow:inset 0 -1px 0 var(--ds-line)}
.sched-pro .sp-command>*{flex-shrink:0}
.sched-pro .sp-command .sp-flex{flex:1 1 var(--ds-s-2);min-width:2px}
.sched-pro .sp-command .sp-div{display:block;flex:none;width:1px;height:20px;margin:0 5px;background:var(--ds-line)}
.sched-pro .sp-command .sp-ghost,.sched-pro .sp-command .sp-toolbar-map,.sched-pro .sp-command .sp-date>button,.sched-pro .sp-command .sp-legend>summary,.sched-pro .sp-command .sp-technician-picker>summary,.maintenance-planner .sched-pro .sp-command .mp-board-commands .mp-qtoggle{height:var(--ds-control-h);padding:0 7px;border:0;box-shadow:none;background:transparent;color:var(--ds-ink-2);font-size:var(--ds-text-base);line-height:var(--ds-lh-base);font-weight:var(--ds-w-medium);border-radius:var(--ds-r-md);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;list-style:none;cursor:pointer}
.sched-pro .sp-command .sp-ghost:hover,.sched-pro .sp-command .sp-toolbar-map:hover,.sched-pro .sp-command .sp-date>button:hover,.sched-pro .sp-command .sp-legend>summary:hover,.sched-pro .sp-command .sp-technician-picker>summary:hover,.maintenance-planner .sched-pro .sp-command .mp-board-commands .mp-qtoggle:hover{background:var(--ds-paper-hover);color:var(--ds-ink);box-shadow:none}
.maintenance-planner .sched-pro .sp-command .mp-board-commands .mp-qtoggle.on{background:var(--ds-sel-bg);color:var(--ds-ink);box-shadow:none}
.sched-pro .sp-command .sp-legend>summary::after,.sched-pro .sp-command .sp-technician-picker>summary::after{content:none;display:none}
.sched-pro .sp-command summary::-webkit-details-marker{display:none}
.sched-pro .sp-command .ic{flex:none}
.sched-pro .sp-command summary>.ic,.sched-pro .sp-command [data-sched-display]>.ic{color:var(--ds-icon);margin-left:-2px}
.sched-pro .sp-command [data-sched-refresh]>.ic{color:var(--ds-ink-3)}
.sched-pro .sp-command .sp-date{display:flex;align-items:center;gap:0}
.sched-pro .sp-command .sp-date>button[data-sched-nav="prev"],.sched-pro .sp-command .sp-date>button[data-sched-nav="next"]{width:var(--ds-control-h);padding:0;justify-content:center}
.sched-pro .sp-command .sp-date>button[data-sched-nav="today"]{padding:0 8px}
.sched-pro .sp-command .sp-date>strong{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);margin:0 2px 0 6px;white-space:nowrap}
.sched-pro .sp-command .sp-badge{display:inline-block;min-width:20px;height:18px;padding:0 5px;border-radius:var(--ds-r-sm);background:var(--ds-tint);color:var(--ds-ink-2);font-size:var(--ds-text-caps);line-height:18px;font-weight:var(--ds-w-semi);text-align:center;font-variant-numeric:var(--ds-nums)}
.sched-pro .sp-command .sp-technician-picker{margin-left:2px}
.maintenance-planner .sched-pro .sp-command .mp-board-commands .mp-qt-ico{display:none}
.sched-pro .sp-command .sp-searchbox{display:flex;align-items:center;gap:6px;flex:0 1 256px;min-width:140px;height:var(--ds-control-h);padding:0 8px;border-radius:var(--ds-r-md);box-shadow:inset 0 0 0 1px var(--ds-field);background:var(--ds-surface);color:var(--ds-ink-3);cursor:text}
.sched-pro .sp-command .sp-searchbox:focus-within{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.sched-pro .sp-command .sp-searchbox>.ic{width:16px;height:16px}
.sched-pro .sp-command .sp-searchbox>input,.sched-pro .sp-command .sp-searchbox>input:focus-visible{flex:1;min-width:0;width:auto;height:30px;border:0;box-shadow:none;outline:0;padding:0;background:transparent;font-size:var(--ds-text-base);color:var(--ds-ink)}
.sched-pro .sp-command .sp-searchbox>input::placeholder{color:var(--ds-ink-3)}
.sched-pro .sp-command .sp-toolbar-new{height:var(--ds-control-h);padding:0 14px 0 12px;gap:6px;border:0;background:var(--ds-action);color:var(--ds-action-fg);box-shadow:var(--ds-e-primary);font-size:var(--ds-text-base);font-weight:var(--ds-w-semi)}
.sched-pro .sp-command .sp-toolbar-new:hover{background:var(--ds-action-hover);box-shadow:var(--ds-e-primary)}
.sched-pro .sp-command .sp-saving{margin-left:var(--ds-s-2)}
/* this week inline: Mo–Su in a quiet track, the selected day raised white; ‹ › page a week */
.sched-pro .sp-weekstrip{display:flex;align-items:center;gap:2px;margin-left:6px}
.sched-pro .sp-weekstrip>button{width:22px;height:var(--ds-control-h);padding:0;border:0;box-shadow:none;background:transparent;color:var(--ds-ink-2);border-radius:var(--ds-r-md)}
.sched-pro .sp-weekstrip>button:hover{background:var(--ds-paper-hover);color:var(--ds-ink);box-shadow:none}
.sched-pro .sp-weekstrip .sp-days{flex:0 1 auto;width:auto;max-width:424px;min-width:90px;display:flex;flex-wrap:nowrap;gap:0;height:var(--ds-control-h);padding:2px;border-radius:var(--ds-r-md);background:var(--ds-tint);overflow-x:auto;overflow-y:hidden}
.sched-pro .sp-weekstrip .sp-days>button{flex:none;width:30px;min-width:30px;height:28px;padding:0;gap:0;border:0;border-radius:var(--ds-r-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;background:transparent;box-shadow:none;color:var(--ds-ink-2)}
.sched-pro .sp-weekstrip .sp-days>button:hover{background:var(--ds-paper-hover);box-shadow:none}
.sched-pro .sp-weekstrip .sp-days>button>span{font-size:var(--ds-text-caps);line-height:12px;font-weight:var(--ds-w-medium);color:var(--ds-ink-3)}
.sched-pro .sp-weekstrip .sp-days>button>strong{font-size:var(--ds-text-sm);line-height:14px;font-weight:var(--ds-w-semi);color:var(--ds-ink-2);font-variant-numeric:var(--ds-nums)}
.sched-pro .sp-weekstrip .sp-days>button.weekend>strong{color:var(--ds-ink-3)}
.sched-pro .sp-weekstrip .sp-days>button.selected{background:var(--ds-surface);box-shadow:0 0 0 1px var(--ds-line),var(--ds-e-primary)}
.sched-pro .sp-weekstrip .sp-days>button.selected>span{color:var(--ds-ink-2)}
.sched-pro .sp-weekstrip .sp-days>button.selected>strong{color:var(--ds-ink)}
.sched-pro .sp-legend>div{top:36px}
/* narrower windows: the same one row, tighter */
@media(max-width:1439px){
  .sched-pro .sp-command,.maintenance-planner .sched-pro .sp-command{padding:0 var(--ds-s-3)}
  .sched-pro .sp-command .sp-ghost,.sched-pro .sp-command .sp-toolbar-map,.sched-pro .sp-command .sp-legend>summary,.sched-pro .sp-command .sp-technician-picker>summary,.maintenance-planner .sched-pro .sp-command .mp-board-commands .mp-qtoggle{padding:0 6px}
  .sched-pro .sp-command .sp-div{margin:0 4px}
  .sched-pro .sp-weekstrip{margin-left:var(--ds-s-1)}
  .sched-pro .sp-weekstrip>button{width:20px}
  .sched-pro .sp-command .sp-date>button[data-sched-nav="prev"],.sched-pro .sp-command .sp-date>button[data-sched-nav="next"]{width:28px}
  .sched-pro .sp-command .sp-date>button[data-sched-nav="today"]{padding:0 6px}
  .sched-pro .sp-command .sp-date>strong{font-size:var(--ds-text-p-body);line-height:var(--ds-lh-md);margin:0 2px 0 6px}
}

/* Grid: hour, half-hour and quarter-hour lines in every lane, three strengths (hour strongest); the after-hours
   veil is the top layer and translucent, so all three show through it. */
.sched-pro .sp-timeline-b .sp-track{background-color:var(--ds-surface);background-image:linear-gradient(to right,var(--ds-board-veil) 0 var(--sp-business-start),transparent var(--sp-business-start) var(--sp-business-end),var(--ds-board-veil) var(--sp-business-end)),repeating-linear-gradient(to right,var(--ds-board-grid-hour) 0 1px,transparent 1px var(--sp-hour)),repeating-linear-gradient(to right,transparent 0 calc(var(--sp-hour) / 2),var(--ds-board-grid-half) calc(var(--sp-hour) / 2) calc(var(--sp-hour) / 2 + 1px),transparent calc(var(--sp-hour) / 2 + 1px) var(--sp-hour)),repeating-linear-gradient(to right,transparent 0 calc(var(--sp-hour) / 4),var(--ds-board-grid-quarter) calc(var(--sp-hour) / 4) calc(var(--sp-hour) / 4 + 1px),transparent calc(var(--sp-hour) / 4 + 1px) calc(var(--sp-hour) / 2));min-height:var(--sp-row);height:var(--sp-row);box-shadow:none}
.sched-pro .sp-timeline-b .sp-track::before{display:none}

/* Lanes: a 2px line above each technician's band, then the band, then the track. No name column. */
.sched-pro .sp-timeline-b{display:flex;flex-direction:column;min-height:100%}
.sched-pro .sp-lane.sp-lane-b{display:block;min-height:0;border:0;border-top:2px solid var(--ds-board-band-sep);box-shadow:none}
.sched-pro .sp-lane-b.sp-lane-fill{flex:1 0 var(--ds-s-10);display:flex;flex-direction:column}
.sched-pro .sp-lane-b.sp-lane-fill>.sp-track{flex:1;height:auto;min-height:var(--ds-s-10)}
.sched-pro .sp-band{position:relative;height:var(--sp-band,24px);background:var(--ds-board-band);box-shadow:inset 0 -1px 0 var(--ds-board-band-line)}
.sched-pro .sp-band-in{position:sticky;left:0;z-index:2;width:var(--sp-view-w,100%);max-width:100%;height:100%;display:flex;align-items:center;gap:10px;padding:0 var(--ds-s-2) 0 var(--ds-s-3);box-sizing:border-box;min-width:0}
.sched-pro .sp-band-in>strong{font-size:var(--sp-fs-base);line-height:16px;font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-base);color:var(--ds-ink);white-space:nowrap}
.sched-pro .sp-band-meta{font-size:var(--sp-fs-sm);line-height:16px;color:var(--ds-ink-2);white-space:nowrap;font-variant-numeric:var(--ds-nums)}
.sched-pro .sp-band-meta>b{font-weight:var(--ds-w-medium);color:var(--ds-ink)}
.sched-pro .sp-band-flag{color:var(--ds-st-late-ink);font-weight:var(--ds-w-medium)}
.sched-pro .sp-band-load{display:block;flex:none;width:64px;height:4px;border-radius:var(--ds-r-tag);background:var(--ds-board-band-line);overflow:hidden}
.sched-pro .sp-band-load>i{display:block;height:4px;background:var(--ds-ink-2)}
.sched-pro .sp-band-in>.sp-flex{flex:1}
.sched-pro .sp-band .sp-tech-order{position:static;display:flex;gap:4px;z-index:3}
.sched-pro .sp-band .sp-tech-order button{width:20px;height:18px;padding:0;border:0;border-radius:var(--ds-r-sm);background:var(--ds-surface);box-shadow:inset 0 0 0 1px var(--ds-field);color:var(--ds-ink-2);font-size:var(--ds-text-caps);line-height:16px}
.sched-pro .sp-band .sp-tech-order button:hover:not(:disabled),.sched-pro .sp-band .sp-tech-order button:focus-visible{background:var(--ds-paper-hover);color:var(--ds-ink);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.sched-pro .sp-band .sp-tech-order button:disabled{background:var(--ds-surface);color:var(--ds-disabled-bd);box-shadow:inset 0 0 0 1px var(--ds-line);opacity:1}

/* Hour ruler (32px) and the now marker: red pill with the time + dot on the ruler; a 1.5px line behind the blocks. */
.sched-pro .sp-timeline-b .sp-ruler{height:32px;position:sticky;top:0;z-index:10;background:var(--ds-surface);border:0;box-shadow:inset 0 -1px 0 var(--ds-board-band-line)}
.sched-pro .sp-timeline-b .sp-hours{position:relative;height:32px}
.sched-pro .sp-timeline-b .sp-hour{height:32px;padding:0 0 0 6px;display:flex;align-items:center;border:0;box-shadow:inset 1px 0 0 var(--ds-board-grid-hour);font-size:var(--ds-text-caps);line-height:var(--ds-lh-caps);font-weight:var(--ds-w-medium);letter-spacing:var(--ds-track-sm);color:var(--ds-ink-2);white-space:nowrap}
.sched-pro .sp-timeline-b .sp-hour.nonbusiness{background:var(--ds-board-offhours)}
.sched-pro .sp-timeline-b .sp-nowtag{position:absolute;top:7px;bottom:auto;transform:translateX(-50%);height:18px;padding:0 6px;border-radius:var(--ds-r-sm);background:var(--ds-board-now-mark);color:var(--ds-action-fg);font-size:var(--ds-text-caps);line-height:18px;font-weight:var(--ds-w-semi);font-variant-numeric:var(--ds-nums);box-shadow:0 0 0 2px var(--ds-surface);z-index:3;pointer-events:none}
.sched-pro .sp-timeline-b .sp-nowtag::after{content:none;display:none}
.sched-pro .sp-nowdot{position:absolute;top:28px;width:8px;height:8px;margin-left:-4px;border-radius:var(--ds-r-full);background:var(--ds-board-now-mark);box-shadow:0 0 0 2px var(--ds-surface);z-index:3;pointer-events:none}
.sched-pro .sp-nowline{position:absolute;top:0;bottom:0;width:var(--ds-board-now-w);margin-left:-.75px;background:var(--ds-board-now-mark);z-index:0;pointer-events:none}
.sched-pro .sp-band>.sp-nowline{z-index:1}

/* Blocks: the solid Simpro colour, automatic ink, a hairline edge of the same hue. Text wraps on whole words. */
.sched-pro .sp-track>.sp-block.sp-b2{position:absolute;top:4px;height:calc(var(--sp-row) - 8px);padding:4px 7px!important;border:0!important;border-radius:var(--ds-r-sm)!important;background:var(--sp-bg)!important;color:var(--sp-ink)!important;box-shadow:inset 0 0 0 1px var(--sp-edge);display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:left;white-space:normal;overflow:hidden;font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));letter-spacing:var(--ds-track-sm);z-index:1}
.sched-pro .sp-track>.sp-block.sp-b2.half{padding:2px 7px!important}
.sched-pro .sp-track>.sp-block.sp-b2.sp-b-narrow{padding:4px 4px!important}
.sched-pro .sp-track>.sp-block.sp-b2.sp-b-actn{padding:4px 3px!important}
.sched-pro .sp-track>.sp-block.sp-b2.sp-b-tiny{padding:4px 0!important}
.sched-pro .sp-b2 .sp-face{display:flex;flex-direction:column;min-width:0;color:var(--sp-ink)}
.sched-pro .sp-b2 .sp-b-t1{display:flex;align-items:center;gap:4px;white-space:nowrap;min-width:0}
.sched-pro .sp-b2 .sp-b-time{display:block;font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));font-weight:var(--ds-w-semi);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.sched-pro .sp-b2 .sp-b-end{font-weight:var(--ds-w-medium)}
.sched-pro .sp-b2 .sp-b-site{display:block;font-size:var(--sp-fs-base);line-height:calc(14px * var(--sp-k));font-weight:var(--ds-w-semi);overflow-wrap:normal;word-break:normal;hyphens:none}
.sched-pro .sp-b2 .sp-b-scope{display:block;font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));font-weight:var(--ds-w-regular);overflow-wrap:normal;word-break:normal;hyphens:none}
.sched-pro .sp-b2 .sp-b-site.sp-b-sm{font-size:var(--sp-fs-sm)}
.sched-pro .sp-b2.sp-b-act .sp-face{flex-direction:row;align-items:flex-start;gap:6px}
.sched-pro .sp-b2 .sp-b-col{display:flex;flex-direction:column;min-width:0}
.sched-pro .sp-b2.sp-b-act .sp-b-time,.sched-pro .sp-b2.sp-b-actn .sp-b-time{font-weight:var(--ds-w-medium)}
.sched-pro .sp-b2.sp-b-actn .sp-face,.sched-pro .sp-b2.sp-b-tiny .sp-face{align-items:center;text-align:center}
.sched-pro .sp-b2 .sp-b-aname{display:block;font-size:var(--sp-fs-caps);line-height:calc(14px * var(--sp-k));font-weight:var(--ds-w-semi);margin-bottom:1px}
.sched-pro .sp-b2 .sp-aic{display:block;flex:none}
.sched-pro .sp-b2.sp-b-act .sp-aic{margin-top:-1px}
.sched-pro .sp-b2 .sp-gl{background:currentColor}
.sched-pro .sp-track>.sp-block.sp-b2.conflict{box-shadow:inset 0 0 0 1px var(--sp-edge),inset 3px 0 0 var(--ds-st-late)}
.sched-pro .sp-b2 .sp-full,.sched-pro .sp-b2 .sp-full>strong,.sched-pro .sp-b2 .sp-full .sp-purpose,.sched-pro .sp-b2 .sp-full .sp-blocktime{color:var(--sp-ink)}
.sched-pro .sp-track>.sp-block.sp-b2:hover,.sched-pro .sp-track>.sp-block.sp-b2:focus-visible{box-shadow:inset 0 0 0 1px var(--sp-edge),var(--ds-e-pop);padding:6px 8px!important}
/* Outside label for a short visit: plain text in the free time beside it, a 3px tick in the block colour. */
.sched-pro .sp-spill{position:absolute;top:9px;z-index:1;pointer-events:none;width:max-content;box-sizing:border-box;display:flex;flex-direction:column;color:var(--ds-ink);font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));letter-spacing:var(--ds-track-sm);overflow-wrap:normal;word-break:normal}
.sched-pro .sp-spill-r{padding-left:6px;border-left:3px solid var(--sp-tick)}
.sched-pro .sp-spill-l{padding-right:6px;border-right:3px solid var(--sp-tick);text-align:right;align-items:flex-end}
.sched-pro .sp-spill-site,.sched-pro .sp-spill-time{font-weight:var(--ds-w-semi)}
.sched-pro .sp-spill-time{font-variant-numeric:tabular-nums lining-nums}
.sched-pro .sp-spill-rest{color:var(--ds-ink-2)}
.sched-pro .sp-spill-nowrap{white-space:nowrap}
/* Caption line under a lane's blocks for a visit with no room inside or beside it: its site (and time) stay readable. */
.sched-pro .sp-cap{position:absolute;z-index:1;pointer-events:none;white-space:nowrap;padding-left:5px;border-left:3px solid var(--sp-tick);color:var(--ds-ink);font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));letter-spacing:var(--ds-track-sm)}

/* Colour key under the board: one line of swatches for what is on the board (Colors ▾ keeps the full list). */
.sched-pro .sp-colorkey{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-s-1) var(--ds-s-4);min-height:36px;padding:var(--ds-s-2) var(--ds-s-4);background:var(--ds-surface);box-shadow:inset 0 1px 0 var(--ds-board-band-line);font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);color:var(--ds-ink-2);white-space:nowrap;overflow-x:auto;scrollbar-width:none}
.sched-pro .sp-colorkey::-webkit-scrollbar{display:none}
.sched-pro .sp-colorkey>span{display:inline-flex;align-items:center;gap:6px;flex:none}
.sched-pro .sp-colorkey i,.sched-pro .sp-legend i{display:inline-block;flex:none;width:10px;height:10px;border-radius:var(--ds-r-full);background:var(--sp-bg);box-shadow:inset 0 0 0 1px var(--sp-edge)}

/* Job preview header: the solid status colour with automatic ink. */
.sp-preview>header{background:var(--sp-bg);color:var(--sp-ink);border-top:0}
.sp-preview>header small,.sp-preview>header h2,.sp-preview>header span,.sp-preview>header a,.sp-preview>header .rt-link,.sp-preview>header button{color:var(--sp-ink)!important}

/* below 1280px the one-row toolbar would push Map, Refresh and + New job off screen: let it wrap onto a second row */
@media(max-width:1279px){
  .sched-pro .sp-command,.maintenance-planner .sched-pro .sp-command{flex-wrap:wrap;height:auto;min-height:52px;row-gap:var(--ds-s-2);padding-top:var(--ds-s-2);padding-bottom:var(--ds-s-2)}
}

/* Smaller laptops: Refresh keeps its icon (and aria-label) so the bar stays one row with the full search text. */
@media(max-width:1365px){.sched-pro .sp-command [data-sched-refresh] .sp-lbl{display:none}.sched-pro .sp-weekstrip .sp-days>button{width:25px;min-width:25px}.sched-pro .sp-command .sp-searchbox{flex-shrink:0;flex-basis:226px}.sched-pro .sp-command .sp-searchbox>input{font-size:var(--ds-text-caps)}.sched-pro .sp-command>.sp-ghost,.sched-pro .sp-command .sp-legend>summary{padding-left:6px;padding-right:6px}}
/* Loading another day: a floating status, so the board does not jump down and back. */
.sched-pro .sp-date-notice.sp-date-loading{position:absolute;top:60px;left:50%;transform:translateX(-50%);z-index:20;border-radius:var(--ds-r-full);box-shadow:var(--ds-e-pop);padding:var(--ds-s-1) var(--ds-s-4);white-space:nowrap}
/* Owner 2026-10-29: fixed two-line rows so 8-9 technicians fit; long text shortens with an ellipsis inside the block (hover shows it all). */
.sched-pro .sp-b2 .sp-face{overflow:hidden}
.sched-pro .sp-b2 .sp-b-line{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:calc(14px * var(--sp-k))}
.sched-pro .sp-b2 .sp-b-line.sp-b-t1{display:flex;align-items:center;gap:5px}
.sched-pro .sp-b2 .sp-b-t1>*{flex:none}
.sched-pro .sp-b2 .sp-b-t1>.sp-b-site{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-track>.sp-block.sp-b2.sp-b-actline,.sched-pro .sp-track>.sp-block.sp-b2.sp-b-line1{padding:3px 4px!important}
.sched-pro .sp-b2.sp-b-actline .sp-b-time{font-weight:var(--ds-w-medium)}
.sched-pro .sp-b2.sp-b-tiny .sp-face{align-items:center;justify-content:center;height:100%}
.sched-pro .sp-track>.sp-block.sp-b2.sp-b-wide,.sched-pro .sp-track>.sp-block.sp-b2.sp-b-narrow{padding:4px 7px!important}
.sched-pro .sp-track>.sp-block.sp-b2.half{padding:1px 5px!important;display:flex;align-items:center}
.sched-pro .sp-track>.sp-block.sp-b2.half .sp-face{width:100%}
.sched-pro .sp-b2.sp-b-tiny .sp-face{flex-direction:column;gap:1px}
.sched-pro .sp-b2.sp-b-tiny .sp-b-time{font-size:var(--sp-fs-sm);line-height:calc(14px * var(--sp-k));font-weight:var(--ds-w-medium)}
.sched-pro .sp-track>.sp-block.sp-b2:not(:hover):not(:focus-visible){overflow:hidden}
/* Technician photo column (owner 2026-10-29): a narrow frozen column; each photo fills its row. Initials on navy when there is no photo. */
.sched-pro .sp-lane.sp-lane-b{display:grid;grid-template-columns:var(--sp-photo-w,64px) minmax(0,1fr);grid-template-rows:auto 1fr}
.sched-pro .sp-lane.sp-lane-b>.sp-band,.sched-pro .sp-lane.sp-lane-b>.sp-track{grid-column:2}
.sched-pro .sp-lane.sp-lane-b>.sp-photo{grid-column:1;grid-row:1 / span 2;position:sticky;left:0;z-index:8;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;min-width:0;background:var(--ds-board-band);box-shadow:inset -1px 0 0 var(--ds-board-band-line)}
.sched-pro .sp-band-in{left:var(--sp-photo-w,64px)}
.sched-pro .sp-ruler>.sp-ruler-head{position:sticky;left:0;z-index:11;background:var(--ds-surface);box-shadow:inset -1px 0 0 var(--ds-board-band-line)}
.sched-pro .sp-photo>.sp-av{position:relative;width:calc(var(--sp-photo-w,64px) - 14px);height:calc(var(--sp-photo-w,64px) - 14px);flex:none;aspect-ratio:1;border-radius:var(--ds-r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--ds-brand-ink);color:var(--ds-action-fg);font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);letter-spacing:0;box-shadow:0 0 0 2px var(--ds-surface),0 0 0 3px var(--ds-board-band-line);cursor:default}
.sched-pro .sp-photo>.sp-av>img{width:100%;height:100%;object-fit:cover;display:block;border-radius:var(--ds-r-full)}
.sched-pro .sp-photo>.sp-av:hover::after{content:attr(data-name);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);z-index:20;padding:4px 10px;border-radius:var(--ds-r-sm);background:var(--ds-brand-ink);color:var(--ds-action-fg);font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);white-space:nowrap;box-shadow:var(--ds-e-pop);pointer-events:none}
.sched-pro .sp-lane-b:has(.sp-av:hover){position:relative;z-index:9}
.sched-pro .sp-b2 .sp-b-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:calc(14px * var(--sp-k))}
.sched-pro .sp-b2.sp-b-wide.half .sp-b-clamp{-webkit-line-clamp:1}
.sched-pro .sp-photo-name{max-width:calc(var(--sp-photo-w,64px) - 6px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ds-text-caps);line-height:13px;font-weight:var(--ds-w-semi);color:var(--ds-ink)}
/* Display panel steppers (owner 2026-10-29: clear text and row-size controls). */
.sp-display .sp-step{display:grid;grid-template-columns:1fr 32px 52px 32px;align-items:center;gap:6px;min-height:36px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink)}
.sp-display .sp-step>button{width:32px;height:32px;padding:0;border-radius:var(--ds-r-md);font-size:var(--ds-text-d2);line-height:1;font-weight:var(--ds-w-semi)}
.sp-display .sp-step>button:disabled{opacity:.4;cursor:default}
.sp-display .sp-step>output{text-align:center;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink);font-variant-numeric:tabular-nums}
/* Right-click menu, New job split button, activity form, undo bar (owner 2026-10-29). */
.sched-pro .sp-ctx{position:fixed;z-index:60;width:260px;max-height:calc(100vh - 16px);overflow:auto;padding:4px;background:var(--ds-surface);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);display:flex;flex-direction:column}
.sched-pro .sp-ctx>header{padding:6px 10px 4px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-pro .sp-ctx hr{border:0;border-top:1px solid var(--ds-line);margin:4px 0}
.sched-pro .sp-ctx .sp-ctx-item{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 10px;border:0;border-radius:var(--ds-r-md);background:transparent;box-shadow:none;color:var(--ds-ink);font-size:var(--ds-text-base);text-align:left;justify-content:flex-start}
.sched-pro .sp-ctx .sp-ctx-item:hover,.sched-pro .sp-ctx .sp-ctx-item:focus-visible{background:var(--ds-paper-hover);box-shadow:none}
.sched-pro .sp-ctx .sp-ctx-item>span{margin-left:auto;color:var(--ds-ink-3)}
.sched-pro .sp-ctx-list{max-height:300px;overflow:auto;border-top:1px solid var(--ds-line);border-bottom:1px solid var(--ds-line);margin:2px 0;padding:2px 0}
.sched-pro .sp-ctx .sp-ctx-status{min-height:28px;font-size:var(--ds-text-sm)}
.sched-pro .sp-ctx .sp-ctx-status>i{flex:none;width:10px;height:10px;border-radius:var(--ds-r-full);background:var(--sp-bg)}
.sched-pro .sp-ctx .sp-ctx-status>b{margin-left:auto;color:var(--ds-action)}
.sched-pro .sp-ctx-danger,.sched-pro .sp-ctx .sp-ctx-danger{color:var(--ds-st-late-ink)}
.sched-pro .sp-ctx-note{margin:6px 10px;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.sched-pro .sp-newsplit{position:relative;display:inline-flex;gap:1px}
.sched-pro .sp-newsplit>.sp-newcaret{padding:0 8px;min-width:0}
.sched-pro .sp-newmenu{position:absolute;right:0;top:calc(100% + 4px);z-index:60;min-width:170px;padding:4px;background:var(--ds-surface);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);display:flex;flex-direction:column}
.sched-pro .sp-newmenu>button{justify-content:flex-start;border:0;box-shadow:none;background:transparent;min-height:32px;padding:0 10px;color:var(--ds-ink);font-size:var(--ds-text-base)}
.sched-pro .sp-newmenu>button:hover{background:var(--ds-paper-hover);box-shadow:none}
.sched-pro .sp-actform{width:min(460px,calc(100vw - 32px))}
.sched-pro .sp-actform textarea{width:100%;resize:vertical}
.sched-pro .sp-actform footer{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.sched-pro .sp-actform footer>.sp-flex{flex:1}
.sched-pro .sp-undo-bar{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:12px;padding:8px 10px 8px 16px;border-radius:var(--ds-r-lg);background:var(--ds-brand-ink);color:var(--ds-action-fg);font-size:var(--ds-text-base);box-shadow:var(--ds-e-pop)}
.sched-pro .sp-undo-bar>button{background:transparent;color:var(--ds-action-fg);border:1px solid currentColor;box-shadow:none;min-height:28px}
.sched-pro .sp-actform textarea{font:inherit;font-size:var(--ds-text-base)}
.sched-pro .sp-ctx .sp-ctx-status.is-current{background:var(--ds-sel-bg);font-weight:var(--ds-w-semi)}
.sched-pro .sp-ctx .sp-ctx-item:disabled{color:var(--ds-ink-3);cursor:default;background:transparent}
.sched-pro .sp-actform>label,.sched-pro .sp-actform>.sp-form-row{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.sched-pro .sp-actform>.sp-form-row{flex-direction:row;gap:12px}
.sched-pro .sp-actform>.sp-form-row>label{display:flex;flex-direction:column;gap:6px;flex:1}
.sched-pro .sp-newsplit>.sp-newcaret{min-width:32px;padding:0 10px;font-size:var(--ds-text-md)}
/* Locked visit (owner 2026-10-29: lock / unlock from the right-click menu). */
.sched-pro .sp-block.is-locked::after{content:"";position:absolute;top:4px;right:4px;width:12px;height:12px;background:currentColor;color:var(--sp-ink);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 7V5a4 4 0 0 1 8 0v2h1v8H3V7zm2 0h4V5a2 2 0 0 0-4 0z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 7V5a4 4 0 0 1 8 0v2h1v8H3V7zm2 0h4V5a2 2 0 0 0-4 0z'/%3E%3C/svg%3E") center/contain no-repeat;pointer-events:none}
.sched-pro .sp-noteform textarea{font:inherit;font-size:var(--ds-text-base);width:100%;resize:vertical}
/* Drive times (owner 2026-10-30): label in the name strip, bracket over the drive along the top of the row. */
.sched-pro .sp-band{position:relative}
.sched-pro .sp-band>.sp-drive{position:absolute;top:3px;z-index:3;height:16px;display:inline-flex;align-items:center;gap:3px;padding:0 6px;border-radius:var(--ds-r-full);background:var(--ds-surface);color:var(--ds-ink);box-shadow:0 0 0 1px var(--ds-board-band-sep);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);line-height:1;white-space:nowrap;cursor:default}
.sched-pro .sp-band>.sp-drive.is-short{background:var(--ds-st-late);color:var(--ds-action-fg);box-shadow:none}
.sched-pro .sp-track>.sp-drive-tick{position:absolute;top:0;height:3px;z-index:6;background:var(--ds-ink-2);border-left:2px solid var(--ds-ink-2);border-right:2px solid var(--ds-ink-2);pointer-events:none}
.sched-pro .sp-track>.sp-drive-tick::before,.sched-pro .sp-track>.sp-drive-tick::after{content:"";position:absolute;top:0;width:2px;height:7px;background:inherit}
.sched-pro .sp-track>.sp-drive-tick::before{left:-2px}
.sched-pro .sp-track>.sp-drive-tick::after{right:-2px}
.sched-pro .sp-track>.sp-drive-tick.is-short{background:var(--ds-st-late);border-color:var(--ds-st-late)}
/* Site map in the job preview (owner 2026-10-30). */
.sp-preview .sp-sitemap{margin:8px 0 2px;border-radius:var(--ds-r-md);overflow:hidden;box-shadow:0 0 0 1px var(--ds-line);height:300px;background:var(--ds-canvas)}
.sp-preview .sp-sitemap .sp-sitemap-gl{width:100%;height:100%}
.sp-preview .sp-sitemap-link{display:inline-block;margin-bottom:6px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-action)}
.sp-preview .sp-homes>summary{cursor:pointer;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--ds-action);padding:4px 0}
/* Job preview redesign (owner 2026-10-30: "design the layout properly"): header with status, site, address; visit
   summary; Work as a job sheet per scope (Equipment / Findings / Work / Water shutdown, then Parts); Location; Contacts. */
.sp-preview.pv2>header{padding:12px 14px 12px 16px;align-items:flex-start}
.sp-preview.pv2 .pv-head{min-width:0;display:flex;flex-direction:column;gap:2px}
.sp-preview.pv2 .pv-kicker{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:var(--ds-track-sm);opacity:.92}
.sp-preview.pv2 .pv-kicker a{font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .pv-status::before{content:"·";margin-right:6px}
.sp-preview.pv2 .pv-tag{padding:1px 6px;border-radius:var(--ds-r-full);box-shadow:inset 0 0 0 1px currentColor;font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.sp-preview.pv2>header h2{margin:2px 0 0;font-size:var(--ds-text-md);line-height:20px;font-weight:var(--ds-w-semi);letter-spacing:0}
.sp-preview.pv2>header h2 a{text-decoration:none}
.sp-preview.pv2>header h2 a:hover{text-decoration:underline}
.sp-preview.pv2 .pv-addr,.sp-preview.pv2>header .sp-customer{margin:0;font-size:var(--ds-text-sm);line-height:16px;opacity:.92}
.sp-preview.pv2 .sp-preview-body{display:flex;flex-direction:column;gap:14px;padding:14px 16px 16px}
.sp-preview.pv2 .sp-preview-body>*{margin:0}
.sp-preview.pv2 .pv-visit{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:var(--ds-r-md);background:var(--ds-canvas)}
.sp-preview.pv2 .pv-visit-main{display:flex;align-items:center;gap:10px}
.sp-preview.pv2 .pv-visit-main>.sp-av{flex:none;width:34px;height:34px;border-radius:var(--ds-r-full);overflow:hidden;display:inline-flex;align-items:center;justify-content:center;background:var(--ds-brand-ink);color:var(--ds-action-fg);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .pv-visit-main>.sp-av>img{width:100%;height:100%;object-fit:cover}
.sp-preview.pv2 .pv-visit-main>div{display:flex;flex-direction:column;min-width:0}
.sp-preview.pv2 .pv-visit-main strong{font-size:var(--ds-text-md);line-height:20px;color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .pv-visit-main span{font-size:var(--ds-text-sm);color:var(--ds-ink-2)}
.sp-preview.pv2 .pv-visit .sp-onsite{margin:0;font-size:var(--ds-text-sm)}
.sp-preview.pv2 .pv-sec{display:flex;flex-direction:column;gap:8px}
.sp-preview.pv2 .pv-sec-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--ds-line)}
.sp-preview.pv2 .pv-sec-h>h3{margin:0;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-ink-3)}
.sp-preview.pv2 .sp-preview-meta{display:flex;gap:6px}
.sp-preview.pv2 .sp-preview-meta>span{padding:1px 7px;border-radius:var(--ds-r-full);background:var(--ds-canvas);font-size:var(--ds-text-caps);color:var(--ds-ink-2)}
.sp-preview.pv2 .sp-preview-meta>span.is-warn{background:var(--ds-st-late);color:var(--ds-action-fg)}
.sp-preview.pv2 .pv-title{margin:0;font-size:var(--ds-text-base);font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-preview.pv2 .sp-scopes{display:flex;flex-direction:column;gap:10px;margin:0}
.sp-preview.pv2 .pv-scope{border:1px solid var(--ds-line);border-radius:var(--ds-r-md);overflow:hidden;background:var(--ds-surface)}
.sp-preview.pv2 .pv-scope>header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:9px 12px;background:var(--ds-canvas);border-bottom:1px solid var(--ds-line)}
.sp-preview.pv2 .pv-scope>header>h4{margin:0;font-size:var(--ds-text-base);line-height:18px;font-weight:var(--ds-w-semi);color:var(--ds-ink)}
.sp-preview.pv2 .pv-scope>header>span{flex:none;font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-spec{margin:0;padding:8px 12px 2px;display:flex;flex-direction:column}
.sp-preview.pv2 .pv-row{display:grid;grid-template-columns:78px minmax(0,1fr);gap:10px;padding:5px 0}
.sp-preview.pv2 .pv-row>dt{font-size:var(--ds-text-caps);line-height:18px;font-weight:var(--ds-w-semi);text-transform:uppercase;letter-spacing:.05em;color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-row>dd{margin:0;font-size:var(--ds-text-sm);line-height:18px;color:var(--ds-ink)}
.sp-preview.pv2 .pv-row>dd b{font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .pv-row>dd p{margin:0 0 2px}
.sp-preview.pv2 .pv-row>dd ol{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px}
.sp-preview.pv2 .pv-dot{margin:0 6px;color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-plain{margin:0;padding:8px 12px;font-size:var(--ds-text-sm);line-height:18px;color:var(--ds-ink-2)}
.sp-preview.pv2 .pv-parts{padding:6px 12px 10px;border-top:1px solid var(--ds-line)}
.sp-preview.pv2 .pv-parts-h{display:flex;align-items:center;gap:6px;padding:2px 0 4px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);text-transform:uppercase;letter-spacing:.05em;color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-parts-h>span{padding:0 6px;border-radius:var(--ds-r-full);background:var(--ds-canvas);color:var(--ds-ink-2);letter-spacing:0}
.sp-preview.pv2 .pv-parts>ul{list-style:none;margin:0;padding:0}
.sp-preview.pv2 .pv-parts li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px;padding:4px 0;border-top:1px solid var(--ds-line);font-size:var(--ds-text-sm);line-height:17px;color:var(--ds-ink)}
.sp-preview.pv2 .pv-parts li:first-child{border-top:0}
.sp-preview.pv2 .pv-qty{text-align:right;font-weight:var(--ds-w-semi);font-variant-numeric:tabular-nums}
.sp-preview.pv2 .pv-qty::after{content:"×";margin-left:1px;color:var(--ds-ink-3);font-weight:var(--ds-w-regular)}
.sp-preview.pv2 .pv-part small{display:block;font-size:var(--ds-text-caps);line-height:14px;color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-none{margin:0;font-size:var(--ds-text-sm);color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-access{display:flex;flex-direction:column;gap:2px;font-size:var(--ds-text-sm)}
.sp-preview.pv2 .pv-access p{margin:0}
.sp-preview.pv2 .pv-contact{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:var(--ds-text-sm);color:var(--ds-ink)}
.sp-preview.pv2 .pv-contact>b{font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .pv-contact>a{color:var(--ds-action)}
.sp-preview.pv2 .sp-sitemap{margin:0}
.sp-preview.pv2 .sp-worknotes{margin:0}
.sp-preview.pv2 .sp-preview-body>section>h3,.sp-preview.pv2 .sp-worknotes>h3{margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-ink-3)}
/* review fixes */
.sp-preview.pv2 .pv-scope>header{align-items:center}
.sp-preview.pv2 .pv-scope>header>h4{flex:1;min-width:0}
.sp-preview.pv2 .pv-scope>header>.pv-shut{flex:none;padding:0;border-radius:0;background:transparent;color:var(--ds-ink-3);font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);white-space:nowrap;border:0}
.sp-preview.pv2 .pv-kicker{font-size:var(--ds-text-sm)}
.sp-preview.pv2 .pv-kicker>a{text-decoration:none}
.sp-preview.pv2 .pv-kicker>a:hover{text-decoration:underline}
.sp-preview.pv2 .pv-visit .sp-onsite{background:transparent!important;padding:0!important;color:var(--ds-ok-ink)}
.sp-preview.pv2 .sp-preview-meta>span{background:transparent;padding:0;font-weight:var(--ds-w-semi)}
.sp-preview.pv2 .sp-preview-meta>span.is-warn{background:var(--ds-st-late);padding:1px 7px;color:var(--ds-action-fg)}
.sp-preview.pv2 .pv-parts-h>span{background:transparent;padding:0;color:var(--ds-ink-3)}
.sp-preview.pv2 .pv-parts li{grid-template-columns:26px minmax(0,1fr)}
.sp-preview.pv2 .pv-sec{gap:10px}
.sp-preview.pv2 .sp-preview-body{gap:18px}

/* Extension controls share the command bar's compact text treatment. */
.sched-pro .sp-command .sp-date>.sp-date-title{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);margin:0 2px 0 6px;padding:0;white-space:nowrap}
.sched-pro .sp-view-switch{display:inline-flex;align-items:center;margin:0 3px;border-radius:var(--ds-r-md);background:var(--ds-tint)}
.sched-pro .sp-command .sp-view-switch>button{height:var(--ds-control-h);padding:0 6px;border:0;box-shadow:none;background:transparent;color:var(--ds-ink-2);font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);border-radius:var(--ds-r-sm);white-space:nowrap}
.sched-pro .sp-command .sp-view-switch>button[aria-pressed="true"]{background:var(--ds-surface);box-shadow:inset 0 0 0 1px var(--ds-line);color:var(--ds-ink)}
.sched-pro .sp-command .sp-searchbox{flex:0 0 256px;width:256px;min-width:256px;box-sizing:border-box}
.sched-pro .sp-extension-view{flex:1;min-width:0;overflow:auto}
.sched-pro .sp-extension-target{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
@media(max-width:1699px){
  .sched-pro .sp-command .sp-date>.sp-date-title{font-size:var(--ds-text-p-body);line-height:var(--ds-lh-md);margin-left:4px}
  .sched-pro .sp-command .sp-date>button[data-sched-nav="prev"],.sched-pro .sp-command .sp-date>button[data-sched-nav="next"]{width:24px}
  .sched-pro .sp-command .sp-date>button[data-sched-nav="today"]{padding:0 5px}
  .sched-pro .sp-weekstrip{margin-left:3px}
  .sched-pro .sp-weekstrip>button{width:18px}
  .sched-pro .sp-weekstrip .sp-days>button{width:25px;min-width:25px}
}

/* Toast with an action (e.g. Unlock on a locked visit): clickable, a white text button on the navy pill. */
.sched-toast.has-action.show{pointer-events:auto}
.sched-toast .sched-toast-action{margin-left:10px;padding:3px 12px;border:1px solid color-mix(in srgb,var(--ds-action-fg) 60%,transparent);border-radius:999px;background:transparent;color:var(--ds-action-fg);font:inherit;font-weight:600;cursor:pointer}
.sched-toast .sched-toast-action:hover{background:color-mix(in srgb,var(--ds-action-fg) 12%,transparent)}
.sched-toast .sched-toast-action:focus-visible{outline:2px solid var(--ds-action-fg);outline-offset:2px}

/* Optional activity notes and the two-week date rail. */
.sched-pro .sp-activity-note{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--sp-fs-caps)}
.sched-pro .sp-weekstrip .sp-days>button.today{position:relative}
.sched-pro .sp-today-dot{position:absolute;top:1px;right:2px;width:4px;height:4px;border-radius:50%;background:var(--ds-action)}
.sched-pro .sp-qstatus-button{font-size:var(--ds-text-caps);padding:2px 6px;margin-top:4px}
.sched-pro .sp-preview [data-sched-activity-note-field]{display:block;width:100%;box-sizing:border-box;min-height:90px;margin:6px 0}

.sched-pro .sp-b2.has-activity-note .sp-b-t1>.sp-b-site{flex:0 1 auto;max-width:50%}
.sched-pro .sp-b2.has-activity-note .sp-b-t1>.sp-activity-note{flex:1 1 0}
