/* ═══════════════════════════════════════════════════════════════════
   GAMERLOG DESIGN SYSTEM — gamerlog.css
   Arquivo: wwwroot/css/gamerlog.css

   Índice:
    01. Design Tokens (CSS Variables)
    02. Reset & Base
    03. Efeitos Globais (Scanlines, Grid BG)
    04. Cursor Personalizado
    05. Cantos HUD
    06. Tipografia
    07. Botões
    08. Badges & Tags
    09. Cards
    10. Formulários & Inputs
    11. Navegação
    12. Modais
    13. Alertas & Toasts
    14. Tabelas
    15. Progresso & XP Bars
    16. Dividers
    17. Seções & Layout
    18. Utilitários (Glow, Glitch, Shimmer)
    19. Animações (@keyframes)
    20. Responsivo
═══════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────────
   01. DESIGN TOKENS
───────────────────────────────────────────────────────────────── */
:root {
    /* Paleta principal */
    --gl-navy: #080f1c;
    --gl-navy-2: #0d1829;
    --gl-navy-3: #112038;
    --gl-navy-4: #0f1f38;
    --gl-blue: #2563eb;
    --gl-blue-b: #3b82f6;
    --gl-blue-c: #60a5fa;
    --gl-cyan: #06b6d4;
    --gl-cyan-dim: #0891b2;
    --gl-magenta: #e879f9;
    --gl-magenta-d: #a21caf;
    --gl-yellow: #fbbf24;
    --gl-yellow-d: #d97706;
    --gl-green: #22c55e;
    --gl-green-d: #16a34a;
    --gl-red: #f87171;
    --gl-red-d: #dc2626;
    --gl-white: #e8f0ff;
    --gl-muted: #4a6080;
    --gl-muted-2: #7a90b0;
    --gl-card: #0a1422;
    --gl-card-2: #0c1c32;
    /* Glows */
    --gl-glow-cyan: rgba(6, 182, 212, 0.30);
    --gl-glow-blue: rgba(37, 99, 235, 0.35);
    --gl-glow-magenta: rgba(232, 121, 249, 0.30);
    --gl-glow-yellow: rgba(251, 191, 36, 0.25);
    --gl-glow-green: rgba(34, 197, 94, 0.25);
    --gl-glow-red: rgba(248, 113, 113, 0.25);
    /* Bordas semânticas */
    --gl-border: rgba(59, 130, 246, 0.18);
    --gl-border-cyan: rgba(6, 182, 212, 0.20);
    --gl-border-subtle: rgba(255, 255, 255, 0.06);
    /* Tipografia */
    --gl-font-display: 'Orbitron', monospace;
    --gl-font-mono: 'Share Tech Mono', monospace;
    --gl-font-body: 'Rajdhani', sans-serif;
    /* Espaçamento */
    --gl-radius: 0px; /* design intencional: sem border-radius */
    --gl-clip-sm: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
    --gl-clip-md: polygon(10px 0%, 100% 0%, calc(100% - 10px) 100%, 0% 100%);
    --gl-clip-lg: polygon(14px 0%, 100% 0%, calc(100% - 14px) 100%, 0% 100%);
    /* Transições */
    --gl-transition: all .2s ease;
    --gl-transition-slow: all .4s ease;
}

/* ─────────────────────────────────────────────────────────────────
   02. RESET & BASE
───────────────────────────────────────────────────────────────── */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html { scroll-behavior: smooth; }

body {
    background: var(--gl-navy);
    color: var(--gl-white);
    font-family: var(--gl-font-body);
    overflow-x: hidden;
}

/* ─────────────────────────────────────────────────────────────────
   03. EFEITOS GLOBAIS
───────────────────────────────────────────────────────────────── */

/* Scanlines sobre toda a página */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    background: repeating-linear-gradient(
        0deg,
        transparent,
        transparent 2px,
        rgba(0, 0, 0, 0.06) 2px,
        rgba(0, 0, 0, 0.06) 4px
    );
    pointer-events: none;
    z-index: 900;
}

a {
    text-decoration: none !important;
}

/* Grade de perspectiva fixa no fundo */
.bg-grid {
    position: fixed;
    inset: 0;
    z-index: 0;
    background-image:
        linear-gradient(rgba(6, 182, 212, 0.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(6, 182, 212, 0.04) 1px, d 1px);
    background-size: 40px 40px;
    pointer-events: none;
}

/* Versão densa para seções específicas */
.bg-grid-dense {
    background: var(--gl-navy-4) !important;
    background-size: 20px 20px;
}

.bg-gl-navy {
    background: var(--gl-navy-4) !important;
    background-size: 20px 20px;
    background-color: var(--gl-navy-3);
}


/* ─────────────────────────────────────────────────────────────────
   05. CANTOS HUD
───────────────────────────────────────────────────────────────── */
.hud-corner {
    position: fixed;
    width: 60px;
    height: 60px;
    z-index: 50;
    pointer-events: none;
}

.hud-tl { top: 16px;    left: 16px;  border-top:    2px solid var(--gl-cyan); border-left:  2px solid var(--gl-cyan); }
.hud-tr { top: 16px;    right: 16px; border-top:    2px solid var(--gl-cyan); border-right: 2px solid var(--gl-cyan); }
.hud-bl { bottom: 16px; left: 16px;  border-bottom: 2px solid var(--gl-cyan); border-left:  2px solid var(--gl-cyan); }
.hud-br { bottom: 16px; right: 16px; border-bottom: 2px solid var(--gl-cyan); border-right: 2px solid var(--gl-cyan); }

/* ─────────────────────────────────────────────────────────────────
   06. TIPOGRAFIA
───────────────────────────────────────────────────────────────── */

/* Títulos display */
.gl-display {
    font-family: var(--gl-font-display);
    font-weight: 900;
    font-size: clamp(3rem, 8vw, 7rem);
    line-height: 1;
    letter-spacing: -.02em;
}

.gl-h1 { font-family: var(--gl-font-display); font-weight: 700; font-size: clamp(1.8rem, 4vw, 2.8rem); line-height: 1.1; }
.gl-h2 { font-family: var(--gl-font-display); font-weight: 700; font-size: clamp(1.4rem, 3vw, 2rem);   line-height: 1.15; }
.gl-h3 { font-family: var(--gl-font-display); font-weight: 600; font-size: clamp(1rem, 2vw, 1.3rem);   line-height: 1.2; }

/* Textos mono (HUD / system) */
.gl-mono      { font-family: var(--gl-font-mono); letter-spacing: .08em; }
.gl-mono-sm   { font-family: var(--gl-font-mono); font-size: .7rem;  letter-spacing: .12em; }
.gl-mono-xs   { font-family: var(--gl-font-mono); font-size: .6rem;  letter-spacing: .15em; }
.gl-eyebrow   { font-family: var(--gl-font-mono); font-size: .65rem; letter-spacing: .25em; text-transform: uppercase; color: var(--gl-cyan); }
.gl-eyebrow::before { content: '// '; color: var(--gl-muted); }

/* Cores de texto */
.gl-text-cyan    { color: var(--gl-cyan) !important; }
.gl-text-blue    { color: var(--gl-blue-b) !important; }
.gl-text-magenta { color: var(--gl-magenta) !important; }
.gl-text-yellow  { color: var(--gl-yellow) !important; }
.gl-text-green   { color: var(--gl-green) !important; }
.gl-text-red     { color: var(--gl-red) !important; }
.gl-text-muted   { color: var(--gl-muted-2) !important; }
.gl-text-white   { color: var(--gl-white) !important; }

/* Gradiente de texto */
.gl-text-gradient {
    background: linear-gradient(90deg, var(--gl-blue-b), var(--gl-cyan));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.gl-text-gradient-magenta {
    background: linear-gradient(90deg, var(--gl-magenta), var(--gl-cyan));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* ─────────────────────────────────────────────────────────────────
   07. BOTÕES
───────────────────────────────────────────────────────────────── */

/* Base compartilhada */
[class*="btn-gl"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    font-family: var(--gl-font-display);
    font-weight: 700;
    font-size: .72rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    text-decoration: none;
    border: none;
    position: relative;
    overflow: hidden;
    transition: var(--gl-transition);
    white-space: nowrap;
}

/* ── Primário (gradiente azul → cyan) ── */
.btn-gl-primary {
    background: linear-gradient(135deg, var(--gl-blue), var(--gl-cyan-dim));
    color: var(--gl-white);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

.btn-gl-primary::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(255,255,255,.15) 0%, transparent 60%);
    pointer-events: none;
}

.btn-gl-primary:hover {
    color: var(--gl-white);
    box-shadow: 0 0 30px var(--gl-glow-cyan), 0 4px 20px var(--gl-glow-blue);
    transform: translateY(-2px);
}


/* ── Outline sutil ── */
.btn-gl-outline {
    background: transparent;
    color: var(--gl-muted-2);
    padding: .72rem 1.8rem;
    border: 1px solid rgba(255,255,255,.1);
    clip-path: var(--gl-clip-md);
    font-family: var(--gl-font-mono);
    font-weight: 400;
    letter-spacing: .1em;
}

.btn-gl-outline:hover { color: var(--gl-white); border-color: rgba(255,255,255,.3); }

/* ── Danger (vermelho) ── */
.btn-gl-danger {
    background: linear-gradient(135deg, var(--gl-red-d), var(--gl-red));
    color: var(--gl-white);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

.btn-gl-danger:hover {
    color: var(--gl-white);
    box-shadow: 0 0 25px var(--gl-glow-red);
    transform: translateY(-2px);
}

/* ── Success (verde) ── */
.btn-gl-success {
    background: linear-gradient(135deg, var(--gl-green-d), var(--gl-green));
    color: var(--gl-navy);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

.btn-gl-success:hover {
    color: var(--gl-navy);
    box-shadow: 0 0 25px var(--gl-glow-green);
    transform: translateY(-2px);
}

/* ── Warning (amarelo) ── */
.btn-gl-warning {
    background: linear-gradient(135deg, var(--gl-yellow-d), var(--gl-yellow));
    color: var(--gl-navy);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

.btn-gl-warning:hover {
    color: var(--gl-navy);
    box-shadow: 0 0 25px var(--gl-glow-yellow);
    transform: translateY(-2px);
}

/* ── Ghost (sem fundo, sem borda) ── */
.btn-gl-ghost {
    background: transparent;
    color: var(--gl-muted-2);
    padding: .5rem 1rem;
    font-family: var(--gl-font-mono);
    font-weight: 400;
    font-size: .78rem;
    letter-spacing: .08em;
    border: none;
    clip-path: none;
    transition: color .2s;
}

.btn-gl-ghost:hover { color: var(--gl-cyan); }

/* ── Icon Button ── */
.btn-gl-icon {
    background: transparent;
    color: var(--gl-muted-2);
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid var(--gl-border-subtle);
    clip-path: var(--gl-clip-sm);
    font-size: 1rem;
}

.btn-gl-icon:hover {
    color: var(--gl-cyan);
    border-color: var(--gl-cyan);
    box-shadow: 0 0 12px var(--gl-glow-cyan);
}

/* ── Tamanhos ── */
.btn-gl-sm  { padding: .4rem 1.2rem; font-size: .62rem; clip-path: var(--gl-clip-sm); }
.btn-gl-lg  { padding: 1rem 2.8rem;  font-size: .82rem; clip-path: var(--gl-clip-lg); }
.btn-gl-xl  { padding: 1.2rem 3.5rem; font-size: .9rem; clip-path: var(--gl-clip-lg); }
.btn-gl-w100 { width: 100%; justify-content: center; }

/* ── Disabled ── */
[class*="btn-gl"]:disabled,
[class*="btn-gl"].disabled {
    opacity: .35;
    pointer-events: none;
    filter: grayscale(.5);
}

/* ── Loading spinner dentro de botão ── */
.btn-gl-spinner {
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255,255,255,.3);
    border-top-color: var(--gl-white);
    border-radius: 50%;
    animation: glSpin .7s linear infinite;
}

@keyframes glSpin { to { transform: rotate(360deg); } }

/* ─────────────────────────────────────────────────────────────────
   08. BADGES & TAGS
───────────────────────────────────────────────────────────────── */
[class*="gl-badge"] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-family: var(--gl-font-mono);
    font-size: .58rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    padding: .18rem .55rem;
    white-space: nowrap;
}

.gl-badge-cyan    { color: var(--gl-cyan);    border: 1px solid rgba(6,   182, 212, .35); background: rgba(6,   182, 212, .08); }
.gl-badge-blue    { color: var(--gl-blue-b);  border: 1px solid rgba(59,  130, 246, .35); background: rgba(59,  130, 246, .08); }
.gl-badge-magenta { color: var(--gl-magenta); border: 1px solid rgba(232, 121, 249, .35); background: rgba(232, 121, 249, .08); }
.gl-badge-yellow  { color: var(--gl-yellow);  border: 1px solid rgba(251, 191,  36, .35); background: rgba(251, 191,  36, .08); }
.gl-badge-green   { color: var(--gl-green);   border: 1px solid rgba(34,  197,  94, .35); background: rgba(34,  197,  94, .08); }
.gl-badge-red     { color: var(--gl-red);     border: 1px solid rgba(248, 113, 113, .35); background: rgba(248, 113, 113, .08); }
.gl-badge-muted   { color: var(--gl-muted-2); border: 1px solid rgba(255, 255, 255, .10); background: rgba(255, 255, 255, .04); }

/* Dot indicador de status */
.gl-badge-dot::before {
    content: '';
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
    flex-shrink: 0;
    animation: blink 2s infinite;
}

/* Rarity badges (achievements) */
.gl-rarity-common  { color: var(--gl-muted-2); border: 1px solid rgba(255,255,255,.1); }
.gl-rarity-rare    { color: var(--gl-cyan);    border: 1px solid rgba(6,182,212,.3); }
.gl-rarity-epic    { color: var(--gl-magenta); border: 1px solid rgba(232,121,249,.3); }
.gl-rarity-legend  { color: var(--gl-yellow);  border: 1px solid rgba(251,191,36,.3); }

/* Tag de status de jogo */
.gl-status { font-family: var(--gl-font-mono); font-size: .55rem; letter-spacing: .1em; padding: .1rem .4rem; text-transform: uppercase; }
.gl-status-playing  { color: var(--gl-green);   border: 1px solid rgba(34,  197, 94, .3); }
.gl-status-done     { color: var(--gl-cyan);    border: 1px solid rgba(6,   182,212, .3); }
.gl-status-paused   { color: var(--gl-yellow);  border: 1px solid rgba(251, 191, 36, .3); }
.gl-status-wishlist { color: var(--gl-magenta); border: 1px solid rgba(232, 121,249, .3); }
.gl-status-dropped  { color: var(--gl-red);     border: 1px solid rgba(248, 113,113, .3); }

/* ─────────────────────────────────────────────────────────────────
   09. CARDS
───────────────────────────────────────────────────────────────── */

/* Card base */
.gl-card {
    background: var(--gl-card);
    border: 1px solid var(--gl-border-subtle);
    position: relative;
    overflow: hidden;
    transition: var(--gl-transition);
}

.gl-card:hover { background: var(--gl-card-2); }

/* Variantes de borda superior colorida */
.gl-card-cyan::before,
.gl-card-blue::before,
.gl-card-magenta::before,
.gl-card-yellow::before,
.gl-card-green::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 2px;
}

.gl-card-cyan::before    { background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent); }
.gl-card-blue::before    { background: linear-gradient(90deg, transparent, var(--gl-blue-b), transparent); }
.gl-card-magenta::before { background: linear-gradient(90deg, transparent, var(--gl-magenta), transparent); }
.gl-card-yellow::before  { background: linear-gradient(90deg, transparent, var(--gl-yellow), transparent); }
.gl-card-green::before   { background: linear-gradient(90deg, transparent, var(--gl-green), transparent); }

/* Card com hover animado (borda deslizante) */
.gl-card-hover::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .4s ease;
}

