/* The few things particular to one page. */

/* Register: a big search box and the answers under it. */
.register-page { max-width: 760px; }
.register-search input { font-size: 17px; min-height: 52px; }
.register-list { margin-top: var(--gap-3); display: flex; flex-direction: column; gap: var(--gap-2); transition: opacity 0.1s; }
.register-list.busy { opacity: 0.7; }
.reg-row.active { border-color: var(--accent); background: var(--accent-wash); }
.reg-row .item-title b { color: var(--accent-soft); }
.reg-new .item-title { display: flex; align-items: center; gap: 8px; color: var(--accent-soft); }
.reg-new svg { width: 18px; height: 18px; }

/* Plans: unsaved edits wait in a bar that follows the screen. */
.savebar {
  position: sticky;
  bottom: var(--gap-3);
  margin-top: var(--gap-4);
  display: flex;
  align-items: center;
  gap: var(--gap-2);
  padding: var(--gap-3) var(--gap-4);
  border-radius: var(--radius);
  border: 1px solid var(--accent);
  background: var(--surface-2);
  box-shadow: var(--shadow);
}
.savebar .grow { flex: 1; font-weight: 600; }
@media (max-width: 899px) {
  .savebar { bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--gap-2)); }
}

/* Offline: anything that would change something is visibly unavailable. */
body.is-offline .btn.primary,
body.is-offline .btn.danger,
body.is-offline .sheet-foot .btn:not(.quiet):not([data-sheet-close]) {
  opacity: 0.45;
  pointer-events: none;
}

/* Sign-in. */
.login-body { display: grid; place-items: center; min-height: 100dvh; padding: var(--gap-4); }
.login-card {
  width: min(400px, 100%);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-l);
  padding: var(--gap-5);
  display: flex;
  flex-direction: column;
  gap: var(--gap-3);
}
.login-card .brand-logo { width: 48px; height: 48px; font-size: 24px; border-radius: 13px; }
.login-card h1 { font-size: 20px; }
.login-msg { min-height: 20px; font-size: 13px; color: var(--bad); }
