/* ============================================================
   RADAR ACADEMY — shared shell styles
   HUD, mode jumper, toasts, badges, ranks, reset modal
   Used across:
     /stripe-radar-rule-library  (Generator)
     /stripe-radar-challenges    (Story Mode)
     /stripe-radar-drill         (Flashcards + Speed Drill)
     /stripe-radar-academy       (Profile hub)
   ============================================================ */

/* HUD — sticky progress bar below nav */
.hud{position:sticky;top:var(--nav-height);z-index:30;background:rgba(15,23,42,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#E2E8F0;border-bottom:1px solid rgba(255,255,255,.06);transition:transform .25s ease}
.hud__inner{max-width:var(--max-width);margin:0 auto;padding:.55rem 2rem;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.hud__rank{display:flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}
.hud__rank-dot{width:8px;height:8px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 3px rgba(201,79,46,.22);animation:hud-pulse 2.4s ease-in-out infinite}
@keyframes hud-pulse{0%,100%{box-shadow:0 0 0 3px rgba(201,79,46,.22)}50%{box-shadow:0 0 0 6px rgba(201,79,46,.08)}}
.hud__rank-label{color:#fff}
.hud__rank-sub{color:#94A3B8;text-transform:uppercase;letter-spacing:.06em;font-size:.65rem;display:block}
.hud__bar-wrap{flex:1;min-width:160px;display:flex;flex-direction:column;gap:.3rem}
.hud__bar-meta{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.65rem;color:#94A3B8;text-transform:uppercase;letter-spacing:.06em}
.hud__bar-meta b{color:#fff;font-weight:600}
.hud__bar{height:6px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden;position:relative}
.hud__bar-fill{height:100%;background:linear-gradient(90deg,#C94F2E 0%,#E07A52 100%);border-radius:3px;transition:width .6s cubic-bezier(.16,1,.3,1);box-shadow:0 0 12px rgba(201,79,46,.4);width:0%}
.hud__badges{display:flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.78rem;font-weight:600;color:#fff;white-space:nowrap;padding:.3rem .7rem;background:rgba(255,255,255,.06);border-radius:999px;border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .15s ease;text-decoration:none}
.hud__badges:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.16)}
.hud__badges svg{width:14px;height:14px;color:#C94F2E}
.hud__badges-num{color:#94A3B8;font-weight:500}
.hud__reset{font-family:var(--font-mono);font-size:.62rem;color:#64748B;background:none;border:none;cursor:pointer;text-transform:uppercase;letter-spacing:.06em;padding:.3rem .5rem;border-radius:4px;transition:color .15s ease}
.hud__reset:hover{color:#94A3B8}
.hud__bar-fill.is-pulsing{animation:bar-pulse .9s ease-out}
@keyframes bar-pulse{0%{box-shadow:0 0 12px rgba(201,79,46,.4)}40%{box-shadow:0 0 26px rgba(201,79,46,.9)}100%{box-shadow:0 0 12px rgba(201,79,46,.4)}}
.hud__rank-label.is-flashing{animation:rank-flash 1.2s ease-out}
@keyframes rank-flash{0%{color:#fff}50%{color:#FCD34D;text-shadow:0 0 12px rgba(252,211,77,.6)}100%{color:#fff}}
@media(max-width:768px){.hud__inner{padding:.5rem 1rem;gap:.75rem}.hud__rank-sub{display:none}}

/* Academy label and mode-jumper */
.academy-label{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .75rem;background:linear-gradient(135deg,rgba(201,79,46,.10),rgba(10,132,120,.10));border:1px solid rgba(201,79,46,.20);border-radius:999px;font-family:var(--font-mono);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--orange-deep)}
.academy-label::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 3px rgba(201,79,46,.20)}

.modes{display:flex;gap:.6rem;margin-top:1.5rem;flex-wrap:wrap}
.mode{display:inline-flex;align-items:center;gap:.65rem;padding:.7rem 1rem;background:var(--bg-base);border:1.5px solid rgba(15,23,42,.10);border-radius:10px;cursor:pointer;transition:all .15s ease;text-decoration:none;color:var(--text-primary);font-family:inherit;line-height:1}
.mode:hover{border-color:var(--orange);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.mode.is-current{border-color:var(--orange);background:var(--orange-soft);box-shadow:0 0 0 3px rgba(201,79,46,.06)}
.mode.is-current .mode__icon{background:var(--orange);color:#fff}
.mode__icon{width:32px;height:32px;border-radius:8px;background:var(--orange-soft);display:inline-flex;align-items:center;justify-content:center;color:var(--orange-deep);flex-shrink:0;transition:all .15s ease}
.mode__icon svg{width:18px;height:18px}
.mode__body{display:flex;flex-direction:column;gap:.15rem}
.mode__title{font-size:.85rem;font-weight:600;letter-spacing:-.01em}
.mode__sub{font-size:.7rem;color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em}

/* Section anchor used for jumps */
.section-anchor{padding-top:1rem;margin-top:1.5rem}
.section-heading{display:flex;align-items:flex-end;gap:.8rem;margin-top:0;flex-wrap:wrap}
.section-heading__num{font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted);font-weight:600;letter-spacing:.06em;padding-bottom:.2rem}

/* ============================================================
   TOASTS
   ============================================================ */
.toast-stack{position:fixed;bottom:1.5rem;right:1.5rem;z-index:60;display:flex;flex-direction:column-reverse;gap:.55rem;pointer-events:none;max-width:calc(100vw - 3rem)}
.toast{pointer-events:auto;background:#0F172A;color:#E2E8F0;border-radius:10px;padding:.7rem 1rem;display:flex;align-items:center;gap:.7rem;box-shadow:0 16px 48px rgba(15,23,42,.30);font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.02em;min-width:200px;border:1px solid rgba(255,255,255,.06);animation:toast-in .35s cubic-bezier(.16,1,.3,1)}
.toast.is-leaving{animation:toast-out .25s ease forwards}
@keyframes toast-in{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes toast-out{to{opacity:0;transform:translateX(40px)}}
.toast--xp{border-left:3px solid var(--orange)}
.toast--xp .toast__amount{color:var(--orange);font-weight:700}
.toast--xp .toast__reason{color:#94A3B8;font-weight:500;text-transform:none;letter-spacing:0;font-family:var(--font-sans);font-size:.78rem}
.toast--badge{border-left:3px solid var(--teal);padding:.85rem 1.1rem}
.toast--badge .toast__icon{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--orange),var(--orange-deep));display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}
.toast--badge .toast__icon svg{width:18px;height:18px}
.toast--badge .toast__title{color:var(--teal);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.toast--badge .toast__name{color:#fff;font-size:.92rem;font-weight:700;font-family:var(--font-sans);letter-spacing:-.01em;text-transform:none}
.toast--levelup{border-left:3px solid #F59E0B;padding:1rem 1.2rem}
.toast--levelup .toast__icon{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#F59E0B,#C94F2E);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 0 24px rgba(245,158,11,.4)}
.toast--levelup .toast__icon svg{width:20px;height:20px}
.toast--levelup .toast__title{color:#FCD34D;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.toast--levelup .toast__name{color:#fff;font-size:1rem;font-weight:700;font-family:var(--font-sans);letter-spacing:-.01em;text-transform:none}
@media(max-width:540px){.toast-stack{right:.85rem;bottom:.85rem;left:.85rem;max-width:none}.toast{min-width:0}}

/* ============================================================
   BADGES + RANKS
   ============================================================ */
.badges{margin-top:1.25rem;display:grid;grid-template-columns:repeat(2,1fr);gap:.85rem}
@media(min-width:540px){.badges{grid-template-columns:repeat(3,1fr)}}
@media(min-width:880px){.badges{grid-template-columns:repeat(4,1fr)}}
.badge{position:relative;background:var(--bg-base);border:1.5px solid rgba(15,23,42,.08);border-radius:12px;padding:1.1rem .8rem .9rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem;transition:all .2s ease;overflow:hidden}
.badge.is-earned{border-color:rgba(201,79,46,.25);background:linear-gradient(180deg,var(--bg-base) 0%,var(--orange-soft) 130%)}
.badge.is-earned:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(201,79,46,.12);border-color:var(--orange)}
.badge__medal{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;background:var(--bg-elev);color:var(--text-dim);transition:all .25s ease}
.badge__medal svg{width:24px;height:24px}
.badge.is-earned .badge__medal{background:linear-gradient(135deg,var(--orange) 0%,var(--orange-deep) 100%);color:#fff;box-shadow:0 6px 16px rgba(201,79,46,.32),inset 0 1px 0 rgba(255,255,255,.20)}
.badge.is-earned .badge__medal::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid rgba(201,79,46,.30);animation:medal-ring 2.4s ease-in-out infinite}
@keyframes medal-ring{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.15)}}
.badge__name{font-size:.82rem;font-weight:700;letter-spacing:-.01em;color:var(--text-primary);line-height:1.25}
.badge:not(.is-earned) .badge__name{color:var(--text-muted)}
.badge__desc{font-size:.7rem;color:var(--text-muted);line-height:1.4;font-family:var(--font-sans)}
.badge__lock{position:absolute;top:.55rem;right:.55rem;width:18px;height:18px;border-radius:50%;background:rgba(15,23,42,.06);display:flex;align-items:center;justify-content:center;color:var(--text-dim);opacity:.7}
.badge__lock svg{width:10px;height:10px}
.badge.is-earned .badge__lock{display:none}

.ranks{margin-top:1.25rem;display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;background:var(--bg-surface);border:1px solid rgba(15,23,42,.06);border-radius:12px;padding:1rem .85rem;overflow-x:auto}
.rank{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.4rem .3rem;border-radius:8px;text-align:center;min-width:0;transition:all .2s ease}
.rank.is-current{background:rgba(201,79,46,.06);box-shadow:inset 0 0 0 1px rgba(201,79,46,.20)}
.rank.is-passed{opacity:.55}
.rank__name{font-family:var(--font-mono);font-size:.7rem;font-weight:700;letter-spacing:.02em;color:var(--text-primary);line-height:1.2}
.rank.is-current .rank__name{color:var(--orange-deep)}
.rank__xp{font-family:var(--font-mono);font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}
.rank__bar{width:100%;height:3px;background:rgba(15,23,42,.08);border-radius:2px;overflow:hidden}
.rank__bar-fill{height:100%;background:var(--orange);border-radius:2px;width:0;transition:width .5s ease}
.rank.is-current .rank__bar-fill,.rank.is-passed .rank__bar-fill{width:100%}

/* ============================================================
   RESET CONFIRM MODAL
   ============================================================ */
.reset-confirm{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(4px);z-index:70;display:none;align-items:center;justify-content:center;padding:1rem}
.reset-confirm.is-open{display:flex;animation:fade-in .2s ease}
.reset-confirm__box{background:var(--bg-base);border-radius:14px;padding:1.5rem;max-width:380px;width:100%;text-align:center;box-shadow:var(--shadow-lg)}
.reset-confirm__title{font-size:1.1rem;font-weight:700;margin-bottom:.5rem}
.reset-confirm__desc{font-size:.88rem;color:var(--text-secondary);margin-bottom:1.2rem;line-height:1.5}
.reset-confirm__actions{display:flex;gap:.5rem;justify-content:center}
@keyframes fade-in{from{opacity:0}to{opacity:1}}

/* ============================================================
   COMMON SECTION SHELL
   ============================================================ */
.shell-hero{padding-top:calc(var(--nav-height) + 2.5rem);padding-bottom:1rem}