.gl-card-hover:hover::before { transform: scaleX(1); }
.gl-card-hover:hover { background: var(--gl-card-2); border-color: var(--gl-border-cyan); }

/* Card glow */
.gl-card-glow:hover { box-shadow: 0 0 20px var(--gl-glow-cyan); }

/* Card com clip hexagonal (estilo achievement) */
.gl-card-hex {
    clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 16px 100%, 0 calc(100% - 16px));
}

/* Card de jogo (game row) */
.gl-game-row {
    display: grid;
    grid-template-columns: 40px 1fr auto;
    gap: .8rem;
    align-items: center;
    padding: .75rem .9rem;
    border: 1px solid transparent;
    background: transparent;
    transition: var(--gl-transition);
}

.gl-game-row:hover  { background: rgba(6,182,212,.05); border-color: rgba(6,182,212,.15); }
.gl-game-row.active { background: rgba(37,99,235,.12); border-color: rgba(59,130,246,.25); }

/* Ícone/thumb do jogo */
.gl-game-thumb {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    background: rgba(255,255,255,.04);
    border: 1px solid var(--gl-border-subtle);
}

/* Stat card (número grande + label) */
.gl-stat-card {
    background: rgba(6,182,212,.03);
    border: 1px solid rgba(6,182,212,.1);
    padding: 1.5rem 1rem;
    text-align: center;
    position: relative;
    transition: background .3s;
}

.gl-stat-card:hover { background: rgba(6,182,212,.07); }

.gl-stat-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent);
    opacity: 0;
    transition: opacity .3s;
}

.gl-stat-card:hover::before { opacity: 1; }

.gl-stat-num {
    font-family: var(--gl-font-display);
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: 700;
    color: var(--gl-cyan);
    display: block;
    text-shadow: 0 0 20px rgba(6,182,212,.3);
}

.gl-stat-label {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-muted);
    letter-spacing: .12em;
    text-transform: uppercase;
    margin-top: .3rem;
    display: block;
}

/* Achievement card */
.gl-ach-card {
    background: var(--gl-card);
    border: 1px solid rgba(255,255,255,.05);
    padding: 1.5rem 1.2rem;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all .3s;
}

.gl-ach-card:hover {
    border-color: rgba(251,191,36,.3);
    box-shadow: 0 0 20px rgba(251,191,36,.08);
    transform: translateY(-2px);
}

.gl-ach-card.locked { opacity: .35; filter: grayscale(1); }
.gl-ach-card.locked:hover { opacity: .5; }

.gl-ach-icon {
    width: 52px; height: 52px;
    margin: 0 auto 1rem;
    background: linear-gradient(135deg, #1c1400, #3d2c00);
    border: 1px solid rgba(251,191,36,.25);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

.gl-ach-icon-sm {
    width: 44px; height: 44px;
    background: linear-gradient(135deg, #92400e, var(--gl-yellow));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

.gl-ach-name {
    font-family: var(--gl-font-display);
    font-size: .75rem;
    font-weight: 700;
    color: var(--gl-white);
    margin-bottom: .3rem;
    letter-spacing: .05em;
}

.gl-ach-desc { font-size: .8rem; color: var(--gl-muted-2); line-height: 1.4; }

/* ─────────────────────────────────────────────────────────────────
   10. FORMULÁRIOS & INPUTS
───────────────────────────────────────────────────────────────── */

/* Label estilo HUD */
.gl-label {
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    color: var(--gl-cyan);
    letter-spacing: .15em;
    text-transform: uppercase;
    display: block;
    margin-bottom: .35rem;
}

/* Input base */
.gl-input {
    width: 100%;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(6,182,212,.15);
    color: var(--gl-white);
    padding: .75rem 1rem;
    font-family: var(--gl-font-mono);
    font-size: .88rem;
    outline: none;
    transition: border-color .2s, background .2s, box-shadow .2s;
    clip-path: var(--gl-clip-sm);
    border-radius: 0;
}

.gl-input::placeholder { color: var(--gl-muted); }

.gl-input:focus {
    border-color: var(--gl-cyan);
    background: rgba(6,182,212,.05);
    box-shadow: 0 0 0 1px rgba(6,182,212,.15);
}

/* Variantes de cor do input */
.gl-input-error { border-color: var(--gl-red) !important; }
.gl-input-error:focus { box-shadow: 0 0 0 1px rgba(248,113,113,.2) !important; }

.gl-input-success { border-color: var(--gl-green) !important; }
.gl-input-success:focus { box-shadow: 0 0 0 1px rgba(34,197,94,.2) !important; }

/* Textarea */
.gl-textarea {
    resize: vertical;
    min-height: 100px;
}

/* Select */
.gl-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2306b6d4' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}

/* Checkbox / Radio estilizados */
.gl-check-group { display: flex; align-items: center; gap: .6rem; }

.gl-checkbox,
.gl-radio {
    width: 16px;
    height: 16px;
    appearance: none;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(6,182,212,.3);
    flex-shrink: 0;
    cursor: pointer;
    position: relative;
    transition: all .2s;
}

.gl-radio { border-radius: 50%; }

.gl-checkbox:checked,
.gl-radio:checked {
    background: var(--gl-cyan);
    border-color: var(--gl-cyan);
    box-shadow: 0 0 8px var(--gl-glow-cyan);
}

.gl-checkbox:checked::after {
    content: '✓';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    color: var(--gl-navy);
    font-size: .65rem;
    font-weight: 700;
}

/* Toggle switch */
.gl-toggle-wrap { display: flex; align-items: center; gap: .75rem; cursor: pointer; }

.gl-toggle {
    position: relative;
    width: 40px;
    height: 22px;
    flex-shrink: 0;
}

.gl-toggle input { opacity: 0; width: 0; height: 0; }

.gl-toggle-slider {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.1);
    transition: .3s;
    cursor: pointer;
}

.gl-toggle-slider::before {
    content: '';
    position: absolute;
    width: 14px; height: 14px;
    left: 3px; bottom: 3px;
    background: var(--gl-muted);
    transition: .3s;
}

.gl-toggle input:checked + .gl-toggle-slider { background: rgba(6,182,212,.2); border-color: var(--gl-cyan); }
.gl-toggle input:checked + .gl-toggle-slider::before { transform: translateX(18px); background: var(--gl-cyan); box-shadow: 0 0 8px var(--gl-glow-cyan); }

/* Grupo de campo */
.gl-field { margin-bottom: 1rem; }

/* Mensagens de validação */
.gl-field-error   { font-family: var(--gl-font-mono); font-size: .62rem; color: var(--gl-red);   letter-spacing: .08em; margin-top: .3rem; display: block; }
.gl-field-success { font-family: var(--gl-font-mono); font-size: .62rem; color: var(--gl-green); letter-spacing: .08em; margin-top: .3rem; display: block; }
.gl-field-hint    { font-family: var(--gl-font-mono); font-size: .62rem; color: var(--gl-muted); letter-spacing: .08em; margin-top: .3rem; display: block; }

/* ─────────────────────────────────────────────────────────────────
   11. NAVEGAÇÃO
───────────────────────────────────────────────────────────────── */
/* ── Container da navbar ── */
.gl-nav {
    padding: .9rem 2rem;
    background: rgba(8, 15, 28, .97) !important;
    border-bottom: 1px solid var(--gl-border-subtle);
    backdrop-filter: blur(8px);
    z-index: 1030;
    -webkit-backdrop-filter: blur(8px);
}

/* Variante gradiente (landing / hero) */
.gl-nav-gradient {
    background: linear-gradient(to bottom, rgba(8,15,28,.98) 0%, rgba(8,15,28,0) 100%) !important;
    border-bottom: none;
}

/* ── Logo / Brand ── */
.gl-nav .navbar-brand,
.gl-nav-logo {
    font-family: var(--gl-font-display);
    font-weight: 900;
    font-size: 1.1rem;
    letter-spacing: .12em;
    color: var(--gl-white) !important;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: .5rem;
}

    .gl-nav .navbar-brand:hover,
    .gl-nav-logo:hover {
        color: var(--gl-white) !important;
    }

    .gl-nav-logo .logo-bracket {
        color: var(--gl-cyan);
        font-size: 1.25rem;
        line-height: 1;
    }

/* ── Links de navegação ── */
.gl-nav .nav-link,
.gl-nav-link {
    font-family: var(--gl-font-mono);
    font-size: .72rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--gl-muted-2) !important;
    text-decoration: none;
    padding: .35rem .1rem !important;
    margin: 0 .75rem;
    position: relative;
    transition: color .2s;
}

    .gl-nav .nav-link:hover,
    .gl-nav .nav-link:focus,
    .gl-nav-link:hover {
        color: var(--gl-cyan) !important;
    }

    /* Sublinhado ativo */
    .gl-nav .nav-link.active,
    .gl-nav-link.active {
        color: var(--gl-cyan) !important;
    }

        .gl-nav .nav-link.active::after,
        .gl-nav-link.active::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 1px;
            background: var(--gl-cyan);
            box-shadow: 0 0 6px var(--gl-glow-cyan);
        }

/* ── Toggler (hambúrguer) ── */
.gl-nav .navbar-toggler {
    border: 1px solid rgba(6, 182, 212, .25);
    padding: .35rem .55rem;
    border-radius: 0;
    transition: border-color .2s, background .2s;
}

    .gl-nav .navbar-toggler:hover,
    .gl-nav .navbar-toggler:focus {
        border-color: var(--gl-cyan);
        background: rgba(6, 182, 212, .06);
        box-shadow: none;
    }

/* Ícone do toggler recolorido */
.gl-nav .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(6,182,212,0.85)' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}

/* ── Collapse (menu expandido em mobile) ── */
.gl-nav .navbar-collapse {
    /* sem estilo extra em desktop — Bootstrap cuida do flex */
}

/* Em mobile (quando colapsa), o menu vira uma lista vertical */
@media (max-width: 991.98px) {
    .gl-nav {
        padding: .75rem 1.25rem;
        z-index: 1030;
    }

        .gl-nav .navbar-collapse {
            background: var(--gl-card);
            border: 1px solid rgba(6, 182, 212, .15);
            border-top: 2px solid var(--gl-cyan);
            margin-top: .6rem;
            padding: .5rem 0;
            animation: glDropdownIn .2s ease both;
        }

        .gl-nav .nav-link,
        .gl-nav-link {
            display: block;
            margin: 0;
            padding: .55rem 1.25rem !important;
            border-left: 2px solid transparent;
            transition: color .15s, background .15s, border-color .15s;
        }

            .gl-nav .nav-link:hover,
            .gl-nav-link:hover {
                background: rgba(6, 182, 212, .06);
                border-left-color: var(--gl-cyan);
                padding-left: 1.5rem !important;
            }

            /* Remove sublinhado ativo em mobile, usa borda esquerda */
            .gl-nav .nav-link.active::after,
            .gl-nav-link.active::after {
                display: none;
            }

            .gl-nav .nav-link.active,
            .gl-nav-link.active {
                border-left-color: var(--gl-cyan);
                background: rgba(6, 182, 212, .06);
            }

        /* Separador entre nav-items no collapse */
        .gl-nav .navbar-nav .nav-item + .nav-item {
            border-top: 1px solid rgba(255, 255, 255, .04);
        }
}

/* ─────────────────────────────────────────────────────────────────
   12. MODAIS
───────────────────────────────────────────────────────────────── */
.gl-modal-content {
    background: var(--gl-card) !important;
    border: 1px solid rgba(6,182,212,.2) !important;
    border-radius: 0 !important;
    padding: 2.5rem;
    position: relative;
    color: var(--gl-white);
    clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
}

/* Borda superior animada */
.gl-modal-content::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan), var(--gl-magenta), var(--gl-blue));
    background-size: 200% auto;
    animation: shimmer 3s linear infinite;
}

