/* UAP TRACKING tab + contact alert (CJ 10/10; BKS removed 10/13) */
#rail button.uap-rail{color:var(--m-red-hi)}#rail button.uap-rail.on{color:var(--m-hi);border-left-color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}
#catstrip button.uap-strip.on{color:var(--m-hi)}
.uap{display:flex;flex-direction:column;gap:10px}
.uap-h{display:flex;align-items:center;justify-content:space-between}
.uap-h h2{font:700 17px var(--hd);letter-spacing:.22em;color:var(--m-hi)}
.uap-live{display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.2em;color:var(--red2)}
.uap-live i{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red);animation:uapBlink 1.2s infinite}
@keyframes uapBlink{50%{opacity:.25}}
.uap-sub{font-size:9px;letter-spacing:.16em;color:var(--dim);margin-top:-6px}
.uap-radar{border:1px solid color-mix(in srgb,var(--ok) 30%,transparent);background:#010a06;padding:8px}
.uap-radar canvas{width:100%;height:auto;aspect-ratio:1;display:block;border-radius:50%;box-shadow:0 0 22px color-mix(in srgb,var(--ok) 12%,transparent)}
.uap-rt{margin-top:8px;font-size:10px;letter-spacing:.08em;color:var(--m-ok-ink)}
.uap-rt b{display:block;color:var(--ok);letter-spacing:.14em;font-weight:400}.uap-rt>span{display:block;color:var(--dim);font-size:9px;margin-bottom:6px}
.uap-rt dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px}.uap-rt dt{color:var(--dim)}.uap-rt dd{color:var(--m-ok-hi)}.uap-rt dd.st{color:var(--red2)}
.uap-rt small{display:block;margin-top:6px;font-size:9px;color:var(--warn)}
.uap-tg{display:flex;gap:14px;font-size:10px;letter-spacing:.12em;color:var(--dim)}.uap-tg label{display:flex;align-items:center;gap:6px;cursor:pointer}
.uap h4{font-size:10px;letter-spacing:.26em;color:var(--dim);display:flex;gap:8px}.uap h4 b{color:var(--red2);font-weight:400}
.uap-c{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;margin-bottom:5px;border:1px solid var(--line2);border-left:3px solid var(--c,var(--red));background:var(--m-wash)}
.uap-c:hover,.uap-c.sel{background:color-mix(in srgb,var(--red) 9%,transparent);border-color:color-mix(in srgb,var(--red) 40%,transparent)}
.uap-c1{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.12em}.uap-c1 b{color:var(--m-hi);font-weight:400}.uap-c1 em{font-style:normal;color:var(--red2);font-size:10px}
.uap-c2{font-size:10px;color:var(--cy2);letter-spacing:.06em}.uap-c3{font-size:9px;color:var(--warn);letter-spacing:.08em}
.uap-empty{font-size:10px;color:var(--faint);letter-spacing:.14em;padding:6px 0}
.uap-l{font-size:9px;letter-spacing:.06em;color:var(--dim);padding:4px 0;border-bottom:1px solid var(--line2)}.uap-l b{color:var(--ink);font-weight:400}.uap-l em{display:block;font-style:normal;color:var(--faint)}
#uap-alert{position:fixed;z-index:12;left:calc(var(--railw) + var(--g) + 16px);bottom:calc(var(--botb) + var(--both) + 18px);display:flex;gap:10px;align-items:center;max-width:min(420px,calc(100vw - 32px));padding:8px 12px 8px 8px;background:var(--glass2);border:1px solid color-mix(in srgb,var(--red) 60%,transparent);border-left:3px solid var(--c,var(--red));box-shadow:0 0 26px color-mix(in srgb,var(--red) 22%,transparent);cursor:pointer;animation:uapIn .45s ease-out}
body.l-open #uap-alert{left:calc(var(--railw) + var(--lw) + var(--g) + 24px)}
@keyframes uapIn{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
#uap-alert canvas{width:72px;height:72px;border-radius:50%;flex:none}
#uap-alert b{display:block;font:700 13px var(--hd);letter-spacing:.16em;color:var(--m-hi)}#uap-alert span{display:block;font-size:10px;color:var(--cy2);letter-spacing:.06em}#uap-alert em{display:block;font-style:normal;font-size:10px;color:var(--warn);letter-spacing:.08em;margin-top:2px}
@media (max-width:760px){#uap-alert{left:var(--g);bottom:calc(var(--botb) + var(--both) + 110px)}}
/* NHI facilities (bases.js) */
#nhi-sec{display:flex;flex-direction:column;gap:8px}
.nhi-k{display:flex;align-items:center;gap:5px;margin-left:auto;font-size:9px}.nhi-k i{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c);margin-left:6px}
.nhi-list{display:flex;flex-direction:column;gap:3px;max-height:260px;overflow:auto}
.nhi-r{display:flex;justify-content:space-between;gap:8px;text-align:left;padding:6px 8px;border:1px solid var(--line2);border-left:3px solid var(--c);font-size:10px;letter-spacing:.08em}
.nhi-r:hover{background:var(--m-wash2)}.nhi-r b{color:var(--m-hi);font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nhi-r em{font-style:normal;color:var(--c);font-size:9px;flex:none}
#nhi-d{position:fixed;z-index:45;right:calc(var(--g) + 8px);top:calc(var(--topy) + var(--toph) + 12px);width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 190px);overflow:auto;padding:18px;background:var(--m-solid);border:1px solid var(--c,var(--line));border-top:3px solid var(--c,var(--cy));box-shadow:var(--shadow)}
#nhi-d .nk{font-size:10px;letter-spacing:.24em;color:var(--c)}
#nhi-d h3{font:700 22px var(--hd);letter-spacing:.16em;color:var(--m-hi);margin-top:2px}
#nhi-d .bsub{font-size:10px;letter-spacing:.14em;color:var(--dim);margin:2px 0 10px}
#nhi-d .nb{font-size:11px;line-height:1.6;color:var(--ink);margin-bottom:12px}
#nhi-d dl{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:10px;letter-spacing:.06em}#nhi-d dt{color:var(--dim)}#nhi-d dd{color:var(--m-hi);line-height:1.45}
#nhi-d h5{font-size:9px;letter-spacing:.26em;color:var(--c);font-weight:400;margin:12px 0 6px}
#nhi-d .nl{display:flex;flex-wrap:wrap;gap:5px}#nhi-d .nl button{font-size:9px;letter-spacing:.1em;padding:4px 7px;border:1px solid var(--line);color:var(--cy2)}#nhi-d .nl button:hover{background:color-mix(in srgb,var(--cy) 10%,transparent)}
#nhi-d .nu{display:inline-block;margin-top:12px;font-size:9px;letter-spacing:.18em;color:var(--dim);border-bottom:1px dotted var(--dim)}
#nhi-d .bx{position:absolute;top:10px;right:10px;font-size:10px;letter-spacing:.14em;color:var(--dim);border:1px solid var(--line);padding:3px 7px}
body.r-open #nhi-d{right:calc(var(--rw) + var(--g) * 2)}
/* LIVE director: radar intercept card (CJ 10/10) */
#uap-x{position:fixed;z-index:13;right:calc(var(--g) + 8px);top:calc(var(--topy) + var(--toph) + 56px);display:flex;flex-direction:column;gap:8px;width:min(580px,calc(100vw - 32px));padding:12px 16px 12px 12px;background:var(--m-solid);border:1px solid color-mix(in srgb,var(--red) 55%,transparent);border-top:3px solid var(--c,var(--red));box-shadow:0 0 40px color-mix(in srgb,var(--red) 25%,transparent),var(--m-shadow);cursor:pointer;animation:uxIn .5s cubic-bezier(.2,.9,.3,1.2)}
body.r-open #uap-x{right:calc(var(--rw) + var(--g) * 2)}
@keyframes uxIn{0%{opacity:0;transform:translateY(20px) scale(.96);filter:brightness(2.4)}60%{opacity:1;filter:brightness(1.4)}100%{transform:none;filter:none}}
#uap-x .ux-scope{width:150px;height:150px;border-radius:50%;flex:none;box-shadow:0 0 24px color-mix(in srgb,var(--ok) 18%,transparent)}
#uap-x .ux{min-width:0;flex:1}
#uap-x .ux-k{display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.24em;color:var(--red2)}
#uap-x .ux-k i{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red);animation:uapBlink .8s infinite}
#uap-x b{display:block;font:700 19px var(--hd);letter-spacing:.12em;color:var(--m-hi);margin-top:3px;line-height:1.15}
#uap-x .ux-s{display:block;font-size:10px;letter-spacing:.14em;color:var(--ok)}
#uap-x .ux-c{font-size:11px;letter-spacing:.08em;color:var(--c,var(--cy2));margin:5px 0 4px}
#uap-x .ux-d{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:2px 10px;font-size:10px;letter-spacing:.06em}
#uap-x .ux-d dt{color:var(--dim)}#uap-x .ux-d dd{color:var(--m-ok-hi)}#uap-x .ux-d dd.st{color:var(--red2)}
#uap-x small{display:block;margin-top:4px;font-size:9px;color:var(--warn);letter-spacing:.06em}
@media (max-width:760px){#uap-x{left:var(--g);right:var(--g);width:auto;top:auto;bottom:calc(var(--botb) + var(--both) + 100px)}#uap-x .ux-scope{width:96px;height:96px}#uap-x b{font-size:15px}#uap-x .ux-d{grid-template-columns:auto 1fr}}

/* amped director (CJ 10/10): banner, reticle, lock line, card phases */
#uap-x .ux-top{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.28em;color:var(--m-red-ink);padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--red) 30%,transparent)}
#uap-x .ux-row{display:flex;gap:14px;align-items:center}
#uap-x .ux-ph{display:flex;gap:4px;margin:2px 0 6px}
#uap-x .ux-ph i{flex:1;font-style:normal;text-align:center;font-size:9px;letter-spacing:.14em;padding:3px 0;color:var(--faint);border:1px solid var(--line2)}
#uap-x .ux-ph i.done{color:var(--dim);border-color:var(--line)}
#uap-x .ux-ph i.on{color:#02060a;background:var(--c,var(--red));border-color:var(--c,var(--red));animation:uapBlink 1s infinite}
#uap-x .ux-alt{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:9px;letter-spacing:.2em;color:var(--dim)}
#uap-x .ux-alt canvas{flex:1;min-width:0;height:34px;border:1px solid var(--line2);background:#010a06}
#uap-x .ux-stamp:empty{display:none}
#uap-x .ux-stamp{margin-top:6px;padding:5px 8px;font:700 12px var(--hd);letter-spacing:.18em;color:var(--red2);border:2px solid var(--red);transform:rotate(-1.2deg);display:inline-block;animation:uxStamp .35s ease-out}
@keyframes uxStamp{from{transform:rotate(-1.2deg) scale(1.6);opacity:0}to{transform:rotate(-1.2deg) scale(1);opacity:1}}
#uap-x.lost{border-top-color:var(--dim)}
#uap-ban{position:fixed;z-index:14;left:50%;top:calc(var(--topy) + var(--toph) + 52px);translate:-50% 0;display:flex;align-items:center;gap:12px;padding:9px 18px;background:var(--m-redglass);border:1px solid var(--red);box-shadow:0 0 30px color-mix(in srgb,var(--red) 35%,transparent);animation:banIn .45s ease-out;pointer-events:none;max-width:calc(100vw - 32px)}
#uap-ban i{width:10px;height:10px;border-radius:50%;background:var(--red);box-shadow:0 0 10px var(--red);animation:uapBlink .5s infinite;flex:none}
#uap-ban b{font:700 15px var(--hd);letter-spacing:.2em;color:var(--m-hi);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#uap-ban span{font-size:10px;letter-spacing:.16em;color:var(--m-red-ink);white-space:nowrap}
@keyframes banIn{0%{opacity:0;transform:translateY(-12px)}40%{opacity:1;filter:brightness(2)}100%{transform:none;filter:none}}
#uap-lock{position:fixed;z-index:12;left:0;top:0;width:54px;height:54px;margin:-27px 0 0 -27px;pointer-events:none;transition:width .4s,height .4s,margin .4s}
#uap-lock i{position:absolute;width:12px;height:12px;border:2px solid var(--c,var(--red));filter:drop-shadow(0 0 4px var(--c,var(--red)))}
#uap-lock .tl{left:0;top:0;border-right:0;border-bottom:0}#uap-lock .tr{right:0;top:0;border-left:0;border-bottom:0}
#uap-lock .bl{left:0;bottom:0;border-right:0;border-top:0}#uap-lock .br{right:0;bottom:0;border-left:0;border-top:0}
#uap-lock.on{width:38px;height:38px;margin:-19px 0 0 -19px}
#uap-lock em{position:absolute;left:46px;top:-4px;white-space:nowrap;font:normal 10px var(--mono);letter-spacing:.12em;color:var(--m-hi);background:var(--panel2);padding:2px 6px;border-left:2px solid var(--c,var(--red))}
#uap-beam{position:fixed;inset:0;width:100vw;height:100vh;z-index:11;pointer-events:none}
#uap-beam line{stroke-width:1.4;stroke-dasharray:6 5;opacity:.75;animation:beamDash .8s linear infinite}
@keyframes beamDash{to{stroke-dashoffset:-22}}
@media (prefers-reduced-motion:reduce){#uap-beam line,#uap-ban i,#uap-x .ux-ph i.on{animation:none}}
/* MPH readout + LIVE TRACKING pill (CJ 10/10) */
#uap-x .ux-left{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}
.ux-mph{display:flex;align-items:baseline;justify-content:center;gap:6px;font-variant-numeric:tabular-nums}
.ux-mph b{font:700 24px var(--hd);letter-spacing:.06em;color:var(--m-hi);text-shadow:0 0 12px color-mix(in srgb,var(--ok) 35%,transparent)}
.ux-mph span{font-size:10px;letter-spacing:.24em;color:var(--ok)}
.ux-mph.hot b{color:var(--m-red-ink);text-shadow:0 0 14px color-mix(in srgb,var(--red) 80%,transparent);animation:mphHot .5s steps(2) infinite}
@keyframes mphHot{50%{text-shadow:0 0 22px var(--red)}}
.ux-mph.wide{padding:6px 0;border-top:1px solid color-mix(in srgb,var(--ok) 15%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ok) 15%,transparent);margin:6px 0}
.ux-mph.wide b{font-size:30px}
#uap-pill{position:fixed;z-index:13;right:calc(var(--g) + 8px);top:calc(var(--topy) + var(--toph) + 12px);display:flex;align-items:center;gap:9px;padding:6px 12px;background:var(--m-redglass);border:1px solid color-mix(in srgb,var(--red) 70%,transparent);box-shadow:0 0 18px color-mix(in srgb,var(--red) 30%,transparent);pointer-events:none;max-width:min(560px,calc(100vw - 32px))}
#uap-pill i{width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 10px var(--red);animation:uapBlink .7s infinite;flex:none}
#uap-pill b{font:700 13px var(--hd);letter-spacing:.24em;color:var(--m-hi);white-space:nowrap}
#uap-pill span{font-size:10px;letter-spacing:.14em;color:var(--m-red-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.r-open #uap-pill{right:calc(var(--rw) + var(--g) * 2)}
#uap-x{top:calc(var(--topy) + var(--toph) + 52px)}
/* SHAPE // TYPE box + RESPONSE line on the intercept card (CJ 10/10) */
#uap-x .ux-shp{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto auto;column-gap:8px;align-items:center;width:150px;padding:6px 7px;border:1px solid var(--c,var(--red));background:var(--m-well);box-sizing:border-box}
#uap-x .ux-shp span{grid-column:1/-1;font-size:9px;letter-spacing:.22em;color:var(--dim);margin-bottom:3px}
#uap-x .ux-shp canvas{grid-row:2/4;width:44px;height:44px}
#uap-x .ux-shp strong{font:700 12px var(--hd);letter-spacing:.1em;color:var(--m-hi);line-height:1.15}
#uap-x .ux-shp em{font-style:normal;font-size:9px;letter-spacing:.08em;color:var(--c,var(--cy2));line-height:1.3}
#uap-x .ux-resp{display:flex;gap:8px;align-items:baseline;margin-top:5px;padding:4px 6px;border-left:2px solid var(--warn);background:color-mix(in srgb,var(--warn) 7%,transparent)}
#uap-x .ux-resp span{flex:none;font-size:9px;letter-spacing:.22em;color:var(--warn)}
#uap-x .ux-resp em{font-style:normal;font-size:10px;letter-spacing:.06em;color:var(--m-amber-ink);min-height:1.2em}
@media (max-width:760px){#uap-x .ux-shp{width:96px;grid-template-columns:1fr}#uap-x .ux-shp canvas{display:none}}
/* CJ 10/10: LIVE TRACKING off = the header badge and the radar stop looking active */
.uap-live b{font-weight:400}
.uap-live.off{color:var(--mute)}.uap-live.off i{background:var(--faint);box-shadow:none;animation:none}
.uap-radar{position:relative}
.uap-radar.off canvas{opacity:.35;filter:grayscale(1)}
.uap-radar.off::after{content:"LIVE TRACKING OFF";position:absolute;left:8px;right:8px;top:calc(8px + (100% - 16px) * 0);height:0;padding-top:calc((100% - 16px) / 2);display:block;text-align:center;font-size:10px;letter-spacing:.24em;color:var(--dim);pointer-events:none}
.uap-tg.tgs{flex-direction:column;gap:9px}
#nhi-sec .uap-tg{flex-wrap:wrap;gap:8px 14px;align-items:center}#nhi-sec .uap-tg .tl b{white-space:nowrap}
/* 10/13: SOUND mute + SHARE INTERCEPT on the card, CASE FILES in the panel */
#uap-x .ux-tools{position:absolute;top:6px;right:8px;display:flex;gap:4px;z-index:2}
#uap-x .ux-tools button{display:flex;align-items:center;gap:5px;height:22px;padding:0 6px;border:1px solid var(--line2);background:var(--panel);color:var(--dim);font:9px var(--mono);letter-spacing:.16em;cursor:pointer}
#uap-x .ux-tools button:hover{color:var(--m-hi);border-color:var(--cy)}
#uap-x .ux-tools svg{width:13px;height:13px;flex:none}
#uap-x .ux-snd.on{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 50%,transparent)}
#uap-x .ux-top{padding-right:176px}
#uap-x .ux-k span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#uap-x .ux-k u{text-decoration:none;color:var(--m-amber-ink);margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}
.uap-case{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;margin-bottom:5px;border:1px solid var(--line2);border-left:3px solid var(--m-amber-ink);background:color-mix(in srgb,var(--m-amber-ink) 3%,transparent)}
.uap-case:not(:disabled):hover{background:color-mix(in srgb,var(--m-amber-ink) 9%,transparent);border-color:color-mix(in srgb,var(--m-amber-ink) 45%,transparent)}
.uap-case:disabled{cursor:default;opacity:.7}
.uap-case.hot{border-left-color:var(--red);background:color-mix(in srgb,var(--red) 6%,transparent)}
.uap-case .uap-c1{display:flex;justify-content:space-between;gap:8px}
.uap-case .uap-c1 b{color:var(--m-amber-ink);font-weight:400;letter-spacing:.12em;font-size:11px}
.uap-case .uap-c1 em{font-style:normal;color:var(--red2);font-size:9px;letter-spacing:.1em;text-align:right}
.uap-case .uap-c2{font-size:10px;color:var(--m-ok-hi);letter-spacing:.06em}
.uap-case .uap-c3{font-size:9px;color:var(--dim);letter-spacing:.08em}.uap-case .uap-c3.nt{color:var(--warn)}
.uap-share{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:8px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--cy) 40%,transparent);background:color-mix(in srgb,var(--cy) 5%,transparent);color:var(--cy2);font:10px var(--mono);letter-spacing:.2em;cursor:pointer}
.uap-share:hover{background:color-mix(in srgb,var(--cy) 12%,transparent);color:var(--m-hi)}.uap-share svg{width:14px;height:14px}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #uap-x .ux-tools{top:4px;right:6px}
  #uap-x .ux-tools button{height:20px;padding:0 4px}#uap-x .ux-shr span{display:none}
  #uap-x .ux-k{padding-right:50px}#uap-x .ux-k u{font-size:9px;margin-left:6px}
}
/* QA 10/13 tabs-a: global .st (wow-sim.css) boxed the STATUS value on the intercept card + radar readout */
#uap-x .ux-d dd.st,.uap-rt dd.st{border:0;padding:0;font-size:inherit;letter-spacing:inherit;cursor:inherit}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  /* radar: disc beside the MPH readout (was a 210px column that pushed every switch below the fold) */
  .uap .uap-radar{max-width:none;margin:0;display:grid;grid-template-columns:132px 1fr;gap:6px 12px;align-items:center}
  .uap-radar canvas{width:132px;grid-column:1;grid-row:1}.uap-radar .ux-mph.wide{grid-column:2;grid-row:1;margin:0;border:0;flex-direction:column;align-items:center;gap:0}
  .uap-radar .uap-rt{grid-column:1/-1;margin-top:2px}
  .uap-radar.off::after{left:8px;right:auto;top:8px;width:132px;height:132px;padding:0 16px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;font-size:9px;letter-spacing:.14em;line-height:1.4}
  .uap h4{margin-top:6px}
  #uap-master .seg button{min-height:34px}
  /* intercept card: phase chips stay on one line; tool buttons are real tap targets; LIVE TRACKING pill hides the HUD counters it sat on */
  #uap-x .ux-ph{gap:2px}#uap-x .ux-ph i{font-size:9px;letter-spacing:0;padding:3px 1px;white-space:nowrap;flex:1 1 auto}
  #uap-x .ux-tools{top:4px;right:4px;gap:4px}
  #uap-x .ux-tools button{height:30px;min-width:32px;justify-content:center;padding:0 6px}
  #uap-x .ux-k{min-height:30px;padding-right:76px}
  body:has(#uap-pill:not([hidden])) #hud{visibility:hidden}
}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){
  #uap-x .ux-d dd.st{grid-column:2/-1}
  #uap-x .ux-k{padding-right:70px;letter-spacing:.04em;gap:5px}#uap-x .ux-k i{width:6px;height:6px}
  #uap-x .ux-tools button{min-width:30px;padding:0 4px}
  /* nothing floats over an open sheet (the UAP panel shows the same contact + radar itself) */
  body.l-open #uap-x,body.r-open #uap-x,body.l-open #pcams,body.r-open #pcams,body.l-open #uap-ban,body.r-open #uap-ban,body.l-open #uap-alert,body.r-open #uap-alert{display:none}
}
@media (max-width:760px),(max-height:500px) and (pointer:coarse){#uap-x .ux-k span{white-space:normal}}
/* short landscape phone: card sits left, the 1-cam tile right, nothing runs into the tab strip */
@media (max-height:500px) and (pointer:coarse){
  #uap-x{left:var(--g);right:auto;width:min(540px,calc(100vw - 2 * var(--g) - 270px));max-height:calc(100vh - var(--topy) - var(--toph) - 50px - var(--botb) - var(--both) - 66px);overflow:hidden}
  #uap-x .ux-ph,#uap-x .ux-s{display:none}
  #uap-x:has(.ux-stamp:not(:empty)) .ux-resp{display:none}
  #pcams.one{width:250px;bottom:calc(var(--botb) + var(--both) + 62px)}
}
@media (max-height:500px) and (pointer:coarse){
  #uap-x:has(.ux-stamp:not(:empty)) .ux-d{display:none}
  body:has(#uap-x:not([hidden])) #qs{display:none}
}
/* UX sweep (addons): phone banner wraps instead of ellipsising the title; intercept card never runs under the bottom pills; 2x2 phase chips on 320; real tap targets; dossier opaque + closable; pill clear of the cam tile; cam wall yields to the card on short desktops */
@media (max-width:560px){#uap-ban{flex-wrap:wrap;gap:3px 10px;padding:8px 12px}#uap-ban b{flex:1 1 0;min-width:0;white-space:normal;font-size:14px;letter-spacing:.12em}#uap-ban span{flex:1 0 100%;white-space:normal;padding-left:20px}}
@media (max-width:760px){body #uap-x{max-height:calc(100dvh - 266px);overflow-y:auto;overscroll-behavior:contain}}
@media (max-width:360px){body #uap-x .ux-ph{flex-wrap:wrap}body #uap-x .ux-ph i{flex:1 1 calc(50% - 2px)}}
@media (pointer:coarse){
  #uap-master .seg button{min-height:44px;min-width:64px}
  .uap-tg .tg{min-height:44px;align-items:center}
  .nhi-r{min-height:44px;align-items:center}
  #nhi-d .bx{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;top:4px;right:4px}
  #nhi-d .nl button{min-height:40px;padding:4px 10px}
  #nhi-d .nu{padding:12px 0}
  body #uap-x .ux-tools button{height:40px;min-width:40px}
  body #uap-x .ux-k{min-height:40px;padding-right:92px}
  .uap-share{min-height:44px}
}
#nhi-d{background:var(--m-solid);backdrop-filter:blur(10px);overscroll-behavior:contain}
@media (max-width:760px){#nhi-d{left:var(--g);right:var(--g);width:auto;max-height:calc(100dvh - var(--topy) - var(--toph) - var(--botb) - var(--both) - 120px)}body.r-open #nhi-d{right:var(--g)}}
#nhi-d .bx:focus-visible,.nhi-r:focus-visible,.uap-c:focus-visible,.uap-case:focus-visible,#uap-x .ux-tools button:focus-visible,.uap-share:focus-visible,#uap-master .seg button:focus-visible{outline:2px solid var(--cy);outline-offset:1px}
@media (min-width:761px) and (max-height:860px){body:has(#uap-x:not([hidden])) #pcams .pc-tile:nth-child(n+4){display:none}}
@media (min-width:761px) and (max-height:500px) and (pointer:coarse){#uap-pill{right:auto;left:50%;translate:-50% 0;max-width:calc(100vw - 2 * var(--g) - 300px)}}
@media (max-width:560px){body #uap-ban{left:var(--g);right:var(--g);translate:none;width:auto;max-width:none}}
@media (max-width:760px) and (max-height:700px){body:has(#uap-x:not([hidden])) #pcams{display:none}}
/* tablet: with the left panel open there is no room beside it, so (like phones) the floating banner + card yield to the panel, which shows the same contact */
@media (min-width:761px) and (max-width:1040px){body.l-open #uap-x,body.l-open #uap-ban{display:none}}
@media (min-width:1041px){body.l-open #uap-ban{left:calc(50% + 150px)}}
/* light mode (CJ 10/13 polish): radar discs stay dark instruments on a paper card; glyph + facility colors are data, pulled toward ink */
.uap-radar canvas,#uap-x .ux-scope{background:#010a06} /* the scope disc is a dark instrument in both themes, painted or idle */
html[data-theme="light"] .uap-radar{background:var(--panel2);border-color:color-mix(in srgb,var(--ok) 35%,transparent)}
html[data-theme="light"] :is(.uap-radar canvas,#uap-x .ux-scope){box-shadow:0 0 0 1px color-mix(in srgb,var(--ok) 40%,transparent),0 4px 14px rgba(0,40,30,.18)}
html[data-theme="light"] :is(.nhi-r em,#nhi-d .nk,#nhi-d h5,#uap-x .ux-c,#uap-x .ux-shp em){color:color-mix(in srgb,var(--c) 60%,var(--ink))}
html[data-theme="light"] .ux-mph b{text-shadow:none}
html[data-theme="light"] .ux-mph.hot b{color:var(--red)}
html[data-theme="light"] #uap-x .ux-alt canvas{background:var(--m-well)}
html[data-theme="light"] .uap-radar.off canvas{opacity:.7}html[data-theme="light"] .uap-radar.off::after{color:#cfe3ee}

/* CJ 10/13 QA: empty states + inactive phase tab were --faint (about 2:1 in both themes) */
.uap-empty,.uap-l em,#uap-x .ux-ph i{color:var(--dim)}
html[data-theme="light"] .nhi-r em{color:color-mix(in srgb,var(--c) 55%,var(--ink))}
/* CJ 10/13: the NHI dossier opens where the intercept card lives; the card steps aside until the dossier closes */
body:has(#nhi-d:not([hidden])) #uap-x{visibility:hidden}
