.badge-shelf{margin:2rem 0;padding:clamp(18px,3vw,36px);border:1px solid;border-radius:5px 14px 8px 11px;background:var(--paper,#e8e2cf);color:var(--ink,#343a33)}.badge-shelf header{display:flex;justify-content:space-between;gap:24px;align-items:center}.badge-shelf h2{font-size:clamp(28px,4vw,43px);line-height:1.15;margin:8px 0 12px}.badge-shelf p{max-width:72ch}.badge-count{font-size:44px;border:1px dashed;min-width:95px;text-align:center;transform:rotate(3deg);padding:15px;border-radius:48% 45% 50% 44%}.badge-count small{display:block;font-size:10px;font-family:monospace}.badge-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:18px 0}.badge-actions button,.badge-discover{font:inherit;background:transparent;color:inherit;padding:10px 15px;border:1px solid;border-radius:3px 6px 5px 2px;cursor:pointer}.badge-actions button:disabled{opacity:.5;cursor:default}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:14px;gap:14px;margin:22px 0}.badge-card{font:inherit;display:flex;align-items:center;flex-direction:column;text-align:center;padding:18px 12px;background:transparent;color:inherit;border:1px solid #7d80654a;border-radius:3px 14px 4px 7px;min-width:0;cursor:pointer}.badge-card strong{font-size:16px;line-height:1.3}.badge-card span:not(.badge-art){font:10px monospace;letter-spacing:.08em;text-transform:uppercase;margin:9px 0;color:#6b6456}.badge-card small{font-size:12px;line-height:1.5}.badge-card em{font:11px monospace;margin-top:14px}.badge-card.is-pinned{background:#bc965921;border:1px solid #8b682c}.badge-card.is-locked{opacity:.55;cursor:default}.badge-art{width:75px;height:75px;display:block;margin-bottom:10px;border:1px dashed #8f887b;border-radius:48% 53% 44% 52%;padding:9px;background:#c09d6818}.badge-art svg{stroke:#5c6650;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.badge-art .badge-ink-shadow{transform:translate(1px,-1px);stroke:#ad8d58;opacity:.45;stroke-width:.7}.badge-card:hover:not(:disabled) .badge-art{transform:rotate(-5deg)}.badge-help,.badge-notice{font-size:12px;line-height:1.6}.badge-shelf :focus-visible{outline:2px solid currentColor;outline-offset:4px}@media(max-width:520px){.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.badge-count{min-width:64px;font-size:30px}.badge-card{padding:14px 8px}.badge-art{width:60px;height:60px}}.badge-grid{gap:20px}.badge-card{position:relative;border:0;border-bottom:1px dashed #73684e55;border-radius:0;background:transparent!important}.badge-card:nth-child(3n+1){transform:rotate(-1deg)}.badge-card:nth-child(3n+2){transform:rotate(1deg)}.badge-art{border:0;background:none;padding:0;width:112px;height:112px;border-radius:0}.badge-art svg{width:100%;height:100%;stroke:var(--badge-ink);fill:none;overflow:visible}.badge-wash{fill:var(--badge-wash);opacity:.33;stroke:none}.badge-stitch{stroke:var(--badge-ink);stroke-dasharray:2 3;opacity:.48;stroke-width:.8}.badge-main{stroke:var(--badge-ink);stroke-width:1.6;fill:var(--badge-wash);fill-opacity:.2}.badge-rough{transform:translate(1px,-.9px);stroke:var(--badge-ink);stroke-width:.7;opacity:.45}.badge-sparks{stroke:var(--badge-ink);opacity:.2;stroke-width:1.3;transform-origin:40px 40px}.badge-pencil-grain{stroke:var(--badge-ink);opacity:.2;stroke-width:.7}.is-earned .badge-subject{animation:badge-breathe 5s ease-in-out infinite;animation-delay:var(--badge-delay);transform-origin:40px 40px}.is-earned .emblem-eye .badge-subject{animation:badge-blink 6s infinite}.is-earned .emblem-flame .badge-subject,.is-earned .emblem-pumpkin .badge-subject{animation:badge-flame 2.6s ease-in-out infinite}.is-earned .emblem-relic .badge-subject,.is-earned .emblem-ribbon .badge-subject{animation:badge-swing 4s ease-in-out infinite}.is-earned .emblem-crown .badge-sparks,.is-earned .emblem-crystal .badge-sparks{animation:badge-glint 3s ease-in-out infinite}.badge-card:active .badge-art{transform:rotate(-8deg) scale(.92)}.badge-card:hover:not(:disabled) .badge-sparks{opacity:1}.badge-card.is-locked{opacity:.68}.is-locked .badge-art{filter:saturate(.45)}.badge-filters{margin:24px 0}.badge-filters input{display:block;background:transparent;color:inherit;border:0;border-bottom:1px solid #756c54;padding:12px 3px;width:min(100%,400px);font:inherit}.badge-filters nav{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.badge-filters button{font:12px monospace;background:transparent;color:inherit;padding:8px;border:1px dashed #93856b;border-radius:4px 12px 3px 9px;cursor:pointer}.badge-filters button[aria-pressed=true]{background:#323c34;color:#eee4cd}.badge-card strong{font-family:var(--font-mono,"Courier New",monospace)}@keyframes badge-breathe{50%{translate:0 -1.5px;rotate:1deg}}@keyframes badge-swing{50%{rotate:6deg}}@keyframes badge-glint{50%{opacity:.85;rotate:12deg}}@keyframes badge-flame{50%{scale:.95 1.07;opacity:.7}}@keyframes badge-blink{0%,43%,48%,to{scale:1 1}45%{scale:1 .12}}@media(prefers-reduced-motion:reduce){.badge-shelf *{animation:none!important;transition:none!important}}@media(max-width:520px){.badge-art{width:90px;height:90px}.badge-grid{gap:10px}}