.gl-modal-close {
    position: absolute;
    top: 1rem; right: 1rem;
    background: transparent;
    border: 1px solid rgba(255,255,255,.08);
    color: var(--gl-muted-2);
    font-family: var(--gl-font-mono);
    font-size: .7rem;
    letter-spacing: .1em;
    padding: .3rem .6rem;
    transition: var(--gl-transition);
    cursor: pointer;
}

.gl-modal-close:hover { color: var(--gl-white); border-color: rgba(255,255,255,.25); }

.gl-modal-title {
    font-family: var(--gl-font-display);
    font-size: 1.5rem;
    font-weight: 900;
    margin-bottom: .3rem;
}

.gl-modal-subtitle {
    font-family: var(--gl-font-mono);
    font-size: .7rem;
    color: var(--gl-muted-2);
    letter-spacing: .15em;
    text-transform: uppercase;
    margin-bottom: 2rem;
}

.gl-modal-divider {
    display: flex;
    align-items: center;
    gap: .8rem;
    margin: 1.2rem 0;
}

.gl-modal-divider::before,
.gl-modal-divider::after { content: ''; flex: 1; height: 1px; background: rgba(255,255,255,.06); }

.gl-modal-divider span {
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    color: var(--gl-muted);
    letter-spacing: .15em;
}

/* ─────────────────────────────────────────────────────────────────
   13. ALERTAS & TOASTS
───────────────────────────────────────────────────────────────── */

/* Alertas inline */
[class*="gl-alert"] {
    display: flex;
    align-items: flex-start;
    gap: .8rem;
    padding: .9rem 1.1rem;
    font-size: .88rem;
    line-height: 1.5;
    position: relative;
    font-family: var(--gl-font-body);
}

[class*="gl-alert"]::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
}

.gl-alert-info    { background: rgba(6,182,212,.08);   border: 1px solid rgba(6,182,212,.2);   color: var(--gl-cyan); }
.gl-alert-success { background: rgba(34,197,94,.08);   border: 1px solid rgba(34,197,94,.2);   color: var(--gl-green); }
.gl-alert-warning { background: rgba(251,191,36,.08);  border: 1px solid rgba(251,191,36,.2);  color: var(--gl-yellow); }
.gl-alert-danger  { background: rgba(248,113,113,.08); border: 1px solid rgba(248,113,113,.2); color: var(--gl-red); }

.gl-alert-info::before    { background: var(--gl-cyan); }
.gl-alert-success::before { background: var(--gl-green); }
.gl-alert-warning::before { background: var(--gl-yellow); }
.gl-alert-danger::before  { background: var(--gl-red); }

/* Toast de achievement */
.gl-achievement-toast {
    position: fixed;
    top: 80px;
    right: 24px;
    z-index: 1050;
    width: 300px;
    background: var(--gl-card);
    border: 1px solid var(--gl-yellow);
    padding: 1rem 1.2rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    transform: translateX(340px);
    transition: transform .5s cubic-bezier(.34, 1.56, .64, 1);
    box-shadow: 0 0 30px rgba(251,191,36,.15);
    clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}

.gl-achievement-toast.show { transform: translateX(0); }

.gl-ach-shine {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(251,191,36,.05) 50%, transparent 100%);
    animation: achShine 3s ease infinite;
    pointer-events: none;
}

/* HUD Status bar (hero) */
.gl-hud-status {
    display: inline-flex;
    align-items: center;
    gap: 1.5rem;
    background: rgba(6,182,212,.06);
    border: 1px solid rgba(6,182,212,.2);
    padding: .45rem 1.2rem;
    font-family: var(--gl-font-mono);
    font-size: .68rem;
    letter-spacing: .12em;
    color: var(--gl-cyan);
    clip-path: var(--gl-clip-md);
}

.gl-hud-status .dot {
    width: 5px; height: 5px;
    background: var(--gl-green);
    border-radius: 50%;
    animation: blink 2s infinite;
    box-shadow: 0 0 6px var(--gl-green);
}

.gl-hud-status .sep { color: rgba(6,182,212,.3); }

/* ─────────────────────────────────────────────────────────────────
   14. TABELAS
───────────────────────────────────────────────────────────────── */
.gl-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--gl-font-body);
    font-size: .92rem;
}

.gl-table thead tr {
    border-bottom: 1px solid rgba(6,182,212,.2);
}

.gl-table thead th {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--gl-cyan);
    padding: .8rem 1rem;
    font-weight: 400;
    text-align: left;
    white-space: nowrap;
}

.gl-table tbody tr {
    border-bottom: 1px solid rgba(255,255,255,.04);
    transition: background .2s;
}

.gl-table tbody tr:hover { background: rgba(6,182,212,.04); }

.gl-table tbody td {
    padding: .8rem 1rem;
    color: var(--gl-muted-2);
    vertical-align: middle;
}

.gl-table tbody td:first-child { color: var(--gl-white); }

/* Tabela com linhas zebradas */
.gl-table-striped tbody tr:nth-child(even) { background: rgba(255,255,255,.02); }

/* ─────────────────────────────────────────────────────────────────
   15. PROGRESSO & XP BARS
───────────────────────────────────────────────────────────────── */

/* XP Bar */
.gl-xp-wrap { width: 100%; }

.gl-xp-header {
    display: flex;
    justify-content: space-between;
    font-family: var(--gl-font-mono);
    font-size: .65rem;
    color: var(--gl-muted-2);
    letter-spacing: .1em;
    margin-bottom: .4rem;
}

.gl-xp-header span:last-child { color: var(--gl-cyan); }

.gl-xp-track {
    width: 100%;
    height: 6px;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(6,182,212,.15);
    overflow: hidden;
    position: relative;
}

.gl-xp-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    transition: width 2s cubic-bezier(.4,0,.2,1) 1s;
    position: relative;
}

.gl-xp-fill::after {
    content: '';
    position: absolute;
    right: 0; top: 0; bottom: 0;
    width: 20px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.4));
    animation: xpShine 2s ease-in-out infinite 3s;
}

/* Variantes de tamanho */
.gl-xp-track.sm { height: 4px; }
.gl-xp-track.lg { height: 10px; }

/* Variantes de cor da barra */
.gl-xp-fill-cyan    { background: linear-gradient(90deg, var(--gl-cyan-dim),   var(--gl-cyan)); }
.gl-xp-fill-magenta { background: linear-gradient(90deg, var(--gl-magenta-d),  var(--gl-magenta)); }
.gl-xp-fill-yellow  { background: linear-gradient(90deg, var(--gl-yellow-d),   var(--gl-yellow)); }
.gl-xp-fill-green   { background: linear-gradient(90deg, var(--gl-green-d),    var(--gl-green)); }
.gl-xp-fill-red     { background: linear-gradient(90deg, var(--gl-red-d),      var(--gl-red)); }

/* Mini bars (chart) */
.gl-mini-bars { display: flex; gap: 3px; align-items: flex-end; }

.gl-mini-bar {
    flex: 1;
    background: rgba(37,99,235,.25);
    border-top: 1px solid rgba(59,130,246,.4);
    animation: barLoad 1s ease both;
    min-height: 4px;
}

.gl-mini-bar.active { background: rgba(6,182,212,.3); border-color: var(--gl-cyan); }

@keyframes barLoad { from { height: 0 !important; opacity: 0; } }

/* ─────────────────────────────────────────────────────────────────
   16. DIVIDERS
───────────────────────────────────────────────────────────────── */

/* Divisor horizontal padrão */
.gl-divider {
    border: none;
    height: 1px;
    background: rgba(255,255,255,.06);
    margin: 1.5rem 0;
}

/* Divisor com gradiente cyan */
.gl-divider-glow {
    border: none;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent);
    opacity: .4;
    margin: 1.5rem 0;
}

/* Divisor com label */
.gl-divider-label {
    display: flex;
    align-items: center;
    gap: .8rem;
    margin: 1.5rem 0;
}

.gl-divider-label::before,
.gl-divider-label::after { content: ''; flex: 1; height: 1px; background: rgba(255,255,255,.06); }

.gl-divider-label span {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-muted);
    letter-spacing: .15em;
    text-transform: uppercase;
    white-space: nowrap;
}

/* Divisor vertical */
.gl-divider-v {
    width: 1px;
    background: rgba(255,255,255,.06);
    align-self: stretch;
}

/* ─────────────────────────────────────────────────────────────────
   17. SEÇÕES & LAYOUT
───────────────────────────────────────────────────────────────── */

/* Seção com padding padrão */
.gl-section {
    position: relative;
    z-index: 1;
    padding: 5rem 0;
}

.gl-section-sm { padding: 3rem 0; }
.gl-section-lg { padding: 8rem 0; }

/* Container com max-width */
.gl-container {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.gl-container-sm { max-width: 780px; }
.gl-container-lg { max-width: 1400px; }

/* Cabeçalho de seção */
.gl-section-header { margin-bottom: 3rem; }

.gl-section-eyebrow {
    font-family: var(--gl-font-mono);
    font-size: .65rem;
    letter-spacing: .25em;
    text-transform: uppercase;
    color: var(--gl-cyan);
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1rem;
}

.gl-section-eyebrow::before { content: '//'; color: var(--gl-muted); }

.gl-section-title {
    font-family: var(--gl-font-display);
    font-size: clamp(1.6rem, 3.5vw, 2.5rem);
    font-weight: 700;
    line-height: 1.15;
    max-width: 560px;
}

.gl-section-title em { font-style: normal; color: var(--gl-cyan); }

/* Orb de glow de fundo (decorativo) */
.gl-orb {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.gl-orb-hero {
    top: 30%; left: 50%;
    transform: translate(-50%, -50%);
    width: 600px; height: 600px;
    background: radial-gradient(circle, rgba(37,99,235,.15) 0%, rgba(6,182,212,.08) 40%, transparent 70%);
    animation: orbPulse 6s ease-in-out infinite;
}

.gl-orb-section {
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 900px; height: 500px;
    background: radial-gradient(ellipse, rgba(37,99,235,.1) 0%, rgba(6,182,212,.05) 40%, transparent 70%);
}

/* ─────────────────────────────────────────────────────────────────
   18. UTILITÁRIOS (Glow, Glitch, Shimmer, Clip-path)
───────────────────────────────────────────────────────────────── */

/* Glows de texto */
.gl-glow-cyan    { text-shadow: 0 0 20px rgba(6,   182, 212, .5); }
.gl-glow-blue    { text-shadow: 0 0 20px rgba(37,   99, 235, .5); }
.gl-glow-magenta { text-shadow: 0 0 20px rgba(232, 121, 249, .5); }
.gl-glow-yellow  { text-shadow: 0 0 20px rgba(251, 191,  36, .5); }

/* Box glows */
.gl-box-glow-cyan    { box-shadow: 0 0 20px var(--gl-glow-cyan); }
.gl-box-glow-blue    { box-shadow: 0 0 20px var(--gl-glow-blue); }
.gl-box-glow-magenta { box-shadow: 0 0 20px var(--gl-glow-magenta); }
.gl-box-glow-yellow  { box-shadow: 0 0 20px var(--gl-glow-yellow); }

/* Shimmer animado em texto */
.gl-shimmer {
    background: linear-gradient(90deg, var(--gl-blue-b), var(--gl-cyan), var(--gl-blue-b));
    background-size: 200% auto;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: shimmer 4s linear infinite;
}

/* Clip-path hexagonal */
.gl-clip-hex {
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

/* Reveal de scroll */
.gl-reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .6s ease, transform .6s ease;
}

.gl-reveal.visible { opacity: 1; transform: translateY(0); }

/* Fundo de seção com pixels (canvas) */
.gl-pixel-bg {
    position: absolute;
    inset: 0;
    overflow: hidden;
    opacity: .04;
    pointer-events: none;
}

.gl-pixel-bg canvas { width: 100%; height: 100%; }

/* Linha de acento (borda esquerda) */
.gl-accent-line {
    border-left: 2px solid var(--gl-cyan);
    padding-left: 1rem;
}

/* ─────────────────────────────────────────────────────────────────
   19. ANIMAÇÕES (@keyframes)
───────────────────────────────────────────────────────────────── */
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes shimmer { to { background-position: 200% center; } }

@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: .2; } }

@keyframes orbPulse {
    0%, 100% { transform: translate(-50%,-50%) scale(1);   opacity: 1; }
    50%       { transform: translate(-50%,-50%) scale(1.1); opacity: .7; }
}

@keyframes xpShine { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }

@keyframes achShine {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(200%); }
}

@keyframes glitch1 {
    0%, 94%, 100% { opacity: 0; transform: none; }
    95% { opacity: .7; transform: translate(-3px, 0); }
    97% { opacity: .7; transform: translate( 3px, 0); }
    99% { opacity: 0; }
}

