.keyring-preview{box-sizing:border-box;max-width:860px;width:calc(100% - 36px);margin:16px auto 28px;padding:15px;background:#f5ead2;border:2px solid #193b30;box-shadow:4px 4px 0 #8d2936}.keyring-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.keyring-heading h2{margin:0;color:#193b30;font:400 clamp(20px,3vw,28px)/1.1 Anton,sans-serif}.keyring-soon{display:inline-block;flex-shrink:0;padding:6px 10px;background:#8d2936;color:#fff3d7;font:800 12px/1.1 'League Spartan',sans-serif;box-shadow:2px 2px 0 #e9c54c;animation:keyring-soon 2.8s ease-in-out infinite}.keyring-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.keyring-card{display:block;min-width:0;background:#f3e7d2;color:#193b30;text-decoration:none;border:1px solid #193b3050;overflow:hidden}.keyring-card img{display:block;width:100%;height:170px;object-fit:contain}.keyring-card>span{display:flex;justify-content:space-between;gap:4px;padding:8px;font:700 14px/1.15 'League Spartan',sans-serif}.keyring-card:hover{outline:2px solid #8d2936}.keyring-card:focus-visible{outline:3px solid #8d2936;outline-offset:3px}.keyring-catalog{width:100%;max-width:none;margin:24px 0 36px}.keyring-catalog img{height:280px}.keyring-catalog h3,.keyring-catalog p{margin:10px;font-family:'League Spartan',sans-serif}.keyring-catalog p{color:#8d2936}.keyring-catalog article{scroll-margin-top:20px}@keyframes keyring-soon{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(1deg)}}@media(max-width:560px){.keyring-preview{padding:10px;width:calc(100% - 28px)}.keyring-heading{gap:8px}.keyring-heading h2{font-size:19px}.keyring-soon{font-size:10px;padding:5px 7px}.keyring-grid{gap:7px}.keyring-card img{height:120px}.keyring-card>span{font-size:11px;padding:7px 5px}.keyring-catalog{width:100%}.keyring-catalog img{height:150px}.keyring-catalog h3{font-size:15px}}@media(prefers-reduced-motion:reduce){.keyring-soon{animation:none}}

.keyring-sheet{display:block;margin:10px;border-top:1px solid #193b3040;padding-top:12px;text-decoration:none;color:#8d2936}.keyring-catalog .keyring-sheet img{width:100%;height:auto;max-height:none;object-fit:contain}.keyring-sheet span{display:block;padding:10px 2px;font:700 14px/1.2 "League Spartan",sans-serif}.keyring-sheet:focus-visible{outline:3px solid #8d2936}@media(max-width:560px){.keyring-catalog .keyring-grid{grid-template-columns:1fr}.keyring-catalog .keyring-card>a:first-child img{height:220px}}
