/* Gamification — badges, leaderboard, journey */

/* ── Journey page ─────────────────────────────────────────────────────────── */

.journey-page { text-align: center; }
.journey-section { margin-bottom: 32px; }
.journey-icon { font-size: 56px; margin-bottom: 12px; }

.journey-card {
  background: var(--cream);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 24px;
  margin-bottom: 20px;
  text-align: left;
}
.journey-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.score-inline { display: flex; align-items: baseline; gap: 2px; }
.score-big { font-family: var(--font-display); font-size: 40px; font-weight: 700; color: var(--accent); line-height: 1; }
.score-of { font-family: var(--font-display); font-size: 20px; font-weight: 300; color: var(--fg-muted); }
.risk-explain { margin-top: 12px; }
.risk-explain p { font-size: 15px; line-height: 1.65; color: var(--fg); }

.guideline-text { font-size: 15px; color: var(--fg); line-height: 1.6; margin-top: 8px; }

.slider-wrapper { margin-top: 16px; }
.limit-slider {
  width: 100%;
  height: 8px;
  appearance: none;
  -webkit-appearance: none;
  background: var(--bg-alt);
  border-radius: 4px;
  outline: none;
}
.limit-slider::-webkit-slider-thumb {
  appearance: none;
  -webkit-appearance: none;
  width: 24px;
  height: 24px;
  background: var(--accent);
  border-radius: 50%;
  cursor: pointer;
  border: 3px solid #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}
.slider-value {
  text-align: center;
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 600;
  color: var(--accent);
  margin-top: 12px;
}
.slider-labels {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--fg-muted);
  margin-top: 4px;
}

.reason-input {
  min-height: 60px;
  resize: vertical;
  margin-top: 8px;
}

.badge-preview {
  display: flex;
  align-items: center;
  gap: 16px;
  text-align: left;
}
.badge-preview-icon { font-size: 40px; }
.badge-preview-text strong { font-size: 15px; color: var(--fg); }
.badge-preview-text p { font-size: 13px; color: var(--fg-muted); margin-top: 4px; }

.objective-display { text-align: center; padding: 20px 0; }
.reason-display {
  font-style: italic;
  color: var(--fg-muted);
  font-size: 15px;
  text-align: center;
  margin-top: 12px;
}

.journey-form .form-actions { margin-top: 8px; }

/* ── Badges page ──────────────────────────────────────────────────────────── */

.badges-header { margin-bottom: 32px; }
.badge-counter { display: flex; align-items: baseline; justify-content: center; gap: 4px; margin-bottom: 8px; }
.counter-big { font-family: var(--font-display); font-size: 56px; font-weight: 700; color: var(--accent); line-height: 1; }
.counter-of { font-family: var(--font-display); font-size: 28px; color: var(--fg-muted); font-weight: 300; }

.badge-category { margin-bottom: 36px; }
.badge-category .section-title { display: flex; align-items: center; gap: 8px; }
.cat-icon { font-size: 20px; }

.badge-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 14px;
}

.badge-card {
  background: var(--cream);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 18px;
  display: flex;
  align-items: center;
  gap: 14px;
  transition: transform 0.15s, box-shadow 0.15s;
}
.badge-card.earned {
  border-color: var(--accent);
  background: linear-gradient(135deg, var(--cream) 0%, rgba(183,126,81,0.06) 100%);
}
.badge-card.locked { opacity: 0.55; }
.badge-card.earned:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(183,126,81,0.12); }

.badge-icon-circle {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 18px;
}
.earned .badge-icon-circle {
  background: var(--accent);
  color: #fff;
}
.locked .badge-icon-circle {
  background: var(--bg-alt);
  color: var(--fg-muted);
}
.badge-check { font-weight: 700; }

.badge-name { font-size: 14px; font-weight: 600; color: var(--fg); }
.badge-code { font-size: 11px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 2px; }
.badge-date { font-size: 11px; color: var(--accent); margin-top: 4px; }

/* ── Leaderboard ──────────────────────────────────────────────────────────── */

