/* ============================================================
   PATENTE.CSS — Emblemas das 13 patentes do ProjetoX
   Emblema em SVG (gerado por patente.js) cujo formato evolui por faixa:
     1-4  escudo          (bronze → aço)
     5-8  hexágono        (platina → gemas)
     9-11 estrela 8 pontas (ouro → rubi)
     12-13 brasão com raios e louros (lendários)
   Reutilizável no pódio, painel do usuário, stats e cabeçalho.
   Uso: window.PXPatente.badge(rankKeyOrName, size) → HTML
   A plaquinha do tier segue o design novo (mono, canto reto); a janela
   da trilha de patentes e as conquistas ficam em v3-perfil.css.
   ============================================================ */
.pxpat {
    --sz: 40px;
    --isz: .38;               /* tamanho do ícone relativo ao emblema */
    --pc1: #9aa6bd;           /* face: topo */
    --pc2: #5a6579;           /* face: base */
    --pring: #cfd7e6;         /* metal da moldura */
    --plo: #4a5468;           /* sombra do metal */
    --pglow: rgba(150, 170, 210, .45);
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--sz);
    height: var(--sz);
    flex: 0 0 auto;
    vertical-align: middle;
    filter:
        drop-shadow(0 calc(var(--sz) * .04) calc(var(--sz) * .05) rgba(0, 0, 0, .55))
        drop-shadow(0 0 calc(var(--sz) * .1) var(--pglow));
}

