body{margin:0;font-family:Arial,sans-serif;background:#f4f6f8;color:#17212b}header{background:#17324d;color:#fff;padding:15px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px}header h1{margin:0}header p{margin:4px 0 0;opacity:.82}main{padding:16px;max-width:1800px;margin:auto}.card{background:#fff;border:1px solid #dfe5ea;border-radius:10px;padding:12px;margin-bottom:12px}.notice{background:#fff7d6;border:1px solid #ebd88c;padding:12px;border-radius:10px}.hidden{display:none!important}.auth-card{max-width:520px;margin:40px auto}.auth-card form{display:grid;gap:10px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:0;z-index:5}.toolbar input{min-width:320px;flex:1}input,select,textarea,button{font:inherit;padding:8px;border-radius:7px;border:1px solid #cfd7df}button{background:#1f6f5c;color:#fff;border:none;font-weight:700;cursor:pointer}.secondary{background:#e9eef2;color:#243240}.legend{font-size:13px}.swatch{display:inline-block;width:18px;height:12px;border:1px solid #bbb;margin:0 5px 0 14px;vertical-align:middle}.swatch.notchecked{background:#fff}.swatch.incomplete{background:#fff3a3}.swatch.complete{background:#d9f2df}.tablewrap{overflow:auto;padding:0;max-height:72vh}table{border-collapse:collapse;min-width:100%;white-space:nowrap}th,td{padding:7px 8px;border:1px solid #e1e6ea;text-align:left;vertical-align:top;font-size:12px;max-width:280px;overflow:hidden;text-overflow:ellipsis}th{background:#eef3f6;position:sticky;top:0;z-index:2}.complete{background:#d9f2df}.incomplete{background:#fff3a3}.not-checked{background:#fff}.review{background:#ffd9d9}.thumb{width:64px;height:48px;object-fit:cover;border-radius:6px}.grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:10px}.grid label,.auth-card label{display:flex;flex-direction:column;gap:4px}.wide{grid-column:1/-1}.actions,.dialog-head{display:flex;justify-content:space-between;gap:10px;margin-top:14px}.media-section{border-top:1px solid #ddd;margin-top:16px;padding-top:12px}.muted{color:#65707c}dialog{width:min(1200px,96vw);max-height:92vh;border:0;border-radius:12px;overflow:auto}dialog::backdrop{background:#0006}@media(max-width:800px){.grid{grid-template-columns:1fr}.wide{grid-column:auto}.toolbar input{min-width:100%}}
.spec-actions{display:flex;gap:5px;flex-wrap:wrap}.spec-actions button{padding:5px 7px;font-size:11px}.spec-code-btn{background:#17324d}.open-spec{background:#1f6f5c}.missing-spec{font-size:11px;color:#7a5b00}#specDlg{width:min(1100px,96vw);height:min(900px,92vh)}#specFrame{width:100%;height:calc(100% - 78px);border:1px solid #dfe5ea;border-radius:8px;display:none}.date-cell,.coord-cell{font-variant-numeric:tabular-nums}

.button-link{display:inline-block;background:#1f6f5c;color:#fff;text-decoration:none;font-weight:700;padding:8px 10px;border-radius:7px}.button-link.hidden{display:none!important}
/* Job and access controls extend the established tracker design. */
.toolbar label{display:flex;flex-direction:column;gap:4px;font-size:14px}.toolbar label select{max-width:320px}.toolbar input[type=search]{min-width:180px}.check-label{display:flex!important;flex-direction:row!important;align-items:center;gap:8px!important}.check-label input{width:20px;height:20px;flex:0 0 auto}button:disabled{opacity:.55;cursor:not-allowed}#resultCount{font-size:14px}#membersDlg,#jobDlg{width:min(900px,92vw)}#membersDlg form{margin-bottom:16px}th,td{font-size:14px}label{font-size:14px}.spec-actions button,.missing-spec{font-size:14px}input,select{box-sizing:border-box;max-width:100%}#editGrid label input{min-width:0}dialog{box-sizing:border-box}#membersBody td{white-space:normal;overflow-wrap:anywhere}#memberMsg,#jobMsg,#formMsg{white-space:pre-wrap}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #1b8bc2;outline-offset:2px}@media(max-width:800px){header{align-items:flex-start;flex-wrap:wrap}.toolbar label{flex:1 1 100%}.toolbar label select{max-width:100%}.toolbar{position:static}.toolbar input[type=search]{min-width:100%}.grid{grid-template-columns:minmax(0,1fr)}.dialog-head{flex-wrap:wrap}dialog{width:94vw}}
