/* OSINT Data Fabric — Warning Console
   The operating picture IS the interface: full-viewport map stage, floating hierarchy.
   1 Judgment card (hero) · 2 Indicator dock · 3 Evidence sheet · 4 Fabric drawer · 5 Ticker
   Identity: deep navy + cyan/blue, status red/amber/green. Rajdhani · Inter · IBM Plex Mono */

:root{
  --bg:#030711; --glass:rgba(6,13,25,.86); --glass2:rgba(4,10,20,.94);
  --line:rgba(96,165,225,.24); --line2:rgba(96,165,225,.12);
  --txt:#eef6ff; --mut:#8ea6c4; --dim:#5d7a99;
  --cyan:#67e8ff; --blue:#4ea1ff; --ink:#02101e;
  --red:#ff5d6c; --amber:#ffc24b; --green:#54e3a0; --gray:#5f7a96;
  --red-g:rgba(255,93,108,.16); --amber-g:rgba(255,194,75,.15); --green-g:rgba(84,227,160,.14);
  --elev:#ff8c5a;
  --disp:"Rajdhani",system-ui,sans-serif; --body:"Inter",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,monospace;
  --top:56px; --topmin:56px; --class:22px;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--body);color:var(--txt);background:var(--bg);overflow:hidden;height:100vh}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:rgba(96,165,225,.25);border-radius:9px}
::-webkit-scrollbar-track{background:transparent}
.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--cyan);font-weight:600}
h1,h2,h3{font-family:var(--disp);font-weight:600;margin:0;line-height:1.05}
.linkbtn{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);border-bottom:1px dotted var(--line2);padding:0}
.linkbtn:hover{color:var(--cyan)}

/* ===== classbar ===== */
.classbar{position:fixed;top:0;left:0;right:0;z-index:600;display:flex;align-items:center;justify-content:center;height:var(--class);
  background:#007a33;border-bottom:1px solid #005c26;
  font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.3em;color:#fff;text-transform:uppercase}

/* ===== stage: rotating globe ===== */
#globe{position:fixed;inset:0;top:var(--class);z-index:1;background:
  radial-gradient(1200px 700px at 50% 30%,#08152a 0%,#050d1c 45%,#02060f 100%)}
#globe canvas{outline:none}
.globe-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim);font-family:var(--mono);font-size:12px;padding:30px;text-align:center}

/* ===== topbar (floating) ===== */
.topbar{position:fixed;top:var(--class);left:0;right:0;z-index:520;min-height:var(--topmin);
  display:flex;align-items:center;flex-wrap:wrap;align-content:center;gap:14px;row-gap:7px;
  padding:6px clamp(12px,2vw,22px);
  background:linear-gradient(180deg,rgba(3,8,16,.92),rgba(3,8,16,.55) 78%,transparent);pointer-events:none}
