/* Quick add bottom sheet (2026-09-18). Sits under the board so the schedule stays visible. */
:root{--qa-sheet:326px;--qa-acc:var(--ds-ink);--qa-ink:var(--ds-ink);--qa-muted:var(--ds-ink-2);--qa-line:var(--ds-field)}
body.qa-open .maintenance-planner{height:calc(100dvh - 59px - var(--qa-sheet));max-height:calc(100dvh - 59px - var(--qa-sheet))}
body.qa-open .sp-map-handle{display:none}
.qa-sheet{position:fixed;left:0;right:0;bottom:0;height:var(--qa-sheet);z-index:60;background:var(--ds-surface);border-top:1px solid var(--ds-line);box-shadow:var(--ds-e-pop);display:flex;flex-direction:column;color:var(--qa-ink);font:var(--ds-text-sm)/1.35 var(--ds-font)}
.qa-sheet[hidden]{display:none}
.qa-sheet *{box-sizing:border-box}
.qa-sheet button,.qa-sheet input,.qa-sheet select,.qa-sheet textarea{font:inherit;color:inherit}
.qa-sheet button{cursor:pointer}
.qa-tabs{position:absolute;top:-30px;left:50%;transform:translateX(-50%);display:flex;gap:6px}
.qa-tabs>button{border:1px solid var(--ds-field);border-bottom:0;border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0;padding:6px 14px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);background:var(--ds-canvas);color:var(--qa-muted)}
.qa-tabs>button.on{background:var(--ds-surface);color:var(--qa-acc);box-shadow:var(--ds-e-pop)}
.qa-tabs>.qa-close{padding:6px 10px;font-size:var(--ds-text-md);line-height:1}
.qa-body{flex:1;display:grid;grid-template-columns:300px 1.4fr 1fr .95fr;gap:16px;padding:10px 20px 6px;min-height:0}
.qa-col{display:flex;flex-direction:column;gap:6px;min-width:0;min-height:0;overflow:hidden}
.qa-col-site>[data-qa-site]{display:flex;flex:1;flex-direction:column;min-height:0}
.qa-colhead{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.4px;text-transform:uppercase;color:var(--qa-muted);display:flex;align-items:center;gap:8px}
.qa-colhead .qa-hint{text-transform:none;letter-spacing:0;font-weight:var(--ds-w-medium)}
.qa-links{margin-left:auto;display:flex;gap:10px;text-transform:none;letter-spacing:0}
.qa-links>button,.qa-link{border:0;background:transparent;color:var(--qa-acc);padding:0;font-weight:var(--ds-w-semi);font-size:var(--ds-text-sm)}
.qa-hint{font-size:var(--ds-text-caps);font-weight:var(--ds-w-medium);color:var(--ds-ink-3)}
.qa-muted{color:var(--qa-muted)}
.qa-sheet label{display:block;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--qa-muted);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qa-sheet input:not([type=date]),.qa-sheet select,.qa-sheet input[type=date]{height:30px;width:100%;border:1px solid var(--qa-line);border-radius:var(--ds-r-lg);padding:0 10px;background:var(--ds-surface);font-size:var(--ds-text-base)}
.qa-sheet select{appearance:none;padding-right:22px;background:var(--ds-surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%235f6f84' stroke-width='1.5'/></svg>") no-repeat right 9px center}
.qa-sheet input:focus,.qa-sheet select:focus,.qa-sheet textarea:focus{outline:2px solid var(--ds-focus);outline-offset:0;border-color:var(--qa-acc)}
.qa-grid2{display:grid;grid-template-columns:1.25fr 1fr;gap:8px}
.qa-search input{height:34px}
.qa-site-results{display:flex;flex:1;flex-direction:column;gap:2px;min-height:0;overflow:auto;max-height:190px}
.qa-site-results>button{text-align:left;border:0;background:transparent;border-radius:var(--ds-r-lg);padding:var(--ds-s-1) var(--ds-s-2);display:flex;flex-direction:column;gap:1px}
.qa-site-results>button:hover{background:var(--ds-paper-hover)}
.qa-site-results>button>span{font-size:var(--ds-text-caps);line-height:var(--ds-lh-sm);color:var(--qa-muted)}
.qa-sitecard{display:flex;align-items:center;gap:10px;padding:5px 10px;border:1px solid var(--qa-line);border-radius:var(--ds-r-lg)}
.qa-sitecard-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.qa-sitecard-text strong{font-size:var(--ds-text-base)}
.qa-sitecard-text small{font-size:var(--ds-text-caps);color:var(--qa-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qa-avatar{width:30px;height:30px;border-radius:50%;background:var(--ds-action);color:var(--ds-action-fg);font-weight:var(--ds-w-semi);font-size:var(--ds-text-sm);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.qa-avatar.sm{width:22px;height:22px;font-size:var(--ds-text-caps);background:var(--ds-st-done)}
.qa-notice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;align-items:baseline;padding:4px 8px;white-space:nowrap;background:var(--ds-tint);border-radius:var(--ds-r-lg);font-size:var(--ds-text-sm);color:var(--ds-st-route-ink);flex-shrink:0}
.qa-notice>span{overflow:hidden;text-overflow:ellipsis;min-width:0}.qa-notice>strong{white-space:nowrap}.qa-notice>button{flex-shrink:0;border:0;background:transparent;color:var(--qa-acc);font-weight:var(--ds-w-semi);padding:0;font-size:var(--ds-text-sm)}
.qa-warn{font-size:var(--ds-text-sm);color:var(--ds-st-late-ink)}
.qa-where-what{display:grid;grid-template-columns:150px 1fr;gap:8px}
.qa-combo{position:relative}
.qa-combo input{padding-right:24px}
.qa-caret{position:absolute;right:9px;top:9px;font-size:var(--ds-text-caps);color:var(--qa-muted);pointer-events:none}
.qa-menu{position:absolute;top:34px;left:0;width:480px;max-width:calc(100vw - 48px);background:var(--ds-surface);border:1px solid var(--qa-line);border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop);z-index:70;padding:6px;display:flex;flex-direction:column;gap:1px;font-size:var(--ds-text-sm);max-height:230px;overflow:auto}
.qa-menu[hidden]{display:none}
.qa-menu-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--ds-r-md);border:0;background:transparent;text-align:left;white-space:nowrap;overflow:hidden}
.qa-menu-row>span{overflow:hidden;text-overflow:ellipsis}
.qa-menu-row:hover,.qa-menu-row.on{background:var(--ds-sel-bg);color:var(--qa-acc)}
.qa-menu-row.on .qa-menu-key{font-weight:var(--ds-w-semi)}
.qa-menu-key{min-width:74px;font-weight:var(--ds-w-semi);color:var(--qa-ink)}
.qa-menu-row[data-qa-where-typed] .qa-menu-key{font-weight:var(--ds-w-medium);color:var(--qa-muted)}
.qa-menu-more{color:var(--qa-acc);font-weight:var(--ds-w-semi)}
.qa-menu-head{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--qa-muted);padding:6px 8px 3px;border-top:1px solid var(--ds-hair);margin-top:2px}
.qa-menu-wrap{display:flex;flex-wrap:wrap;gap:4px;padding:2px 6px 4px}
.qa-chip{border:1px solid var(--qa-line);background:var(--ds-surface);border-radius:var(--ds-r-full);padding:3px 9px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi)}
.qa-chip:hover{background:var(--ds-paper-hover);border-color:var(--ds-line)}
.qa-calls{border:1px solid var(--qa-line);border-radius:var(--ds-r-lg);padding:4px 6px;display:flex;flex-direction:column;gap:1px;font-size:var(--ds-text-sm);min-height:0;flex:1}
.qa-calls-head{display:flex;align-items:center;padding:0 6px 1px;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--qa-muted)}
.qa-calls-head>button{margin-left:auto;font-size:var(--ds-text-caps)}
.qa-calls-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 6px;overflow:auto;min-height:0;flex:1;align-content:start}
.qa-calls-grid>button{text-align:left;border:0;background:transparent;border-radius:var(--ds-r-md);padding:1px 6px;line-height:17px;display:flex;gap:6px;align-items:baseline;white-space:nowrap;overflow:hidden;font-size:var(--ds-text-sm)}
.qa-calls-grid>button>span{overflow:hidden;text-overflow:ellipsis}
.qa-calls-grid>button>small{font-size:var(--ds-text-caps);color:var(--ds-ink-3)}
.qa-calls-grid>button:hover{background:var(--ds-paper-hover)}
.qa-calls-grid>button.on{background:var(--ds-sel-bg);color:var(--qa-acc);font-weight:var(--ds-w-semi)}
.qa-variants{display:flex;align-items:center;gap:6px;padding:2px 6px 0;flex-shrink:0;border-top:1px solid var(--ds-hair);margin-top:2px;font-size:var(--ds-text-caps);color:var(--qa-muted);white-space:nowrap;overflow:hidden}
.qa-variants>button{font-size:var(--ds-text-caps);font-weight:var(--ds-w-medium)}
.qa-ccrow{display:grid;grid-template-columns:1.4fr 1fr .7fr;gap:8px}
.qa-ccrow input{text-align:center}
.qa-col-notes textarea{flex:1;min-height:0;width:100%;border:1px solid var(--qa-line);border-radius:var(--ds-r-lg);padding:8px 10px;resize:none;background:var(--ds-surface);font-size:var(--ds-text-sm);line-height:1.45}
.qa-placements{display:flex;flex-wrap:wrap;gap:6px}
.qa-placement{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--qa-acc);background:var(--ds-canvas);border-radius:var(--ds-r-full);padding:3px 6px 3px 10px;font-size:var(--ds-text-sm);color:var(--qa-acc)}
.qa-placement>button{border:0;background:transparent;font-size:var(--ds-text-md);line-height:1;padding:0 2px;color:var(--qa-muted)}
.qa-open-list{display:flex;flex-direction:column;gap:5px}
.qa-open-list>button{text-align:left;border:1px solid var(--qa-line);background:var(--ds-surface);border-radius:var(--ds-r-lg);padding:5px 9px;display:flex;gap:9px;align-items:center;white-space:nowrap;overflow:hidden}
.qa-open-list>button:hover{background:var(--ds-paper-hover)}
.qa-open-list>button.on{border:1.5px solid var(--qa-acc);background:var(--ds-sel-bg)}
.qa-open-main{font-size:var(--ds-text-sm)}
.qa-open-list>button>.qa-muted{margin-left:auto;font-size:var(--ds-text-caps);overflow:hidden;text-overflow:ellipsis}
.qa-foot{padding:7px 20px 8px;border-top:1px solid var(--qa-line);display:flex;align-items:center;gap:12px;background:var(--ds-canvas);min-height:52px}
.qa-seg{display:inline-flex;border:1px solid var(--qa-line);border-radius:var(--ds-r-lg);overflow:hidden;font-size:var(--ds-text-sm);flex-shrink:0}
.qa-seg>button{border:0;background:var(--ds-surface);padding:5px 10px;color:var(--qa-muted)}
.qa-seg>button.on{background:var(--ds-sel-bg);color:var(--qa-acc);font-weight:var(--ds-w-semi)}
.qa-summary{font-size:var(--ds-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.qa-spacer{flex:1}
.qa-btn{border:1px solid var(--qa-line);background:var(--ds-surface);border-radius:var(--ds-r-lg);padding:7px 12px;font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);color:var(--qa-acc);white-space:nowrap}
.qa-btn.primary{background:var(--qa-acc);border-color:var(--qa-acc);color:var(--ds-action-fg)}
.qa-btn[disabled]{opacity:.45;cursor:default}
.qa-done{font-size:var(--ds-text-base)}
/* Board hooks: dashed preview block and lane-pick cursor. */
.sp-block.sp-ghost{background:var(--ds-canvas)!important;border:2px dashed var(--qa-acc)!important;color:var(--qa-acc)!important;cursor:default!important;pointer-events:none;z-index:3}
.sched-pro.sp-gap-pick .sp-track{cursor:crosshair;background-image:linear-gradient(var(--ds-line),var(--ds-line))}
@media(max-width:1180px){.qa-body{grid-template-columns:280px 1fr 1fr;gap:14px}.qa-col-notes{display:none}}
.qa-what{min-width:0}
.qa-col-work{overflow:visible}
/* Toolbar entry points (2026-09-18): the bottom handles can be clipped on short boards, so Map and New job also live in the command bar. */
.sp-command .sp-toolbar-map,.sp-command .sp-toolbar-new{border:1px solid var(--ds-field);border-radius:var(--ds-r-md);padding:5px 10px;background:var(--ds-surface);color:var(--ds-ink);font-weight:var(--ds-w-semi);white-space:nowrap;cursor:pointer}
.sp-command .sp-toolbar-new{background:var(--ds-action);border-color:var(--ds-ink);color:var(--ds-action-fg)}
.sp-command .sp-toolbar-new:hover{background:var(--ds-action-hover);border-color:var(--ds-action)}

/* Explicit live Simpro site search (new sites the local list has not synced yet). */
.qa-linkbtn{background:none;border:0;padding:6px 2px;color:var(--ds-ink);font:inherit;font-size:var(--ds-text-base);text-decoration:underline;cursor:pointer;text-align:left}
.qa-live-tag{font-style:normal;font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);color:var(--ds-ink);background:var(--ds-canvas);border-radius:var(--ds-r-sm);padding:1px 5px;margin-left:4px}

