/* Gametality Core: names, effects, frames, badges. Loaded only on pages that show member names. */
:root{
  --gt-accent:#d63bed;
  --gt-r-common:#9aa0a6;--gt-r-rare:#4a9eff;--gt-r-epic:#b266ff;--gt-r-legendary:#ff9f1c;--gt-r-mythic:#ff4ecd;
}
.gt-r-common{--r:var(--gt-r-common)}.gt-r-rare{--r:var(--gt-r-rare)}.gt-r-epic{--r:var(--gt-r-epic)}.gt-r-legendary{--r:var(--gt-r-legendary)}.gt-r-mythic{--r:var(--gt-r-mythic)}

/* ---------- names ---------- */
.gt-name{font-weight:700;text-decoration:none;color:inherit}
a.gt-name:hover{text-decoration:underline;text-underline-offset:3px}
.gt-staff{display:inline-block;font:700 10px/1 'Barlow',sans-serif;letter-spacing:1px;text-transform:uppercase;padding:3px 6px;border-radius:4px;background:linear-gradient(135deg,#ff4ecd,#8e24aa);color:#fff;vertical-align:middle}
.gt-deleted{opacity:.6;font-style:italic;font-weight:400}

/* ---------- animated effects: gradient text that moves. Animation is cheap (background-position only). ---------- */
.gt-fx{background-size:300% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:gt-flow 7s linear infinite;will-change:background-position}
@keyframes gt-flow{0%{background-position:0% 50%}100%{background-position:300% 50%}}
@keyframes gt-pulse{0%,100%{filter:drop-shadow(0 0 2px var(--g,#fff))}50%{filter:drop-shadow(0 0 9px var(--g,#fff))}}
@keyframes gt-flicker{0%,100%{opacity:1}6%{opacity:.55}8%{opacity:1}44%{opacity:1}46%{opacity:.4}48%{opacity:1}}
@keyframes gt-sway{0%,100%{background-position:0% 50%}50%{background-position:150% 50%}}

.gt-fx-cloudy{background-image:linear-gradient(90deg,#c7d3e6,#ffffff,#9db2d3,#ffffff,#c7d3e6,#ffffff);animation-duration:11s}
.gt-fx-sunshine{background-image:linear-gradient(90deg,#ffd54a,#ff9f1c,#fff1a8,#ffd54a,#ff9f1c,#fff1a8);--g:#ffb347;animation:gt-flow 6s linear infinite,gt-pulse 3.4s ease-in-out infinite}
.gt-fx-nature{background-image:linear-gradient(90deg,#52b043,#b8f36b,#2e9e5b,#52b043,#b8f36b,#2e9e5b);animation:gt-sway 8s ease-in-out infinite}
.gt-fx-water{background-image:linear-gradient(90deg,#4a9eff,#00e5ff,#1e6fd9,#4a9eff,#00e5ff,#1e6fd9);animation-duration:5s}
.gt-fx-frost{background-image:linear-gradient(90deg,#d9f4ff,#8fd3ff,#ffffff,#b8e6ff,#d9f4ff,#8fd3ff);--g:#9fdcff;animation:gt-flow 9s linear infinite,gt-pulse 4s ease-in-out infinite}
.gt-fx-lightning{background-image:linear-gradient(90deg,#ffffff,#ffe66d,#a99bff,#ffffff,#ffe66d,#a99bff);--g:#ffe66d;animation:gt-flow 3s linear infinite,gt-flicker 2.6s steps(1) infinite}
.gt-fx-darkenergy{background-image:linear-gradient(90deg,#b36bff,#5a1fb8,#ff4ecd,#7b2ff7,#b36bff,#5a1fb8);--g:#9b4dff;animation:gt-flow 6s linear infinite,gt-pulse 2.8s ease-in-out infinite}
.gt-fx-cosmic{background-image:linear-gradient(90deg,#ff4ecd,#4a9eff,#52e0b0,#ffd54a,#ff4ecd,#4a9eff);--g:#c77dff;background-size:400% 100%;animation:gt-flow 10s linear infinite,gt-pulse 5s ease-in-out infinite}

/* quiet modes: offscreen, over the cap, a visitor who prefers less motion, or a member who turned it off */
.gt-fx.gt-paused{animation-play-state:paused}
.gt-fx.gt-static{animation:none}
html.gt-reduce-fx .gt-fx{animation:none}
@media (prefers-reduced-motion:reduce){.gt-fx{animation:none}}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){.gt-fx{background:none;-webkit-text-fill-color:currentColor;color:inherit}}
@media (forced-colors:active){.gt-fx{background:none;-webkit-text-fill-color:currentColor;color:CanvasText;animation:none}}

/* ---------- avatars and frames ---------- */
.gt-avatar{display:inline-block;position:relative;flex:none;border-radius:50%;background:#1b1b1b;box-shadow:0 0 0 2px #2a2a2a}
.gt-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
.gt-frame-bronze{box-shadow:0 0 0 3px #b5651d,0 0 0 4px #5b3410}
.gt-frame-neon{box-shadow:0 0 0 2px #ff4ecd,0 0 12px 2px rgba(255,78,205,.65)}
.gt-frame-ember{box-shadow:0 0 0 2px #ff7a1a,0 0 14px 3px rgba(255,122,26,.6);animation:gt-ember 2.6s ease-in-out infinite}
@keyframes gt-ember{0%,100%{box-shadow:0 0 0 2px #ff7a1a,0 0 8px 1px rgba(255,122,26,.45)}50%{box-shadow:0 0 0 2px #ffb347,0 0 18px 4px rgba(255,160,40,.75)}}
.gt-frame-founding{box-shadow:0 0 0 3px #ffd54a,0 0 0 5px #8a5a00,0 0 16px 3px rgba(255,213,74,.6);animation:gt-gold 3.2s ease-in-out infinite}
@keyframes gt-gold{0%,100%{box-shadow:0 0 0 3px #ffd54a,0 0 0 5px #8a5a00,0 0 10px 2px rgba(255,213,74,.45)}50%{box-shadow:0 0 0 3px #fff1a8,0 0 0 5px #b57a00,0 0 22px 5px rgba(255,213,74,.85)}}
html.gt-reduce-fx .gt-avatar{animation:none}
@media (prefers-reduced-motion:reduce){.gt-avatar{animation:none}}

/* ---------- badges ---------- */
.gt-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#1c1c1c;border:1.5px solid var(--r,#777);font-size:11px;line-height:1;vertical-align:middle;margin-left:3px}
.gt-badge-ico{font-style:normal}
.gt-badge-ico::before{content:'\2605'}
.gt-ico-founding::before{content:'\1F451'}.gt-ico-early::before{content:'\1F680'}.gt-ico-veteran::before{content:'\1F6E1'}
.gt-ico-hunter::before{content:'\1F3AF'}.gt-ico-anniversary::before{content:'\1F382'}.gt-ico-forum::before{content:'\1F4AC'}
.gt-ico-competitive::before{content:'\2694'}.gt-ico-legend::before{content:'\1F31F'}
.gt-ico-bronze::before,.gt-ico-silver::before,.gt-ico-gold::before,.gt-ico-platinum::before,.gt-ico-event::before{content:'\1F3C6'}

/* ---------- picture badges (original artwork) ---------- */
.gt-ico-prestige,.gt-ico-league,.gt-ico-burger,.gt-ico-speedrunner,.gt-ico-droid,.gt-ico-dew,.gt-ico-staff{display:block;background-position:center;background-repeat:no-repeat;background-size:contain}
.gt-ico-prestige::before,.gt-ico-league::before,.gt-ico-burger::before,.gt-ico-speedrunner::before,.gt-ico-droid::before,.gt-ico-dew::before,.gt-ico-staff::before{content:none}
.gt-ico-prestige{background-image:url(../badges/prestige.gif)}.gt-ico-league{background-image:url(../badges/league.png)}.gt-ico-burger{background-image:url(../badges/burger.gif)}
.gt-ico-speedrunner{background-image:url(../badges/speedrunner.png)}.gt-ico-droid{background-image:url(../badges/droid.png)}.gt-ico-dew{background-image:url(../badges/dew.png)}.gt-ico-staff{background-image:url(../badges/staff.png)}
.gt-badge .gt-ico-prestige,.gt-badge .gt-ico-league,.gt-badge .gt-ico-burger,.gt-badge .gt-ico-speedrunner,.gt-badge .gt-ico-droid,.gt-badge .gt-ico-dew,.gt-badge .gt-ico-staff{width:100%;height:100%}
.gt-badge:has(.gt-ico-prestige,.gt-ico-league,.gt-ico-burger,.gt-ico-speedrunner,.gt-ico-droid,.gt-ico-dew,.gt-ico-staff){width:24px;height:24px;border-width:0;background:none}
.gt-feat .gt-ico-prestige,.gt-feat .gt-ico-league,.gt-feat .gt-ico-burger,.gt-feat .gt-ico-speedrunner,.gt-feat .gt-ico-droid,.gt-feat .gt-ico-dew,.gt-feat .gt-ico-staff{width:26px;height:26px}

/* ---------- hover and tap tooltips ---------- */
.gt-tip{position:relative;cursor:help;outline:none}
.gt-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translate(-50%,4px);width:max-content;max-width:min(260px,70vw);padding:.5rem .75rem;border-radius:9px;background:#050505;border:1px solid var(--r,#555);color:#fff;font:600 .82rem/1.35 'Barlow',system-ui,sans-serif;text-align:center;text-transform:none;letter-spacing:0;white-space:normal;box-shadow:0 8px 24px rgba(0,0,0,.6);opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:60}
.gt-tip:hover::after,.gt-tip:focus::after,.gt-tip:focus-visible::after{opacity:1;transform:translate(-50%,0)}
.gt-tip:focus-visible{box-shadow:0 0 0 2px #fff}

/* ---------- badge grid (all unlocked badges) ---------- */
.gt-wall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:.9rem .6rem}
.gt-wallb{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.5rem .2rem;text-align:center;border-radius:10px;transition:transform .15s,background .15s}
.gt-wallb:hover,.gt-wallb:focus{transform:translateY(-3px);background:rgba(255,255,255,.05)}
.gt-wallb:hover .gt-badge-ico,.gt-wallb:focus .gt-badge-ico{filter:drop-shadow(0 0 12px var(--r,#fff))}
.gt-wallb .gt-badge-ico{flex:none;width:68px;height:68px;display:flex;align-items:center;justify-content:center;font-size:34px;font-style:normal;filter:drop-shadow(0 4px 6px rgba(0,0,0,.55));transition:filter .15s}
.gt-wallb .gt-badge-ico[class*="gt-ico-"]:not(.gt-ico-prestige):not(.gt-ico-league):not(.gt-ico-burger):not(.gt-ico-speedrunner):not(.gt-ico-droid):not(.gt-ico-dew):not(.gt-ico-staff){border-radius:50%;background:#1f1f1f}
.gt-wallb b{font:700 .72rem 'Barlow',sans-serif;letter-spacing:.8px;text-transform:uppercase;color:#d8d8d8;line-height:1.2}
.gt-wall{margin:.4rem 0 1.2rem}
@media (prefers-reduced-motion:reduce){.gt-wallb,.gt-tip::after,.gt-wallb .gt-badge-ico{transition:none}}

.gt-ico-speedrunner{image-rendering:pixelated}
.gt-wall-title{font:800 .8rem 'Barlow',sans-serif;letter-spacing:2px;text-transform:uppercase;color:#cfd3dc;margin:0 0 .6rem;padding:0}
