/* ==========================================================================
   Shared page-level styles owned by the core (support pages, audit meta, diff, quick views).
   Module-specific styles live in assets/css/pages/mXX.css (one file per module worker).
   ========================================================================== */

/* ---------- login (AUTH-01) ---------- */
.rv-login { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 560px); min-height: 100dvh; }
.rv-login__art { position: relative; overflow: hidden; background: var(--rv-primary-50); }
.rv-login__art > img { width: 100%; height: 100%; object-fit: cover; }
.rv-login__art-text { position: absolute; left: 32px; bottom: 32px; right: 32px; padding: 20px 24px; background: rgba(255, 255, 255, .88); border-radius: var(--rv-radius-overlay); }
.rv-login__art-text img { width: 87px; height: auto; margin-bottom: 8px; }
.rv-login__art-text p { margin: 0; font-size: 16px; line-height: 24px; color: var(--rv-neutral-800); }
.rv-login__panel { display: flex; align-items: center; justify-content: center; padding: 32px 24px; background: var(--rv-surface); }
.rv-login__card { width: 100%; max-width: 480px; display: flex; flex-direction: column; gap: 12px; }
.rv-login__logo { width: 87px; height: auto; }
.rv-login__accs { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.rv-login__acc {
  width: 100%; display: flex; align-items: center; gap: 12px; padding: 10px 12px; text-align: left;
  background: var(--rv-surface); border: 1px solid var(--rv-border); border-radius: var(--rv-radius-card); min-height: 64px;
}
.rv-login__acc:hover { border-color: var(--rv-primary-500); background: var(--rv-primary-50); }
.rv-login__acc.is-current { border-color: var(--rv-primary-500); box-shadow: inset 3px 0 0 var(--rv-primary-500); }
.rv-login__acc.is-disabled { opacity: .7; background: var(--rv-neutral-50); }
.rv-login__acc.is-disabled:hover { border-color: var(--rv-danger-border); background: var(--rv-danger-bg); }
.rv-login__who { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.rv-login__name { font-weight: 500; font-size: 14px; line-height: 20px; }
.rv-login__email { font-size: 12px; line-height: 18px; color: var(--rv-text-muted); }
@media (max-width: 900px) { .rv-login { grid-template-columns: 1fr; } .rv-login__art { display: none; } .rv-login__panel { padding: 24px 16px; } }

/* ---------- 403 / 404 / phase 2 ---------- */
.rv-sys { max-width: 620px; margin: 48px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.rv-sys__icon { width: 64px; height: 64px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--rv-primary-50); color: var(--rv-primary-700); }
.rv-sys__code { font-size: 12px; font-weight: 600; letter-spacing: .06em; color: var(--rv-text-muted); }
.rv-row--center { justify-content: center; }

/* ---------- public verify (PUB-01) ---------- */
.rv-public { min-height: 100dvh; background: var(--rv-surface-subtle); }
.rv-public__head { display: flex; align-items: center; gap: 12px; padding: 14px 24px; background: #fff; border-bottom: 1px solid var(--rv-divider); font-size: 14px; color: var(--rv-text-secondary); }
.rv-public__main { max-width: 760px; margin: 0 auto; padding: 32px 16px; }
.rv-verify-card { display: flex; gap: 16px; align-items: flex-start; padding: 20px; background: #fff; border: 1px solid var(--rv-card-border); border-radius: var(--rv-radius-card); }
.rv-verify-card.is-valid > .rv-icon { color: var(--rv-success); }
.rv-verify-card.is-revoked > .rv-icon, .rv-verify-card.is-missing > .rv-icon { color: var(--rv-danger); }

/* ---------- audit meta + diff ---------- */
.rv-auditmeta { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.rv-auditmeta__item { display: flex; align-items: center; gap: 8px; font-size: 12px; line-height: 18px; min-width: 0; }
.rv-auditmeta__label { color: var(--rv-text-muted); white-space: nowrap; }
.rv-auditmeta__at { color: var(--rv-text-muted); white-space: nowrap; }
@media (max-width: 767px) {
  /* phone: label + person on one row, date underneath — keeps the login email on one line */
  .rv-auditmeta { flex-direction: column; gap: 8px; }
  .rv-auditmeta__item { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 8px; row-gap: 2px; }
  .rv-auditmeta__at { grid-column: 2; }
}
.rv-avatar--system { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--rv-neutral-100); color: var(--rv-neutral-600); flex: 0 0 auto; }
.rv-diff th[scope="row"] { font-weight: 600; white-space: nowrap; }
.rv-diff tr.is-changed td:last-child { background: var(--rv-success-bg); }
.rv-diff tr.is-changed td:nth-child(2) { background: var(--rv-danger-bg); }
.rv-qv { cursor: pointer; }

/* ---------- detail header (shared by course / instructor / assessment / certificate pages) ---------- */
.rv-dhead { display: flex; gap: 16px; align-items: flex-start; padding: 16px; border: 1px solid var(--rv-card-border); border-radius: var(--rv-radius-card); background: var(--rv-surface); }
.rv-dhead__media { flex: 0 0 auto; }
.rv-dhead__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.rv-dhead__title { font-size: var(--rv-fs-page-title); line-height: var(--rv-lh-page-title); font-weight: 500; }
.rv-dhead__meta { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 12px; line-height: 20px; color: var(--rv-text-secondary); }
.rv-dhead__actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
@media (max-width: 767px) { .rv-dhead { flex-direction: column; } .rv-dhead__actions { justify-content: flex-start; } }
