/* dir-map.css — 印尼企业图谱「航线图」面板（配合 dir-map.js）。全部样式都在 .dm 下或以 dm- 开头。
   面板自带深色底（--dm-bg）；页面把 .dm 放进同色的通栏容器里即可。 */
.dm{
  --dm-bg:#07111F; --dm-line:rgba(170,195,235,.16); --dm-text:#C9D6EA; --dm-mute:#8394AE; --dm-white:#E8EEF8;
  --dm-gold:#E2AE4F; --dm-lane:#5AA9FF; --dm-lane-hi:#BFE0FF; --dm-peer:#9AA8BD; --dm-amber:#F5A623;
  --dm-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --dm-sans:Inter,-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--dm-bg); color:var(--dm-text); font:14px/1.6 var(--dm-sans); position:relative; min-width:0;
}
.dm *{box-sizing:border-box}
.dm .dm-data{display:none}
.dm-in{min-width:0}

/* 标题 + 工具条 */
.dm-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 24px;padding:26px 0 16px;border-bottom:1px solid var(--dm-line)}
.dm-title{min-width:0;flex:1 1 320px}
.dm-title h2{margin:0;font-size:22px;line-height:1.3;font-weight:600;color:#fff}
.dm-title p{margin:4px 0 0;font-size:14px;color:var(--dm-mute);max-width:640px}
.dm-tools{margin-left:auto;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.dm-seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--dm-line);border-radius:6px;overflow:hidden}
.dm-seg[hidden],.dm-seg button[hidden]{display:none}
.dm-seg button{background:transparent;border:0;color:var(--dm-mute);font:500 13px var(--dm-sans);padding:7px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.dm-seg button+button{border-left:1px solid var(--dm-line)}
.dm-seg button:hover{color:#fff}
.dm-seg button.on{background:rgba(255,255,255,.08);color:#fff}
.dm-sample{display:inline-flex;align-items:center;font:500 12px/1 var(--dm-mono);color:var(--dm-gold);border:1px solid rgba(226,174,79,.45);padding:5px 7px;border-radius:3px;white-space:nowrap}

/* 色块 / 线样 */
.dm-sw{display:inline-block;flex:none;width:16px;height:2px;border-radius:2px;vertical-align:middle}
.dm-sw-own{background:var(--dm-gold)}
.dm-sw-dash{background:repeating-linear-gradient(90deg,var(--dm-gold) 0 3px,transparent 3px 6px)}
.dm-sw-tal{background:var(--dm-lane);box-shadow:0 0 6px var(--dm-lane)}
.dm-sw-peer{width:9px;height:9px;border:1.5px solid var(--dm-peer);border-radius:50%;background:transparent}
.dm-sw-port{width:9px;height:9px;border:1.5px solid #CFE3FF;border-radius:50%;background:#0E2442}

/* 主体：地图 + 账本 */
.dm-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-width:0}
.dm-body.dm-global{grid-template-columns:minmax(0,1fr)}
.dm-body.dm-nostage{grid-template-columns:minmax(0,1fr)}
.dm-body.dm-nostage .dm-stage{display:none}
.dm-body.dm-nostage .dm-ledger{border-left:0}
.dm-stage{position:relative;min-width:0;margin-top:12px}
.dm-stage canvas,.dm-stage svg{position:absolute;left:0;top:0;display:block}
.dm-svg{overflow:visible;-webkit-user-select:none;user-select:none}

/* 地图元素 */
.dm-svg text{font-family:var(--dm-sans);fill:#DDE6F3;font-size:12px;paint-order:stroke;stroke:var(--dm-bg);stroke-width:4px;stroke-linejoin:round}
.dm-svg text.dm-s{fill:var(--dm-mute);font-size:11px;font-family:var(--dm-mono)}
.dm-svg text.dm-g{fill:var(--dm-gold);font-size:13px}
.dm-svg text.dm-on{font-weight:600}
.dm-svg text.dm-pn{font-weight:600;font-size:13px;fill:#fff}
.dm-svg text.dm-fn,.dm-svg text.dm-qn{font-weight:500}
.dm-svg text.dm-bk{fill:var(--dm-lane-hi);font-family:var(--dm-mono);font-size:11.5px}
.dm-svg text.dm-self-t{font-size:15px;font-weight:600;fill:#fff}
.dm-svg .dm-rule{stroke:rgba(170,195,235,.22);stroke-dasharray:2 4}
.dm-svg .dm-el{transition:opacity .35s ease}
.dm-svg.dm-focusing .dm-el:not(.on){opacity:.1}
.dm-svg.dm-hide-own .dm-own,.dm-svg.dm-hide-tal .dm-tal{opacity:.06;pointer-events:none}
.dm-svg .dm-hit{stroke:transparent;fill:none;stroke-width:16px;cursor:pointer;pointer-events:stroke}
.dm-svg .dm-own .dm-line{stroke:var(--dm-gold);fill:none;stroke-linecap:round;opacity:.92}
.dm-svg .dm-line.dm-dash{stroke-dasharray:3 5}
.dm-svg .dm-tal .dm-line{stroke:var(--dm-lane);fill:none;stroke-linecap:round}
.dm-svg .dm-glow{stroke:var(--dm-lane);fill:none;opacity:.12;stroke-linecap:round}
.dm-svg .dm-peer .dm-line{stroke:var(--dm-peer);stroke-width:1.1;fill:none;stroke-dasharray:1 5;stroke-linecap:round;opacity:.8}
.dm-svg .dm-chev{fill:none;stroke:var(--dm-lane-hi);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.dm-svg .dm-pt{fill:#E6F3FF;filter:drop-shadow(0 0 4px #5AA9FF)}
.dm-svg .dm-dia{fill:var(--dm-gold);stroke:var(--dm-gold);stroke-width:1.5}
.dm-svg .dm-dia-o{fill:var(--dm-bg)}
.dm-svg .dm-port,.dm-svg .dm-node,.dm-svg [data-href]{cursor:pointer}
.dm-svg .dm-port,.dm-svg .dm-self{transform-box:fill-box}
.dm-svg .dm-halo{fill:rgba(90,169,255,.08)}
.dm-svg .dm-hub{fill:#0E2442;stroke:#CFE3FF;stroke-width:1.3}
.dm-svg .dm-hub-self{stroke:#fff;stroke-width:1.6}
.dm-svg .dm-core{fill:var(--dm-amber)}
.dm-svg .dm-arc{fill:none;stroke:#CFE3FF;stroke-width:2.6;stroke-linecap:round;opacity:.75;transition:stroke .3s,opacity .3s}
.dm-svg .dm-arc.dm-hl{stroke:var(--dm-gold);opacity:1;stroke-width:3.2}
.dm-svg .dm-fnode{fill:var(--dm-bg);stroke:var(--dm-lane);stroke-width:1.6}
.dm-svg .dm-pnode{fill:var(--dm-bg);stroke:var(--dm-peer);stroke-width:1.5}
.dm-svg .dm-pulse{fill:none;stroke:var(--dm-lane);stroke-width:1}
.dm-svg :focus{outline:none}
.dm-svg :focus-visible .dm-hub,.dm-svg :focus-visible .dm-dia,.dm-svg :focus-visible .dm-fnode{stroke:#fff;stroke-width:2.5}

/* 悬停提示 */
.dm-tip{position:absolute;z-index:5;pointer-events:none;background:rgba(7,17,31,.96);border:1px solid rgba(170,195,235,.28);color:var(--dm-white);font-size:13px;line-height:1.55;padding:10px 12px;border-radius:6px;max-width:300px;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;overflow-wrap:anywhere}
.dm-tip.on{opacity:1;transform:none}
.dm-tip b{display:block;color:#fff;font-weight:600}
.dm-tip span{color:var(--dm-mute);font-size:12px;display:block}
.dm-tip div span{display:inline}
.dm-tip em{display:block;margin-top:4px;font-style:normal;font-size:12px;color:var(--dm-gold)}

/* 账本（文字版关系表） */
.dm-ledger{border-left:1px solid var(--dm-line);padding:16px 0 16px 22px;font-size:14px;min-width:0}
.dm-global .dm-ledger{border-left:0;border-top:1px solid var(--dm-line);padding:12px 0 18px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));column-gap:36px;align-items:start}
.dm-global .dm-ledger .dm-h{grid-column:1/-1}
.dm-h{font:500 12px var(--dm-mono);color:var(--dm-mute);text-transform:uppercase;letter-spacing:.08em;margin:14px 0 4px;display:flex;align-items:center;gap:8px}
.dm-h:first-child{margin-top:4px}
.dm-row{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--dm-line);transition:opacity .2s,background .2s}
.dm-row>.dm-sw,.dm-row>.dm-logo{align-self:center}
.dm-row b{font-weight:500;color:var(--dm-white);overflow-wrap:anywhere}
.dm-sub{display:block;color:var(--dm-mute);font-size:13px;line-height:1.55;overflow-wrap:anywhere}
.dm-mute{color:var(--dm-mute)}
.dm-st{font:500 13px var(--dm-mono);color:#fff;white-space:nowrap}
.dm-row.on{background:linear-gradient(90deg,rgba(90,169,255,.10),transparent)}
.dm-ledger.dm-dim .dm-row:not(.on){opacity:.35}
.dm-ledger.dm-hide-own .dm-own,.dm-ledger.dm-hide-tal .dm-tal{display:none}
.dm-click{cursor:pointer}
.dm-a{color:var(--dm-lane-hi);text-decoration:none;border-bottom:1px solid rgba(191,224,255,.3)}
.dm-a:hover{color:#fff;border-color:#fff}
.dm-row b .dm-a{color:var(--dm-white)}
.dm-go{border:0;font-size:15px}
.dm-back{background:transparent;border:1px solid var(--dm-line);color:var(--dm-text);font:500 13px var(--dm-sans);padding:5px 10px;border-radius:6px;cursor:pointer;text-transform:none;letter-spacing:0}
.dm-back:hover{color:#fff}
.dm-logo{width:18px;height:18px;border-radius:4px;background:rgba(255,255,255,.08);display:inline-flex;align-items:center;justify-content:center;font:600 10px var(--dm-sans);color:var(--dm-text);overflow:hidden}
.dm-logo img{width:100%;height:100%;object-fit:contain;background:#fff}

/* 行业筛选 */
.dm-chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 14px}
.dm-chips[hidden]{display:none}
.dm-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--dm-line);background:transparent;color:var(--dm-text);border-radius:999px;padding:5px 12px;font:13px var(--dm-sans);cursor:pointer;white-space:nowrap}
.dm-chip span{font:500 12px var(--dm-mono);color:var(--dm-mute)}
.dm-chip:hover{color:#fff;border-color:rgba(170,195,235,.4)}
.dm-chip.on{background:#fff;color:var(--dm-bg);border-color:#fff}
.dm-chip.on span{color:#5B6B82}

/* 图例 */
.dm-foot{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;padding:14px 0 22px;border-top:1px solid var(--dm-line);font-size:13px;color:var(--dm-mute)}
.dm-foot[hidden]{display:none}
.dm-foot span{display:inline-flex;align-items:center;gap:8px}
.dm-replay{margin-left:auto;background:transparent;border:1px solid var(--dm-line);color:var(--dm-mute);font:500 13px var(--dm-sans);padding:7px 11px;border-radius:6px;cursor:pointer}
.dm-replay:hover{color:#fff}

@media (max-width:1080px){
  .dm-body{grid-template-columns:minmax(0,1fr)}
  .dm-ledger{border-left:0;border-top:1px solid var(--dm-line);padding:12px 0 16px}
}
@media (max-width:640px){
  .dm-bar{padding:20px 0 14px}
  .dm-title h2{font-size:20px}
  .dm-tools{margin-left:0}
  .dm-global .dm-ledger{grid-template-columns:minmax(0,1fr)}
  .dm-replay{margin-left:0}
}
@media (prefers-reduced-motion:reduce){.dm *{transition:none!important;animation:none!important}}

/* 公司 logo：地图上的白色圆徽章（HTML 叠层，不挡鼠标），提示 / 列表里的小 logo */
.dm-logos{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:2}
.dm-badge{position:absolute;display:block;border-radius:50%;background:#fff;border:1px solid rgba(13,22,38,.14);box-shadow:0 1px 3px rgba(0,0,0,.35),0 4px 10px rgba(0,0,0,.22);padding:3px;overflow:hidden;transition:opacity .35s ease}
.dm-badge img{display:block;width:100%;height:100%;object-fit:contain}
.dm-b-own{box-shadow:0 0 0 1.5px var(--dm-gold),0 2px 8px rgba(0,0,0,.35)}
.dm-b-tal{box-shadow:0 0 0 1.5px var(--dm-lane),0 0 10px rgba(90,169,255,.35)}
.dm-b-peer{box-shadow:0 0 0 1.5px var(--dm-peer),0 2px 8px rgba(0,0,0,.3)}
.dm-b-self{box-shadow:0 0 0 2px #fff,0 0 0 5px rgba(90,169,255,.25),0 4px 14px rgba(0,0,0,.4)}
.dm-logos.dm-focusing .dm-badge:not(.on){opacity:.12}
.dm-logos.dm-hide-own .dm-own,.dm-logos.dm-hide-tal .dm-tal{opacity:.06}
.dm-tip .dm-tl{display:flex;align-items:center;gap:7px;margin-top:3px}
.dm-tip .dm-tl>span:not(.dm-logo){display:inline;margin-left:4px}
.dm-tip .dm-logo{display:inline-flex;flex:none}
.dm-logo-s{width:16px;height:16px;border-radius:50%}
.dm-logo{border-radius:50%}
.dm-logo img{padding:2px;border-radius:50%}
