/* LUMI-KB: Troubleshoot sheet (tech.html and the dispatcher console). Tokens from CLAUDE.md. Big tap targets, high contrast for sunlight. */
.ts-sheet{
  --ts-green:#71a62b;--ts-green-deep:#47651e;--ts-green-100:#edf4e3;--ts-ink:#2b2b2b;--ts-muted:#5f605b;--ts-line:rgba(0,0,0,.14);
  --ts-surface:#fff;--ts-canvas:#f2f1ec;--ts-danger:#a13b34;--ts-danger-soft:#faefed;--ts-warn:#f49c20;--ts-warn-soft:#fff6e0;--ts-warn-ink:#8a5b12;
  position:fixed;inset:0;z-index:9000;display:flex;flex-direction:column;background:var(--ts-canvas);color:var(--ts-ink);
  font-family:Montserrat,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.4;
  padding-bottom:env(safe-area-inset-bottom);
}
:root[data-theme="dark"] .ts-sheet{
  --ts-green:#8bc342;--ts-green-deep:#a7d76a;--ts-green-100:#26331a;--ts-ink:#f1f1ec;--ts-muted:#b4b5ae;--ts-line:rgba(255,255,255,.18);
  --ts-surface:#1d2018;--ts-canvas:#14170f;--ts-danger:#ff8b82;--ts-danger-soft:#3a1f1d;--ts-warn:#f49c20;--ts-warn-soft:#3a2d12;--ts-warn-ink:#f6c36a;
}
.ts-sheet *{box-sizing:border-box}
.ts-top{display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:var(--ts-surface);border-bottom:1px solid var(--ts-line)}
.ts-top h2{flex:1;margin:0;font-size:18px;font-weight:700}
.ts-close{min-height:48px;min-width:48px;border:1px solid var(--ts-line);border-radius:12px;background:var(--ts-surface);color:var(--ts-ink);font:600 15px Montserrat,system-ui,sans-serif;padding:0 14px;cursor:pointer}
.ts-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 14px 32px}
.ts-search{display:flex;gap:8px;margin-bottom:10px}
.ts-search input{flex:1;min-width:0;min-height:52px;border:2px solid var(--ts-line);border-radius:12px;padding:0 14px;font:500 17px Montserrat,system-ui,sans-serif;background:var(--ts-surface);color:var(--ts-ink)}
.ts-search input:focus{outline:none;border-color:var(--ts-green)}
.ts-go{min-height:52px;padding:0 18px;border:0;border-radius:12px;background:var(--ts-green);color:#fff;font:700 16px Montserrat,system-ui,sans-serif;box-shadow:0 5px 14px -6px rgba(64,96,20,.7);cursor:pointer}
.ts-modes{display:flex;gap:4px;padding:4px;background:#f0f0ed;border-radius:12px;margin-bottom:10px}
:root[data-theme="dark"] .ts-modes{background:#0e100b}
.ts-modes button{flex:1;min-height:46px;border:0;border-radius:9px;background:transparent;color:var(--ts-ink);font:600 15px Montserrat,system-ui,sans-serif;cursor:pointer}
.ts-modes button.on{background:var(--ts-green);color:#fff}
.ts-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;-webkit-overflow-scrolling:touch}
.ts-chip{flex:0 0 auto;min-height:44px;padding:0 14px;border:1px solid var(--ts-line);border-radius:22px;background:var(--ts-surface);color:var(--ts-ink);font:600 14px Montserrat,system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.ts-chip.on{background:var(--ts-green);border-color:var(--ts-green);color:#fff}
.ts-chip.job{border-color:var(--ts-green);box-shadow:inset 0 0 0 1px var(--ts-green)}
.ts-job{background:var(--ts-green-100);border-left:5px solid var(--ts-green);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:15px}
.ts-job b{display:block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ts-green-deep);margin-bottom:2px}
.ts-h{margin:16px 2px 8px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ts-muted)}
.ts-card{background:var(--ts-surface);border:1px solid var(--ts-line);border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.ts-card h3{margin:0 0 6px;font-size:17px;font-weight:700;line-height:1.3}
.ts-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;color:var(--ts-muted)}
.ts-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid transparent}
.ts-badge.official{background:#e3f1d2;color:#2f5a0c;border-color:#9ccb62}
.ts-badge.mixed{background:#fff1cc;color:#7a5200;border-color:#f0c25a}
.ts-badge.third-party{background:#e2ecf8;color:#1f4a7c;border-color:#9bbbe0}
.ts-badge.unverified{background:#eee;color:#555;border-color:#bbb}
:root[data-theme="dark"] .ts-badge.official{background:#26401a;color:#b8e58a;border-color:#4d7a2a}
:root[data-theme="dark"] .ts-badge.mixed{background:#42330f;color:#f6d589;border-color:#8a6a1e}
:root[data-theme="dark"] .ts-badge.third-party{background:#1b2c42;color:#a9ccf2;border-color:#3e648f}
:root[data-theme="dark"] .ts-badge.unverified{background:#2a2a2a;color:#cfcfcf;border-color:#555}
.ts-look{margin:0 0 8px;padding-left:18px;font-size:14px;color:var(--ts-muted)}
.ts-steps{margin:8px 0 0;padding:0;list-style:none;counter-reset:ts}
.ts-steps li{counter-increment:ts;position:relative;padding:10px 0 10px 40px;border-top:1px solid var(--ts-line)}
.ts-steps li:first-child{border-top:0}
.ts-steps li::before{content:counter(ts);position:absolute;left:0;top:10px;width:28px;height:28px;border-radius:50%;background:var(--ts-green);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center}
.ts-cause{font-weight:700}
.ts-fix{margin-top:4px;color:var(--ts-green-deep);font-weight:600}
.ts-tools{margin-top:2px;font-size:13px;color:var(--ts-muted)}
.ts-esc{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--ts-warn-soft);border-left:5px solid var(--ts-warn);color:var(--ts-warn-ink);font-size:15px}
.ts-safety{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--ts-danger-soft);border-left:5px solid var(--ts-danger);color:var(--ts-danger);font-weight:700;font-size:15px}
.ts-esc b,.ts-safety b{text-transform:uppercase;letter-spacing:.05em;font-size:12px;display:block}
.ts-src{margin-top:10px;font-size:13px;display:flex;flex-wrap:wrap;gap:6px 14px}
.ts-src a{color:#2f6a0c;text-decoration:underline;min-height:32px;display:inline-flex;align-items:center}
:root[data-theme="dark"] .ts-src a{color:#a7d76a}
.ts-row{border-top:1px solid var(--ts-line);padding:10px 0}
.ts-row:first-child{border-top:0}
.ts-row b{display:block}
.ts-empty{padding:26px 10px;text-align:center;color:var(--ts-muted)}
.ts-note{font-size:13px;color:var(--ts-muted);margin:6px 2px 12px}
.ts-status{font-size:12px;color:var(--ts-muted);text-align:center;margin-top:18px}
.ts-link{min-height:44px;border:1px solid var(--ts-line);background:var(--ts-surface);color:var(--ts-ink);border-radius:10px;padding:0 12px;font:600 14px Montserrat,system-ui,sans-serif;cursor:pointer;margin:4px 6px 4px 0}
.ts-index{list-style:none;margin:0;padding:0}
.ts-index li{border-top:1px solid var(--ts-line)}
.ts-index button{display:block;width:100%;text-align:left;min-height:48px;padding:10px 2px;border:0;background:none;color:var(--ts-ink);font:500 15px Montserrat,system-ui,sans-serif;cursor:pointer}
.ts-fld li{margin-bottom:6px}
.ts-bring{margin:6px 0 0;padding-left:20px}
.ts-bring li{margin-bottom:4px}
/* entry buttons placed by the hooks in tech.js / tech.html / app.js */
.ts-entry{min-height:44px}
/* LUMI-KB field note form and the completed-job prompt */
.ts-lab{display:block;margin:10px 0;font-weight:600;font-size:14px}
.ts-lab textarea{display:block;width:100%;margin-top:4px;min-height:64px;border:2px solid var(--ts-line);border-radius:12px;padding:10px 12px;font:500 16px Montserrat,system-ui,sans-serif;background:var(--ts-surface);color:var(--ts-ink);resize:vertical}
.ts-lab textarea:focus{outline:none;border-color:var(--ts-green)}
.ts-err{color:var(--ts-danger);font-weight:600;min-height:20px;margin-bottom:6px}
.ts-prompt{--ts-green:#71a62b;--ts-ink:#2b2b2b;--ts-surface:#fff;--ts-line:rgba(0,0,0,.14);position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:8500;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;background:var(--ts-surface);color:var(--ts-ink);border:1px solid var(--ts-line);border-left:5px solid var(--ts-green);border-radius:14px;padding:10px 12px;box-shadow:0 8px 24px rgba(0,0,0,.22);font:600 14px Montserrat,system-ui,sans-serif}
.ts-prompt span{flex:1 1 100%}
.ts-prompt .ts-go{min-height:48px}
.ts-prompt .ts-link{min-height:48px}
:root[data-theme="dark"] .ts-prompt{--ts-ink:#f1f1ec;--ts-surface:#1d2018;--ts-line:rgba(255,255,255,.18)}
