/* Illustrated brass controls and earned-reward presentation. */
.map-tools{z-index:3;top:112px;right:20px;gap:6px}
.map-tools button{width:48px;height:48px;padding:3px;border:1px solid #eed08a90;border-radius:13px;background:linear-gradient(135deg,#526048,#142b29 48%,#263d32);box-shadow:inset 0 0 0 3px #101d20,inset 0 0 0 4px #a18b5470,0 4px 9px #06151060}
.map-tools button:hover{background:linear-gradient(135deg,#6d7850,#243d32)}.map-tools img{display:block;width:100%;height:100%;filter:drop-shadow(0 2px 1px #0008)}
.map-tools button:disabled{opacity:.4}.map-tools [hidden]{display:none!important}
#map,#map .ol-viewport,#map .world-actor{touch-action:none}
#questBadge{position:absolute;top:6px;right:17%;min-width:21px;height:21px;padding:1px 5px;border:1px solid #ffedb1;border-radius:50%;background:linear-gradient(#f4d575,#b47828);color:#26382c;font:700 12px/18px system-ui;box-shadow:0 0 12px #efc96360}
.bestiary-card.has-reward{animation:claimGlow 2.5s ease-in-out infinite}.book-claim{position:absolute;right:5px;top:5px;padding:3px 7px;border:1px solid #f8dda0;border-radius:10px;background:#59431f;color:#fff2be;font:700 9px system-ui}
.rank-claims{margin:18px 0;display:grid;gap:10px;text-align:left}.rank-claims h3{margin:0;color:#eed38f}.rank-claim{display:flex;align-items:center;gap:10px;border:1px solid #d8b77a60;border-radius:13px;padding:12px;background:linear-gradient(130deg,#85672d20,#0d2021)}.rank-claim>.rank-gem{width:35px;height:35px}.rank-claim>div{flex:1}.rank-claim strong,.rank-claim small{display:block}.rank-claim button{padding:10px 13px;min-height:44px;font-size:13px}.claim-ready{margin:12px 0 0}.claim-ready button{width:100%;color:#f5dda0;border-color:#d8b77a70;background:#644e2520}
.result{padding-top:12px}.result .crest{margin:0 auto 8px;width:86px;height:86px;font-size:60px;line-height:86px;border-radius:50%;background:radial-gradient(#f5d88030,transparent 68%);animation:crestArrive .65s both}.victory-loot{margin:22px 0 6px;text-align:left}.reward-counter,.monster-credit{position:relative;display:flex;align-items:center;gap:12px;padding:12px 14px;margin-top:10px;border:1px solid #d8b77a38;border-radius:15px;background:linear-gradient(120deg,#be955f12,#0c191d70);animation:rewardArrive .5s both;overflow:hidden}.reward-counter>img{width:45px;height:45px;object-fit:contain}.reward-counter>div,.monster-credit>div{flex:1;min-width:0}.reward-counter small,.monster-credit small{display:block;color:#c7b98e;font:9px system-ui;letter-spacing:1.6px}.reward-counter strong{display:block;color:#f2ddb1;font:30px/1.2 Georgia;font-variant-numeric:tabular-nums}.reward-gain{color:#f7dc8c;border:1px solid #dcc17c50;background:#dcc17c13;border-radius:9px;padding:5px 8px;font:700 16px Georgia;white-space:nowrap}.monster-credit>img{width:55px;height:62px;object-fit:contain}.monster-credit strong{display:block;font:16px Georgia;color:#eee0c0;margin:2px 0}.monster-credit span{font:12px system-ui;color:#bccbb9}.monster-credit [data-value]{color:#f5d991;font-size:20px;font-variant-numeric:tabular-nums}.reward-xp{padding:9px 12px 4px;font:11px system-ui;color:#c0c6b3}.reward-track{height:8px;margin-top:6px;background:#091517;border:1px solid #ffffff14;border-radius:20px;overflow:hidden}.reward-track i{display:block;height:100%;background:linear-gradient(90deg,#548b78,#b1dfb0);box-shadow:0 0 12px #b4e9b0}.reward-landed{animation:rewardFinish .7s both}.reward-complete{min-height:18px;text-align:center;color:#f6d78a;font:13px Georgia;margin:14px 0 4px}.recovery-panel{display:flex;align-items:center;gap:12px;margin:24px 0;padding:18px;border:1px solid #e2b77770;border-radius:16px;background:linear-gradient(145deg,#7e4b2933,#1b2b2b);text-align:left}.recovery-panel img{width:55px;height:65px}.recovery-panel strong{font:20px Georgia;color:#efd4a2}.recovery-panel p{font:13px system-ui;margin:8px 0}.recovery-panel [data-recovery-time]{font:26px Georgia;color:#ffdda3;font-variant-numeric:tabular-nums}.recovery-panel.recovered{border-color:#90b587}.recovery-banner{position:absolute;z-index:3;bottom:100px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:calc(100% - 28px);padding:10px 16px;border:1px solid #d6ad7380;border-radius:12px;background:#22342ef5;box-shadow:0 4px 18px #0006;white-space:nowrap;font:12px system-ui;color:#edd5ac}.recovery-banner b{font:22px Georgia;font-variant-numeric:tabular-nums;color:#ffdfa0}.recovery-banner[hidden]{display:none}
@keyframes claimGlow{50%{box-shadow:0 0 18px #eecb7150,inset 0 0 12px #eed38b20;border-color:#f5d781}}
@keyframes rewardArrive{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@keyframes rewardFinish{30%{box-shadow:0 0 25px #f9d68c55,inset 0 0 20px #f2d58a25;border-color:#f9da94;filter:brightness(1.3)}100%{border-color:#d8b77a55}}
@keyframes crestArrive{from{opacity:0;transform:scale(.6) rotate(-20deg)}to{opacity:1;transform:none}}
@media(max-width:700px){.map-tools{top:108px;right:13px}.result h2{font-size:27px}.rank-claim{padding:10px;gap:7px}}
@media(prefers-reduced-motion:reduce){.bestiary-card.has-reward,.result .crest,.reward-counter,.monster-credit,.reward-landed{animation:none}}
