/* Secure eBook Reader - admin panel. Layered on Bootstrap 5, nothing required. */

:root {
  --ink: #12161c;
  --ink-soft: #5b6572;
  --accent: #0b5fff;
  --paper: #f6f7f9;
}

body { background: var(--paper); color: var(--ink); }

.admin-top { background: #10151c; border-bottom: 3px solid var(--accent); }
.admin-top .navbar-brand { letter-spacing: .2px; }
.admin-footer { padding: 1rem 1.5rem 2rem; }

.card { border: 1px solid #e2e6ea; border-radius: 12px; }
.card-header { background: #fff; font-weight: 600; border-bottom: 1px solid #e9edf1; }
.card-footer { background: #fbfcfd; }

.stat-card .stat-label {
  font-size: .74rem; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-soft);
}
.stat-card .stat-value { font-size: 1.6rem; font-weight: 650; line-height: 1.2; }
.stat-card .stat-sub { font-size: .8rem; }

.table th { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-soft); }
.table td { font-size: .9rem; }
.table-hover > tbody > tr:hover > * { background-color: #f2f6ff; }

.thumb {
  width: 44px; height: 60px; object-fit: cover; border-radius: 4px; border: 1px solid #dfe3e8; background: #fff;
  display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; color: var(--ink-soft);
}
.placeholder-thumb { border-style: dashed; }

.page-grid { display: flex; flex-wrap: wrap; gap: 4px; max-height: 260px; overflow: auto; }
.page-chip {
  min-width: 34px; padding: .25rem .4rem; text-align: center; font-size: .78rem; text-decoration: none;
  border: 1px solid #d9dee4; border-radius: 6px; background: #fff; color: var(--ink);
}
.page-chip:hover { background: var(--accent); color: #fff; border-color: var(--accent); }

.page-preview { background: #22272e; border-radius: 12px; padding: 12px; display: flex; justify-content: center; }
.page-preview-img { max-width: 100%; max-height: 78vh; border-radius: 6px; }

.spark { display: flex; align-items: flex-end; gap: 4px; height: 130px; }
.spark-col { flex: 1 1 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; }
.spark-bar { width: 100%; background: linear-gradient(180deg, #4d8bff, var(--accent)); border-radius: 4px 4px 0 0; min-height: 2px; }
.spark-col span { font-size: .62rem; color: var(--ink-soft); }

.signal {
  display: flex; flex-direction: column; gap: 2px; padding: .6rem .7rem; height: 100%;
  border: 1px solid #e2e6ea; border-radius: 10px; background: #fff; text-decoration: none; color: var(--ink);
}
.signal:hover { border-color: var(--accent); }
.signal-active { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(11, 95, 255, .12); }
.signal-type { font-size: .78rem; color: var(--ink-soft); }
.signal-count { font-size: 1.3rem; font-weight: 650; }

.cron-block { background: #0f141a; color: #dbe6f5; padding: .8rem; border-radius: 10px; overflow: auto; }

.login-body { min-height: 100vh; display: flex; align-items: center; background: #10151c; }
.login-wrap { margin: auto; width: 100%; max-width: 420px; padding: 1rem; }
.login-card { border-radius: 14px; border: none; box-shadow: 0 18px 50px rgba(0, 0, 0, .35); }

.badge { text-transform: capitalize; }
code { color: #b3306b; background: #f6f8fa; padding: .1rem .3rem; border-radius: 4px; }
pre code { color: inherit; background: none; padding: 0; }