@keyframes glitch2 {
    0%, 92%, 100% { opacity: 0; transform: none; }
    93% { opacity: .5; transform: translate( 4px, 0); }
    96% { opacity: .5; transform: translate(-2px, 0); }
    98% { opacity: 0; }
}

@keyframes glSpin { to { transform: rotate(360deg); } }

/* Classes de animação rápida */
.gl-anim-fade-up  { animation: fadeUp  .7s ease both; }
.gl-anim-fade-in  { animation: fadeIn  .5s ease both; }
.gl-anim-delay-1  { animation-delay: .1s; }
.gl-anim-delay-2  { animation-delay: .2s; }
.gl-anim-delay-3  { animation-delay: .3s; }
.gl-anim-delay-4  { animation-delay: .4s; }
.gl-anim-delay-5  { animation-delay: .5s; }

/* ─────────────────────────────────────────────────────────────────
   20. RESPONSIVO (compatível com Bootstrap 5 breakpoints)
   xs: <576 | sm: ≥576 | md: ≥768 | lg: ≥992 | xl: ≥1200 | xxl: ≥1400
───────────────────────────────────────────────────────────────── */
@media (max-width: 1199.98px) {
    .gl-nav { padding: 1rem 1.5rem; }
}

@media (max-width: 991.98px) {
    .gl-section { padding: 4rem 0; }
    .gl-section-lg { padding: 5rem 0; }

    /* Nav: esconde links, mantém botão */
    .gl-nav-links .gl-nav-link { display: none; }
    .gl-nav-links .gl-nav-link:last-child { display: flex; }
}

@media (max-width: 767.98px) {
    .gl-section { padding: 3rem 0; }
    .gl-section-sm { padding: 2rem 0; }

    .gl-achievement-toast { width: calc(100vw - 2rem); right: 1rem; }

    /* Botões full width em mobile se dentro de .gl-btns-mobile-full */
    .gl-btns-mobile-full [class*="btn-gl"] { width: 100%; }

    .gl-table { font-size: .82rem; }
    .gl-table thead th,
    .gl-table tbody td { padding: .6rem .75rem; }
}

@media (max-width: 575.98px) {
    .gl-stat-num { font-size: 1.5rem; }
    .gl-hud-status { gap: .75rem; padding: .4rem .8rem; font-size: .6rem; }
    .hud-corner { width: 40px; height: 40px; }
}



/* ═══════════════════════════════════════════════════════════════
   GAMERLOG — game-card.css
   Arquivo: wwwroot/css/game-card.css
   Dependência: gamerlog.css
═══════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────
   CARD CONTAINER
───────────────────────────────────────── */
.game-card {
    position: relative;
    width: 200px;
    background: var(--gl-card);
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, .06);
    overflow: hidden;
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
    flex-shrink: 0;
}

    .game-card:hover {
        transform: translateY(-4px);
        border-color: rgba(6, 182, 212, .35);
        box-shadow: 0 8px 32px rgba(0, 0, 0, .5), 0 0 20px rgba(6, 182, 212, .12);
    }

    /* Linha superior cyan — toque GamerLog */
    .game-card::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 2px;
        background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
        border-radius: 16px 16px 0 0;
        z-index: 5;
        opacity: .7;
        transition: opacity .25s;
    }

    .game-card:hover::before {
        opacity: 1;
    }

/* ─────────────────────────────────────────
   LINK WRAPPER
───────────────────────────────────────── */
.game-card__link {
    display: block;
    text-decoration: none;
    color: inherit;
}

    .game-card__link:hover,
    .game-card__link:focus {
        color: inherit;
        text-decoration: none;
        outline: none;
    }

/* ─────────────────────────────────────────
   CAPA
───────────────────────────────────────── */
.game-card__cover {
    position: relative;
    height: 180px;
    overflow: hidden;
}

.game-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .35s ease, filter .25s ease;
}

.game-card:hover .game-card__img {
    transform: scale(1.04);
    filter: brightness(1.05);
}

/* Fallback sem imagem */
.game-card__cover-fallback {
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, var(--gl-navy-2), var(--gl-navy-3));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.5rem;
}

/* Gradiente overlay inferior da capa */
.game-card__cover::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 65%;
    background: linear-gradient( to top, rgba(10, 20, 34, .95) 0%, rgba(10, 20, 34, .6) 45%, transparent 100% );
    pointer-events: none;
    z-index: 2;
}

/* Título sobre a capa */
.game-card__title-wrap {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 0 .85rem .75rem;
    z-index: 3;
}

.game-card__title {
    font-family: var(--gl-font-display);
    font-weight: 700;
    font-size: .68rem;
    line-height: 1.35;
    letter-spacing: .04em;
    color: var(--gl-white);
    text-transform: uppercase;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .9);
    margin: 0;
}

/* ─────────────────────────────────────────
   INFORMAÇÕES
───────────────────────────────────────── */
.game-card__info {
    padding: .75rem .85rem .8rem;
}

/* ── Plataforma ── */
.game-card__platform {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    margin-bottom: .65rem;
}

.game-card__platform-icon {
    font-size: .75rem;
    color: var(--gl-muted);
    flex-shrink: 0;
}

.game-card__platform-label {
    font-family: var(--gl-font-body);
    font-size: .72rem;
    font-weight: 400;
    color: var(--gl-muted-2);
    letter-spacing: .02em;
}

.game-card__platform-value {
    font-family: var(--gl-font-body);
    font-size: .72rem;
    font-weight: 700;
    color: var(--gl-white);
    letter-spacing: .02em;
}

/* Divisor */
.game-card__divider {
    height: 1px;
    background: rgba(255, 255, 255, .07);
    border: none;
    margin: 0 0 .65rem;
    opacity: 1;
}

/* ── Stats (TEMPO | STATUS) ── */
.game-card__stats {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
}

.game-card__stat {
    text-align: center;
}

.game-card__stat-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .3rem;
    margin-bottom: .3rem;
}

.game-card__stat-icon {
    font-size: .65rem;
    color: var(--gl-muted-2);
}

.game-card__stat-icon--warning {
    color: var(--gl-yellow);
}

.game-card__stat-icon--success {
    color: var(--gl-green);
}

.game-card__stat-icon--info {
    color: var(--gl-cyan);
}

.game-card__stat-icon--purple {
    color: var(--gl-magenta);
}

.game-card__stat-icon--danger {
    color: var(--gl-red);
}

.game-card__stat-label {
    font-family: var(--gl-font-body);
    font-size: .65rem;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--gl-muted-2);
}

.game-card__stat-value {
    font-family: var(--gl-font-body);
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--gl-white);
    display: block;
    line-height: 1;
}

/* Divisor vertical */
.game-card__stats-divider {
    width: 1px;
    height: 32px;
    background: rgba(255, 255, 255, .1);
    align-self: center;
    flex-shrink: 0;
    margin: 0 .25rem;
}

/* ─────────────────────────────────────────
   BADGE DE STATUS
   Pill — fiel ao original
───────────────────────────────────────── */
.game-card__status {
    display: inline-block;
    font-family: var(--gl-font-body);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    padding: .2rem .65rem;
    border-radius: 20px;
    border: 1px solid transparent;
    transition: box-shadow .25s;
    line-height: 1.4;
}

.game-card__status--playing {
    color: var(--gl-yellow);
    border-color: var(--gl-yellow);
    background: rgba(251, 191, 36, .08);
}

.game-card__status--done {
    color: var(--gl-cyan);
    border-color: var(--gl-cyan);
    background: rgba(6, 182, 212, .08);
}

.game-card__status--paused {
    color: var(--gl-yellow);
    border-color: var(--gl-yellow);
    background: rgba(251, 191, 36, .08);
}

.game-card__status--wishlist {
    color: var(--gl-magenta);
    border-color: var(--gl-magenta);
    background: rgba(232, 121, 249, .08);
}

.game-card__status--dropped {
    color: var(--gl-red);
    border-color: var(--gl-red);
    background: rgba(248, 113, 113, .08);
}

.game-card:hover .game-card__status--playing {
    box-shadow: 0 0 8px rgba(251, 191, 36, .25);
}

.game-card:hover .game-card__status--done {
    box-shadow: 0 0 8px rgba(6, 182, 212, .25);
}

.game-card:hover .game-card__status--paused {
    box-shadow: 0 0 8px rgba(251, 191, 36, .25);
}

.game-card:hover .game-card__status--wishlist {
    box-shadow: 0 0 8px rgba(232, 121, 249, .25);
}

.game-card:hover .game-card__status--dropped {
    box-shadow: 0 0 8px rgba(248, 113, 113, .25);
}

/* ─────────────────────────────────────────
   GRID DE CARDS
───────────────────────────────────────── */
.game-card-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
}

/* ─────────────────────────────────────────
   RESPONSIVO
───────────────────────────────────────── */
@media (max-width: 575.98px) {
    .game-card {
        width: 160px;
    }
}

/* ─────────────────────────────────────────────────────────────────
   11b. DROPDOWN
   Uso: adicione .gl-dropdown no <div class="dropdown">
        e .gl-dropdown-menu no <ul class="dropdown-menu ...">
   O Bootstrap 5 continua controlando abertura/fechamento via JS.
───────────────────────────────────────────────────────────────── */

/* ── Botão trigger ── */
.gl-dropdown .btn.dropdown-toggle {
    font-family: var(--gl-font-mono);
    font-size: .75rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--gl-muted-2);
    background: transparent;
    border: 1px solid transparent;
    padding: .4rem .85rem;
    transition: color .2s, border-color .2s, background .2s;
    position: relative;
}

    .gl-dropdown .btn.dropdown-toggle:hover,
    .gl-dropdown .btn.dropdown-toggle:focus,
    .gl-dropdown.show .btn.dropdown-toggle {
        color: var(--gl-cyan);
        border-color: rgba(6, 182, 212, .25);
        background: rgba(6, 182, 212, .06);
        box-shadow: none;
        outline: none;
    }

    /* Seta do Bootstrap recolorida */
    .gl-dropdown .btn.dropdown-toggle::after {
        border-top-color: currentColor;
        opacity: .7;
        transition: opacity .2s, transform .2s;
    }

.gl-dropdown.show .btn.dropdown-toggle::after {
    opacity: 1;
    transform: rotate(180deg);
}

/* ── Menu ── */
.gl-dropdown-menu {
    background: var(--gl-card) !important;
    border: 1px solid rgba(6, 182, 212, .2) !important;
    border-radius: 0 !important;
    padding: .35rem 0 !important;
    min-width: 160px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, .5), 0 0 20px rgba(6, 182, 212, .06) !important;
    /* Animação de entrada */
    animation: glDropdownIn .15s ease both;
}