.topbar>*{pointer-events:auto}
.brand img{height:32px;display:block;filter:drop-shadow(0 2px 8px rgba(0,0,0,.6))}
.bar-btn{display:inline-flex;align-items:center;gap:7px;font-family:var(--disp);font-weight:600;font-size:13.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--mut);border:1px solid var(--line);border-radius:10px;padding:8px 13px;background:var(--glass);backdrop-filter:blur(10px);transition:.14s}
.bar-btn:hover{color:var(--cyan);border-color:var(--cyan)}
.bb-ico{font-size:14px;line-height:1}
.topmeta{margin-left:auto;display:flex;align-items:center;gap:11px;flex-wrap:nowrap}
.dtg{font-family:var(--mono);font-size:12px;color:var(--mut);letter-spacing:.06em;white-space:nowrap}
.dtg b{color:var(--cyan);font-weight:600}
.modepill{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:6px 11px;color:var(--mut);background:var(--glass);backdrop-filter:blur(10px)}
.modepill .dot{width:7px;height:7px;border-radius:50%;background:var(--gray)}
.modepill.live{color:#bdf6e2;border-color:rgba(84,227,160,.5)}.modepill.live .dot{background:var(--green);animation:pulse 1.8s infinite}
.modepill.sample{color:#ffe6ad;border-color:rgba(255,194,75,.45)}.modepill.sample .dot{background:var(--amber)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(84,227,160,.6)}70%{box-shadow:0 0 0 7px rgba(84,227,160,0)}100%{box-shadow:0 0 0 0 rgba(84,227,160,0)}}
select{font-family:var(--body);color:var(--txt);background:var(--glass);border:1px solid var(--line);border-radius:10px;padding:8px 10px;outline:none;font-size:13px;backdrop-filter:blur(10px)}
select:focus{border-color:var(--cyan)}
select option{background:#0a1424;color:#eef6ff}
.run{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-family:var(--disp);font-weight:700;font-size:14px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink);background:linear-gradient(135deg,var(--cyan),var(--blue));border-radius:10px;padding:9px 16px;
  box-shadow:0 6px 22px rgba(78,161,255,.35);transition:transform .12s}
.run:hover{transform:translateY(-1px)}
.run[aria-busy="true"]{opacity:.8;pointer-events:none}
.run .spin{width:12px;height:12px;border:2px solid rgba(2,16,30,.45);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite;display:none}
.run[aria-busy="true"] .spin{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.iconbtn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--glass);color:var(--cyan);
  font-family:var(--disp);font-weight:700;font-size:16px;font-style:italic;display:inline-flex;align-items:center;justify-content:center;backdrop-filter:blur(10px);transition:.14s}
.iconbtn:hover{border-color:var(--cyan);background:rgba(103,232,255,.12)}

/* ===== 1 · JUDGMENT CARD (hero) ===== */
.judgment{position:fixed;z-index:500;top:calc(var(--class) + var(--top) + 10px);left:clamp(12px,2vw,22px);
  width:min(400px,calc(100vw - 24px));display:flex;border-radius:16px;overflow:hidden;
  background:var(--glass2);backdrop-filter:blur(16px);border:1px solid var(--line);
  box-shadow:0 24px 70px rgba(0,0,0,.55)}
.j-rule{width:6px;flex:none;background:var(--gray);transition:background .3s}
.judgment.nominal .j-rule{background:var(--green)}
.judgment.watch .j-rule{background:var(--amber)}
.judgment.elevated .j-rule{background:var(--elev)}
.judgment.significant .j-rule{background:var(--red);animation:rulepulse 1.6s infinite}
@keyframes rulepulse{0%,100%{opacity:1}50%{opacity:.45}}
.j-body{padding:14px 18px 12px;min-width:0;flex:1}
.j-posture{font-family:var(--disp);font-weight:700;font-size:44px;letter-spacing:.09em;line-height:1;margin:4px 0 2px;color:var(--mut);transition:color .3s}
.judgment.nominal .j-posture{color:var(--green)}
.judgment.watch .j-posture{color:var(--amber)}
.judgment.elevated .j-posture{color:var(--elev)}
.judgment.significant .j-posture{color:var(--red);text-shadow:0 0 26px rgba(255,93,108,.5)}
.j-phrase{font-size:13px;line-height:1.5;color:#d5e5f5;margin:2px 0 9px}
.j-conf{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.j-conf-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.j-conf-label b{color:var(--txt)}
.j-pips{display:inline-flex;gap:4px}
.j-pips i{width:9px;height:9px;border-radius:2.5px;background:rgba(255,255,255,.08);border:1px solid var(--line2)}
.j-pips i.on.red{background:var(--red);border-color:var(--red)}
.j-pips i.on.amber{background:var(--amber);border-color:var(--amber)}
.j-pips i.on.green{background:var(--green);border-color:var(--green)}
.j-src{font-family:var(--mono);font-size:10px;color:var(--dim)}
.j-doctrine{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--dim);margin:0;padding-top:8px;border-top:1px solid var(--line2);display:flex;gap:10px;align-items:center;justify-content:space-between}

/* ===== 2 · INDICATOR DOCK ===== */
.dock{position:fixed;z-index:490;top:calc(var(--class) + var(--top) + 10px);right:clamp(10px,1.6vw,20px);
  width:264px;max-height:calc(100vh - var(--class) - var(--top) - 118px);overflow:auto;
  display:flex;flex-direction:column;gap:7px;padding:2px;scrollbar-width:thin}
.dk{border:1px solid var(--line);border-radius:13px;background:var(--glass);backdrop-filter:blur(14px);overflow:hidden;
  box-shadow:0 12px 34px rgba(0,0,0,.4);transition:border-color .15s}
.dk:hover{border-color:rgba(103,232,255,.5)}
.dk-h{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:9px 11px;cursor:pointer;width:100%;text-align:left}
.dk-h .ring{width:30px;height:30px;flex:none}
.dk-h .nm{min-width:0}
.dk-h .nm b{font-family:var(--disp);font-size:14px;font-weight:600;display:block;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dk-h .nm small{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.dk-h .st{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
.st.red{color:var(--red)}.st.amber{color:var(--amber)}.st.green{color:var(--green)}.st.gray{color:var(--dim)}
.dk-subs{display:none;border-top:1px solid var(--line2)}
.dk.open .dk-subs{display:block}
.dk-sub{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;padding:8px 11px;cursor:pointer;width:100%;text-align:left;
  border-bottom:1px solid var(--line2);transition:background .13s}
.dk-sub:last-child{border-bottom:0}
.dk-sub:hover{background:rgba(103,232,255,.05)}
.dk-sub.sel{background:rgba(103,232,255,.1);box-shadow:inset 2px 0 0 var(--cyan)}
.dk-sub .sd{width:7px;height:7px;border-radius:50%;background:var(--gray);flex:none}
.dk-sub.s-red .sd{background:var(--red);box-shadow:0 0 7px var(--red)}
.dk-sub.s-amber .sd{background:var(--amber);box-shadow:0 0 7px var(--amber)}
.dk-sub.s-green .sd{background:var(--green)}
.dk-sub .si{min-width:0}
.dk-sub .si b{font-size:12px;font-weight:600;display:block;line-height:1.2}
.dk-sub .si small{font-family:var(--mono);font-size:9px;color:var(--dim);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lens{font-family:var(--mono);font-size:8px;letter-spacing:.09em;text-transform:uppercase;padding:2px 5px;border-radius:5px;white-space:nowrap;border:1px solid var(--line2);color:var(--mut);flex:none}
.lens.intent{color:#c9a6ff;border-color:rgba(170,130,255,.4)}
.lens.capability{color:#7fd1ff;border-color:rgba(110,180,255,.4)}
.lens.preparations{color:#ffd28a;border-color:rgba(255,180,90,.4)}
.lens.context,.lens.situational{color:#9fb3c8;border-color:var(--line2)}

/* ===== 3 · EVIDENCE SHEET ===== */
.evidence{position:fixed;z-index:510;left:clamp(12px,2vw,22px);bottom:64px;
  width:min(400px,calc(100vw - 24px));max-height:46vh;border-radius:16px;overflow:hidden;
  background:var(--glass2);backdrop-filter:blur(16px);border:1px solid var(--line);
  box-shadow:0 24px 70px rgba(0,0,0,.55);animation:evrise .28s ease}
@keyframes evrise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.evidence[hidden]{display:none}
.ev-x{position:absolute;top:8px;right:9px;z-index:2;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);
  background:rgba(2,6,14,.55);color:#fff;font-size:17px;display:flex;align-items:center;justify-content:center}
.ev-x:hover{border-color:var(--red);color:var(--red)}
.ev-inner{overflow:auto;max-height:46vh;padding:13px 16px 15px}
.ev-inner .eyebrow{display:block;margin-bottom:5px}
.ev-inner h3{font-size:17px;margin:0 22px 6px 0}
.ev-chain{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:7px 0 9px;font-family:var(--mono);font-size:10px;color:var(--mut)}
.ev-chain b{color:var(--cyan);font-weight:600}
.ev-chain .arr{color:var(--dim)}
.ev-inner p{font-size:12.5px;line-height:1.55;color:#cfe0f2;margin:6px 0}
.ev-inner p b{color:#fff}
.ev-prov{margin-top:9px;border-top:1px solid var(--line2);padding-top:8px;font-family:var(--mono);font-size:10px;color:var(--dim);line-height:1.7}
.ev-prov a{color:var(--blue)}

/* ===== 4 · FABRIC DRAWER ===== */
.fabric{position:fixed;z-index:900;top:var(--class);bottom:0;left:0;width:min(400px,92vw);
  background:var(--glass2);backdrop-filter:blur(20px);border-right:1px solid var(--line);
  display:flex;flex-direction:column;box-shadow:30px 0 90px rgba(0,0,0,.5);
  transform:translateX(-102%);transition:transform .26s ease}
.fabric.open{transform:translateX(0)}
.fabric[hidden]{display:flex}
.fb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:15px 16px 12px;border-bottom:1px solid var(--line2)}
.fb-head h2{font-size:19px;margin-top:3px}
.fb-sub{font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:3px}
.fb-head .ev-x{position:static}
.fb-scroll{overflow:auto;flex:1;padding:12px 12px 24px}
.subhead{display:flex;align-items:center;gap:8px;margin:14px 4px 8px;color:var(--mut)}
.subhead:first-child{margin-top:2px}
.subhead .eyebrow{color:var(--mut)}
.subhead .ln{flex:1;height:1px;background:var(--line2)}
.feedlist{display:grid;gap:6px}
.feed{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line2);border-radius:11px;background:rgba(255,255,255,.025);cursor:pointer;transition:.14s;width:100%;text-align:left}
.feed:hover{border-color:var(--line);background:rgba(103,232,255,.05)}
.feed .sdot{width:8px;height:8px;border-radius:50%;background:var(--gray)}
.feed.s-red .sdot{background:var(--red);box-shadow:0 0 8px var(--red)}
.feed.s-amber .sdot{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.feed.s-green .sdot{background:var(--green)}
.feed b{font-weight:600;font-size:12.5px;display:block}
.feed small{display:block;color:var(--dim);font-family:var(--mono);font-size:9.5px;margin-top:1px}
.feed .fcount{font-family:var(--mono);font-size:10.5px;color:var(--mut)}
.tree details{border-left:1px solid var(--line2);margin:1px 0 1px 2px}
.tree summary{list-style:none;display:flex;align-items:center;gap:8px;padding:6px 8px;cursor:pointer;border-radius:8px;font-size:12.5px}
.tree summary::-webkit-details-marker{display:none}
.tree summary:hover{background:rgba(103,232,255,.05)}
.tree summary .tw{color:var(--cyan);font-family:var(--mono);font-size:10px;width:11px;transition:transform .12s}
.tree details[open]>summary .tw{transform:rotate(90deg)}
.tree summary .nm{flex:1;color:var(--txt)}
.tree summary .ct{font-family:var(--mono);font-size:10px;color:var(--dim)}
.tree .kids{padding-left:14px}
.tree a.leaf{display:flex;align-items:center;gap:7px;padding:4px 8px;font-size:12px;color:var(--mut);border-radius:7px}
.tree a.leaf:hover{color:var(--cyan);background:rgba(103,232,255,.05)}
.tree a.leaf:before{content:"";width:4px;height:4px;border-radius:50%;background:var(--line);flex:none}
.scrim{position:fixed;inset:0;z-index:850;background:rgba(2,6,14,.5);backdrop-filter:blur(2px)}
.scrim[hidden]{display:none}
.muted{color:var(--dim);font-size:12.5px;line-height:1.6;margin:0}

/* ===== 5 · TICKER (floating) ===== */
.ticker{position:fixed;z-index:480;left:0;right:0;bottom:0;height:40px;display:flex;align-items:stretch;
  background:linear-gradient(90deg,rgba(4,10,20,.96),rgba(6,13,25,.9));border-top:1px solid var(--line);backdrop-filter:blur(12px)}
.tk-label{flex:none;display:flex;align-items:center;padding:0 13px;background:rgba(103,232,255,.09);border-right:1px solid var(--line);
  font-family:var(--disp);font-weight:700;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);line-height:1.15}
.tk-window{flex:1;min-width:0;overflow:hidden}
.tk-track{display:inline-flex;align-items:center;height:40px;white-space:nowrap;will-change:transform;
  animation:tkscroll calc(var(--tk-count,8) * 6s) linear infinite}
.tk-window:hover .tk-track{animation-play-state:paused}
@keyframes tkscroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tk-item{display:inline-flex;align-items:center;gap:9px;padding:0 17px;height:40px;border-right:1px solid var(--line2);
  font-family:var(--mono);font-size:11.5px;color:var(--mut);cursor:pointer;transition:background .13s}
.tk-item:hover{background:rgba(103,232,255,.06)}
.tk-dot{width:8px;height:8px;border-radius:50%;flex:none}
.tk-dot.red{background:var(--red);box-shadow:0 0 8px var(--red)}
.tk-dot.amber{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.tk-dot.green{background:var(--green)}
.tk-cat{color:var(--cyan);letter-spacing:.06em;text-transform:uppercase;font-size:10px;white-space:nowrap}
.tk-hl{color:var(--txt);white-space:nowrap;max-width:46vw;overflow:hidden;text-overflow:ellipsis}
.tk-ago{color:var(--dim);white-space:nowrap}

/* ===== mobile edge rails ===== */
.rail{display:none;position:fixed;top:50%;transform:translateY(-50%);z-index:860;
  align-items:center;padding:15px 8px;background:var(--glass2);border:1px solid var(--line);
  color:var(--cyan);font-family:var(--disp);font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:11.5px;
  backdrop-filter:blur(10px)}
.rail span{writing-mode:vertical-rl}
#railL{left:0;border-left:0;border-radius:0 12px 12px 0}
#railR{right:0;border-right:0;border-radius:12px 0 0 12px}

/* ===== rings ===== */
.ring{display:block}

/* ===== MODAL (kept) ===== */
.modal-scrim{position:fixed;inset:0;z-index:3000;background:rgba(2,5,12,.74);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}
.modal-scrim[hidden]{display:none}
.modal{width:min(760px,100%);max-height:92vh;overflow:auto;background:#05101f;border:1px solid var(--line);border-radius:18px;
  box-shadow:0 40px 120px rgba(0,0,0,.6);position:relative;animation:rise .3s ease}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.modal-x{position:absolute;top:12px;right:12px;z-index:3;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
  background:rgba(2,6,14,.6);color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center}
.modal-x:hover{border-color:var(--red);color:var(--red)}
.modal-hero{position:relative;height:150px;overflow:hidden;border-radius:18px 18px 0 0}
.modal-hero img{width:100%;height:100%;object-fit:cover;object-position:center}
.modal-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,#05101f)}
.modal-body{padding:18px clamp(18px,3vw,28px) 24px}
.m-title{font-size:24px;margin:3px 0 2px}
.m-sec{padding:14px 0;border-bottom:1px solid var(--line2)}
.m-sec:last-child{border-bottom:0}
.m-lede{font-size:14px;line-height:1.6;color:#dceaf8;margin:0}
.m-lede b{color:#fff}
.m-doc .eyebrow,.m-form .eyebrow,.m-cols .eyebrow{display:block;margin-bottom:9px}
.m-list{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.m-list li{font-size:12.5px;line-height:1.55;color:#cfe0f2;padding-left:14px;position:relative}
.m-list li:before{content:"";position:absolute;left:0;top:7px;width:5px;height:5px;border-radius:50%;background:var(--cyan)}
.m-list b{color:#fff}
.m-cite{font-family:var(--mono);font-size:10.5px;color:var(--dim);margin:10px 0 0;line-height:1.6}
.m-sub{font-size:12px;color:var(--mut);margin:0 0 12px;line-height:1.5}
.m-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.m-grid label{display:flex;flex-direction:column;gap:5px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
.m-grid input,.m-grid select{font-family:var(--body);font-size:13.5px;text-transform:none;letter-spacing:0;color:var(--txt);
  background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:10px;padding:8px 10px;outline:none}
.m-grid input:focus,.m-grid select:focus{border-color:var(--cyan)}
.m-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.btn-primary{font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);
  background:linear-gradient(135deg,var(--cyan),var(--blue));border-radius:10px;padding:11px 18px;box-shadow:0 6px 20px rgba(78,161,255,.3)}
.btn-ghost{font-family:var(--disp);font-weight:600;font-size:14px;letter-spacing:.03em;text-transform:uppercase;color:var(--mut);
  border:1px solid var(--line);border-radius:10px;padding:11px 18px}
.btn-ghost:hover{border-color:var(--cyan);color:var(--cyan)}
.m-status{font-family:var(--mono);font-size:11px;color:var(--green);margin:10px 0 0;min-height:14px}
.m-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.m-fine{font-size:11.5px;line-height:1.6;color:var(--mut);margin:0 0 9px}
.m-fine b{color:#dceaf8}.m-fine a{color:var(--blue)}.m-fine a:hover{color:var(--cyan)}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.tk-track{animation:none}}

/* ===== responsive =====
   The command bar carries four groups: identity, four destinations, status, and the
   AOI + Assess control. It is flex-wrap:wrap at every width, so it folds to a second
   row exactly when the content stops fitting — no breakpoint to guess, and no clipping
   if a webfont loads wider than the fallback. app.js measures the resulting height into
   --top via ResizeObserver; the values below are only the no-JS fallback. Every floating
   layer is positioned from --top, so judgment card, dock and drawers follow. */
@media(max-width:1319px){ :root{--top:104px} }
@media(max-width:900px){
  .judgment{top:calc(var(--class) + var(--top) + 6px);bottom:auto;left:10px;width:min(330px,calc(100vw - 20px))}
  .j-posture{font-size:30px}
  .j-phrase{font-size:12px}
  .rail{display:flex}
  body.dock-open #railR,body.fab-open #railL{display:none}
  .dock{top:var(--class);bottom:0;right:0;left:auto;width:min(320px,86vw);max-height:none;
    flex-direction:column;padding:12px 10px;z-index:900;background:var(--glass2);backdrop-filter:blur(20px);
    border-left:1px solid var(--line);box-shadow:-30px 0 90px rgba(0,0,0,.5);
    transform:translateX(103%);transition:transform .26s ease}
  body.dock-open .dock{transform:translateX(0)}
  .dk{box-shadow:none}
  .evidence{left:0;right:0;bottom:0;width:100%;max-height:56vh;border-radius:16px 16px 0 0;z-index:940}
  .ev-inner{max-height:56vh;padding-bottom:22px}
  body.ev-open .ticker{display:none}
  .dtg{display:none}
}
/* Phone: row 1 is identity + the four destinations sharing the width equally;
   row 2 is status + the AOI control + Assess. The info button is dropped because
   the judgment card's "Warning model" link opens the same modal. */
@media(max-width:700px){
  :root{--top:92px}
  .topbar{gap:6px;row-gap:6px;padding:0 10px}
  .brand img{height:26px}
  .bar-btn{flex:1 1 0;min-width:0;justify-content:center;gap:5px;padding:7px 4px;font-size:11.5px;letter-spacing:.03em}
  .bb-ico{font-size:12px}
  .topmeta{gap:7px;width:100%}
  .modepill{padding:5px 7px;font-size:8.5px;letter-spacing:.06em;gap:5px}
  #focus{flex:1 1 132px;min-width:0;font-size:12.5px;padding:7px 9px}
  .run{flex:none;padding:8px 12px;font-size:13px}
  .iconbtn{width:31px;height:31px;font-size:14px}
  #infoBtn{display:none}
}
@media(max-width:560px){
  .modepill{padding:5px 8px;font-size:9px;letter-spacing:.09em}
  .m-grid,.m-cols{grid-template-columns:1fr}
  .modal-hero{height:120px}
  .tk-hl{max-width:56vw}
}
/* Very narrow: labels give way to glyphs rather than overflowing. */
@media(max-width:370px){
  .bar-btn{font-size:0;gap:0;padding:7px 2px}
  .bb-ico{font-size:15px}
  .modepill{display:none}
}

/* ===== registry (modal master list) + ID chips ===== */
.m-chainline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 12px;font-family:var(--mono);font-size:10.5px;color:var(--mut)}
.m-chainline b{color:var(--cyan);font-weight:600;letter-spacing:.04em}
.m-chainline span{color:var(--dim)}
.rid{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--cyan);border:1px solid rgba(103,232,255,.3);border-radius:5px;padding:1px 5px;background:rgba(103,232,255,.06);white-space:nowrap}
.rid-sm{font-size:8.5px;margin-right:6px;vertical-align:1px}
.reg{display:grid;gap:4px;max-height:300px;overflow:auto;padding-right:6px}
.reg-ind{display:flex;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--line2);border-radius:9px;background:rgba(103,232,255,.05);margin-top:6px}
.reg-ind:first-child{margin-top:0}
.reg-ind b{font-family:var(--disp);font-size:14px;font-weight:600}
.reg-dom{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);flex:1}
.reg-ind .st{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;font-weight:600}
.reg-sub{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:9px;padding:6px 9px 6px 20px}
.reg-sub .reg-nm{min-width:0}
.reg-sub .reg-nm b{font-size:12px;font-weight:600;display:block;line-height:1.2}
.reg-sub .reg-nm small{font-family:var(--mono);font-size:9.5px;color:var(--dim);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reg-src{font-family:var(--mono);font-size:9.5px;color:var(--mut);white-space:nowrap}
.reg-wire{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;padding:2px 6px;border-radius:5px;border:1px solid var(--line2);color:var(--dim)}
.reg-wire.wired{color:var(--green);border-color:rgba(84,227,160,.4);background:var(--green-g)}
.reg-wire.wired.s-red{color:var(--red);border-color:rgba(255,93,108,.4);background:var(--red-g)}
.reg-wire.wired.s-amber{color:var(--amber);border-color:rgba(255,194,75,.4);background:var(--amber-g)}
.reg-sub.cand,.reg-ind.cand{opacity:.62}
@media(max-width:560px){.reg-sub{grid-template-columns:auto 1fr auto;gap:7px}.reg-src,.reg-sub .lens{display:none}}

/* ===== pressure toggle + country sparkline ===== */
.chip-toggle{position:fixed;z-index:470;right:clamp(10px,1.6vw,20px);bottom:52px;
  font-family:var(--disp);font-weight:700;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:7px 14px;
  background:var(--glass2);backdrop-filter:blur(10px);transition:.15s}
.chip-toggle.on{color:var(--red);border-color:rgba(255,93,108,.5);background:var(--red-g)}
.chip-toggle:hover{border-color:var(--cyan)}
.spark{display:flex;align-items:flex-end;gap:2px;height:46px;margin:8px 0 10px;padding:4px 6px;border:1px solid var(--line2);border-radius:8px;background:rgba(255,255,255,.02)}
.spark i{flex:1;background:linear-gradient(180deg,var(--cyan),var(--blue));border-radius:1.5px;opacity:.75;min-height:2px}
.spark i:nth-last-child(-n+4){background:linear-gradient(180deg,var(--red),#ff8c5a);opacity:.95}
@media(max-width:900px){.chip-toggle{bottom:48px;right:10px}}

/* ===== dock: desktop drawer + density (v2.5) ===== */
.dock-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 4px 8px}
.dk-collapse{width:24px;height:24px;border-radius:7px;border:1px solid var(--line2);background:rgba(255,255,255,.03);color:var(--mut);font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.dk-collapse:hover{border-color:var(--cyan);color:var(--cyan)}
/* density pass */
.dock{width:246px;gap:5px}
.dk-h{padding:7px 9px;gap:8px}
.dk-h .ring{width:26px;height:26px}
.dk-h .nm b{font-size:13px}
.dk-sub{padding:6px 9px;gap:8px}
.dk-sub .si b{font-size:11.5px}
/* desktop collapsed: dock hides, right rail appears */
@media(min-width:901px){
  body.dock-collapsed .dock{display:none}
  body.dock-collapsed #railR{display:flex}
}
@media(max-width:900px){
  .dock-head{display:none} /* mobile keeps drawer pattern; rail closes via scrim/select */
  .dock{width:min(320px,86vw)}
}

/* infra chip sits above pressure chip */
.chip-infra{bottom:94px}
.chip-infra.on{color:#c9a6ff;border-color:rgba(170,130,255,.5);background:rgba(170,130,255,.12)}
@media(max-width:900px){.chip-infra{bottom:88px;right:10px}}

/* ===== acronym tooltip ===== */
.acr{border-bottom:1px dotted rgba(103,232,255,.55);cursor:help}
.acr:hover{color:var(--cyan)}
.acr-tip{position:fixed;z-index:4000;max-width:320px;background:#0a1626;border:1px solid var(--line);border-radius:11px;
  padding:10px 30px 10px 12px;box-shadow:0 18px 50px rgba(0,0,0,.55);font-size:12px;line-height:1.5;color:#dceaf8}
.acr-tip b{display:block;font-family:var(--disp);font-size:13px;color:var(--cyan);margin-bottom:3px}
.acr-tip[hidden]{display:none}
.acr-x{position:absolute;top:5px;right:6px;width:20px;height:20px;border-radius:6px;color:var(--mut);font-size:14px;display:flex;align-items:center;justify-content:center}
.acr-x:hover{color:var(--red)}

/* ===== modal print button ===== */
.m-print{position:absolute;top:12px;right:56px;z-index:3;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mut);border:1px solid var(--line);border-radius:8px;padding:7px 11px;background:rgba(2,6,14,.6)}
.m-print:hover{color:var(--cyan);border-color:var(--cyan)}

/* ===== one-page print of the warning model ===== */
@media print{
  body{overflow:visible!important;background:#fff}
  body>*:not(.modal-scrim){display:none!important}
  .modal-scrim{position:static!important;display:block!important;background:#fff!important;padding:0!important;backdrop-filter:none!important}
  .modal{max-height:none!important;overflow:visible!important;box-shadow:none!important;border:0!important;background:#fff!important;color:#111!important;width:100%!important}
  .modal-hero,.m-form,.modal-x,.m-print,.m-cols{display:none!important}
  .modal-body{padding:0!important}
  .modal *{color:#111!important;background:transparent!important;border-color:#bbb!important;text-shadow:none!important}
  .eyebrow{color:#555!important}
  .m-title{font-size:18px!important}
  .m-lede,.m-list li,.m-sub{font-size:9.5px!important;line-height:1.35!important}
  .m-sec{padding:6px 0!important;page-break-inside:avoid}
  .m-chainline{font-size:9px!important}
  .reg{max-height:none!important;overflow:visible!important;gap:1px!important}
  .reg-ind{padding:3px 6px!important;margin-top:3px!important}
  .reg-ind b{font-size:10.5px!important}
  .reg-sub{padding:1.5px 6px 1.5px 14px!important;gap:6px!important}
  .reg-sub .reg-nm b{font-size:9px!important}
  .reg-sub .reg-nm small{font-size:7.5px!important;white-space:normal!important}
  .reg-src,.reg-wire,.lens,.rid,.reg-dom,.reg-ind .st{font-size:7.5px!important}
  .acr{border-bottom:0!important}
  @page{margin:11mm}
}

/* ===== light (day) theme ===== */
body[data-theme=light]{
  --bg:#dbe7f3;--glass:rgba(255,255,255,.88);--glass2:rgba(255,255,255,.75);
  --line:rgba(30,72,118,.28);--line2:rgba(30,72,118,.14);
  --txt:#0e2238;--mut:#3c5876;--dim:#67809b;
  --cyan:#0a7ea4;--blue:#1d6fd1;
  background:#dbe7f3;
}
body[data-theme=light] .tk-strip,body[data-theme=light] .topbar{background:rgba(233,241,249,.85)}
body[data-theme=light] .acr-tip{background:#fff;color:#213b57;box-shadow:0 18px 50px rgba(30,60,100,.25)}
body[data-theme=light] .acr-tip b{color:#0a7ea4}
body[data-theme=light] .modal,body[data-theme=light] .pop{background:#f2f7fc}
body[data-theme=light] .ev,body[data-theme=light] .evidence{background:var(--glass)}
body[data-theme=light] .run{color:#04263f}

/* ===== light theme: ink fixes for hardcoded light colors (v2.7.2) ===== */
body[data-theme=light] .j-phrase{color:#28455f}
body[data-theme=light] .ev-inner p{color:#2b4763}
body[data-theme=light] .ev-inner p b{color:#0e2238}
body[data-theme=light] .m-lede{color:#31506e}
body[data-theme=light] .m-lede b{color:#0e2238}
body[data-theme=light] .m-list li{color:#2b4763}
body[data-theme=light] .m-list b{color:#0e2238}
body[data-theme=light] .m-fine{color:#4a6484}
body[data-theme=light] .m-fine b{color:#1a3550}
body[data-theme=light] .m-sub,body[data-theme=light] .m-chainline{color:#31506e}
body[data-theme=light] .ticker{background:rgba(236,243,250,.94);border-top:1px solid var(--line)}
body[data-theme=light] .tk-label{background:rgba(10,126,164,.10)}
body[data-theme=light] .tk-item{color:#28455f}
body[data-theme=light] .tk-item b{color:#0e2238}
body[data-theme=light] .ev-x,body[data-theme=light] .modal-x{background:rgba(255,255,255,.7);color:#28455f;border-color:var(--line)}
body[data-theme=light] select option{background:#fff;color:#0e2238}
body[data-theme=light] .reg-sub .reg-nm b{color:#0e2238}
body[data-theme=light] .reg-nm small,body[data-theme=light] .reg-src{color:#4a6484}
body[data-theme=light] .ev-prov{color:#4a6484;border-color:var(--line2)}
body[data-theme=light] .spark{background:rgba(10,60,110,.05)}
.h-port{color:#c9a6ff}.h-lng{color:#7fd1ff}.h-red{color:var(--red)}.h-amber{color:var(--amber)}.h-green{color:var(--green)}
body[data-theme=light] .h-port{color:#6b34c9}body[data-theme=light] .h-lng{color:#0a6da4}
body[data-theme=light] .h-amber{color:#8a5a00}body[data-theme=light] .h-green{color:#0c7a45}body[data-theme=light] .h-red{color:#b3111f}
.h-blue{color:var(--blue)}body[data-theme=light] .h-blue{color:#1d6fd1}

/* infra subtype legend (shows with Infra layer) */
.infra-legend{position:fixed;z-index:471;right:clamp(10px,1.6vw,20px);bottom:130px;
  display:flex;flex-direction:column;gap:4px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;
  background:var(--glass2);backdrop-filter:blur(10px);font-family:var(--mono);font-size:10.5px;color:var(--mut)}
.infra-legend[hidden]{display:none}
.infra-legend span{display:flex;align-items:center;gap:6px}
.infra-legend i{width:9px;height:9px;border-radius:50%;flex:none}
.infra-legend .il-note{color:var(--dim);font-size:9px;margin-top:2px}
@media(max-width:900px){.infra-legend{bottom:124px;right:10px}}

/* PRINT ONE-PAGER button: white border in both themes */
.m-print{border-color:#fff!important;color:#fff!important}
.m-print:hover{border-color:#fff!important;color:var(--cyan)!important;background:rgba(255,255,255,.1)!important}
body[data-theme=light] .m-print{border-color:#fff!important;color:#0e2238!important;background:rgba(30,60,100,.35)!important}
body[data-theme=light] .m-print:hover{background:rgba(30,60,100,.5)!important;color:#fff!important}
