/* UI v2: premium hunting-ad look + motion. Loaded last. Fonts self-hosted, SIL OFL 1.1 (fonts/OFL-rubik-dirt.txt, OFL-inter.txt). */
@font-face{font-family:'Rubik Dirt';src:url(../fonts/rubik-dirt-400.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Inter';src:url(../fonts/inter-var.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root,body,body.dark{--rug:'Rubik Dirt','Saira Stencil One',Impact,sans-serif;--sans:'Inter','Saira Condensed',system-ui,sans-serif;
  --blaze:#ff7a1a;--blaze2:#ff9a3d;--earth:#2a2219;--moss:#3d4a2c;--bone:#ece4d2;--ease:cubic-bezier(.2,.8,.2,1)}
h1,h2,.pn-head b{font-family:var(--rug);letter-spacing:.04em;text-transform:uppercase}
h2{border-bottom:2px solid var(--blaze);padding-bottom:6px;background:linear-gradient(90deg,#ff7a1a22,transparent 60%);padding-left:6px;border-radius:4px 4px 0 0}
h3{font-family:var(--cond);text-transform:uppercase;letter-spacing:.08em;color:var(--blaze2)}
td,th,.small,input,select,table{font-family:var(--sans);font-variant-numeric:tabular-nums}
/* cards and panels */
.card,.ts-stand{background:linear-gradient(160deg,#1f2a1c 0%,#161d16 55%,#1d1912 100%);border:1px solid #4d5f4266;border-left:3px solid var(--blaze);border-radius:12px;box-shadow:0 6px 18px #0008,inset 0 1px 0 #ffffff0d}
.btn{border-radius:10px;transition:transform .12s var(--ease),filter .12s,box-shadow .2s}
.btn:not(.sec):not(.warn){background:linear-gradient(180deg,var(--blaze2),var(--blaze));color:#1b1208;border-color:#c85a0a;box-shadow:0 3px 0 #8a3c05,0 6px 14px #ff7a1a33}
.btn:active{transform:translateY(2px) scale(.98)}
.sheet,.panel{box-shadow:0 -8px 30px #000a,0 0 0 1px #ff7a1a22}
/* splash */
#ui2-splash{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,#2a3322 0%,#0e110f 65%);transition:opacity .45s var(--ease),visibility .45s}
#ui2-splash.out{opacity:0;visibility:hidden}
#ui2-splash .sp-in{text-align:center}
#ui2-splash img{width:150px;height:150px;border-radius:50%;box-shadow:0 0 0 3px var(--blaze),0 12px 40px #000c;animation:sp-pop .7s var(--ease) both}
#ui2-splash b{display:block;margin-top:18px;font-family:var(--rug);font-size:30px;letter-spacing:.06em;color:var(--bone);animation:sp-up .6s .25s var(--ease) both}
#ui2-splash i{display:block;margin:14px auto 0;width:140px;height:3px;background:#ffffff1a;border-radius:3px;overflow:hidden;position:relative}
#ui2-splash i:after{content:'';position:absolute;inset:0;width:40%;background:var(--blaze);animation:sp-bar 1s linear infinite}
@keyframes sp-pop{from{transform:scale(.6) rotate(-8deg);opacity:0}to{transform:none;opacity:1}}
@keyframes sp-up{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}
@keyframes sp-bar{from{transform:translateX(-100%)}to{transform:translateX(250%)}}
/* panel slide/fade */
.sheet:not([hidden]){animation:ui2-sheet .32s var(--ease) both}
.panel:not([hidden]){animation:ui2-fade .28s var(--ease) both}
@keyframes ui2-sheet{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes ui2-fade{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
/* card stagger (index set by ui2.js; transform/opacity only = GPU-friendly) */
.ui2-st{animation:ui2-card .38s var(--ease) both;animation-delay:calc(var(--i,0) * 45ms)}
@keyframes ui2-card{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* GPS dot pulse */
/* bluedot fix: never animate scale on the MapLibre marker element itself (its translate lives in transform; CSS scale multiplied it, flinging the ring across the map). Pulse a child instead. */.gps3-ring{animation:none!important;scale:none!important;overflow:visible}.gps3-ring:after{content:'';position:absolute;inset:-1px;border-radius:50%;border:1px solid #2196f3;pointer-events:none;animation:ui2-pulse 2s ease-out infinite;transform-origin:center}
@keyframes ui2-pulse{0%{opacity:.9;scale:.6}100%{opacity:0;scale:1.8}}
/* wind arrows: gentle drift using the independent `translate` property so the inline rotation stays intact */
.wgrid-arr svg,.wstn-icon svg{animation:ui2-wind 2.4s ease-in-out infinite}
@keyframes ui2-wind{0%,100%{translate:0 0}50%{translate:0 -3px}}
/* route draw-on */
path.ui2-draw{animation:ui2-draw .9s var(--ease) both}
@keyframes ui2-draw{from{stroke-dashoffset:var(--len)}to{stroke-dashoffset:0}}
/* Rack Scorer */
.rk-q{font-weight:700;color:var(--bone);background:#ff7a1a22;border-left:3px solid var(--blaze);padding:8px 10px;border-radius:6px}
.rk-wrap{width:100%;border-radius:10px;overflow:hidden;background:#000;touch-action:none}
.rk-wrap canvas{display:block;max-width:100%}
.rk-big{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.rk-big span{font-family:var(--rug);font-size:52px;color:var(--blaze);line-height:1}
.rk-big small{font-family:var(--cond);text-transform:uppercase;letter-spacing:.08em;color:var(--mut)}
.rk-tab{width:100%;border-collapse:collapse;margin:8px 0}.rk-tab td,.rk-tab th{padding:4px 6px;border-bottom:1px solid #ffffff12;text-align:right}.rk-tab td:first-child,.rk-tab th:first-child{text-align:left}
.rk-disc{border:1px dashed #f2b13488;border-radius:8px;padding:8px;color:var(--bone)}
#rk-name{flex:1;min-width:0}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;animation-delay:0s!important}#ui2-splash{display:none}}
/* v1.19.17 search -> crosshair + Drop pin here */
#sp-xh{position:absolute;width:64px;height:64px;margin:-32px 0 0 -32px;pointer-events:none;z-index:650;filter:drop-shadow(0 0 2px rgba(0,0,0,.6))}
#sp-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 86px);z-index:2400;background:rgba(14,18,16,.94);color:#fff;border:1px solid #ff6d00;border-radius:12px;padding:10px 12px;display:flex;gap:10px;align-items:center;max-width:94vw;box-shadow:0 4px 18px rgba(0,0,0,.5);font-size:14px}
#sp-bar .sp-t{display:flex;flex-direction:column;min-width:0}#sp-bar .sp-t b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}#sp-bar .sp-t span{font-family:ui-monospace,monospace;font-size:12.5px;opacity:.85}
#sp-bar .sp-b{display:flex;gap:6px;flex-shrink:0;border:0;padding:0;background:none}#sp-bar button{white-space:nowrap;min-height:44px;border-radius:9px;padding:0 9px;font-weight:700;font-size:14px;border:0}
#sp-bar .sp-drop{background:#ff6d00;color:#000}#sp-bar .sp-close{background:#333;color:#fff;border:1px solid #666}
#sp-bar{width:min(94vw,520px);box-sizing:border-box}#sp-bar .sp-t{flex:1 1 auto;min-width:0}#sp-bar .sp-t b{max-width:none}
/* v1.19.19 sp-bar: never clip Close on narrow phones (360-412px) */
#sp-bar{left:8px;right:8px;transform:none;width:auto;max-width:520px;margin:0 auto;gap:8px;padding:8px 10px}
#sp-bar .sp-t{flex:1 1 0;min-width:0;overflow:hidden}
#sp-bar .sp-t b,#sp-bar .sp-t span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#sp-bar .sp-b{flex:0 0 auto}
@media (max-width:420px){#sp-bar button{padding:0 8px;font-size:13px}#sp-bar .sp-t span{font-size:11.5px}}
