/* ===================== Points / wallet ===================== */
.wallet { padding-bottom: 20px; }
.wallet-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: auto 1fr auto; gap: 18px 28px; align-items: center; margin: 22px 0; padding: clamp(22px, 4vw, 36px);
  border-radius: 26px; border: 1px solid rgba(255, 200, 61, .35);
  background: radial-gradient(600px 220px at 0% 0%, rgba(255, 200, 61, .22), transparent 70%), radial-gradient(500px 260px at 100% 100%, rgba(255, 61, 139, .18), transparent 70%), var(--panel); }
.wallet-hero__balance { display: flex; align-items: center; gap: 16px; }
.wallet-hero__label { display: block; color: var(--muted); font-weight: 700; font-size: .9rem; }
.wallet-hero__value { display: block; font: 800 clamp(2.2rem, 5vw, 3.4rem)/1 var(--font-display); font-variant-numeric: tabular-nums; }
.wallet-hero__text { margin: 0; color: var(--muted); max-width: 52ch; }
.wallet-hero__actions { display: flex; gap: 10px; flex-wrap: wrap; }
@media (max-width: 900px) { .wallet-hero { grid-template-columns: 1fr; } }
.wallet-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); margin-bottom: 20px; }
.wallet-grid .panel + .panel { margin-top: 0; }
.wallet > .panel { margin-bottom: 20px; }

/* daily streak */
.streak { list-style: none; margin: 4px 0 18px; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.streak__day { position: relative; display: grid; justify-items: center; gap: 4px; padding: 10px 4px; border-radius: 14px; border: 1px solid var(--line); background: var(--ink-2); text-align: center; }
.streak__n { font-size: .7rem; color: var(--muted); font-weight: 700; }
.streak__icon { height: 22px; font-size: 1.05rem; font-weight: 900; color: var(--green); }
.streak__day strong { font: 800 .82rem/1 var(--font-display); }
.streak__day.is-done { background: rgba(61, 220, 151, .12); border-color: rgba(61, 220, 151, .45); }
.streak__day.is-today { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(255, 200, 61, .25); animation: today 1.6s ease-in-out infinite; }
.streak__day.is-chest { background: linear-gradient(160deg, rgba(255, 200, 61, .22), rgba(255, 61, 139, .12)); }
.streak__day.just-done { animation: pop .6s cubic-bezier(.3, 1.6, .5, 1); }
@keyframes today { 50% { transform: translateY(-3px); } }
@keyframes pop { 40% { transform: scale(1.15); } }
@media (max-width: 520px) { .streak { gap: 4px; } .streak__n { font-size: .6rem; } .streak__day strong { font-size: .7rem; } }
.daily__action { margin-bottom: 12px; }
.daily__claim { width: 100%; animation: glow 1.8s ease-in-out infinite; }
@keyframes glow { 50% { box-shadow: 0 0 0 6px rgba(255, 200, 61, .25), 0 12px 30px -10px rgba(255, 200, 61, .8); } }
.daily__wait { margin: 0; padding: 14px; border-radius: 14px; background: var(--ink-2); text-align: center; font-weight: 600; }

/* vote bar */
.votebar { display: flex; align-items: center; gap: 6px; margin: 6px 0 14px; }
.votebar i { flex: 1; height: 18px; border-radius: 6px; background: var(--ink-2); border: 1px solid var(--line); }
.votebar i.on { background: linear-gradient(180deg, var(--pink-2), var(--pink)); border-color: var(--pink); }
.votebar .coin { width: 28px; height: 28px; }

/* earn / spend lists */
.earn { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.earn li { display: grid; grid-template-columns: 92px 1fr; gap: 12px; align-items: start; }
.earn__amt { display: grid; place-items: center; min-height: 34px; border-radius: 10px; background: rgba(255, 200, 61, .14); color: var(--gold); font: 800 .85rem/1 var(--font-display); }
.earn--spend .earn__amt { background: rgba(127, 127, 127, .1); font-size: 1.1rem; }
:root[data-theme="light"] .earn__amt { color: #8a5d00; }

/* achievements */
.badges { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.badge { position: relative; display: grid; gap: 2px; padding: 14px 14px 12px; border-radius: 16px; border: 1px solid var(--line); background: var(--ink-2); opacity: .55; filter: grayscale(.8); }
.badge.is-on { opacity: 1; filter: none; border-color: rgba(255, 200, 61, .5); background: linear-gradient(160deg, rgba(255, 200, 61, .12), var(--ink-2)); }
.badge__icon { font-size: 1.6rem; line-height: 1.2; }
.badge small { color: var(--muted); line-height: 1.35; }
.badge__reward { position: absolute; top: 12px; right: 12px; font: 800 .72rem/1 var(--font-display); color: var(--gold); }
.amt-plus { color: var(--green); } .amt-minus { color: var(--red); }

/* flying coins */
.coin-fly { position: absolute; z-index: 95; pointer-events: none; animation: coinfly 1.2s cubic-bezier(.2, .7, .3, 1) forwards; }
@keyframes coinfly { from { transform: translate(0, 0) scale(.6); opacity: 1; } to { transform: translate(var(--dx), var(--dy)) scale(1.1) rotate(360deg); opacity: 0; } }