.pxpat-svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}
.pxpat-svg .pxs-hi   { stop-color: #ffffff; stop-opacity: .95; }
.pxpat-svg .pxs-ring { stop-color: var(--pring); }
.pxpat-svg .pxs-lo   { stop-color: var(--plo); }
.pxpat-svg .pxs-c1   { stop-color: var(--pc1); }
.pxpat-svg .pxs-c2   { stop-color: var(--pc2); }

.pxpat-frame { stroke: rgba(0, 0, 0, .45); stroke-width: 1.4; stroke-linejoin: round; }
.pxpat-face  { stroke: rgba(0, 0, 0, .5);  stroke-width: 1.6; stroke-linejoin: round; }
.pxpat-gloss { fill: #fff; opacity: .2; }
.pxpat-sheen { fill: #fff; opacity: 0; }
.pxpat-rays  { fill: var(--pring); opacity: .55; transform-box: fill-box; transform-origin: center; }
.pxpat-laurel { fill: var(--pring); stroke: rgba(0, 0, 0, .35); stroke-width: .8; }

/* Ícone central */
.pxpat-core {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
.pxpat-f-shield .pxpat-core { margin-top: calc(var(--sz) * -.04); }
.pxpat-core i {
    font-size: calc(var(--sz) * var(--isz));
    line-height: 1;
    color: #fff;
    filter: drop-shadow(0 calc(var(--sz) * .02) 0 rgba(0, 0, 0, .45));
}

/* Número do tier — plaquinha na base, centralizada */
.pxpat-tier {
    position: absolute;
    left: 50%;
    bottom: calc(var(--sz) * -.1);
    transform: translateX(-50%);
    z-index: 3;
    min-width: calc(var(--sz) * .36);
    height: calc(var(--sz) * .3);
    padding: 0 calc(var(--sz) * .07);
    border-radius: 2px;
    background: var(--pc-ink, #0b0d0c);
    border: 1px solid var(--pring);
    color: #fff;
    font-family: var(--pc-mono, 'JetBrains Mono', ui-monospace, monospace);
    font-size: calc(var(--sz) * .2);
    font-weight: 700;
    line-height: calc(var(--sz) * .3 - 2px);
    text-align: center;
    letter-spacing: 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .55);
}
.pxpat-f-star .pxpat-tier,
.pxpat-f-crest .pxpat-tier { bottom: calc(var(--sz) * -.04); }

/* ---- Paleta por patente (13 tiers) ---- */
/* Escudos */
.pxpat--junior        { --pc1:#8f5e3a; --pc2:#4e2f19; --pring:#b07a52; --plo:#4a2c16; --pglow:rgba(200,135,74,.35); }
.pxpat--intermediario { --pc1:#c98a4c; --pc2:#7a4520; --pring:#f0b67a; --plo:#6b3a18; --pglow:rgba(214,150,84,.4); }
.pxpat--avancado      { --pc1:#8b97aa; --pc2:#4a5467; --pring:#d4dce8; --plo:#4c5566; --pglow:rgba(170,182,200,.42); }
.pxpat--especialista  { --pc1:#5b8bc7; --pc2:#2c4a78; --pring:#d4dce8; --plo:#4c5566; --pglow:rgba(109,150,200,.5); }
/* Hexágonos */
.pxpat--profissional  { --pc1:#e3e9f4; --pc2:#8c98b2; --pring:#f4f7fc; --plo:#7d879b; --pglow:rgba(220,228,245,.5); }
.pxpat--profissional .pxpat-core i { color: #3d4a66; filter: drop-shadow(0 1px 0 rgba(255,255,255,.6)); }
.pxpat--expert        { --pc1:#33c6e0; --pc2:#136f8f; --pring:#bdf3fb; --plo:#2b7f93; --pglow:rgba(63,208,230,.55); }
.pxpat--brilhante     { --pc1:#34d683; --pc2:#127845; --pring:#bff7d8; --plo:#2a8c5a; --pglow:rgba(63,224,138,.55); }
.pxpat--visionario    { --pc1:#9a7cff; --pc2:#4b2db0; --pring:#ddd0ff; --plo:#6650b8; --pglow:rgba(164,135,255,.6); }
/* Estrelas */
.pxpat--elite         { --pc1:#ffcf47; --pc2:#c27f0e; --pring:#ffe58a; --plo:#a8700f; --pglow:rgba(255,199,60,.6); }
.pxpat--mestre        { --pc1:#ff9f3d; --pc2:#b8520c; --pring:#ffe08a; --plo:#a8700f; --pglow:rgba(255,150,40,.6); }
.pxpat--imperador     { --pc1:#ff5a78; --pc2:#9c1030; --pring:#ffe08a; --plo:#a8700f; --pglow:rgba(255,80,110,.65); }
/* Brasões */
.pxpat--lenda_viva    { --pc1:#c25cff; --pc2:#5a1a9c; --pring:#ffd76b; --plo:#a8700f; --pglow:rgba(196,88,255,.7); }
.pxpat--divindade     { --pc1:#ffffff; --pc2:#a9c4ff; --pring:#fff4c8; --plo:#c9a64a; --pglow:rgba(180,210,255,.85); }
.pxpat--divindade .pxpat-core i { color: #6a4ad0; filter: drop-shadow(0 0 3px #fff); }

/* ---- Brilho que atravessa a face (estrelas e brasões) ---- */
.pxpat-f-star .pxpat-sheen,
.pxpat-f-crest .pxpat-sheen {
    opacity: .35;
    transform: translateX(-120px);
    animation: pxpat-sheen 4.5s ease-in-out infinite;
}
@keyframes pxpat-sheen {
    0%, 55% { transform: translateX(-120px); }
    100%    { transform: translateX(120px); }
}

/* Raios do brasão giram devagar */
.pxpat-f-crest .pxpat-rays { animation: pxpat-spin 18s linear infinite; }
.pxpat--divindade .pxpat-rays {
    fill: #fff3b0;
    opacity: .75;
    animation-duration: 10s;
}
@keyframes pxpat-spin { to { transform: rotate(360deg); } }

/* Halo pulsando nas lendárias */
.pxpat-f-crest {
    animation: pxpat-glow 3s ease-in-out infinite;
}
@keyframes pxpat-glow {
    0%, 100% {
        filter: drop-shadow(0 calc(var(--sz) * .04) calc(var(--sz) * .05) rgba(0, 0, 0, .55))
                drop-shadow(0 0 calc(var(--sz) * .08) var(--pglow));
    }
    50% {
        filter: drop-shadow(0 calc(var(--sz) * .04) calc(var(--sz) * .05) rgba(0, 0, 0, .55))
                drop-shadow(0 0 calc(var(--sz) * .2) var(--pglow));
    }
}

/* Sem patente */
.pxpat--none { --pc1:#3a4256; --pc2:#232a3a; --pring:#5a6478; --plo:#2c3344; --pglow:transparent; }
.pxpat--none .pxpat-core i { color: #7a879e; }

@media (prefers-reduced-motion: reduce) {
    .pxpat, .pxpat-rays, .pxpat-sheen { animation: none !important; }
}

/* Tamanho reduzido: esconde número do tier em badges muito pequenos */
.pxpat[style*="--sz:16px"] .pxpat-tier,
.pxpat[style*="--sz:18px"] .pxpat-tier,
.pxpat[style*="--sz:20px"] .pxpat-tier,
.pxpat[style*="--sz:24px"] .pxpat-tier { display: none; }