/* New site form inside the Site column. */
.qa-newsite{display:grid;gap:5px}
.qa-newsite label{font-size:var(--ds-text-caps);font-weight:var(--ds-w-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--ds-ink-3);margin-top:4px}
.qa-newsite input{font:inherit;font-size:var(--ds-text-base);padding:5px 7px;border:1px solid var(--ds-field);border-radius:var(--ds-r-md);min-width:0;width:100%;box-sizing:border-box}
.qa-ns-row{display:flex;gap:5px}
.qa-ns-head{display:flex;justify-content:space-between;align-items:center}
.qa-ns-picked{font-size:var(--ds-text-base)}

/* ── Navy system, Phase 3 (2026-09-24): quick add sheet + toolbar entry points ──
   Fields 32px with a 1px field line and the shared focus ring (§6.11); buttons per D17;
   "Map" and "New job" in the command bar are secondary, so the page keeps one primary. */
.sp-command .sp-toolbar-map,.sp-command .sp-toolbar-new{border:0;box-shadow:var(--ds-e-secondary);background:var(--ds-surface);color:var(--ds-ink);font-weight:var(--ds-w-medium)}
.sp-command .sp-toolbar-new:hover,.sp-command .sp-toolbar-map:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.qa-sheet{font:var(--ds-text-base)/var(--ds-lh-base) var(--ds-font);color:var(--ds-ink);box-shadow:var(--ds-e-bar);border-top:0}
.qa-tabs>button{border:0;box-shadow:inset 1px 0 0 var(--ds-line),inset -1px 0 0 var(--ds-line),inset 0 1px 0 var(--ds-line);background:var(--ds-canvas);color:var(--ds-ink-2);font-weight:var(--ds-w-medium)}
.qa-tabs>button.on{background:var(--ds-surface);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.qa-colhead{font-size:var(--ds-text-sm);font-weight:var(--ds-w-semi);letter-spacing:0;text-transform:none;color:var(--ds-ink)}
.qa-sheet label,.qa-newsite label{font-size:var(--ds-text-sm);font-weight:var(--ds-w-medium);color:var(--ds-ink-2);letter-spacing:0;text-transform:none}
.qa-sheet input:not([type=date]),.qa-sheet select,.qa-sheet input[type=date],.qa-newsite input{height:var(--ds-control-h);border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md);font-size:var(--ds-text-base);color:var(--ds-ink)}
.qa-col-notes textarea,.qa-calls,.qa-sitecard,.qa-open-list>button{border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md)}
.qa-sheet input:focus,.qa-sheet select:focus,.qa-sheet textarea:focus{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off);box-shadow:inset 0 0 0 1px var(--ds-line)}
.qa-sheet input::placeholder,.qa-sheet textarea::placeholder{color:var(--ds-ink-3)}
.qa-menu{border:0;border-radius:var(--ds-r-lg);box-shadow:var(--ds-e-pop)}
.qa-menu-row:hover,.qa-menu-row.on,.qa-calls-grid>button.on{background:var(--ds-sel-bg);color:var(--ds-ink)}
.qa-open-list>button.on{border:0;box-shadow:inset 3px 0 0 var(--ds-selection),inset 0 0 0 1px var(--ds-field);background:var(--ds-sel-bg)}
.qa-placement{border:0;box-shadow:inset 0 0 0 1px var(--ds-field);background:var(--ds-surface);color:var(--ds-ink);border-radius:var(--ds-r-sm)}
.qa-notice{background:var(--ds-tint);color:var(--ds-ink-2);border-radius:var(--ds-r-md)}
.qa-foot{border-top:0;box-shadow:var(--ds-e-bar);background:var(--ds-canvas);min-height:64px}
.qa-seg{border:0;box-shadow:inset 0 0 0 1px var(--ds-field);border-radius:var(--ds-r-md)}
.qa-seg>button{color:var(--ds-ink-2);font-weight:var(--ds-w-medium)}
.qa-seg>button.on{background:var(--ds-sel-bg);color:var(--ds-ink);font-weight:var(--ds-w-semi)}
.qa-btn{height:var(--ds-control-h);padding:0 var(--ds-s-3);border:0;box-shadow:var(--ds-e-secondary);border-radius:var(--ds-r-md);font-size:var(--ds-text-base);font-weight:var(--ds-w-medium);color:var(--ds-ink);background:var(--ds-surface)}
.qa-btn:hover{background:var(--ds-paper-hover);box-shadow:inset 0 0 0 1px var(--ds-ink-3)}
.qa-btn.primary{height:var(--ds-primary-h);padding:0 var(--ds-s-5);background:var(--ds-action);color:var(--ds-action-fg);box-shadow:var(--ds-e-primary);font-weight:var(--ds-w-semi)}
.qa-btn.primary:hover{background:var(--ds-action-hover);box-shadow:var(--ds-e-primary)}
.qa-btn[disabled]{opacity:1;cursor:not-allowed;background:var(--ds-disabled-bg);color:var(--ds-disabled-fg);box-shadow:inset 0 0 0 1px var(--ds-disabled-bd)}
.qa-btn.primary[disabled]{background:var(--ds-disabled-primary-bg);color:var(--ds-disabled-primary-fg);box-shadow:none}
.qa-sheet button:focus-visible{outline:var(--ds-focus-w) solid var(--ds-focus);outline-offset:var(--ds-focus-off)}
.qa-avatar{background:var(--ds-av-1);color:var(--ds-ink-2)}
.qa-avatar.sm{background:var(--ds-av-2);color:var(--ds-ink-2)}
.qa-live-tag{background:var(--ds-tint);color:var(--ds-ink-2)}
.sp-block.sp-ghost{background:var(--ds-surface)!important;border:1px dashed var(--ds-selection)!important;color:var(--ds-ink)!important}