@keyframes glDropdownIn {
    from {
        opacity: 0;
        transform: translateY(-6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Linha superior gradiente */
.gl-dropdown-menu::before {
    content: '';
    display: block;
    height: 2px;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    margin-bottom: .35rem;
}

/* ── Itens ── */
.gl-dropdown-menu .dropdown-item {
    font-family: var(--gl-font-mono);
    font-size: .72rem;
    letter-spacing: .08em;
    color: var(--gl-muted-2) !important;
    padding: .5rem 1rem;
    background: transparent !important;
    border: none;
    transition: color .15s, background .15s, padding-left .15s;
    position: relative;
}

    .gl-dropdown-menu .dropdown-item:hover,
    .gl-dropdown-menu .dropdown-item:focus {
        color: var(--gl-cyan) !important;
        background: rgba(6, 182, 212, .06) !important;
        padding-left: 1.3rem;
    }

    /* Barra de acento à esquerda no hover */
    .gl-dropdown-menu .dropdown-item::before {
        content: '';
        position: absolute;
        left: 0;
        top: 20%;
        bottom: 20%;
        width: 2px;
        background: var(--gl-cyan);
        opacity: 0;
        transition: opacity .15s;
    }

    .gl-dropdown-menu .dropdown-item:hover::before,
    .gl-dropdown-menu .dropdown-item:focus::before {
        opacity: 1;
    }

/* ── Divider interno (opcional: <li><hr class="dropdown-divider gl-dropdown-divider"></li>) ── */
.gl-dropdown-menu .gl-dropdown-divider {
    border-color: rgba(255, 255, 255, .06) !important;
    margin: .3rem 0;
    opacity: 1;
}

/* ── Item destrutivo — adicione .gl-dropdown-item-danger ao <a> ── */
.gl-dropdown-menu .gl-dropdown-item-danger {
    color: var(--gl-red) !important;
}

    .gl-dropdown-menu .gl-dropdown-item-danger:hover,
    .gl-dropdown-menu .gl-dropdown-item-danger:focus {
        color: var(--gl-red) !important;
        background: rgba(248, 113, 113, .08) !important;
    }

    .gl-dropdown-menu .gl-dropdown-item-danger::before {
        background: var(--gl-red);
    }




/* ─────────────────────────────────────────────────────────────────
   11b. DROPDOWN
   Uso: adicione .gl-dropdown no <div class="dropdown">
        e .gl-dropdown-menu no <ul class="dropdown-menu ...">
   O Bootstrap 5 continua controlando abertura/fechamento via JS.
───────────────────────────────────────────────────────────────── */

/* ── Botão trigger ── */
.gl-dropdown .btn.dropdown-toggle {
    font-family: var(--gl-font-mono);
    font-size: .75rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--gl-muted-2);
    background: transparent;
    border: 1px solid transparent;
    padding: .4rem .85rem;
    transition: color .2s, border-color .2s, background .2s;
    position: relative;
}

    .gl-dropdown .btn.dropdown-toggle:hover,
    .gl-dropdown .btn.dropdown-toggle:focus,
    .gl-dropdown.show .btn.dropdown-toggle {
        color: var(--gl-cyan);
        border-color: rgba(6, 182, 212, .25);
        background: rgba(6, 182, 212, .06);
        box-shadow: none;
        outline: none;
    }

    /* Seta do Bootstrap recolorida */
    .gl-dropdown .btn.dropdown-toggle::after {
        border-top-color: currentColor;
        opacity: .7;
        transition: opacity .2s, transform .2s;
    }

.gl-dropdown.show .btn.dropdown-toggle::after {
    opacity: 1;
    transform: rotate(180deg);
}

/* ── Menu ── */
.gl-dropdown-menu {
    background: var(--gl-card) !important;
    border: 1px solid rgba(6, 182, 212, .2) !important;
    border-radius: 0 !important;
    padding: .35rem 0 !important;
    min-width: 160px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, .5), 0 0 20px rgba(6, 182, 212, .06) !important;
    z-index: 1031 !important; /* acima do .gl-nav */
    /* Animação de entrada */
    animation: glDropdownIn .15s ease both;
}

@keyframes glDropdownIn {
    from {
        opacity: 0;
        transform: translateY(-6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Linha superior gradiente */
.gl-dropdown-menu::before {
    content: '';
    display: block;
    height: 2px;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    margin-bottom: .35rem;
}

/* ── Itens ── */
.gl-dropdown-menu .dropdown-item {
    font-family: var(--gl-font-mono);
    font-size: .72rem;
    letter-spacing: .08em;
    color: var(--gl-muted-2) !important;
    padding: .5rem 1rem;
    background: transparent !important;
    border: none;
    transition: color .15s, background .15s, padding-left .15s;
    position: relative;
}

    .gl-dropdown-menu .dropdown-item:hover,
    .gl-dropdown-menu .dropdown-item:focus {
        color: var(--gl-cyan) !important;
        background: rgba(6, 182, 212, .06) !important;
        padding-left: 1.3rem;
    }

    /* Barra de acento à esquerda no hover */
    .gl-dropdown-menu .dropdown-item::before {
        content: '';
        position: absolute;
        left: 0;
        top: 20%;
        bottom: 20%;
        width: 2px;
        background: var(--gl-cyan);
        opacity: 0;
        transition: opacity .15s;
    }

    .gl-dropdown-menu .dropdown-item:hover::before,
    .gl-dropdown-menu .dropdown-item:focus::before {
        opacity: 1;
    }

/* ── Divider interno (opcional: <li><hr class="dropdown-divider gl-dropdown-divider"></li>) ── */
.gl-dropdown-menu .gl-dropdown-divider {
    border-color: rgba(255, 255, 255, .06) !important;
    margin: .3rem 0;
    opacity: 1;
}

/* ── Item destrutivo — adicione .gl-dropdown-item-danger ao <a> ── */
.gl-dropdown-menu .gl-dropdown-item-danger {
    color: var(--gl-red) !important;
}

    .gl-dropdown-menu .gl-dropdown-item-danger:hover,
    .gl-dropdown-menu .gl-dropdown-item-danger:focus {
        color: var(--gl-red) !important;
        background: rgba(248, 113, 113, .08) !important;
    }

    .gl-dropdown-menu .gl-dropdown-item-danger::before {
        background: var(--gl-red);
    }

/* ═══════════════════════════════════════════════════════════════════
   GAMERLOG DESIGN SYSTEM — gamerlog.css
   Arquivo: wwwroot/css/gamerlog.css

   Índice:
    01. Design Tokens (CSS Variables)
    02. Reset & Base
    03. Efeitos Globais (Scanlines, Grid BG)
    04. Cursor Personalizado
    05. Cantos HUD
    06. Tipografia
    07. Botões
    08. Badges & Tags
    09. Cards
    10. Formulários & Inputs
    11. Navegação
    12. Modais
    13. Alertas & Toasts
    14. Tabelas
    15. Progresso & XP Bars
    16. Dividers
    17. Seções & Layout
    18. Utilitários (Glow, Glitch, Shimmer)
    19. Animações (@keyframes)
    20. Responsivo
═══════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────────
   01. DESIGN TOKENS
───────────────────────────────────────────────────────────────── */
:root {
    /* Paleta principal */
    --gl-navy: #080f1c;
    --gl-navy-2: #0d1829;
    --gl-navy-3: #112038;
    --gl-blue: #2563eb;
    --gl-blue-b: #3b82f6;
    --gl-blue-c: #60a5fa;
    --gl-cyan: #06b6d4;
    --gl-cyan-dim: #0891b2;
    --gl-magenta: #e879f9;
    --gl-magenta-d: #a21caf;
    --gl-yellow: #fbbf24;
    --gl-yellow-d: #d97706;
    --gl-green: #22c55e;
    --gl-green-d: #16a34a;
    --gl-red: #f87171;
    --gl-red-d: #dc2626;
    --gl-white: #e8f0ff;
    --gl-muted: #4a6080;
    --gl-muted-2: #7a90b0;
    --gl-card: #0a1422;
    --gl-card-2: #0c1c32;
    /* Glows */
    --gl-glow-cyan: rgba(6, 182, 212, 0.30);
    --gl-glow-blue: rgba(37, 99, 235, 0.35);
    --gl-glow-magenta: rgba(232, 121, 249, 0.30);
    --gl-glow-yellow: rgba(251, 191, 36, 0.25);
    --gl-glow-green: rgba(34, 197, 94, 0.25);
    --gl-glow-red: rgba(248, 113, 113, 0.25);
    /* Bordas semânticas */
    --gl-border: rgba(59, 130, 246, 0.18);
    --gl-border-cyan: rgba(6, 182, 212, 0.20);
    --gl-border-subtle: rgba(255, 255, 255, 0.06);
    /* Tipografia */
    --gl-font-display: 'Orbitron', monospace;
    --gl-font-mono: 'Share Tech Mono', monospace;
    --gl-font-body: 'Rajdhani', sans-serif;
    /* Espaçamento */
    --gl-radius: 0px; /* design intencional: sem border-radius */
    --gl-clip-sm: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
    --gl-clip-md: polygon(10px 0%, 100% 0%, calc(100% - 10px) 100%, 0% 100%);
    --gl-clip-lg: polygon(14px 0%, 100% 0%, calc(100% - 14px) 100%, 0% 100%);
    /* Transições */
    --gl-transition: all .2s ease;
    --gl-transition-slow: all .4s ease;
}

/* ─────────────────────────────────────────────────────────────────
   02. RESET & BASE
───────────────────────────────────────────────────────────────── */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    background: var(--gl-navy);
    color: var(--gl-white);
    font-family: var(--gl-font-body);
    overflow-x: hidden;
}

    /* ─────────────────────────────────────────────────────────────────
   03. EFEITOS GLOBAIS
───────────────────────────────────────────────────────────────── */

    /* Scanlines sobre toda a página */
    body::before {
        content: '';
        position: fixed;
        inset: 0;
        background: repeating-linear-gradient( 0deg, transparent, transparent 2px, rgba(0, 0, 0, 0.06) 2px, rgba(0, 0, 0, 0.06) 4px );
        pointer-events: none;
        z-index: 900;
    }

/* Grade de perspectiva fixa no fundo */
.bg-grid {
    position: fixed;
    inset: 0;
    z-index: 0;
    background-image: linear-gradient(rgba(6, 182, 212, 0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(6, 182, 212, 0.04) 1px, transparent 1px);
    background-size: 40px 40px;
    pointer-events: none;
}

/* Versão densa para seções específicas */
.bg-grid-dense {
    background-size: 20px 20px;
}

/* ─────────────────────────────────────────────────────────────────
   05. CANTOS HUD
───────────────────────────────────────────────────────────────── */
.hud-corner {
    position: fixed;
    width: 60px;
    height: 60px;
    z-index: 50;
    pointer-events: none;
}

.hud-tl {
    top: 16px;
    left: 16px;
    border-top: 2px solid var(--gl-cyan);
    border-left: 2px solid var(--gl-cyan);
}

.hud-tr {
    top: 16px;
    right: 16px;
    border-top: 2px solid var(--gl-cyan);
    border-right: 2px solid var(--gl-cyan);
}

.hud-bl {
    bottom: 16px;
    left: 16px;
    border-bottom: 2px solid var(--gl-cyan);
    border-left: 2px solid var(--gl-cyan);
}

.hud-br {
    bottom: 16px;
    right: 16px;
    border-bottom: 2px solid var(--gl-cyan);
    border-right: 2px solid var(--gl-cyan);
}

/* ─────────────────────────────────────────────────────────────────
   06. TIPOGRAFIA
───────────────────────────────────────────────────────────────── */

/* Títulos display */
.gl-display {
    font-family: var(--gl-font-display);
    font-weight: 900;
    font-size: clamp(3rem, 8vw, 7rem);
    line-height: 1;
    letter-spacing: -.02em;
}

.gl-h1 {
    font-family: var(--gl-font-display);
    font-weight: 700;
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    line-height: 1.1;
}

.gl-h2 {
    font-family: var(--gl-font-display);
    font-weight: 700;
    font-size: clamp(1.4rem, 3vw, 2rem);
    line-height: 1.15;
}

.gl-h3 {
    font-family: var(--gl-font-display);
    font-weight: 600;
    font-size: clamp(1rem, 2vw, 1.3rem);
    line-height: 1.2;
}

/* Textos mono (HUD / system) */
.gl-mono {
    font-family: var(--gl-font-mono);
    letter-spacing: .08em;
}

.gl-mono-sm {
    font-family: var(--gl-font-mono);
    font-size: .7rem;
    letter-spacing: .12em;
}

.gl-mono-xs {
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    letter-spacing: .15em;
}

.gl-eyebrow {
    font-family: var(--gl-font-mono);
    font-size: .65rem;
    letter-spacing: .25em;
    text-transform: uppercase;
    color: var(--gl-cyan);
}

    .gl-eyebrow::before {
        content: '// ';
        color: var(--gl-muted);
    }

/* Cores de texto */
.gl-text-cyan {
    color: var(--gl-cyan) !important;
}

.gl-text-blue {
    color: var(--gl-blue-b) !important;
}

.gl-text-magenta {
    color: var(--gl-magenta) !important;
}

.gl-text-yellow {
    color: var(--gl-yellow) !important;
}

.gl-text-green {
    color: var(--gl-green) !important;
}

.gl-text-red {
    color: var(--gl-red) !important;
}

.gl-text-muted {
    color: var(--gl-muted-2) !important;
}

.gl-text-white {
    color: var(--gl-white) !important;
}

/* Gradiente de texto */
.gl-text-gradient {
    background: linear-gradient(90deg, var(--gl-blue-b), var(--gl-cyan));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.gl-text-gradient-magenta {
    background: linear-gradient(90deg, var(--gl-magenta), var(--gl-cyan));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* ─────────────────────────────────────────────────────────────────
   07. BOTÕES
───────────────────────────────────────────────────────────────── */

/* Base compartilhada */
[class*="btn-gl"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    font-family: var(--gl-font-display);
    font-weight: 700;
    font-size: .72rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    text-decoration: none;
    border: none;
    position: relative;
    overflow: hidden;
    transition: var(--gl-transition);
    white-space: nowrap;
}

/* ── Primário (gradiente azul → cyan) ── */
.btn-gl-primary {
    background: linear-gradient(135deg, var(--gl-blue), var(--gl-cyan-dim));
    color: var(--gl-white);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

    .btn-gl-primary::before {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(135deg, rgba(255,255,255,.15) 0%, transparent 60%);
        pointer-events: none;
    }

    .btn-gl-primary:hover {
        color: var(--gl-white);
        box-shadow: 0 0 30px var(--gl-glow-cyan), 0 4px 20px var(--gl-glow-blue);
        transform: translateY(-2px);
    }

/* ── Secundário (borda cyan) ── */
.btn-gl-secondary {
    background: transparent;
    color: var(--gl-cyan);
    padding: .72rem 1.8rem;
    border: 1px solid var(--gl-cyan);
    clip-path: var(--gl-clip-md);
}

    .btn-gl-secondary::before {
        content: '';
        position: absolute;
        inset: 0;
        background: var(--gl-cyan);
        opacity: 0;
        transition: opacity .2s;
    }

    .btn-gl-secondary:hover {
        color: var(--gl-navy);
        box-shadow: 0 0 20px var(--gl-glow-cyan);
    }

        .btn-gl-secondary:hover::before {
            opacity: 1;
        }

    .btn-gl-secondary > * {
        position: relative;
        z-index: 1;
    }

/* ── Outline sutil ── */
.btn-gl-outline {
    background: transparent;
    color: var(--gl-muted-2);
    padding: .72rem 1.8rem;
    border: 1px solid rgba(255,255,255,.1);
    clip-path: var(--gl-clip-md);
    font-family: var(--gl-font-mono);
    font-weight: 400;
    letter-spacing: .1em;
}

    .btn-gl-outline:hover {
        color: var(--gl-white);
        border-color: rgba(255,255,255,.3);
    }

/* ── Danger (vermelho) ── */
.btn-gl-danger {
    background: linear-gradient(135deg, var(--gl-red-d), var(--gl-red));
    color: var(--gl-white);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

    .btn-gl-danger:hover {
        color: var(--gl-white);
        box-shadow: 0 0 25px var(--gl-glow-red);
        transform: translateY(-2px);
    }

/* ── Success (verde) ── */
.btn-gl-success {
    background: linear-gradient(135deg, var(--gl-green-d), var(--gl-green));
    color: var(--gl-navy);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

    .btn-gl-success:hover {
        color: var(--gl-navy);
        box-shadow: 0 0 25px var(--gl-glow-green);
        transform: translateY(-2px);
    }

/* ── Warning (amarelo) ── */
.btn-gl-warning {
    background: linear-gradient(135deg, var(--gl-yellow-d), var(--gl-yellow));
    color: var(--gl-navy);
    padding: .75rem 2rem;
    clip-path: var(--gl-clip-md);
}

    .btn-gl-warning:hover {
        color: var(--gl-navy);
        box-shadow: 0 0 25px var(--gl-glow-yellow);
        transform: translateY(-2px);
    }

/* ── Ghost (sem fundo, sem borda) ── */
.btn-gl-ghost {
    background: transparent;
    color: var(--gl-muted-2);
    padding: .5rem 1rem;
    font-family: var(--gl-font-mono);
    font-weight: 400;
    font-size: .78rem;
    letter-spacing: .08em;
    border: none;
    clip-path: none;
    transition: color .2s;
}

    .btn-gl-ghost:hover {
        color: var(--gl-cyan);
    }

/* ── Icon Button ── */
.btn-gl-icon {
    background: transparent;
    color: var(--gl-muted-2);
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid var(--gl-border-subtle);
    clip-path: var(--gl-clip-sm);
    font-size: 1rem;
}

    .btn-gl-icon:hover {
        color: var(--gl-cyan);
        border-color: var(--gl-cyan);
        box-shadow: 0 0 12px var(--gl-glow-cyan);
    }

/* ── Tamanhos ── */
.btn-gl-sm {
    padding: .4rem 1.2rem;
    font-size: .62rem;
    clip-path: var(--gl-clip-sm);
}

.btn-gl-lg {
    padding: 1rem 2.8rem;
    font-size: .82rem;
    clip-path: var(--gl-clip-lg);
}

.btn-gl-xl {
    padding: 1.2rem 3.5rem;
    font-size: .9rem;
    clip-path: var(--gl-clip-lg);
}

.btn-gl-w100 {
    width: 100%;
    justify-content: center;
}

/* ── Disabled ── */
[class*="btn-gl"]:disabled,
[class*="btn-gl"].disabled {
    opacity: .35;
    pointer-events: none;
    filter: grayscale(.5);
}

/* ── Loading spinner dentro de botão ── */
.btn-gl-spinner {
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255,255,255,.3);
    border-top-color: var(--gl-white);
    border-radius: 50%;
    animation: glSpin .7s linear infinite;
}

@keyframes glSpin {
    to {
        transform: rotate(360deg);
    }
}

/* ─────────────────────────────────────────────────────────────────
   08. BADGES & TAGS
───────────────────────────────────────────────────────────────── */
[class*="gl-badge"] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-family: var(--gl-font-mono);
    font-size: .58rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    padding: .18rem .55rem;
    white-space: nowrap;
}

.gl-badge-cyan {
    color: var(--gl-cyan);
    border: 1px solid rgba(6, 182, 212, .35);
    background: rgba(6, 182, 212, .08);
}

.gl-badge-blue {
    color: var(--gl-blue-b);
    border: 1px solid rgba(59, 130, 246, .35);
    background: rgba(59, 130, 246, .08);
}

.gl-badge-magenta {
    color: var(--gl-magenta);
    border: 1px solid rgba(232, 121, 249, .35);
    background: rgba(232, 121, 249, .08);
}

.gl-badge-yellow {
    color: var(--gl-yellow);
    border: 1px solid rgba(251, 191, 36, .35);
    background: rgba(251, 191, 36, .08);
}

.gl-badge-green {
    color: var(--gl-green);
    border: 1px solid rgba(34, 197, 94, .35);
    background: rgba(34, 197, 94, .08);
}

.gl-badge-red {
    color: var(--gl-red);
    border: 1px solid rgba(248, 113, 113, .35);
    background: rgba(248, 113, 113, .08);
}

.gl-badge-muted {
    color: var(--gl-muted-2);
    border: 1px solid rgba(255, 255, 255, .10);
    background: rgba(255, 255, 255, .04);
}

/* Dot indicador de status */
.gl-badge-dot::before {
    content: '';
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
    flex-shrink: 0;
    animation: blink 2s infinite;
}

/* Rarity badges (achievements) */
.gl-rarity-common {
    color: var(--gl-muted-2);
    border: 1px solid rgba(255,255,255,.1);
}

.gl-rarity-rare {
    color: var(--gl-cyan);
    border: 1px solid rgba(6,182,212,.3);
}

.gl-rarity-epic {
    color: var(--gl-magenta);
    border: 1px solid rgba(232,121,249,.3);
}

.gl-rarity-legend {
    color: var(--gl-yellow);
    border: 1px solid rgba(251,191,36,.3);
}

/* Tag de status de jogo */
.gl-status {
    font-family: var(--gl-font-mono);
    font-size: .55rem;
    letter-spacing: .1em;
    padding: .1rem .4rem;
    text-transform: uppercase;
}

.gl-status-playing {
    color: var(--gl-green);
    border: 1px solid rgba(34, 197, 94, .3);
}

.gl-status-done {
    color: var(--gl-cyan);
    border: 1px solid rgba(6, 182,212, .3);
}

.gl-status-paused {
    color: var(--gl-yellow);
    border: 1px solid rgba(251, 191, 36, .3);
}

.gl-status-wishlist {
    color: var(--gl-magenta);
    border: 1px solid rgba(232, 121,249, .3);
}

.gl-status-dropped {
    color: var(--gl-red);
    border: 1px solid rgba(248, 113,113, .3);
}

/* ─────────────────────────────────────────────────────────────────
   09. CARDS
───────────────────────────────────────────────────────────────── */

/* Card base */
.gl-card {
    background: var(--gl-card);
    border: 1px solid var(--gl-border-subtle);
    position: relative;
    overflow: hidden;
    transition: var(--gl-transition);
}

    .gl-card:hover {
        background: var(--gl-card-2);
    }

/* Variantes de borda superior colorida */
.gl-card-cyan::before,
.gl-card-blue::before,
.gl-card-magenta::before,
.gl-card-yellow::before,
.gl-card-green::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
}

.gl-card-cyan::before {
    background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent);
}

.gl-card-blue::before {
    background: linear-gradient(90deg, transparent, var(--gl-blue-b), transparent);
}

.gl-card-magenta::before {
    background: linear-gradient(90deg, transparent, var(--gl-magenta), transparent);
}

.gl-card-yellow::before {
    background: linear-gradient(90deg, transparent, var(--gl-yellow), transparent);
}

.gl-card-green::before {
    background: linear-gradient(90deg, transparent, var(--gl-green), transparent);
}

/* Card com hover animado (borda deslizante) */
.gl-card-hover::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .4s ease;
}

.gl-card-hover:hover::before {
    transform: scaleX(1);
}

.gl-card-hover:hover {
    background: var(--gl-card-2);
    border-color: var(--gl-border-cyan);
}

/* Card glow */
.gl-card-glow:hover {
    box-shadow: 0 0 20px var(--gl-glow-cyan);
}

/* Card com clip hexagonal (estilo achievement) */
.gl-card-hex {
    clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 16px 100%, 0 calc(100% - 16px));
}

/* Card de jogo (game row) */
.gl-game-row {
    display: grid;
    grid-template-columns: 40px 1fr auto;
    gap: .8rem;
    align-items: center;
    padding: .75rem .9rem;
    border: 1px solid transparent;
    background: transparent;
    transition: var(--gl-transition);
}

    .gl-game-row:hover {
        background: rgba(6,182,212,.05);
        border-color: rgba(6,182,212,.15);
    }

    .gl-game-row.active {
        background: rgba(37,99,235,.12);
        border-color: rgba(59,130,246,.25);
    }

/* Ícone/thumb do jogo */
.gl-game-thumb {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    background: rgba(255,255,255,.04);
    border: 1px solid var(--gl-border-subtle);
}

/* Stat card (número grande + label) */
.gl-stat-card {
    background: rgba(6,182,212,.03);
    border: 1px solid rgba(6,182,212,.1);
    padding: 1.5rem 1rem;
    text-align: center;
    position: relative;
    transition: background .3s;
}

    .gl-stat-card:hover {
        background: rgba(6,182,212,.07);
    }

    .gl-stat-card::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 1px;
        background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent);
        opacity: 0;
        transition: opacity .3s;
    }

    .gl-stat-card:hover::before {
        opacity: 1;
    }

.gl-stat-num {
    font-family: var(--gl-font-display);
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: 700;
    color: var(--gl-cyan);
    display: block;
    text-shadow: 0 0 20px rgba(6,182,212,.3);
}

.gl-stat-label {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-muted);
    letter-spacing: .12em;
    text-transform: uppercase;
    margin-top: .3rem;
    display: block;
}

