/**
 * styles.css — MITRE ATT&CK Radial Mindmap
 * Design: dark cyberpunk / terminal aesthetic
 *
 * Claude Code tasks:
 *   - Swap CSS vars in :root to retheme
 *   - --glow controls accent color throughout
 *   - .node.highlight class for search highlight state
 */

@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600;700&display=swap');
:root{--bg:#03050f;--bg2:#060c1a;--panel:rgba(4,10,28,.97);--glow:#00c8ff;--grid:rgba(0,200,255,.035)}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);font-family:'Rajdhani',sans-serif;color:#c8d8f0;overflow:hidden;width:100vw;height:100vh;cursor:crosshair}
body::before{content:'';position:fixed;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.07) 2px,rgba(0,0,0,.07) 4px);pointer-events:none;z-index:1000}
#grid{position:fixed;inset:0;z-index:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:40px 40px}
#canvas{position:relative;z-index:2;width:100vw;height:100vh}
svg{width:100%;height:100%}
.link{fill:none;stroke-width:1;opacity:.3}
.node{cursor:pointer}
.node circle{transition:r .18s,filter .18s}
.node:hover circle{filter:brightness(1.6)!important}
.node text{pointer-events:none;paint-order:stroke fill}

/* ── Tooltip ── */
#tt{position:fixed;top:50%;right:1.5%;transform:translateY(-50%);width:400px;background:var(--panel);border:1px solid rgba(0,200,255,.22);border-left:3px solid var(--glow);display:none;z-index:100;box-shadow:0 0 50px rgba(0,200,255,.07);backdrop-filter:blur(10px);max-height:90vh;overflow-y:auto;border-radius:2px}
#tt::-webkit-scrollbar{width:4px}
#tt::-webkit-scrollbar-thumb{background:rgba(0,200,255,.28);border-radius:2px}
#tth{padding:13px 16px 9px;border-bottom:1px solid rgba(0,200,255,.13);position:sticky;top:0;background:rgba(2,6,18,.98);z-index:2}
#ttid{font-family:'Share Tech Mono',monospace;font-size:10px;color:rgba(0,200,255,.6);letter-spacing:2px;margin-bottom:2px}
#tttitle{font-family:'Orbitron',monospace;font-size:13px;font-weight:700;color:#fff;letter-spacing:.5px;line-height:1.3}
#ttb{padding:12px 16px}
.ts{margin-bottom:12px}
.tl{font-family:'Share Tech Mono',monospace;font-size:9px;letter-spacing:3px;color:rgba(0,200,255,.5);margin-bottom:5px}
.td{font-size:12.5px;color:#a8bcd8;line-height:1.55}
.tc{font-family:'Share Tech Mono',monospace;font-size:10.5px;color:#5effa0;background:rgba(0,255,100,.04);border:1px solid rgba(0,255,100,.13);padding:7px 9px;margin-bottom:4px;line-height:1.5;word-break:break-all;border-radius:2px}
.tn{font-size:11.5px;color:#7090b0;margin-top:2px;padding-left:8px;border-left:2px solid rgba(0,200,255,.18);line-height:1.4}
.tsub{padding:4px 0;border-bottom:1px solid rgba(255,255,255,.04);display:flex;align-items:baseline;gap:8px}
.tsub-id{font-family:'Share Tech Mono',monospace;font-size:9.5px;flex-shrink:0}
.tsub-name{font-size:12px;color:#c0d0e8}
.mit{font-size:11.5px;color:#8098b8;padding:3px 0 3px 9px;border-left:2px solid rgba(255,180,0,.32);margin-bottom:3px}
.ttclose{position:absolute;top:9px;right:12px;background:none;border:none;color:rgba(0,200,255,.5);font-family:'Share Tech Mono',monospace;font-size:13px;cursor:pointer;transition:color .2s;z-index:3}
.ttclose:hover{color:#fff}

/* ── HUD ── */
#hud{position:fixed;top:18px;left:50%;transform:translateX(-50%);text-align:center;z-index:50;pointer-events:none}
#htitle{font-family:'Orbitron',monospace;font-size:19px;font-weight:900;color:#fff;letter-spacing:5px;text-shadow:0 0 28px rgba(0,200,255,.55)}
#hsub{font-family:'Share Tech Mono',monospace;font-size:10px;color:rgba(0,200,255,.5);letter-spacing:3px;margin-top:3px}

/* ── Controls ── */
#ctrl{position:fixed;top:78px;left:18px;z-index:50;display:flex;flex-direction:column;gap:7px}
.cb{font-family:'Share Tech Mono',monospace;font-size:10px;color:rgba(0,200,255,.7);background:rgba(3,8,22,.88);border:1px solid rgba(0,200,255,.18);padding:6px 11px;cursor:pointer;letter-spacing:1px;transition:all .18s;text-align:left}
.cb:hover{background:rgba(0,200,255,.1);color:#fff;border-color:rgba(0,200,255,.5)}

/* ── Stats ── */
#stats{position:fixed;top:78px;right:18px;z-index:50;font-family:'Share Tech Mono',monospace;font-size:10px;color:rgba(0,200,255,.38);text-align:right;letter-spacing:1px;line-height:1.9;pointer-events:none}

/* ── Legend ── */
#leg{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:14px;flex-wrap:wrap;justify-content:center;z-index:50;background:rgba(2,6,18,.78);padding:7px 18px;border:1px solid rgba(0,200,255,.1);border-radius:2px;backdrop-filter:blur(5px)}
.li{display:flex;align-items:center;gap:5px;font-family:'Share Tech Mono',monospace;font-size:9px;color:rgba(200,216,240,.7);cursor:pointer;transition:opacity .18s}
.li:hover{opacity:1!important}
.ld{width:9px;height:9px;border-radius:50%;flex-shrink:0}

/* ── Loading overlay ── */
#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:200;background:var(--bg);font-family:'Share Tech Mono',monospace;font-size:13px;color:rgba(0,200,255,.7);letter-spacing:3px}

/* ── Search ── */
#search-wrap{position:fixed;top:78px;left:50%;transform:translateX(-50%);z-index:50}
#search{background:rgba(3,8,22,.9);border:1px solid rgba(0,200,255,.2);color:#c8d8f0;font-family:'Share Tech Mono',monospace;font-size:11px;padding:6px 12px;width:260px;outline:none;letter-spacing:1px}
#search::placeholder{color:rgba(0,200,255,.3)}
#search:focus{border-color:rgba(0,200,255,.5)}