:root {
  --bg: #0A0910;
  --bg-glow: #1A0E2E;
  --surface: #150F1F;
  --surface-strong: #1B1327;
  --purple: #8A2BE2;
  --purple-bright: #B366FF;
  --text-main: #F4EEFB;
  --text-muted: #A99BC2;
  --border-soft: rgba(179, 102, 255, 0.28);
  --border-strong: rgba(179, 102, 255, 0.55);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  color: var(--text-main);
  /* Same purple-on-black family as hub.dyinggull.com, but stronger and
     wider than the hub's own subtle version -- the admin panel's content
     (cards, panels) covers most of the page width, so a faint glow barely
     read through it. background-attachment: fixed keeps this anchored to
     the viewport rather than the document, so it stays visible at the top
     of the screen no matter how far down a long list is scrolled. */
  background:
    radial-gradient(ellipse 1400px 900px at 50% -10%, var(--bg-glow) 0%, transparent 70%),
    radial-gradient(ellipse 1000px 700px at 95% 20%, rgba(138, 43, 226, 0.22) 0%, transparent 65%),
    radial-gradient(ellipse 900px 700px at 5% 80%, rgba(138, 43, 226, 0.16) 0%, transparent 65%),
    var(--bg);
  background-attachment: fixed;
  min-height: 100vh;
}

.brand-title {
  font-family: 'Anton', 'Inter', sans-serif;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: #fff;
  margin: 0;
}

.brand-title--hero {
  position: relative;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  text-align: center;
  text-shadow: 0 0 40px rgba(179, 102, 255, 0.35);
  margin: 20px 0 28px;
}

.login-body {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
}

.login-hero {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.brand-glow {
  position: absolute;
  top: -50px;
  left: 50%;
  width: 420px;
  height: 420px;
  margin-left: -210px;
  background: radial-gradient(circle, rgba(138, 43, 226, 0.35) 0%, transparent 65%);
  pointer-events: none;
}

.brand-logo {
  position: relative;
  border-radius: 50%;
  box-shadow: 0 0 60px rgba(179, 102, 255, 0.4), 0 0 0 1px var(--border-strong);
  animation: brand-float 7s ease-in-out infinite;
}

@keyframes brand-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@media (prefers-reduced-motion: reduce) {
  .brand-logo { animation: none; }
}

.login-form {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 18px;
  padding: 32px;
  width: 280px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

input {
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--border-soft);
  background: var(--surface-strong);
  color: var(--text-main);
  font-size: 15px;
}

button {
  padding: 10px 18px;
  border-radius: 999px;
  border: none;
  font-weight: 700;
  cursor: pointer;
  background: linear-gradient(135deg, var(--purple-bright), var(--purple));
  color: #fff;
}

button.logout {
  background: var(--surface-strong);
  border: 1px solid var(--border-soft);
}

.error { color: #FF8080; font-size: 13px; margin: 0; }

header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 28px;
  border-bottom: 1px solid var(--border-soft);
}

.brand-compact {
  display: flex;
  align-items: center;
  gap: 14px;
}

.brand-compact-logo {
  border-radius: 50%;
  box-shadow: 0 0 24px rgba(179, 102, 255, 0.4), 0 0 0 1px var(--border-strong);
}

.brand-compact .brand-title { font-size: 19px; }

nav {
  display: flex;
  gap: 8px;
  padding: 16px 28px 0;
}

nav button {
  background: var(--surface-strong);
  color: var(--text-muted);
  font-weight: 600;
  text-transform: capitalize;
}

nav button.active {
  background: linear-gradient(135deg, var(--purple-bright), var(--purple));
  color: #fff;
}

main { padding: 20px 28px 40px; max-width: 640px; }

#actionList { list-style: none; margin: 0 0 20px; padding: 0; display: flex; flex-direction: column; gap: 8px; }

#actionList li,
.entry-card {
  /* A per-card glow, not just the page-level one -- the max-width:640px
     column these sit in doesn't leave much margin for a background glow
     to show through, so each card carries its own soft purple light
     instead of relying on the page background peeking around the edges. */
  background:
    radial-gradient(ellipse 320px 200px at 12% -30%, rgba(138, 43, 226, 0.22) 0%, transparent 70%),
    var(--surface);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.4), 0 0 26px rgba(138, 43, 226, 0.14);
}

#actionList li {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: 10px 14px;
}

#actionList li span {
  flex: 1;
  outline: none;
}

#actionList li button {
  background: var(--surface-strong);
  font-weight: 600;
  padding: 6px 10px;
  font-size: 13px;
}

#actionList li button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

#actionList li button.save:not(:disabled) {
  background: linear-gradient(135deg, var(--purple-bright), var(--purple));
  color: #fff;
}

#addForm { display: flex; gap: 10px; }
#addForm input { flex: 1; }

.app-tabs {
  padding: 20px 28px 0;
}

.app-tabs button {
  font-size: 15px;
  padding: 10px 20px;
}

#entryList { list-style: none; margin: 0 0 20px; padding: 0; display: flex; flex-direction: column; gap: 12px; }

.entry-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: 14px;
}

.entry-fields { display: flex; flex-direction: column; gap: 8px; }

.entry-fields .entry-icon { width: 60px; }

.entry-card textarea,
.entry-form textarea {
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--border-soft);
  background: var(--surface-strong);
  color: var(--text-main);
  font-size: 14px;
  font-family: inherit;
  min-height: 80px;
  resize: vertical;
}

.entry-actions { display: flex; gap: 8px; }

.entry-actions button {
  background: var(--surface-strong);
  font-weight: 600;
  padding: 6px 10px;
  font-size: 13px;
}

.entry-actions button:disabled { opacity: 0.35; cursor: not-allowed; }

.entry-actions button.save:not(:disabled) {
  background: linear-gradient(135deg, var(--purple-bright), var(--purple));
  color: #fff;
}

.entry-form { display: flex; flex-direction: column; gap: 10px; max-width: 480px; }
.entry-form .entry-icon { max-width: 80px; }