.lb-header { margin-bottom: 24px; }

.lb-filters { margin-bottom: 20px; }
.filter-form { display: flex; gap: 12px; }
.filter-select { max-width: 220px; }

.my-rank-card {
  border-radius: 16px;
  padding: 24px;
  margin-bottom: 20px;
  border: 2px solid var(--border);
  background: var(--cream);
}
.my-rank-card.tier-gold { border-color: #D4A843; background: linear-gradient(135deg, #FFFDF0, #FFF8E1); }
.my-rank-card.tier-silver { border-color: #A0A0A0; background: linear-gradient(135deg, #FAFAFA, #F0F0F0); }
.my-rank-card.tier-bronze { border-color: #CD7F32; background: linear-gradient(135deg, #FFF8F0, #FFECD2); }

.my-rank-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }

.my-rank-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; text-align: center; }
.rank-stat-big { font-family: var(--font-display); font-size: 28px; font-weight: 700; color: var(--accent); line-height: 1; }
.rank-stat-label { font-size: 11px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.08em; margin-top: 4px; }

.tier-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 4px 12px;
  border-radius: 10px;
}
.tier-gold { background: linear-gradient(135deg, #FFE082, #FFD54F); color: #6D4C00; }
.tier-silver { background: linear-gradient(135deg, #E0E0E0, #BDBDBD); color: #424242; }
.tier-bronze { background: linear-gradient(135deg, #FFCC80, #FFB74D); color: #6D3200; }
.tier-none { background: var(--bg-alt); color: var(--fg-muted); }

.privacy-toggle { margin-bottom: 20px; }
.toggle-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--fg-muted);
  cursor: pointer;
}
.toggle-label input { accent-color: var(--accent); width: 16px; height: 16px; }

.lb-table { margin-bottom: 24px; }
.lb-row {
  display: grid;
  grid-template-columns: 48px 1fr 60px 56px 56px 56px 72px;
  gap: 8px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 14px;
}
.lb-header-row {
  background: var(--bg-alt);
  border-radius: 10px 10px 0 0;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-muted);
}
.lb-me { background: rgba(183,126,81,0.06); }
.lb-rank { font-weight: 600; color: var(--fg-muted); }
.lb-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lb-sp { font-weight: 700; color: var(--accent); }
.lb-detail { font-size: 13px; color: var(--fg-muted); }

.lb-footer { text-align: center; margin: 24px 0; }
.lb-formula { font-size: 13px; color: var(--fg-muted); margin-bottom: 4px; }
.lb-tiers-note { font-size: 12px; color: var(--fg-muted); }

/* ── Dashboard gamification widgets ───────────────────────────────────────── */

.dash-gamification { margin-top: 32px; }
.gamification-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }

.gam-card {
  background: var(--cream);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 20px;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.15s, box-shadow 0.15s;
  display: block;
  color: inherit;
}
.gam-card:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(28,23,20,0.08); }
.gam-card-icon { font-size: 32px; margin-bottom: 8px; }
.gam-card-title { font-family: var(--font-display); font-size: 16px; font-weight: 600; color: var(--fg); }
.gam-card-desc { font-size: 13px; color: var(--fg-muted); margin-top: 4px; }

.streak-display {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-top: 8px;
}
.streak-item { text-align: center; }
.streak-num { font-family: var(--font-display); font-size: 24px; font-weight: 700; color: var(--accent); line-height: 1; }
.streak-label { font-size: 10px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.08em; margin-top: 2px; }

/* ── Responsive ───────────────────────────────────────────────────────────── */

@media (max-width: 600px) {
  .badge-grid { grid-template-columns: 1fr; }
  .my-rank-stats { grid-template-columns: repeat(2, 1fr); }
  .lb-row { grid-template-columns: 36px 1fr 48px 48px; }
  .lb-col.lb-detail:nth-child(n+5),
  .lb-col.lb-tier { display: none; }
  .gamification-cards { grid-template-columns: 1fr; }
  .slider-value { font-size: 22px; }
}
