:root {
  --bg-1: #0f172a;
  --bg-2: #111827;
  --accent: #38bdf8;
  --accent-2: #f59e0b;
  --surface: rgba(255, 255, 255, 0.92);
}

html,
body {
  min-height: 100%;
}

body {
  font-family: "Segoe UI", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  background:
    radial-gradient(circle at top left, rgba(56, 189, 248, 0.25), transparent 28%),
    radial-gradient(circle at right center, rgba(245, 158, 11, 0.18), transparent 24%),
    linear-gradient(160deg, var(--bg-1), var(--bg-2));
}

.app-shell {
  min-height: 100vh;
}

.hero {
  position: relative;
  overflow: hidden;
  z-index: 0;
}

.hero::after {
  content: "";
  position: absolute;
  inset: auto -10% -35% auto;
  width: 24rem;
  height: 24rem;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(56, 189, 248, 0.22), transparent 70%);
  pointer-events: none;
  z-index: -1;
}

.hero .row {
  position: relative;
  z-index: 1;
}

.hero-card,
.form-card,
.result-card {
  background: var(--surface);
  backdrop-filter: blur(12px);
  border-radius: 1.25rem;
}

.hero-card {
  min-height: 16rem;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.badge-soft {
  color: #075985;
  background: rgba(255, 255, 255, 0.88);
}

.status-box {
  min-height: 3.25rem;
  padding: 1rem 1.1rem;
  border-radius: 1rem;
  background: linear-gradient(135deg, rgba(15, 23, 42, 0.06), rgba(56, 189, 248, 0.08));
  border: 1px solid rgba(15, 23, 42, 0.08);
  color: #0f172a;
}

.group-card {
  border-radius: 1rem;
  overflow: hidden;
}

.group-card .card-body {
  background: linear-gradient(180deg, rgba(255, 255, 255, 1), rgba(248, 250, 252, 1));
}

.group-members {
  max-height: 18rem;
  overflow: auto;
}

.group-members .list-group-item {
  border-color: rgba(15, 23, 42, 0.06);
  background: transparent;
}

.member-preview {
  max-height: 14rem;
  overflow: auto;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 0.85rem;
  background: rgba(255, 255, 255, 0.62);
}

.member-preview .list-group-item {
  border-color: rgba(15, 23, 42, 0.06);
  background: transparent;
}

.fixed-assignment-row {
  position: relative;
}

.fixed-member-input {
  min-height: 4.75rem;
  resize: vertical;
  white-space: pre-wrap;
}

.fixed-member-suggestions {
  box-shadow: 0 12px 24px rgba(15, 23, 42, 0.12);
}

#result-area:empty::before {
  content: "ここに班分け結果が表示されます。";
  display: block;
  width: 100%;
  padding: 2rem 1rem;
  text-align: center;
  color: #64748b;
  border: 1px dashed rgba(100, 116, 139, 0.35);
  border-radius: 1rem;
  background: rgba(255, 255, 255, 0.45);
}

@media (max-width: 991.98px) {
  .hero {
    padding-bottom: 2rem;
  }

  .hero-card {
    min-height: auto;
  }
}
