/* Versions & Changelog page. Source data: /api/admin/changelog + /api/display-devices(/releases). */
.doc { max-width: 1040px; margin: 0 auto; padding: 8px 4px 64px; line-height: 1.55; color: #1f2430; }
.doc h1 { font-size: 1.9rem; font-weight: 800; margin: 8px 0 4px; }
.doc .sub { color: #5b6472; margin: 0 0 18px; }
.doc h2 { font-size: 1.2rem; font-weight: 700; margin: 30px 0 8px; }
.doc table { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 0.92rem; }
.doc th, .doc td { text-align: left; padding: 9px 12px; border-bottom: 1px solid #e7eaf0; vertical-align: top; }
.doc th { font-weight: 700; color: #3a4253; background: #f7f8fb; }
.doc code { background: #f1f3f7; border-radius: 4px; padding: 1px 5px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.86em; }
.v-pill { display: inline-block; font-size: 0.72rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; vertical-align: middle; }
.v-latest { background: #e6f4ec; color: #1c7a45; border: 1px solid #bfe3cd; }
.v-badge { display: inline-block; font-size: 0.74rem; font-weight: 600; padding: 2px 9px; border-radius: 999px; }
.b-online { background: #e6f4ec; color: #1c7a45; }
.b-offline { background: #eef0f4; color: #6b7382; }
.b-pending { background: #fff4e0; color: #9a6a13; }
.b-disabled { background: #fdeaea; color: #b3322e; }
.pending-ver { color: #9a6a13; font-weight: 600; }
.muted { color: #8a92a0; }
.summary { display: flex; gap: 10px; flex-wrap: wrap; margin: 6px 0 4px; }
.stat { background: #f7f8fb; border: 1px solid #e7eaf0; border-radius: 10px; padding: 10px 14px; min-width: 120px; }
.stat .n { font-size: 1.4rem; font-weight: 800; color: #1f2430; }
.stat .l { font-size: 0.78rem; color: #6b7382; }
.page-wrap { padding: 24px 20px; }
.err { color: #b3322e; }
.refresh { font-size: 0.85rem; }
/* changelog table */
#changelogTable td.cl-date { white-space: nowrap; color: #3a4253; font-weight: 600; width: 110px; }
#changelogTable td.cl-files code { font-size: 0.78em; }
#changelogTable td.cl-files { color: #8a92a0; max-width: 260px; }
.cl-desc strong { color: #1f2430; }
.cl-more { margin: 10px 0; }
.cl-more button { font: inherit; cursor: pointer; background: #f1f3f7; border: 1px solid #e0e4ec; border-radius: 8px; padding: 7px 14px; color: #3a4253; }
.compat-ok { color:#1c7a45; font-weight:600; }
.compat-warn { color:#9a6a13; font-weight:600; }
.platform-banner { font-size:1rem; padding:12px 16px; border-radius:10px; margin:6px 0 18px; border:1px solid #e7eaf0; }
.platform-banner strong { font-size:1.1rem; }
.platform-banner code { background:rgba(0,0,0,0.06); border-radius:3px; padding:0 4px; }
.pb-ok { background:#e6f4ec; border-color:#bfe3cd; color:#1c7a45; }
.pb-warn { background:#fff4e0; border-color:#f3e2a8; color:#9a6a13; }
.pb-muted { background:#f7f8fb; color:#6b7382; }
.pb-status { font-weight:700; }
.pb-portal { opacity:0.85; font-size:0.85rem; }
