

  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  body { font-family: system-ui, sans-serif; background: #f4f4f5; color: #18181b; min-height: 100vh; }
  header { background: #18181b; color: #fff; padding: 1rem 2rem; display: flex; align-items: center; gap: 1rem; }
  header h1 { font-size: 1.2rem; font-weight: 600; }
  header span { margin-left: auto; font-size: .875rem; color: #a1a1aa; }
  a { color: #fff; }
  main { max-width: 1000px; margin: 2rem auto; padding: 0 1rem; }
  .card { background: #fff; border-radius: 8px; border: 1px solid #e4e4e7; padding: 1.5rem; margin-bottom: 1.5rem; }
  .card h2 { font-size: 1rem; font-weight: 600; margin-bottom: 1rem; }
  .upload-row { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
  input[type=file] { flex: 1; min-width: 0; border: 1px solid #d4d4d8; border-radius: 6px; padding: .5rem; font-size: .875rem; background: #fafafa; }
  button { background: #18181b; color: #fff; border: none; border-radius: 6px; padding: .55rem 1.2rem; font-size: .875rem; cursor: pointer; white-space: nowrap; }
  button:hover { background: #3f3f46; }
  .msg { padding: .6rem 1rem; border-radius: 6px; font-size: .875rem; margin-top: .75rem; }
  .msg.error   { background: #fee2e2; color: #b91c1c; }
  .msg.success { background: #dcfce7; color: #15803d; }
  table { width: 100%; border-collapse: collapse; font-size: .875rem; }
  th { text-align: left; padding: .5rem .75rem; border-bottom: 2px solid #e4e4e7; color: #71717a; font-weight: 500; }
  td { padding: .6rem .75rem; border-bottom: 1px solid #f4f4f5; word-break: break-all; }
  tr:last-child td { border-bottom: none; }
  .empty { color: #a1a1aa; font-size: .875rem; text-align: center; padding: 2rem 0; }
  img.totp { border: solid 1px #18181b; }
