:root { --fg:#1d2329; --muted:#6b7580; --line:#dde2e7; --bg:#f6f7f9; --card:#fff; --accent:#1f5fbf; --ok:#1d7a3a; --warn:#a86400; --err:#b3261e; }
* { 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; }
header.top { display:flex; align-items:center; gap:1.5rem; padding:.6rem 1.5rem; background:#16202b; color:#fff; }
header.top a { color:#dfe7f0; } .brand { font-weight:700; color:#fff !important; }
header.top nav { display:flex; gap:1rem; flex:1; }
.logout { display:flex; gap:.5rem; align-items:center; } .who { color:#9fb0c2; }
button.link { background:none; border:0; color:#dfe7f0; padding:0; cursor:pointer; font:inherit; }
main { max-width: none; margin: 1.5rem 0; padding: 0 1.5rem; } /* full browser width; tables span 100 % */
h1 { font-size:1.5rem; margin:.2rem 0 1rem; } h2 { font-size:1.1rem; margin:1.8rem 0 .6rem; }
table { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--line); }
th, td { text-align:left; padding:.4rem .6rem; border-bottom:1px solid var(--line); vertical-align:top; }
th { background:#eef1f4; font-weight:600; }
table.kv th { width: 16rem; }
td.num { text-align:right; white-space:nowrap; } .nowrap { white-space:nowrap; }
td.ctx code { font-size:12px; color:var(--muted); word-break:break-all; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; }
code.hash { word-break: break-all; font-size: 11.5px; }
code.big { font-size: 1.1rem; padding:.3rem .5rem; background:#fff; border:1px solid var(--line); user-select: all; word-break: break-all; }
.muted { color: var(--muted); }
.tiles { display:grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .8rem; }
.tile { background:var(--card); border:1px solid var(--line); border-left:4px solid var(--line); padding:.8rem; }
.tile .num { display:block; font-size:1.5rem; font-weight:700; } .tile .lbl { color:var(--muted); }
.tile.ok { border-left-color: var(--ok); } .tile.warn { border-left-color: var(--warn); } .tile.err { border-left-color: var(--err); }
.warnings { list-style:none; padding:0; } .warnings li { padding:.4rem .6rem; margin-bottom:.3rem; background:#fff7e6; border-left:4px solid var(--warn); }
.warnings li.error { background:#fdecea; border-left-color: var(--err); }
.flash { padding:.6rem .8rem; margin-bottom:1rem; border-left:4px solid var(--ok); background:#e8f5ec; }
.flash-warning { border-left-color: var(--warn); background:#fff7e6; } .flash-error { border-left-color: var(--err); background:#fdecea; }
.secret { padding:.8rem 1rem; background:#eef4ff; border:1px solid #b8cdf0; margin-bottom: 1rem; }
.secret.danger { background:#fdecea; border-color:#f0b8b3; }
.badge { display:inline-block; padding:.05rem .45rem; border-radius:3px; font-size:12px; background:#e5e8ec; }
.badge.active, .badge.complete, .badge.verified, .badge.received { background:#dff3e5; color:var(--ok); }
.badge.uploading, .badge.pending { background:#e3ecfb; color:var(--accent); }
.badge.failed, .badge.corrupt, .badge.disabled, .badge.deleting { background:#fdecea; color:var(--err); }
tr.lvl-error td { background:#fff5f4; } tr.lvl-warning td { background:#fffaf0; }
dl.facts { display:grid; grid-template-columns: 14rem 1fr; gap:.25rem 1rem; background:var(--card); border:1px solid var(--line); padding:.8rem 1rem; }
dl.facts dt { color: var(--muted); } dl.facts dd { margin:0; word-break: break-word; }
.actions { display:flex; flex-wrap:wrap; gap:.6rem; align-items:flex-start; margin: 1rem 0; }
.actions form { display:flex; gap:.5rem; align-items:center; } .actions small { color:var(--muted); max-width: 22rem; }
button, a.button { font:inherit; padding:.4rem .9rem; border:1px solid var(--accent); background:var(--accent); color:#fff; border-radius:3px; cursor:pointer; display:inline-block; }
button.secondary { background:#fff; color:var(--accent); }
button.danger, a.button.danger { background:var(--err); border-color:var(--err); color:#fff; }
button:disabled { opacity:.5; cursor:not-allowed; }
form label { display:block; margin-bottom:.6rem; } form.inline { display:flex; gap:1rem; align-items:flex-end; flex-wrap:wrap; }
form.inline label { margin:0; }
input { font:inherit; padding:.35rem .5rem; border:1px solid #c3cbd3; border-radius:3px; display:block; margin-top:.2rem; min-width: 16rem; }
section.login { max-width: 360px; margin: 4rem auto; background:var(--card); border:1px solid var(--line); padding:1.5rem; }
section.login input { width:100%; }
/* ---- Go server additions ---- */
.badge.rejected { background:#fdecea; color:var(--err); }
.badge.running { background:#e3ecfb; color:var(--accent); }
.badge.done { background:#dff3e5; color:var(--ok); }
.badge.stalled, .badge.lost { background:#fdecea; color:var(--err); }
header.top nav a.cur { color:#fff; font-weight:600; border-bottom:2px solid #6fa0e8; }
.pending { background:#fffaf0; border:1px solid #f0d8a8; padding:.8rem 1rem; margin-bottom:1.2rem; }
.pending h2 { margin-top:0; }
.pending .card { background:#fff; border:1px solid var(--line); padding:.8rem 1rem; margin:.6rem 0; display:grid; grid-template-columns: 1fr auto; gap: .6rem 1.2rem; }
.fp { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 1.35rem; letter-spacing: .05em; font-weight:700; user-select: all; }
.fp-small { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; }
.ok-text { color: var(--ok); font-weight:600; } .err-text { color: var(--err); font-weight:600; } .warn-text { color: var(--warn); font-weight:600; }
.red { color: var(--err); font-weight:600; } .muted-small { color: var(--muted); font-size: 12px; }
.mark { display:inline-block; padding:0 .35rem; border-radius:3px; font-size:12px; margin-left:.4rem; }
.mark.red { background:#fdecea; color:var(--err); } .mark.yellow { background:#fff3d6; color:var(--warn); }
td.w-red { background:#fdecea; } td.w-yellow { background:#fff7e6; }
table.sys td { white-space: nowrap; vertical-align: top; } table.sys td.nw, table.sys th { white-space: nowrap; }
.table-scroll { overflow-x: auto; max-width: 100%; }
.site-url { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 28rem; color: var(--muted); font-size: 12px; }
table.sys .l2 { margin-top: .15rem; } table.sys .backup-cell .l2 { font-size: 12px; } .pending .l2 { margin-top: .1rem; }
table.sys th a { color: var(--fg); }
table.sys .actions-cell form { display:inline; } table.sys .actions-cell button { padding:.15rem .5rem; font-size:12px; }
.filters { display:flex; gap:.8rem; align-items:flex-end; flex-wrap:wrap; margin-bottom:.8rem; }
.filters label { margin:0; } .filters input, .filters select { min-width: 10rem; }
select { font:inherit; padding:.35rem .5rem; border:1px solid #c3cbd3; border-radius:3px; display:block; margin-top:.2rem; background:#fff; }
textarea { font: 12.5px ui-monospace, SFMono-Regular, Menlo, monospace; width:100%; min-height:6rem; padding:.35rem .5rem; border:1px solid #c3cbd3; border-radius:3px; }
.cols2 { display:grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; } @media (max-width: 900px) { .cols2 { grid-template-columns: 1fr; } }
.meta-group { margin-bottom: 1rem; } .meta-group h3 { font-size: 1rem; margin:.6rem 0 .3rem; }
svg.bar { width:100%; height:22px; display:block; border:1px solid var(--line); background:#f0f2f5; margin:.4rem 0 .6rem; }
.g-uploads { fill:#4e79a7; background:#4e79a7; } .g-plugins { fill:#f28e2b; background:#f28e2b; } .g-themes { fill:#76b7b2; background:#76b7b2; }
.g-mu_plugins { fill:#59a14f; background:#59a14f; } .g-languages { fill:#edc948; background:#edc948; } .g-other_content { fill:#b07aa1; background:#b07aa1; }
.g-core { fill:#9c755f; background:#9c755f; } .g-config { fill:#bab0ac; background:#bab0ac; } .g-db { fill:#e15759; background:#e15759; }
.swatch { display:inline-block; width:.8rem; height:.8rem; margin-right:.35rem; vertical-align:-1px; border-radius:2px; }
.toc { display:flex; gap:1rem; flex-wrap:wrap; margin:.4rem 0 1rem; font-size: 13px; }
.policy td input[type=text], .policy td input[type=number] { min-width: 8rem; }
.policy td.ov { width: 7rem; text-align:center; }
input[type=checkbox] { display:inline; min-width:0; margin:0 .3rem 0 0; }
label.inline { display:inline-flex; align-items:center; gap:.3rem; margin:0; }
.key-box { display:flex; gap:1rem; align-items:center; flex-wrap:wrap; }
.approve-form { display:flex; flex-wrap:wrap; gap:.6rem; align-items:flex-end; }
.approve-form input[name=name] { min-width: 14rem; }
.inline-form { display:inline; } .mt { margin-top:.5rem; }
tr.sub td { color: var(--muted); font-size: 13px; }
.enc { white-space: nowrap; display: inline-flex; vertical-align: -2px; } .enc-on { color: var(--ok); } .enc-off { color: var(--warn); }
svg.lock { display: block; } th.icon-col, td.icon-col { width: 1.4rem; padding-left: .2rem; padding-right: .2rem; text-align: center; }
.policy-hint { margin: 4px 0 0; max-width: 46em; }
/* forms with label/value tables (settings, password) keep a readable column; all other tables span 100 % */
form > table.kv { max-width: 60rem; }