/* Site results (live audit r2, 2026-09-29): one line per site so six fit in the fixed Site column at 1440x900;
   the Simpro links and status sit in their own footer under the scroll box and never cover a row;
   the test-session flag is one line in the column heading, not in the results space. */
.qa-site-results>button{flex:0 0 auto;flex-direction:row;align-items:baseline;gap:var(--ds-s-2);padding:var(--ds-s-1) var(--ds-s-2);line-height:var(--ds-lh-sm);white-space:nowrap;overflow:hidden;min-width:0}
.qa-site-results>button>strong{flex:0 1 auto;max-width:62%;overflow:hidden;text-overflow:ellipsis}
.qa-site-results>button>span{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis}
.qa-site-results>button>.qa-live-tag{flex-shrink:0;margin-left:0}
.qa-site-foot{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--ds-s-2);padding-top:var(--ds-s-1);box-shadow:inset 0 1px 0 var(--ds-hair)}
.qa-site-foot:empty{display:none}
.qa-site-foot>.qa-linkbtn,.qa-site-foot .qa-linkbtn{padding:var(--ds-s-1) 2px;line-height:var(--ds-lh-sm)}
.qa-site-foot>.qa-muted,.qa-site-foot>.qa-warn{font-size:var(--ds-text-sm);line-height:var(--ds-lh-sm);padding:var(--ds-s-1) 0}
.qa-colhead>.qa-test-flag{margin-left:auto;font-weight:var(--ds-w-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.qa-colhead>.qa-test-flag[hidden]{display:none}
