/* /radar v2 — cool white, cyan outlines, deep-blue radar. */
.rd2-page{background:linear-gradient(180deg,#e8f2ff 0,#f5f9ff 320px,#f7faff 100%);min-height:100vh}
@media (max-width:767px){.page-root.rd2-page>.navbar{display:none!important}}
.rd2-shell{max-width:900px;margin:0 auto;padding:10px 12px 110px;display:flex;flex-direction:column;gap:12px}
.rd2-head{display:flex;justify-content:space-between;align-items:center}
.rd2-shell .rd2-head h1{margin:0;font-size:36px;font-weight:900;color:#0b1b3f!important;letter-spacing:2px}.rd2-head p{margin:6px 0 0;font-size:14px;color:#334155}
.rd2-underline{display:block;width:56px;height:3px;border-radius:3px;background:linear-gradient(90deg,#22d3ee,#1d6ff2);margin-top:8px}
.rd2-globe{width:104px;height:104px;flex:none;filter:drop-shadow(0 8px 18px rgba(10,42,107,.35))}
.rd2-dial-wrap{position:relative;width:min(300px,78vw);aspect-ratio:1;margin:6px auto 4px}
.rd2-dial{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(circle,#e9f6ff 0,#cfe9ff 60%,#b6dcff 100%);border:2px solid #7dd3fc;box-shadow:0 0 0 6px rgba(125,211,252,.18),0 10px 30px rgba(29,111,242,.18);overflow:hidden}
.rd2-rings{position:absolute;inset:0;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 17%,rgba(29,111,242,.28) 17% calc(17% + 1px)),linear-gradient(transparent calc(50% - .5px),rgba(29,111,242,.25) 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),rgba(29,111,242,.25) 50%,transparent calc(50% + .5px))}
.rd2-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(34,211,238,.55),rgba(34,211,238,0) 70deg,transparent 360deg);animation:rd2spin 3.2s linear infinite}
.rd2-core{position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px;border-radius:50%;background:#22d3ee;box-shadow:0 0 0 5px rgba(34,211,238,.3),0 0 14px #22d3ee}
@keyframes rd2spin{to{transform:rotate(360deg)}}
.rd2-dots{position:absolute;inset:0}
.rd2-tok{position:absolute;width:30px;height:30px;margin:-15px;border-radius:50%;background:#fff;border:2.5px solid;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 2px 6px rgba(15,23,42,.12)}
.rd2-tok>*{width:22px!important;height:22px!important;border-radius:50%}
.rd2-tok.b-r{border-color:#ef4444}.rd2-tok.b-y{border-color:#f59e0b}.rd2-tok.b-g{border-color:#16a34a}
.rd2-dot{position:absolute;border-radius:50%;transform:translate(-50%,-50%);animation:rd2blink 2.6s ease-in-out infinite}
.rd2-dot.d-r{background:#ef4444}.rd2-dot.d-y{background:#f59e0b;animation-delay:.8s}.rd2-dot.d-g{background:#16a34a;animation-delay:1.6s}
@keyframes rd2blink{50%{opacity:.35}}
.rd2-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:#fff;border:1px solid #cdeefe;border-radius:16px;padding:10px 6px;box-shadow:0 2px 12px rgba(15,23,42,.05)}
.rd2-stats>div{display:flex;align-items:center;gap:8px;padding:0 8px;border-left:1px solid #eef2f7;min-width:0}.rd2-stats>div:first-child{border-left:0}
.rd2-stats>div>i{font-size:24px;color:#1d6ff2}.rd2-stats i.red,.rd2-stats em.red{color:#dc2626}
.rd2-stats span{display:flex;flex-direction:column;min-width:0}.rd2-stats small{font-size:12px;color:#334155;font-weight:700}.rd2-stats b{font-size:13px;color:#0b1b3f;white-space:nowrap}.rd2-stats em{font-style:normal;font-size:16px;font-weight:900}
.rd2-card{background:#fff;border:1px solid #cdeefe;border-radius:18px;padding:10px 12px;box-shadow:0 2px 12px rgba(15,23,42,.05)}
.rd2-card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rd2-card-h h2{margin:0;font-size:17px;font-weight:900;color:#0b1b3f}.rd2-card-h a{font-size:13px;color:#475569;text-decoration:none}
.rd2-filters{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:6px}
.rd2-filters button{border:0;border-radius:10px;background:#eef3fa;color:#334155;font-size:13px;padding:7px 0;cursor:pointer}.rd2-filters button[aria-selected=true]{background:linear-gradient(135deg,#2f80ff,#1d5fe0);color:#fff;font-weight:800}
.rd2-row{display:grid;grid-template-columns:34px minmax(0,1.3fr) minmax(0,1fr) 84px;align-items:center;gap:8px;padding:8px;border:1px solid #eef2f7;border-radius:12px;margin-top:6px;color:#0f172a;text-decoration:none}
.rd2-logo{width:34px;height:34px;border-radius:50%;border:2px solid #e2e8f0;display:flex;align-items:center;justify-content:center;overflow:hidden}.rd2-logo>*{width:28px!important;height:28px!important;border-radius:50%}
.rd2-logo.lv-high{border-color:#ef4444}.rd2-logo.lv-mid{border-color:#f59e0b}.rd2-logo.lv-low{border-color:#16a34a}
.rd2-id{display:flex;flex-direction:column;min-width:0}.rd2-id b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rd2-id small{font-size:11px;color:#64748b}
.rd2-lv{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;text-align:center}
.rd2-lv em{font-style:normal;font-size:11px;font-weight:800;color:#fff;border-radius:999px;padding:2px 8px}.rd2-lv em.lv-high{background:#ef4444}.rd2-lv em.lv-mid{background:#f59e0b}.rd2-lv em.lv-low{background:#16a34a}
.rd2-lv small{font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}small.lv-high{color:#dc2626}small.lv-mid{color:#b45309}small.lv-low{color:#16a34a}
.rd2-spark .jt-spark{width:84px;height:26px;display:block}.rd2-spark .jt-spark path{fill:none;stroke-width:1.6}.rd2-spark .jt-spark.up path{stroke:#16a34a}.rd2-spark .jt-spark.down path{stroke:#dc2626}
.rd2-skel{height:52px;background:linear-gradient(90deg,#f3f6fb,#eaf0f9,#f3f6fb);border:0}
.rd2-empty{padding:16px;text-align:center;color:#64748b;font-size:13px}
.rd2-foot{margin:8px 0 0;font-size:10.5px;color:#94a3b8}
.rd2-soon{font-size:11px;font-weight:700;color:#b45309;background:#fef3c7;border-radius:6px;padding:2px 8px}
.rd2-empty-soon{display:flex;align-items:center;gap:10px;background:#fffbeb;border:1px dashed #fcd34d;border-radius:12px;padding:14px;color:#b45309;font-size:12.5px}.rd2-empty-soon i{font-size:22px}
.rd2-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.rd2-panels a{display:flex;align-items:center;gap:8px;border:1px solid #cdeefe;border-radius:12px;padding:10px;color:#0f172a;text-decoration:none;font-size:13px;font-weight:700}.rd2-panels a i{color:#1d6ff2}
.rd2-nav{position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:repeat(5,1fr);align-items:end;background:#fff;border-top:1px solid #e6eefa;padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(15,23,42,.06)}
.rd2-nav>a,.rd2-nav>button{display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:transparent;color:#475569;text-decoration:none;font-size:11.5px;cursor:pointer;padding:2px 0}
.rd2-nav>a>i,.rd2-nav>button>i{font-size:20px}
.rd2-nav-c{color:#1d6ff2!important;font-weight:800}
.rd2-nav-btn{width:54px;height:54px;margin-top:-26px;border-radius:50%;background:linear-gradient(135deg,#22b8ff,#1d5fe0);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:0 6px 16px rgba(29,95,224,.4),0 0 0 4px #fff;position:relative;overflow:hidden}
.rd2-nav-c.is-active .rd2-nav-btn::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,255,255,.55),transparent 80deg);animation:rd2spin 2.4s linear infinite}
@media (min-width:768px){.rd2-nav{display:none}.rd2-shell{padding-bottom:40px}}
.rd2-toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);z-index:60;background:#fef3c7;color:#b45309;font-weight:800;font-size:13px;border-radius:999px;padding:8px 16px;box-shadow:0 6px 16px rgba(15,23,42,.15)}
.rd2-toast[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.rd2-sweep,.rd2-dot,.rd2-nav-btn::after{animation:none!important}}
@media (max-width:420px){.rd2-row{grid-template-columns:34px minmax(0,1.2fr) minmax(0,1fr) 64px;gap:6px}.rd2-spark .jt-spark{width:64px}.rd2-stats>div>i{font-size:18px}.rd2-stats em{font-size:14px}}

/* v2 mockup (17:17) */
.rd2-head{position:relative}
.rd2-bell{position:absolute;right:0;top:0;z-index:2;width:36px;height:36px;border-radius:50%;border:1px solid #cdeefe;background:#fff;color:#0b1b3f;font-size:16px;cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.08)}
.rd2-globe{margin-right:30px}
.rd2-dial-wrap{background:#fff;border:1px solid #cdeefe;border-radius:22px;width:auto;max-width:520px;aspect-ratio:auto;height:min(330px,82vw);margin:0 auto;width:100%}
.rd2-dial{inset:auto;left:50%;top:50%;width:min(230px,58vw);height:min(230px,58vw);transform:translate(-50%,-50%)}
.rd2-dots{left:50%;top:50%;width:min(300px,78vw);height:min(300px,78vw);transform:translate(-50%,-50%);inset:auto}
.rd2-tok{width:38px;height:38px;margin:-19px;border:2px solid #cdeefe}.rd2-tok>*{width:28px!important;height:28px!important}
.rd2-dot.d-r{box-shadow:0 0 0 3px rgba(239,68,68,.25),0 0 10px 3px rgba(239,68,68,.6)}
.rd2-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.rd2-sum>*{display:flex;align-items:center;gap:6px;border:1px solid #e6eefa;border-radius:14px;padding:10px 8px;background:#fff;text-align:left;cursor:pointer;min-width:0}
.rd2-sum>div{cursor:default}
.rd2-sum>*>i:first-child{font-size:22px}.rd2-sum span{display:flex;flex-direction:column;min-width:0;flex:1}.rd2-sum small{font-size:11.5px;color:#334155;font-weight:700}.rd2-sum b{font-size:18px;font-weight:900}
.rd2-sum .s-high{background:#fff5f5;border-color:#fecaca}.rd2-sum .s-high i:first-child,.rd2-sum .s-high b{color:#dc2626}
.rd2-sum .s-mid{background:#fffbeb;border-color:#fde68a}.rd2-sum .s-mid i:first-child,.rd2-sum .s-mid b{color:#d97706}
.rd2-sum .s-watch i:first-child,.rd2-sum .s-watch b{color:#1d6ff2}
.rd2-sum .s-safe{background:#f0fdf4;border-color:#bbf7d0}.rd2-sum .s-safe i:first-child,.rd2-sum .s-safe b{color:#16a34a}
.rd2-chev{color:#94a3b8;font-size:11px}
.rd2-row{grid-template-columns:34px minmax(0,1.2fr) minmax(0,1.3fr) auto 10px!important}
.rd2-lv{align-items:flex-start!important;text-align:left!important}.rd2-ago{font-size:11px;color:#64748b;white-space:nowrap}
small.lv-safe{color:#475569!important;font-weight:600!important}
.rd2-scan{display:grid;grid-template-columns:32px auto minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:8px;border:1px solid #eef2f7;border-radius:12px;margin-top:6px}
.rd2-sico{width:32px;height:32px;border-radius:9px;background:#eaf2ff;color:#1d6ff2;display:flex;align-items:center;justify-content:center}
.rd2-scan b{font-size:14px}.rd2-scan small{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rd2-scan time{font-size:11px;color:#475569;white-space:nowrap}
.rd2-ok{font-style:normal;font-size:11px;font-weight:700;color:#16a34a;background:#dcfce7;border-radius:6px;padding:2px 8px}
.rd2-panels{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.rd2-panels a{align-items:flex-start!important}.rd2-panels a>i{font-size:18px;margin-top:2px}.rd2-panels span{display:flex;flex-direction:column;gap:2px;min-width:0}.rd2-panels b{font-size:13px}.rd2-panels small{font-size:10.5px;color:#64748b;font-weight:500}
.rd2-panels a.is-soon{cursor:default}.rd2-panels .rd2-soon{align-self:flex-start;font-size:10px;padding:1px 6px}
@media (max-width:420px){.rd2-sum{gap:5px}.rd2-sum>*{padding:8px 5px;gap:4px}.rd2-sum>*>i:first-child{font-size:16px}.rd2-sum b{font-size:15px}.rd2-sum .rd2-chev{display:none}
 .rd2-row{grid-template-columns:30px minmax(0,1fr) minmax(0,1.1fr) auto!important}.rd2-row .rd2-chev{display:none}
 .rd2-scan{grid-template-columns:28px auto minmax(0,1fr) auto}.rd2-scan time{display:none}.rd2-panels{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
/* Real-radar sweep (Owner): rotating wedge with a fading trail, blips flash as the beam passes then fade, ping on new blips. */
.rd2-sweep{background:conic-gradient(from 0deg,rgba(34,211,238,0) 0deg,rgba(34,211,238,0) 250deg,rgba(34,211,238,.08) 300deg,rgba(34,211,238,.32) 345deg,rgba(103,232,249,.7) 360deg)!important;animation:rd2spin 4s linear infinite!important;will-change:transform}
.rd2-sweep::after{content:"";position:absolute;left:50%;top:0;width:2px;height:50%;margin-left:-1px;background:linear-gradient(to top,rgba(165,243,252,.15),#a5f3fc);box-shadow:0 0 8px #67e8f9;border-radius:2px}
.rd2-dot{animation:rd2hit 4s linear infinite!important;opacity:.28}
@keyframes rd2hit{0%{opacity:1;transform:translate(-50%,-50%) scale(1.7);filter:brightness(1.5)}6%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}60%{opacity:.4;transform:translate(-50%,-50%) scale(1);filter:none}100%{opacity:.28;transform:translate(-50%,-50%) scale(1)}}
.rd2-tok{animation:rd2tok 4s linear infinite}
@keyframes rd2tok{0%{box-shadow:0 0 0 3px rgba(103,232,249,.55),0 0 16px rgba(34,211,238,.8)}12%{box-shadow:0 0 0 2px rgba(103,232,249,.3),0 0 8px rgba(34,211,238,.4)}40%,100%{box-shadow:0 2px 6px rgba(15,23,42,.12)}}
.rd2-dot.is-new::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:1.5px solid currentColor;animation:rd2ping 1.6s ease-out 3}
.rd2-dot.d-r{color:#ef4444}.rd2-dot.d-y{color:#f59e0b}.rd2-dot.d-g{color:#16a34a}
@keyframes rd2ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(4.2);opacity:0}}
@media (prefers-reduced-motion:reduce){.rd2-sweep,.rd2-dot,.rd2-tok,.rd2-dot::after{animation:none!important}.rd2-dot{opacity:.9}}
/* v4: blips live inside the dial circle itself */
.rd2-dial .rd2-dots{position:absolute!important;inset:0!important;left:0!important;top:0!important;width:auto!important;height:auto!important;transform:none!important;border-radius:50%;z-index:2}
.rd2-dial .rd2-tok{width:30px!important;height:30px!important;margin:-15px!important;border-width:2px!important}
.rd2-dial .rd2-tok>*{width:22px!important;height:22px!important}
.rd2-dial .rd2-tok.b-r{border-color:#ef4444!important}.rd2-dial .rd2-tok.b-y{border-color:#f59e0b!important}.rd2-dial .rd2-tok.b-g{border-color:#16a34a!important}

/* Radar v5 (Owner 10-20): 5 rings dark→light, sweep stops at ring 4, header disc spins in sync, twinkling star dots */
.rd2-dial .rd2-rings{background:radial-gradient(circle closest-side,transparent calc(20% - 1px),rgba(10,60,170,.62) calc(20% - 1px) calc(20% + .5px),transparent calc(20% + 1px)),radial-gradient(circle closest-side,transparent calc(38% - 1px),rgba(20,90,210,.48) calc(38% - 1px) calc(38% + .5px),transparent calc(38% + 1px)),radial-gradient(circle closest-side,transparent calc(58% - 1px),rgba(29,111,242,.36) calc(58% - 1px) calc(58% + .5px),transparent calc(58% + 1px)),radial-gradient(circle closest-side,transparent calc(80% - 1px),rgba(59,140,246,.26) calc(80% - 1px) calc(80% + .5px),transparent calc(80% + 1px)),radial-gradient(circle closest-side,transparent calc(97.0% - 1px),rgba(96,165,250,.18) calc(97.0% - 1px) calc(97.0% + .5px),transparent calc(97.0% + 1px)),linear-gradient(transparent calc(50% - .5px),rgba(29,111,242,.2) 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),rgba(29,111,242,.2) 50%,transparent calc(50% + .5px))!important}
.rd2-dial .rd2-sweep{inset:10%!important}
.rd2-stars{position:absolute;inset:0;pointer-events:none}
.rd2-star{position:absolute;width:6px;height:6px;margin:-3px;border-radius:50%;opacity:.25;animation:rd2tw 2.6s ease-in-out infinite}
.rd2-star.s-r{background:#f87171;box-shadow:0 0 6px 1px #ef4444}.rd2-star.s-y{background:#fbbf24;box-shadow:0 0 6px 1px #f59e0b}.rd2-star.s-g{background:#4ade80;box-shadow:0 0 6px 1px #16a34a}
@keyframes rd2tw{0%,100%{opacity:.15;transform:scale(.6)}50%{opacity:1;transform:scale(1.25)}}
.rd2-globe-beam{transform-box:view-box;transform-origin:60px 60px;animation:rd2gb 4s linear infinite;will-change:transform}
@keyframes rd2gb{from{transform:rotate(-152deg)}to{transform:rotate(208deg)}}
@media (prefers-reduced-motion:reduce){.rd2-star,.rd2-globe-beam{animation:none!important}.rd2-star{opacity:.7}}
.rd2-star:nth-child(3n){width:5px;height:5px}.rd2-star:nth-child(4n){width:7px;height:7px}

/* Real-radar targets (Owner 10-20 r2): JS clock drives sweep + header beam; targets flash on beam crossing, afterglow fade */
.rd2-dial .rd2-sweep,.rd2-globe-beam{animation:none!important}
.rd2-t{animation:none!important;opacity:0}
.rd2-dot.rd2-t{position:absolute;transform:translate(-50%,-50%);border-radius:50%}
.rd2-dot.rd2-t.d-r{background:#ef4444;box-shadow:0 0 8px 2px rgba(239,68,68,.65)}.rd2-dot.rd2-t.d-y{background:#f59e0b;box-shadow:0 0 8px 2px rgba(245,158,11,.6)}.rd2-dot.rd2-t.d-g{background:#22c55e;box-shadow:0 0 8px 2px rgba(34,197,94,.6)}
.rd2-stars{display:none}
.rd2-gdot{filter:drop-shadow(0 0 2px currentColor)}
