/* ============================================================================
   VEX — auth + dashboard pages. Reuses the tokens from style.css.
   ========================================================================= */

.auth-main {
  min-height: calc(100vh - 62px);
  display: flex; align-items: center; justify-content: center;
  padding: 48px 20px;
}

.card {
  width: 100%; max-width: 420px;
  background: linear-gradient(180deg, var(--panel-top), var(--panel-bottom));
  border: 1px solid var(--outline);
  border-radius: var(--radius);
  padding: 32px 30px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.5);
}
.card.wide { max-width: 680px; }

.card h1 { margin: 0 0 4px; font-size: 24px; font-weight: 800; }
.card .sub { margin: 0 0 24px; color: var(--text-dim); font-size: 14.5px; }

.field { margin-bottom: 16px; }
.field label {
  display: block; font-size: 13px; font-weight: 600;
  color: var(--text-dim); margin-bottom: 7px;
}
.field input {
  width: 100%; padding: 12px 14px;
  background: rgba(0,0,0,0.35);
  border: 1px solid var(--outline);
  border-radius: 11px;
  color: var(--text); font-size: 15px; font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.field input:focus {
  outline: none;
  border-color: var(--outline-strong);
  box-shadow: 0 0 0 3px rgba(124,255,107,0.12);
}
.field input.code {
  text-align: center; letter-spacing: 8px; font-size: 22px; font-weight: 700;
}

.btn.full { width: 100%; }

.row-between { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.checkrow { display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: var(--text-dim); }
.checkrow input { width: auto; }

.alt { margin-top: 20px; text-align: center; font-size: 14px; color: var(--text-dim); }
.alt a { font-weight: 600; }

/* Inline status messages */
.msg {
  display: none; margin-bottom: 18px; padding: 11px 14px;
  border-radius: 11px; font-size: 13.5px; line-height: 1.45;
}
.msg.show { display: block; }
.msg.err { background: rgba(255,106,90,0.10); border: 1px solid rgba(255,106,90,0.35); color: #ffb3a8; }
.msg.ok  { background: rgba(92,240,139,0.10); border: 1px solid rgba(92,240,139,0.35); color: #b6ffce; }

/* ---- dashboard ---- */
.dash { max-width: var(--maxw); margin: 0 auto; padding: 40px 24px 80px; }
.dash h1 { font-size: 28px; margin: 0 0 4px; }
.dash .sub { color: var(--text-dim); margin: 0 0 28px; }

.panel {
  background: linear-gradient(180deg, var(--panel-top), var(--panel-bottom));
  border: 1px solid var(--outline);
  border-radius: var(--radius);
  padding: 24px; margin-bottom: 20px;
}
.panel h2 { font-size: 17px; margin: 0 0 14px; }

.pill { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: 700; }
.pill .d { width: 8px; height: 8px; border-radius: 50%; }
.pill.on  { background: rgba(92,240,139,0.12); color: var(--good); }
.pill.on .d  { background: var(--good); box-shadow: 0 0 8px var(--good); }
.pill.off { background: rgba(255,106,90,0.12); color: var(--bad); }
.pill.off .d { background: var(--bad); }

.kv { display: grid; grid-template-columns: 140px 1fr; gap: 8px 16px; font-size: 14px; }
.kv .k { color: var(--text-dim); }

.inline-form { display: flex; gap: 10px; flex-wrap: wrap; }
.inline-form input { flex: 1; min-width: 200px; }

.muted { color: var(--text-dim); font-size: 13px; }
.topbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
