:root{color-scheme:dark;--bg:#0b1220;--card:#152239;--muted:#a5b5cb;--line:#263a53;--accent:#6aa3ff;--green:#67d9bd;--danger:#ff8e96}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#f3f6fb;font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-size:14px;line-height:1.6}.top{display:flex;justify-content:space-between;align-items:center;padding:14px max(22px,calc((100% - 1190px)/2));border-bottom:1px solid var(--line);background:#121e30;gap:20px;flex-wrap:wrap}.brand{font-weight:800;font-size:18px;text-decoration:none;color:var(--accent)}.brand span{color:#c4d1e1;font-weight:500}nav{display:flex;align-items:center;flex-wrap:wrap;gap:10px}nav a{padding:8px 13px;text-decoration:none;color:var(--muted);border-radius:9px}nav a.selected,nav a:hover{color:#fff;background:#243956}.wrap{max-width:1190px;padding:24px 20px;margin:0 auto}h1{font-size:27px;letter-spacing:-.5px;margin:0}h2{font-size:18px;margin:0 0 14px}.sub{color:var(--muted);margin:6px 0 24px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:15px}.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:18px;margin-top:18px}.card,.metric{background:var(--card);border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:0 8px 26px #0002}.metric .num{font-size:32px;font-weight:800;letter-spacing:-1px}.metric .label{color:var(--muted)}.metric .hint{font-size:12px;color:var(--muted)}.section{margin-top:20px}.pill{display:inline-block;padding:3px 9px;border:1px solid #345475;background:#22344e;color:#b9d8ff;border-radius:50px;font-size:12px}.pill.good{color:var(--green);border-color:#2e7265;background:#163f38}.pill.bad{color:var(--danger);border-color:#864047;background:#45262b}table{border-collapse:collapse;width:100%;overflow-x:auto;display:block}th,td{padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:left;vertical-align:top}th{color:var(--muted);font-size:12px;font-weight:600}tr:hover td{background:#ffffff05}input,select,textarea{width:100%;background:#0b1728;border:1px solid #36516e;border-radius:9px;color:#fff;padding:11px;font:inherit}textarea{min-height:140px;resize:vertical}label{font-weight:600;display:block;margin:12px 0 5px}.btn,button{border:0;border-radius:9px;padding:10px 14px;background:#3677dc;color:white;font-weight:650;cursor:pointer;font:inherit}.btn.secondary{background:#263e5f}.btn.warn{background:#65404b}.inline{display:inline}.linkbtn{background:transparent;color:var(--muted);padding:8px 12px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.row>*{flex:1}.notice{padding:13px 16px;border:1px solid #2c7066;background:#163d36;border-radius:10px;margin-bottom:20px}.notice.err{border-color:#a55263;background:#4e2933}.muted{color:var(--muted)}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;color:#b7d0f0}.login{max-width:430px;margin:8vh auto}.spacer{height:10px}.tiny{font-size:12px;color:var(--muted)}footer{margin:38px 0 10px;color:#697f9e;font-size:12px}.actions{display:flex;gap:8px;align-items:center}.actions form{margin:0}@media(max-width:620px){.top{padding:12px 18px}.wrap{padding:18px 12px}h1{font-size:23px}.card{padding:15px}nav a{padding:5px 7px}}

/* Step 82: read-only uploaded files dashboard */
.filename{max-width:320px;overflow-wrap:anywhere;white-space:normal;direction:auto;unicode-bidi:plaintext}.filename bdi{unicode-bidi:isolate}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-head h2{margin:0}.upload-filters{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.upload-filters>.filter-label:first-of-type{min-width:250px;flex:3}.upload-filters>.filter-label{flex:1;min-width:150px;font-size:12px;color:var(--muted);margin:0}.upload-filters>.filter-label input,.upload-filters>.filter-label select{display:block;margin-top:6px}.upload-filters>.btn,.upload-filters>button{flex:0 0 auto}.metric .metric-small{font-size:25px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;flex-wrap:wrap}.pagination .btn{text-decoration:none}.section-head .btn{text-decoration:none}

/* STEP83: accessible server-side sortable upload table */
.sort-col{display:inline-flex;align-items:center;gap:6px;color:#c7d8eb;text-decoration:none;white-space:nowrap}.sort-col:hover,.sort-col:focus-visible{color:#fff;text-decoration:underline}.sort-col.active{color:#82b7ff}.sort-col span{opacity:.72;font-size:13px}.sort-col.active span{opacity:1}.upload-filters .filter-label{min-width:130px}
