:root { --fg:#1d2330; --muted:#6b7385; --line:#e3e6ec; --bg:#f6f7f9; --accent:#2457d6; --warn:#b4540a; --bad:#b42318; --ok:#147a3d; }
* { box-sizing: border-box; }
body { margin:0; font:14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; color:var(--fg); background:var(--bg); }
a { color:var(--accent); text-decoration:none; } a:hover { text-decoration:underline; }
main { padding:20px 24px; max-width:1500px; margin:0 auto; }
h1 { font-size:22px; margin:4px 0 14px; } h2 { font-size:17px; margin:26px 0 10px; } h3 { font-size:15px; margin:16px 0 6px; }
.top { display:flex; gap:20px; align-items:center; padding:10px 24px; background:#fff; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.top .brand { font-weight:700; color:var(--fg); }
.top nav { display:flex; gap:16px; flex:1; }
.top form { margin:0; }
.search input { padding:5px 8px; border:1px solid var(--line); border-radius:6px; width:160px; }
button { font:inherit; padding:6px 12px; border:1px solid var(--line); background:#fff; border-radius:6px; cursor:pointer; }
button:hover { border-color:var(--accent); }
button.danger { color:var(--bad); }
button.link { border:0; background:none; color:var(--muted); padding:0; }
input, select { font:inherit; padding:5px 8px; border:1px solid var(--line); border-radius:6px; background:#fff; }
table { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); border-radius:8px; }
th, td { text-align:left; padding:7px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
th { font-weight:600; color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.03em; }
.muted { color:var(--muted); } .small { font-size:12px; } .nowrap { white-space:nowrap; }
.mono { font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:12.5px; }
.badge { display:inline-block; padding:1px 7px; border-radius:10px; background:#eef0f4; font-size:12px; }
.badge.warn, .s-submission_unknown, .s-needs_you { background:#fff1e0; color:var(--warn); }
.s-rejected, .s-failed { background:#fde8e7; color:var(--bad); }
.s-live, .s-draft_saved { background:#e5f5eb; color:var(--ok); }
tr.status-submission_unknown { background:#fff8ee; }
.message { white-space:pre-wrap; max-width:520px; overflow-wrap:anywhere; }
pre { white-space:pre-wrap; overflow-wrap:anywhere; max-width:520px; margin:4px 0; font-size:12px; }
details summary { cursor:pointer; color:var(--muted); font-size:12px; }
.filters { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.pager { display:flex; gap:16px; justify-content:center; margin:14px 0; color:var(--muted); }
.tiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:12px; }
.tile { background:#fff; border:1px solid var(--line); border-radius:8px; padding:14px; color:var(--fg); }
.tile b { display:block; font-size:24px; }
.tile.alert { border-color:var(--warn); background:#fff8ee; }
.card { background:#fff; border:1px solid var(--line); border-radius:8px; padding:16px 18px; }
.card p { display:flex; flex-direction:column; gap:4px; }
.narrow { max-width:420px; }
.actions { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.actions form { margin:0; display:flex; gap:6px; }
.msg { padding:9px 12px; border-radius:6px; margin-bottom:12px; background:#e8effd; }
.msg.error { background:#fde8e7; } .msg.success { background:#e5f5eb; }
.errorlist { color:var(--bad); margin:0; padding-left:18px; }