/* Achievement card */
.gl-ach-card {
    background: var(--gl-card);
    border: 1px solid rgba(255,255,255,.05);
    padding: 1.5rem 1.2rem;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all .3s;
}

    .gl-ach-card:hover {
        border-color: rgba(251,191,36,.3);
        box-shadow: 0 0 20px rgba(251,191,36,.08);
        transform: translateY(-2px);
    }

    .gl-ach-card.locked {
        opacity: .35;
        filter: grayscale(1);
    }

        .gl-ach-card.locked:hover {
            opacity: .5;
        }

.gl-ach-icon {
    width: 52px;
    height: 52px;
    margin: 0 auto 1rem;
    background: linear-gradient(135deg, #1c1400, #3d2c00);
    border: 1px solid rgba(251,191,36,.25);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

.gl-ach-icon-sm {
    width: 44px;
    height: 44px;
    background: linear-gradient(135deg, #92400e, var(--gl-yellow));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

.gl-ach-name {
    font-family: var(--gl-font-display);
    font-size: .75rem;
    font-weight: 700;
    color: var(--gl-white);
    margin-bottom: .3rem;
    letter-spacing: .05em;
}

.gl-ach-desc {
    font-size: .8rem;
    color: var(--gl-muted-2);
    line-height: 1.4;
}

/* ─────────────────────────────────────────────────────────────────
   10. FORMULÁRIOS & INPUTS
───────────────────────────────────────────────────────────────── */

/* Label estilo HUD */
.gl-label {
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    color: var(--gl-cyan);
    letter-spacing: .15em;
    text-transform: uppercase;
    display: block;
    margin-bottom: .35rem;
}

/* Input base */
.gl-input {
    width: 100%;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(6,182,212,.15);
    color: var(--gl-white);
    padding: .75rem 1rem;
    font-family: var(--gl-font-mono);
    font-size: .88rem;
    outline: none;
    transition: border-color .2s, background .2s, box-shadow .2s;
    clip-path: var(--gl-clip-sm);
    border-radius: 0;
}

    .gl-input::placeholder {
        color: var(--gl-muted);
    }

    .gl-input:focus {
        border-color: var(--gl-cyan);
        background: rgba(6,182,212,.05);
        box-shadow: 0 0 0 1px rgba(6,182,212,.15);
    }

/* Variantes de cor do input */
.gl-input-error {
    border-color: var(--gl-red) !important;
}

    .gl-input-error:focus {
        box-shadow: 0 0 0 1px rgba(248,113,113,.2) !important;
    }

.gl-input-success {
    border-color: var(--gl-green) !important;
}

    .gl-input-success:focus {
        box-shadow: 0 0 0 1px rgba(34,197,94,.2) !important;
    }

/* Textarea */
.gl-textarea {
    resize: vertical;
    min-height: 100px;
}

/* Select */
.gl-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2306b6d4' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}

/* Checkbox / Radio estilizados */
.gl-check-group {
    display: flex;
    align-items: center;
    gap: .6rem;
}

.gl-checkbox,
.gl-radio {
    width: 16px;
    height: 16px;
    appearance: none;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(6,182,212,.3);
    flex-shrink: 0;
    cursor: pointer;
    position: relative;
    transition: all .2s;
}

.gl-radio {
    border-radius: 50%;
}

    .gl-checkbox:checked,
    .gl-radio:checked {
        background: var(--gl-cyan);
        border-color: var(--gl-cyan);
        box-shadow: 0 0 8px var(--gl-glow-cyan);
    }

        .gl-checkbox:checked::after {
            content: '✓';
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            color: var(--gl-navy);
            font-size: .65rem;
            font-weight: 700;
        }

/* Toggle switch */
.gl-toggle-wrap {
    display: flex;
    align-items: center;
    gap: .75rem;
    cursor: pointer;
}

.gl-toggle {
    position: relative;
    width: 40px;
    height: 22px;
    flex-shrink: 0;
}

    .gl-toggle input {
        opacity: 0;
        width: 0;
        height: 0;
    }

.gl-toggle-slider {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.1);
    transition: .3s;
    cursor: pointer;
}

    .gl-toggle-slider::before {
        content: '';
        position: absolute;
        width: 14px;
        height: 14px;
        left: 3px;
        bottom: 3px;
        background: var(--gl-muted);
        transition: .3s;
    }

.gl-toggle input:checked + .gl-toggle-slider {
    background: rgba(6,182,212,.2);
    border-color: var(--gl-cyan);
}

    .gl-toggle input:checked + .gl-toggle-slider::before {
        transform: translateX(18px);
        background: var(--gl-cyan);
        box-shadow: 0 0 8px var(--gl-glow-cyan);
    }

/* Grupo de campo */
.gl-field {
    margin-bottom: 1rem;
}

/* Mensagens de validação */
.gl-field-error {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-red);
    letter-spacing: .08em;
    margin-top: .3rem;
    display: block;
}

.gl-field-success {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-green);
    letter-spacing: .08em;
    margin-top: .3rem;
    display: block;
}

.gl-field-hint {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    color: var(--gl-muted);
    letter-spacing: .08em;
    margin-top: .3rem;
    display: block;
}

/* ─────────────────────────────────────────────────────────────────
   11. NAVEGAÇÃO
   Compatível com Bootstrap 5 navbar + navbar-collapse + toggler.
   Uso: adicione .gl-nav ao <nav class="navbar ...">
───────────────────────────────────────────────────────────────── */

/* ── Container da navbar ── */
.gl-nav {
    padding: .9rem 2rem;
    background: rgba(8, 15, 28, .97) !important;
    border-bottom: 1px solid var(--gl-border-subtle);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    position: relative;
    z-index: 1030; /* acima de tudo, inclusive do backdrop-filter */
}

/* Variante gradiente (landing / hero) */
.gl-nav-gradient {
    background: linear-gradient(to bottom, rgba(8,15,28,.98) 0%, rgba(8,15,28,0) 100%) !important;
    border-bottom: none;
}

/* ── Logo / Brand ── */
.gl-nav .navbar-brand,
.gl-nav-logo {
    font-family: var(--gl-font-display);
    font-weight: 900;
    font-size: 1.1rem;
    letter-spacing: .12em;
    color: var(--gl-white) !important;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: .5rem;
}

    .gl-nav .navbar-brand:hover,
    .gl-nav-logo:hover {
        color: var(--gl-white) !important;
    }

    .gl-nav-logo .logo-bracket {
        color: var(--gl-cyan);
        font-size: 1.25rem;
        line-height: 1;
    }

/* ── Links de navegação ── */
.gl-nav .nav-link,
.gl-nav-link {
    font-family: var(--gl-font-mono);
    font-size: .72rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--gl-muted-2) !important;
    text-decoration: none;
    padding: .35rem .1rem !important;
    margin: 0 .75rem;
    position: relative;
    transition: color .2s;
}

    .gl-nav .nav-link:hover,
    .gl-nav .nav-link:focus,
    .gl-nav-link:hover {
        color: var(--gl-cyan) !important;
    }

    /* Sublinhado ativo */
    .gl-nav .nav-link.active,
    .gl-nav-link.active {
        color: var(--gl-cyan) !important;
    }

        .gl-nav .nav-link.active::after,
        .gl-nav-link.active::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 1px;
            background: var(--gl-cyan);
            box-shadow: 0 0 6px var(--gl-glow-cyan);
        }

/* ── Toggler (hambúrguer) ── */
.gl-nav .navbar-toggler {
    border: 1px solid rgba(6, 182, 212, .25);
    padding: .35rem .55rem;
    border-radius: 0;
    transition: border-color .2s, background .2s;
}

    .gl-nav .navbar-toggler:hover,
    .gl-nav .navbar-toggler:focus {
        border-color: var(--gl-cyan);
        background: rgba(6, 182, 212, .06);
        box-shadow: none;
    }

/* Ícone do toggler recolorido */
.gl-nav .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(6,182,212,0.85)' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}

/* ── Collapse (menu expandido em mobile) ── */
.gl-nav .navbar-collapse {
    /* sem estilo extra em desktop — Bootstrap cuida do flex */
}

/* Em mobile (quando colapsa), o menu vira uma lista vertical */
@media (max-width: 991.98px) {
    .gl-nav {
        padding: .75rem 1.25rem;
    }

        .gl-nav .navbar-collapse {
            background: var(--gl-card);
            border: 1px solid rgba(6, 182, 212, .15);
            border-top: 2px solid var(--gl-cyan);
            margin-top: .6rem;
            padding: .5rem 0;
            animation: glDropdownIn .2s ease both;
        }

        .gl-nav .nav-link,
        .gl-nav-link {
            display: block;
            margin: 0;
            padding: .55rem 1.25rem !important;
            border-left: 2px solid transparent;
            transition: color .15s, background .15s, border-color .15s;
        }

            .gl-nav .nav-link:hover,
            .gl-nav-link:hover {
                background: rgba(6, 182, 212, .06);
                border-left-color: var(--gl-cyan);
                padding-left: 1.5rem !important;
            }

            /* Remove sublinhado ativo em mobile, usa borda esquerda */
            .gl-nav .nav-link.active::after,
            .gl-nav-link.active::after {
                display: none;
            }

            .gl-nav .nav-link.active,
            .gl-nav-link.active {
                border-left-color: var(--gl-cyan);
                background: rgba(6, 182, 212, .06);
            }

        /* Separador entre nav-items no collapse */
        .gl-nav .navbar-nav .nav-item + .nav-item {
            border-top: 1px solid rgba(255, 255, 255, .04);
        }
}

/* ─────────────────────────────────────────────────────────────────
   12. MODAIS
───────────────────────────────────────────────────────────────── */
.gl-modal-content {
    background: var(--gl-card) !important;
    border: 1px solid rgba(6,182,212,.2) !important;
    border-radius: 0 !important;
    padding: 2.5rem;
    position: relative;
    color: var(--gl-white);
    clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
}

    /* Borda superior animada */
    .gl-modal-content::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 2px;
        background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan), var(--gl-magenta), var(--gl-blue));
        background-size: 200% auto;
        animation: shimmer 3s linear infinite;
    }

.gl-modal-close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    background: transparent;
    border: 1px solid rgba(255,255,255,.08);
    color: var(--gl-muted-2);
    font-family: var(--gl-font-mono);
    font-size: .7rem;
    letter-spacing: .1em;
    padding: .3rem .6rem;
    transition: var(--gl-transition);
    cursor: pointer;
}

    .gl-modal-close:hover {
        color: var(--gl-white);
        border-color: rgba(255,255,255,.25);
    }

.gl-modal-title {
    font-family: var(--gl-font-display);
    font-size: 1.5rem;
    font-weight: 900;
    margin-bottom: .3rem;
}

.gl-modal-subtitle {
    font-family: var(--gl-font-mono);
    font-size: .7rem;
    color: var(--gl-muted-2);
    letter-spacing: .15em;
    text-transform: uppercase;
    margin-bottom: 2rem;
}

.gl-modal-divider {
    display: flex;
    align-items: center;
    gap: .8rem;
    margin: 1.2rem 0;
}

    .gl-modal-divider::before,
    .gl-modal-divider::after {
        content: '';
        flex: 1;
        height: 1px;
        background: rgba(255,255,255,.06);
    }

    .gl-modal-divider span {
        font-family: var(--gl-font-mono);
        font-size: .6rem;
        color: var(--gl-muted);
        letter-spacing: .15em;
    }

/* ─────────────────────────────────────────────────────────────────
   13. ALERTAS & TOASTS
───────────────────────────────────────────────────────────────── */

/* Alertas inline */
[class*="gl-alert"] {
    display: flex;
    align-items: flex-start;
    gap: .8rem;
    padding: .9rem 1.1rem;
    font-size: .88rem;
    line-height: 1.5;
    position: relative;
    font-family: var(--gl-font-body);
}

    [class*="gl-alert"]::before {
        content: '';
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        width: 3px;
    }

.gl-alert-info {
    background: rgba(6,182,212,.08);
    border: 1px solid rgba(6,182,212,.2);
    color: var(--gl-cyan);
}

.gl-alert-success {
    background: rgba(34,197,94,.08);
    border: 1px solid rgba(34,197,94,.2);
    color: var(--gl-green);
}

.gl-alert-warning {
    background: rgba(251,191,36,.08);
    border: 1px solid rgba(251,191,36,.2);
    color: var(--gl-yellow);
}

.gl-alert-danger {
    background: rgba(248,113,113,.08);
    border: 1px solid rgba(248,113,113,.2);
    color: var(--gl-red);
}

.gl-alert-info::before {
    background: var(--gl-cyan);
}

.gl-alert-success::before {
    background: var(--gl-green);
}

.gl-alert-warning::before {
    background: var(--gl-yellow);
}

.gl-alert-danger::before {
    background: var(--gl-red);
}

/* Toast de achievement */
.gl-achievement-toast {
    position: fixed;
    top: 80px;
    right: 24px;
    z-index: 1050;
    width: 300px;
    background: var(--gl-card);
    border: 1px solid var(--gl-yellow);
    padding: 1rem 1.2rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    transform: translateX(340px);
    transition: transform .5s cubic-bezier(.34, 1.56, .64, 1);
    box-shadow: 0 0 30px rgba(251,191,36,.15);
    clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}

    .gl-achievement-toast.show {
        transform: translateX(0);
    }

.gl-ach-shine {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(251,191,36,.05) 50%, transparent 100%);
    animation: achShine 3s ease infinite;
    pointer-events: none;
}

/* HUD Status bar (hero) */
.gl-hud-status {
    display: inline-flex;
    align-items: center;
    gap: 1.5rem;
    background: rgba(6,182,212,.06);
    border: 1px solid rgba(6,182,212,.2);
    padding: .45rem 1.2rem;
    font-family: var(--gl-font-mono);
    font-size: .68rem;
    letter-spacing: .12em;
    color: var(--gl-cyan);
    clip-path: var(--gl-clip-md);
}

    .gl-hud-status .dot {
        width: 5px;
        height: 5px;
        background: var(--gl-green);
        border-radius: 50%;
        animation: blink 2s infinite;
        box-shadow: 0 0 6px var(--gl-green);
    }

    .gl-hud-status .sep {
        color: rgba(6,182,212,.3);
    }

/* ─────────────────────────────────────────────────────────────────
   14. TABELAS
───────────────────────────────────────────────────────────────── */
.gl-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--gl-font-body);
    font-size: .92rem;
}

    .gl-table thead tr {
        border-bottom: 1px solid rgba(6,182,212,.2);
    }

    .gl-table thead th {
        font-family: var(--gl-font-mono);
        font-size: .62rem;
        letter-spacing: .15em;
        text-transform: uppercase;
        color: var(--gl-cyan);
        padding: .8rem 1rem;
        font-weight: 400;
        text-align: left;
        white-space: nowrap;
    }

    .gl-table tbody tr {
        border-bottom: 1px solid rgba(255,255,255,.04);
        transition: background .2s;
    }

        .gl-table tbody tr:hover {
            background: rgba(6,182,212,.04);
        }

    .gl-table tbody td {
        padding: .8rem 1rem;
        color: var(--gl-muted-2);
        vertical-align: middle;
    }

        .gl-table tbody td:first-child {
            color: var(--gl-white);
        }

/* Tabela com linhas zebradas */
.gl-table-striped tbody tr:nth-child(even) {
    background: rgba(255,255,255,.02);
}

/* ─────────────────────────────────────────────────────────────────
   15. PROGRESSO & XP BARS
───────────────────────────────────────────────────────────────── */

/* XP Bar */
.gl-xp-wrap {
    width: 100%;
}

.gl-xp-header {
    display: flex;
    justify-content: space-between;
    font-family: var(--gl-font-mono);
    font-size: .65rem;
    color: var(--gl-muted-2);
    letter-spacing: .1em;
    margin-bottom: .4rem;
}

    .gl-xp-header span:last-child {
        color: var(--gl-cyan);
    }

.gl-xp-track {
    width: 100%;
    height: 6px;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(6,182,212,.15);
    overflow: hidden;
    position: relative;
}

.gl-xp-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--gl-blue), var(--gl-cyan));
    transition: width 2s cubic-bezier(.4,0,.2,1) 1s;
    position: relative;
}

    .gl-xp-fill::after {
        content: '';
        position: absolute;
        right: 0;
        top: 0;
        bottom: 0;
        width: 20px;
        background: linear-gradient(90deg, transparent, rgba(255,255,255,.4));
        animation: xpShine 2s ease-in-out infinite 3s;
    }

/* Variantes de tamanho */
.gl-xp-track.sm {
    height: 4px;
}

.gl-xp-track.lg {
    height: 10px;
}

/* Variantes de cor da barra */
.gl-xp-fill-cyan {
    background: linear-gradient(90deg, var(--gl-cyan-dim), var(--gl-cyan));
}

.gl-xp-fill-magenta {
    background: linear-gradient(90deg, var(--gl-magenta-d), var(--gl-magenta));
}

.gl-xp-fill-yellow {
    background: linear-gradient(90deg, var(--gl-yellow-d), var(--gl-yellow));
}

.gl-xp-fill-green {
    background: linear-gradient(90deg, var(--gl-green-d), var(--gl-green));
}

.gl-xp-fill-red {
    background: linear-gradient(90deg, var(--gl-red-d), var(--gl-red));
}

/* Mini bars (chart) */
.gl-mini-bars {
    display: flex;
    gap: 3px;
    align-items: flex-end;
}

.gl-mini-bar {
    flex: 1;
    background: rgba(37,99,235,.25);
    border-top: 1px solid rgba(59,130,246,.4);
    animation: barLoad 1s ease both;
    min-height: 4px;
}

    .gl-mini-bar.active {
        background: rgba(6,182,212,.3);
        border-color: var(--gl-cyan);
    }

@keyframes barLoad {
    from {
        height: 0 !important;
        opacity: 0;
    }
}

/* ─────────────────────────────────────────────────────────────────
   16. DIVIDERS
───────────────────────────────────────────────────────────────── */

/* Divisor horizontal padrão */
.gl-divider {
    border: none;
    height: 1px;
    background: rgba(255,255,255,.06);
    margin: 1.5rem 0;
}

/* Divisor com gradiente cyan */
.gl-divider-glow {
    border: none;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gl-cyan), transparent);
    opacity: .4;
    margin: 1.5rem 0;
}

/* Divisor com label */
.gl-divider-label {
    display: flex;
    align-items: center;
    gap: .8rem;
    margin: 1.5rem 0;
}

    .gl-divider-label::before,
    .gl-divider-label::after {
        content: '';
        flex: 1;
        height: 1px;
        background: rgba(255,255,255,.06);
    }

    .gl-divider-label span {
        font-family: var(--gl-font-mono);
        font-size: .62rem;
        color: var(--gl-muted);
        letter-spacing: .15em;
        text-transform: uppercase;
        white-space: nowrap;
    }

/* Divisor vertical */
.gl-divider-v {
    width: 1px;
    background: rgba(255,255,255,.06);
    align-self: stretch;
}

/* ─────────────────────────────────────────────────────────────────
   17. SEÇÕES & LAYOUT
───────────────────────────────────────────────────────────────── */

/* Seção com padding padrão */
.gl-section {
    position: relative;
    z-index: 1;
    padding: 5rem 0;
}

.gl-section-sm {
    padding: 3rem 0;
}

.gl-section-lg {
    padding: 8rem 0;
}

/* Container com max-width */
.gl-container {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.gl-container-sm {
    max-width: 780px;
}

.gl-container-lg {
    max-width: 1400px;
}

/* Cabeçalho de seção */
.gl-section-header {
    margin-bottom: 3rem;
}

.gl-section-eyebrow {
    font-family: var(--gl-font-mono);
    font-size: .65rem;
    letter-spacing: .25em;
    text-transform: uppercase;
    color: var(--gl-cyan);
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1rem;
}

    .gl-section-eyebrow::before {
        content: '//';
        color: var(--gl-muted);
    }

.gl-section-title {
    font-family: var(--gl-font-display);
    font-size: clamp(1.6rem, 3.5vw, 2.5rem);
    font-weight: 700;
    line-height: 1.15;
    max-width: 560px;
}

    .gl-section-title em {
        font-style: normal;
        color: var(--gl-cyan);
    }

/* Orb de glow de fundo (decorativo) */
.gl-orb {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.gl-orb-hero {
    top: 30%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 600px;
    height: 600px;
    background: radial-gradient(circle, rgba(37,99,235,.15) 0%, rgba(6,182,212,.08) 40%, transparent 70%);
    animation: orbPulse 6s ease-in-out infinite;
}

.gl-orb-section {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 900px;
    height: 500px;
    background: radial-gradient(ellipse, rgba(37,99,235,.1) 0%, rgba(6,182,212,.05) 40%, transparent 70%);
}

/* ─────────────────────────────────────────────────────────────────
   18. UTILITÁRIOS (Glow, Glitch, Shimmer, Clip-path)
───────────────────────────────────────────────────────────────── */

/* Glows de texto */
.gl-glow-cyan {
    text-shadow: 0 0 20px rgba(6, 182, 212, .5);
}

.gl-glow-blue {
    text-shadow: 0 0 20px rgba(37, 99, 235, .5);
}

.gl-glow-magenta {
    text-shadow: 0 0 20px rgba(232, 121, 249, .5);
}

.gl-glow-yellow {
    text-shadow: 0 0 20px rgba(251, 191, 36, .5);
}

/* Box glows */
.gl-box-glow-cyan {
    box-shadow: 0 0 20px var(--gl-glow-cyan);
}

.gl-box-glow-blue {
    box-shadow: 0 0 20px var(--gl-glow-blue);
}

.gl-box-glow-magenta {
    box-shadow: 0 0 20px var(--gl-glow-magenta);
}

.gl-box-glow-yellow {
    box-shadow: 0 0 20px var(--gl-glow-yellow);
}

/* Shimmer animado em texto */
.gl-shimmer {
    background: linear-gradient(90deg, var(--gl-blue-b), var(--gl-cyan), var(--gl-blue-b));
    background-size: 200% auto;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: shimmer 4s linear infinite;
}

/* Clip-path hexagonal */
.gl-clip-hex {
    clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

/* Reveal de scroll */
.gl-reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .6s ease, transform .6s ease;
}

    .gl-reveal.visible {
        opacity: 1;
        transform: translateY(0);
    }

/* Fundo de seção com pixels (canvas) */
.gl-pixel-bg {
    position: absolute;
    inset: 0;
    overflow: hidden;
    opacity: .04;
    pointer-events: none;
}

    .gl-pixel-bg canvas {
        width: 100%;
        height: 100%;
    }

/* Linha de acento (borda esquerda) */
.gl-accent-line {
    border-left: 2px solid var(--gl-cyan);
    padding-left: 1rem;
}

/* ─────────────────────────────────────────────────────────────────
   19. ANIMAÇÕES (@keyframes)
───────────────────────────────────────────────────────────────── */
@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes shimmer {
    to {
        background-position: 200% center;
    }
}

@keyframes blink {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: .2;
    }
}

@keyframes orbPulse {
    0%, 100% {
        transform: translate(-50%,-50%) scale(1);
        opacity: 1;
    }

    50% {
        transform: translate(-50%,-50%) scale(1.1);
        opacity: .7;
    }
}

@keyframes xpShine {
    0%, 100% {
        opacity: 0;
    }

    50% {
        opacity: 1;
    }
}

@keyframes achShine {
    0% {
        transform: translateX(-100%);
    }

    100% {
        transform: translateX(200%);
    }
}

@keyframes glitch1 {
    0%, 94%, 100% {
        opacity: 0;
        transform: none;
    }

    95% {
        opacity: .7;
        transform: translate(-3px, 0);
    }

    97% {
        opacity: .7;
        transform: translate( 3px, 0);
    }

    99% {
        opacity: 0;
    }
}

@keyframes glitch2 {
    0%, 92%, 100% {
        opacity: 0;
        transform: none;
    }

    93% {
        opacity: .5;
        transform: translate( 4px, 0);
    }

    96% {
        opacity: .5;
        transform: translate(-2px, 0);
    }

    98% {
        opacity: 0;
    }
}

@keyframes glSpin {
    to {
        transform: rotate(360deg);
    }
}

/* Classes de animação rápida */
.gl-anim-fade-up {
    animation: fadeUp .7s ease both;
}

.gl-anim-fade-in {
    animation: fadeIn .5s ease both;
}

.gl-anim-delay-1 {
    animation-delay: .1s;
}

.gl-anim-delay-2 {
    animation-delay: .2s;
}

.gl-anim-delay-3 {
    animation-delay: .3s;
}

.gl-anim-delay-4 {
    animation-delay: .4s;
}

.gl-anim-delay-5 {
    animation-delay: .5s;
}

/* ─────────────────────────────────────────────────────────────────
   20. FOOTER
───────────────────────────────────────────────────────────────── */

/* ── Container ── */
.gl-footer {
    position: relative;
    background: var(--gl-card);
    border-top: 1px solid var(--gl-border-subtle);
    padding: 2.5rem 0 0;
    overflow: hidden;
}

    /* Linha superior gradiente */
    .gl-footer::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 2px;
        background: linear-gradient(90deg, transparent, var(--gl-blue), var(--gl-cyan), var(--gl-magenta), transparent);
        background-size: 200% auto;
        animation: shimmer 6s linear infinite;
    }

    /* Atmosfera de glow sutil no topo */
    .gl-footer::after {
        content: '';
        position: absolute;
        top: 0;
        left: 50%;
        transform: translateX(-50%);
        width: 60%;
        height: 120px;
        background: radial-gradient(ellipse at top, rgba(6, 182, 212, .06) 0%, transparent 70%);
        pointer-events: none;
    }

/* Grid de colunas (usa Bootstrap col- normalmente) */
.gl-footer-body {
    position: relative;
    z-index: 1;
    padding: 0 2rem 2rem;
}

/* ── Logo / Brand ── */
.gl-footer-brand {
    font-family: var(--gl-font-display);
    font-weight: 900;
    font-size: 1rem;
    letter-spacing: .14em;
    color: var(--gl-white);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    margin-bottom: .75rem;
}

    .gl-footer-brand:hover {
        color: var(--gl-white);
        text-decoration: none;
    }

    .gl-footer-brand .logo-bracket {
        color: var(--gl-cyan);
    }

.gl-footer-tagline {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--gl-muted);
    margin-bottom: 1.1rem;
    display: block;
}

/* Status dot "online" */
.gl-footer-status {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--gl-muted);
}

    .gl-footer-status::before {
        content: '';
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: var(--gl-green);
        box-shadow: 0 0 6px rgba(34, 197, 94, .6);
        animation: blink 2.5s ease-in-out infinite;
        flex-shrink: 0;
    }

/* ── Títulos de coluna ── */
.gl-footer-heading {
    font-family: var(--gl-font-mono);
    font-size: .6rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--gl-cyan);
    margin-bottom: .9rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}

    .gl-footer-heading::after {
        content: '';
        flex: 1;
        height: 1px;
        background: linear-gradient(90deg, rgba(6, 182, 212, .3), transparent);
    }

/* ── Links de coluna ── */
.gl-footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: .55rem;
}

.gl-footer-link {
    font-family: var(--gl-font-body);
    font-size: .85rem;
    color: var(--gl-muted-2);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    transition: color .2s, gap .2s;
    position: relative;
}

    .gl-footer-link::before {
        content: '›';
        font-family: var(--gl-font-mono);
        font-size: .75rem;
        color: var(--gl-cyan);
        opacity: 0;
        transition: opacity .2s;
    }

    .gl-footer-link:hover {
        color: var(--gl-white);
        gap: .6rem;
        text-decoration: none;
    }

        .gl-footer-link:hover::before {
            opacity: 1;
        }

/* ── Stats mini (versão / build info) ── */
.gl-footer-meta {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.gl-footer-meta-item {
    display: flex;
    align-items: baseline;
    gap: .5rem;
}

.gl-footer-meta-label {
    font-family: var(--gl-font-mono);
    font-size: .55rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--gl-muted);
    flex-shrink: 0;
}

.gl-footer-meta-value {
    font-family: var(--gl-font-display);
    font-size: .75rem;
    font-weight: 700;
    color: var(--gl-blue-c);
}

/* ── Divider horizontal interno ── */
.gl-footer-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .06), transparent);
    border: none;
    margin: 0;
}

/* ── Rodapé inferior (copyright bar) ── */
.gl-footer-bottom {
    position: relative;
    z-index: 1;
    padding: .9rem 2rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.gl-footer-copyright {
    font-family: var(--gl-font-mono);
    font-size: .62rem;
    letter-spacing: .1em;
    color: var(--gl-muted);
}

    .gl-footer-copyright span {
        color: var(--gl-cyan);
    }

/* Tick marks decorativos no bottom bar */
.gl-footer-bottom::before {
    content: '';
    position: absolute;
    top: 0;
    left: 2rem;
    right: 2rem;
    height: 1px;
    background: rgba(255, 255, 255, .04);
}

/* ── HUD corner pips ── */
.gl-footer-pip {
    position: absolute;
    width: 4px;
    height: 4px;
    background: var(--gl-cyan);
    opacity: .4;
}

.gl-footer-pip--tl {
    top: 8px;
    left: 8px;
}

.gl-footer-pip--tr {
    top: 8px;
    right: 8px;
}

/* ── Responsivo ── */
@media (max-width: 767.98px) {
    .gl-footer-body {
        padding: 0 1.25rem 1.75rem;
    }

    .gl-footer-bottom {
        padding: .75rem 1.25rem;
        flex-direction: column;
        text-align: center;
    }

    .gl-footer-heading::after {
        display: none;
    }
}

/* ─────────────────────────────────────────────────────────────────
   21. RESPONSIVO (compatível com Bootstrap 5 breakpoints)
   xs: <576 | sm: ≥576 | md: ≥768 | lg: ≥992 | xl: ≥1200 | xxl: ≥1400
───────────────────────────────────────────────────────────────── */
@media (max-width: 1199.98px) {
    .gl-nav {
        padding: 1rem 1.5rem;
    }
}

@media (max-width: 991.98px) {
    .gl-section {
        padding: 4rem 0;
    }

    .gl-section-lg {
        padding: 5rem 0;
    }

    /* Nav: esconde links, mantém botão */
    .gl-nav-links .gl-nav-link {
        display: none;
    }

        .gl-nav-links .gl-nav-link:last-child {
            display: flex;
        }
}

@media (max-width: 767.98px) {
    .gl-section {
        padding: 3rem 0;
    }

    .gl-section-sm {
        padding: 2rem 0;
    }

    .gl-achievement-toast {
        width: calc(100vw - 2rem);
        right: 1rem;
    }

    /* Botões full width em mobile se dentro de .gl-btns-mobile-full */
    .gl-btns-mobile-full [class*="btn-gl"] {
        width: 100%;
    }

    .gl-table {
        font-size: .82rem;
    }

        .gl-table thead th,
        .gl-table tbody td {
            padding: .6rem .75rem;
        }
}

@media (max-width: 575.98px) {
    .gl-stat-num {
        font-size: 1.5rem;
    }

    .gl-hud-status {
        gap: .75rem;
        padding: .4rem .8rem;
        font-size: .6rem;
    }

    .hud-corner {
        width: 40px;
        height: 40px;
    }
}