/* 官網導覽：沿用 out/css/drafts.css 中外殼的排版與響應式修正。 */
.merged-site .nav-links { gap: 16px; }
.merged-site .nav-links a { white-space: nowrap; font-size: 0.875rem; }
.merged-site .logo { white-space: nowrap; gap: 6px; font-size: 1.2rem; }
.merged-site .nav-actions .btn { padding: 12px 16px; white-space: nowrap; }
.merged-site .nav-container { gap: 20px; }
.merged-site > .apt-main { padding-top: var(--site-header-height, 86px); }
.merged-site > .header { color-scheme: dark; }
.merged-site > .footer { color-scheme: dark; }
.merged-site > .header a:focus-visible,
.merged-site > .header button:focus-visible,
.merged-site > .footer a:focus-visible { outline: 2px solid var(--accent-gold); outline-offset: 5px; }
@media (min-width: 1025px) {
    .merged-site .header .container { max-width: 1440px; }
}
@media (max-width: 1024px) {
    .merged-site .nav-actions { display: flex; }
    .merged-site .menu-toggle { display: flex; padding: 10px; }
    .merged-site .nav-links { display: none; position: absolute; top: 100%; left: 0; width: 100%; background: var(--bg-panel-solid); flex-direction: column; padding: 24px; gap: 16px; text-align: center; max-height: calc(100dvh - var(--site-header-height, 86px)); overflow-y: auto; border-bottom: 1px solid var(--border-color); }
    .merged-site .nav-links.active { display: flex; }
    .merged-site .nav-links a { font-size: 1rem; }
}
@media (max-width: 480px) {
    .merged-site .nav-actions .btn { display: none; }
    .merged-site .footer-grid { grid-template-columns: 1fr; }
    .merged-site .footer-bottom { flex-direction: column; align-items: flex-start; gap: 12px; }
}

/* 抵銷官網的全域 margin/padding reset 與標題字型；保留 SVG 呈現屬性。 */
.apt-atlas :where(*) { margin: revert; padding: revert; }
.apt-atlas :where(h1, h2, h3, h4, h5, h6) {
    font-family: inherit; font-weight: bold; line-height: inherit; letter-spacing: normal;
}
.apt-atlas a { transition: none; }
/* 以下為原圖譜 CSS：僅加入容器作用域，main 選擇器對應 .atlas-content。 */

.apt-atlas{
        --bg:#f4f3ef; --bg2:#eceae3; --panel:#ffffff; --panel2:#faf9f6;
        --ink:#1b2430; --ink2:#4c5866; --ink3:#7c8794;
        --line:#d9d5ca; --line2:#c8c3b4;
        --accent:#b3402a; --accent-ink:#ffffff;
        --amber:#b97a0c; --amber-bg:#fdf3dd;
        --chip:#efece3;
        --shadow:0 12px 40px rgba(27,36,48,.16);
        --graph-bg:#eceae2;
        --edge-b:#4a7db5; --edge-c:#7d8a99; --edge-flag:#d9930d; --edge-d:#b6bcc4;
        color-scheme: light;
      }
      @media (prefers-color-scheme: dark){
.apt-atlas{
          --bg:#0d1219; --bg2:#111826; --panel:#161e2a; --panel2:#1a2331;
          --ink:#e9e7de; --ink2:#aeb8c4; --ink3:#7d8896;
          --line:#2a3547; --line2:#39465c;
          --accent:#e0684b; --accent-ink:#14100d;
          --amber:#e8a83e; --amber-bg:#2c2210;
          --chip:#212c3d;
          --shadow:0 12px 40px rgba(0,0,0,.55);
          --graph-bg:#101722;
          --edge-b:#6f9fd8; --edge-c:#8b99ab; --edge-flag:#e8a83e; --edge-d:#4c586a;
          color-scheme: dark;
        }
      }
.apt-atlas *{box-sizing:border-box}
.apt-atlas{margin:0;padding:0}
.apt-atlas{
        background:var(--bg); color:var(--ink);
        font-family:"Noto Sans TC",-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif;
        font-size:15px; line-height:1.55;
      }
.apt-atlas .mono{font-family:"IBM Plex Mono",ui-monospace,monospace}
.apt-atlas a{color:var(--accent); text-decoration:none; word-break:break-all}
.apt-atlas a:hover{text-decoration:underline}
.apt-atlas button{font-family:inherit; cursor:pointer}

      /* ---------- header ---------- */
.apt-atlas header.top{padding:22px 20px 0; max-width:1440px; margin:0 auto}
.apt-atlas .title-row{display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 18px}
.apt-atlas h1{font-family:"Noto Serif TC",serif; font-weight:900; font-size:clamp(24px,4vw,36px); margin:0; letter-spacing:.02em}
.apt-atlas .subtitle{color:var(--ink2); font-size:13.5px; max-width:760px}
.apt-atlas .subtitle b{color:var(--ink)}
.apt-atlas .stats{display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 4px}
.apt-atlas .stat{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:8px 14px 7px; min-width:96px}
.apt-atlas .stat .n{font-family:"IBM Plex Mono",monospace; font-size:22px; font-weight:600; line-height:1.1}
.apt-atlas .stat .l{font-size:11.5px; color:var(--ink2); letter-spacing:.04em}
.apt-atlas .stat.warn .n{color:var(--amber)}
.apt-atlas .stat.hot .n{color:var(--accent)}

      /* ---------- toolbar ---------- */
.apt-atlas .toolbar{position:sticky; top:0; z-index:40; background:color-mix(in srgb, var(--bg) 88%, transparent); backdrop-filter:blur(8px); border-bottom:1px solid var(--line); margin-top:14px}
.apt-atlas .toolbar-in{max-width:1440px; margin:0 auto; padding:10px 20px; display:flex; flex-wrap:wrap; gap:10px; align-items:center}
.apt-atlas .tabs{display:flex; flex-wrap:wrap; gap:6px}
.apt-atlas .tab{border:1px solid var(--line2); background:var(--panel); color:var(--ink); border-radius:999px; padding:6px 14px; font-size:13.5px; font-weight:500}
.apt-atlas .tab[aria-selected="true"]{background:var(--ink); color:var(--bg); border-color:var(--ink)}
.apt-atlas .tab.tw[aria-selected="true"]{background:var(--accent); border-color:var(--accent); color:#fff}
.apt-atlas .filters{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-left:auto}
.apt-atlas .filters select, .apt-atlas .filters input[type="search"]{
        background:var(--panel); color:var(--ink); border:1px solid var(--line2); border-radius:8px;
        padding:6px 9px; font-size:13.5px; font-family:inherit; max-width:200px;
      }
.apt-atlas .chk{display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--ink2); border:1px solid var(--line); border-radius:8px; padding:5px 10px; background:var(--panel)}
.apt-atlas .chk input{accent-color:var(--accent)}
.apt-atlas .atlas-content{max-width:1440px; margin:0 auto; padding:16px 20px 60px}
.apt-atlas .view[hidden]{display:none}

      /* ---------- graph ---------- */
.apt-atlas .graph-wrap{background:var(--graph-bg); border:1px solid var(--line); border-radius:14px; overflow:hidden; position:relative}
.apt-atlas svg#graph{display:block; width:100%; height:min(72vh,760px); min-height:420px; touch-action:none}
.apt-atlas .node{cursor:pointer}
.apt-atlas .node circle.core{stroke:var(--panel); stroke-width:2}
.apt-atlas .node text{font-size:11.5px; font-weight:700; fill:var(--ink); paint-order:stroke; stroke:var(--graph-bg); stroke-width:3.5px; pointer-events:none}
.apt-atlas .node.dim{opacity:.13}
.apt-atlas .edge{fill:none; cursor:pointer}
.apt-atlas .edge-hit{fill:none; stroke:transparent; stroke-width:14; cursor:pointer}
.apt-atlas .edge.dim{opacity:.08}
.apt-atlas .edge-label{font-size:10px; fill:var(--amber); font-weight:700; paint-order:stroke; stroke:var(--graph-bg); stroke-width:3px; pointer-events:none}
.apt-atlas .legend{display:flex; flex-wrap:wrap; gap:6px 18px; padding:10px 14px; font-size:12.5px; color:var(--ink2); border-top:1px solid var(--line); background:var(--panel2)}
.apt-atlas .legend .sw{display:inline-block; width:11px; height:11px; border-radius:50%; margin-right:5px; vertical-align:-1px}
.apt-atlas .legend .ln{display:inline-block; width:26px; border-top:3px solid; margin-right:6px; vertical-align:middle}
.apt-atlas .legend .ln.dash{border-top-style:dashed}
.apt-atlas .legend .ln.dot{border-top-style:dotted}
.apt-atlas .graph-note{font-size:12.5px; color:var(--ink2); margin:10px 2px 0}
.apt-atlas .edge-info{margin-top:12px; border:1px solid var(--amber); background:var(--amber-bg); border-radius:12px; padding:14px 16px}
.apt-atlas .edge-info h3{margin:0 0 6px; font-size:15px}
.apt-atlas .edge-info p{margin:4px 0; font-size:13.5px}
.apt-atlas .edge-info[hidden]{display:none}

      /* ---------- list view ---------- */
.apt-atlas .cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:10px}
.apt-atlas .card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:13px 15px; text-align:left; width:100%; color:var(--ink)}
.apt-atlas .card:hover{border-color:var(--line2); box-shadow:var(--shadow)}
.apt-atlas .card .nm{font-weight:900; font-size:16.5px}
.apt-atlas .card .en{font-size:12px; color:var(--ink3); font-family:"IBM Plex Mono",monospace}
.apt-atlas .card .meta{margin-top:7px; font-size:12.5px; color:var(--ink2); display:flex; flex-wrap:wrap; gap:4px 10px}
.apt-atlas .dot{display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:5px; vertical-align:0}
.apt-atlas .lvl{font-size:11px; border:1px solid var(--line2); border-radius:999px; padding:1px 8px; color:var(--ink2)}
.apt-atlas .lvl.umbrella{border-color:var(--accent); color:var(--accent); font-weight:700}
.apt-atlas .count-note{color:var(--ink2); font-size:13px; margin:0 0 12px}

      /* ---------- attack view ---------- */
.apt-atlas .atk-grid{display:grid; grid-template-columns:1fr; gap:22px}
      @media(min-width:960px){
.apt-atlas .atk-grid{grid-template-columns:1.25fr 1fr} }
.apt-atlas .panel-box{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:18px 20px}
.apt-atlas .panel-box h2{font-family:"Noto Serif TC",serif; font-size:19px; margin:0 0 4px}
.apt-atlas .panel-box .sub{color:var(--ink2); font-size:13px; margin:0 0 14px}
.apt-atlas .bar-row{display:grid; grid-template-columns:minmax(120px,220px) 1fr 44px; gap:10px; align-items:center; padding:5px 0; border-bottom:1px dashed var(--line); cursor:pointer; background:none; border-top:0;border-left:0;border-right:0; width:100%; text-align:left; color:var(--ink); font-size:13.5px}
.apt-atlas .bar-row:hover .bar-name{color:var(--accent)}
.apt-atlas .bar-track{height:14px; background:var(--bg2); border-radius:4px; overflow:hidden}
.apt-atlas .bar-fill{height:100%; background:var(--accent); border-radius:4px}
.apt-atlas .bar-num{font-family:"IBM Plex Mono",monospace; font-weight:600; text-align:right}
.apt-atlas .tac-row{display:flex; justify-content:space-between; gap:10px; padding:6px 0; border-bottom:1px dashed var(--line); font-size:13.5px}
.apt-atlas .org-chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:10px}
.apt-atlas .org-chip{border:1px solid var(--line2); background:var(--panel2); color:var(--ink); border-radius:999px; padding:3px 11px; font-size:12.5px}
.apt-atlas .org-chip:hover{border-color:var(--accent); color:var(--accent)}

      /* ---------- conflicts / pending ---------- */
.apt-atlas .cf-card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin-bottom:12px}
.apt-atlas .cf-card h3{margin:0 0 8px; font-size:16px}
.apt-atlas .cf-id{font-family:"IBM Plex Mono",monospace; color:var(--accent); font-weight:600; margin-right:8px}
.apt-atlas .claim{border-left:3px solid var(--line2); padding:4px 0 4px 12px; margin:8px 0; font-size:13.5px}
.apt-atlas .claim .who{color:var(--ink2); font-size:12.5px}
.apt-atlas .handling{font-size:13.5px; background:var(--panel2); border:1px solid var(--line); border-radius:8px; padding:9px 12px; margin-top:10px}
.apt-atlas .pv-item{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 18px; margin-bottom:10px}
.apt-atlas .pv-item h3{margin:0 0 6px; font-size:15px}
.apt-atlas .pv-item p{margin:3px 0; font-size:13.5px; color:var(--ink2)}
.apt-atlas .pv-item p b{color:var(--ink)}
.apt-atlas .pv-id{font-family:"IBM Plex Mono",monospace; color:var(--amber); font-weight:600; margin-right:8px}

      /* ---------- detail sheet ---------- */
.apt-atlas .scrim{position:fixed; inset:0; background:rgba(10,14,20,.45); z-index:60; opacity:0; pointer-events:none; transition:opacity .2s}
.apt-atlas .scrim.on{opacity:1; pointer-events:auto}
.apt-atlas .sheet{position:fixed; top:0; right:0; height:100dvh; width:min(620px,100vw); background:var(--panel); z-index:61; box-shadow:var(--shadow); transform:translateX(102%); transition:transform .25s ease; overflow-y:auto; overscroll-behavior:contain}
.apt-atlas .sheet.on{transform:none}
.apt-atlas .sheet-in{padding:22px 22px 50px}
.apt-atlas .sheet .close{position:sticky; top:0; float:right; background:var(--chip); border:1px solid var(--line2); color:var(--ink); border-radius:999px; width:36px; height:36px; font-size:17px; line-height:1}
.apt-atlas .sheet h2{font-family:"Noto Serif TC",serif; font-size:25px; margin:2px 40px 2px 0}
.apt-atlas .sheet .en-name{font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--ink3); margin-bottom:10px}
.apt-atlas .badges{display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 4px}
.apt-atlas .badge{font-size:12px; border-radius:999px; padding:2px 10px; border:1px solid var(--line2); color:var(--ink2)}
.apt-atlas .badge.region{color:var(--ink); font-weight:700}
.apt-atlas .badge.flag{border-color:var(--amber); color:var(--amber); font-weight:700}
.apt-atlas .denial{border:1px solid var(--accent); border-radius:10px; padding:10px 13px; font-size:13.5px; margin:12px 0; background:color-mix(in srgb, var(--accent) 6%, var(--panel))}
.apt-atlas section.blk{margin-top:20px}
.apt-atlas section.blk>h3{font-size:13px; letter-spacing:.12em; color:var(--ink2); border-bottom:2px solid var(--ink); padding-bottom:5px; margin:0 0 10px; font-weight:900}
.apt-atlas .item{padding:8px 0; border-bottom:1px dashed var(--line)}
.apt-atlas .item:last-child{border-bottom:0}
.apt-atlas .item .t{font-weight:700; font-size:14.5px}
.apt-atlas .item .d{font-size:13.5px; color:var(--ink2); margin-top:2px}
.apt-atlas .src{font-size:12px; color:var(--ink3); margin-top:5px; line-height:1.5}
.apt-atlas .src .st{color:var(--ink2); font-weight:500}
.apt-atlas .src a{font-size:12px}
.apt-atlas .backup{font-family:"IBM Plex Mono",monospace; font-size:10.5px; word-break:break-all}
.apt-atlas .empty{color:var(--ink3); font-size:13.5px; padding:6px 0}
.apt-atlas .cve-badge{font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:13px; background:var(--chip); border-radius:6px; padding:1px 7px; margin-right:7px; white-space:nowrap}
.apt-atlas .zd{display:inline-block; font-size:11px; font-weight:700; color:#fff; background:var(--accent); border-radius:999px; padding:1px 8px; margin-left:6px; vertical-align:1px}
      @media (prefers-color-scheme: dark){
.apt-atlas .zd{color:#181008} }
.apt-atlas .basis{font-size:11px; border-radius:999px; padding:1px 8px; border:1px solid var(--line2); color:var(--ink2); margin-left:6px; white-space:nowrap}
.apt-atlas .basis.orig{border-color:var(--accent); color:var(--accent)}
.apt-atlas .tac-group{margin:10px 0}
.apt-atlas .tac-head{font-weight:900; font-size:13.5px; margin-bottom:3px}
.apt-atlas .tac-head .mono{color:var(--ink3); font-weight:400; font-size:12px; margin-right:6px}
.apt-atlas .tech-line{font-size:13.5px; padding:4px 0 4px 14px; border-bottom:1px dashed var(--line)}
.apt-atlas .tech-line .mono{font-weight:600}
.apt-atlas .rel-line{display:flex; gap:8px; align-items:baseline; padding:7px 0; border-bottom:1px dashed var(--line); font-size:13.5px; flex-wrap:wrap}
.apt-atlas .grade{font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:600; border:1px solid var(--line2); border-radius:5px; padding:0 6px; white-space:nowrap}
.apt-atlas .grade.gA{border-color:var(--amber); color:var(--amber)}
.apt-atlas .grade.gB{border-color:var(--edge-b); color:var(--edge-b)}
.apt-atlas .rel-jump{background:none; border:0; color:var(--accent); font-weight:700; font-size:13.5px; padding:0}
.apt-atlas .tl-item{display:grid; grid-template-columns:86px 1fr; gap:12px; padding:7px 0; border-bottom:1px dashed var(--line); font-size:13.5px}
.apt-atlas .tl-item .dt{font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink2); padding-top:2px}
.apt-atlas footer{max-width:1440px; margin:0 auto; padding:0 20px 40px; color:var(--ink3); font-size:12.5px}
      @media (prefers-reduced-motion: reduce){
.apt-atlas *{transition:none !important; animation:none !important} }
    
/* 融合版面：正文隨頁面捲動，圖區高度不再綁定視窗高度。 */
.apt-atlas { min-width: 0; }
.apt-atlas .toolbar { top: var(--site-header-height, 86px); }
.apt-atlas svg#graph { height: auto; aspect-ratio: 1240 / 820; min-height: 420px; max-height: 760px; }
/* 詳情仍保留原圖譜抽屜操作，開啟時覆蓋官網固定頁首。 */
.apt-atlas .scrim { z-index: 1001; }
.apt-atlas .sheet { z-index: 1002; }
.apt-atlas .edge-info { scroll-margin-top: calc(var(--site-header-height, 86px) + 180px); }
@media (prefers-reduced-motion: reduce) {
    .merged-site > .header, .merged-site > .footer,
    .merged-site > .header *, .merged-site > .footer * { transition: none; animation: none; }
}

/* BRIEF4: independent western-source section; existing rules above unchanged. */
.western-apt {
  --wa-bg: #f4f3ef; --wa-panel: #ffffff; --wa-ink: #1b2430;
  --wa-muted: #4c5866; --wa-line: #d9d5ca; --wa-accent: #b3402a;
  --wa-chip: #efece3; --wa-note: #fdf3dd; --wa-amber: #805308;
  background: var(--wa-bg); color: var(--wa-ink); padding: 52px 20px 64px;
  border-top: 1px solid var(--wa-line); font-size: 15px; line-height: 1.75;
  font-family: "Noto Sans TC", -apple-system, "PingFang TC", "Microsoft JhengHei", sans-serif;
}
.western-apt * { box-sizing: border-box; }
.western-apt .western-apt-inner { max-width: 1400px; margin: 0 auto; }
.western-apt .western-apt-kicker { color: var(--wa-accent); font-size: 13px; font-weight: 700; letter-spacing: .08em; }
.western-apt .western-apt-heading { font-family: "Noto Serif TC", serif; font-weight: 900; font-size: clamp(24px, 3vw, 34px); line-height: 1.45; margin: 8px 0 16px; }
.western-apt .western-apt-intro { color: var(--wa-muted); margin: 0 0 28px; text-align: left; letter-spacing: normal; text-wrap: pretty; }
.western-apt .western-apt-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: start; }
.western-apt .western-apt-card { min-width: 0; padding: 24px; background: var(--wa-panel); border: 1px solid var(--wa-line); border-radius: 14px; overflow-wrap: anywhere; }
.western-apt .western-apt-card-title { font-family: inherit; font-size: 21px; line-height: 1.5; font-weight: 800; letter-spacing: normal; margin: 0 0 12px; }
.western-apt .western-apt-badge { display: inline-block; padding: 3px 10px; border: 1px solid var(--wa-line); border-radius: 999px; background: var(--wa-chip); font-size: 12px; line-height: 1.65; margin-bottom: 14px; }
.western-apt .western-apt-summary { margin: 0 0 18px; }
.western-apt .western-apt-fields { margin: 0; }
.western-apt .western-apt-fields dt { color: var(--wa-ink); font-size: 13px; font-weight: 800; margin: 16px 0 4px; }
.western-apt .western-apt-fields dd { color: var(--wa-muted); margin: 0; font-size: 14px; }
.western-apt .western-apt-caution, .western-apt .western-apt-registry-note { margin: 0 0 16px; padding: 12px 14px; border-left: 3px solid var(--wa-amber); border-radius: 6px; background: var(--wa-note); color: var(--wa-amber); font-size: 13px; }
.western-apt .western-apt-sources-title { font-family: inherit; font-size: 14px; font-weight: 800; margin: 20px 0 8px; letter-spacing: normal; }
.western-apt .western-apt-sources { margin: 0; padding-left: 20px; font-size: 13px; }
.western-apt .western-apt-sources li { padding-left: 2px; margin-top: 10px; color: var(--wa-muted); }
.western-apt a { color: var(--wa-accent); text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.western-apt a:focus-visible { outline: 2px solid var(--wa-accent); outline-offset: 4px; }
.western-apt code { font-family: "IBM Plex Mono", ui-monospace, monospace; }
@media (max-width: 900px) {
  .western-apt .western-apt-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 480px) {
  .western-apt { padding: 36px 16px 44px; }
  .western-apt .western-apt-card { padding: 18px; }
}
@media (prefers-color-scheme: dark) {
  .western-apt { --wa-bg: #0d1219; --wa-panel: #161e2a; --wa-ink: #e9e7de;
    --wa-muted: #aeb8c4; --wa-line: #2a3547; --wa-accent: #e0684b;
    --wa-chip: #212c3d; --wa-note: #2c2210; --wa-amber: #e8a83e; color-scheme: dark; }
}

/* 搜尋無結果提示（外殼層補充，不屬於圖譜原始樣式） */
.merged-empty-hint{margin:18px 0 6px;padding:22px 16px;text-align:center;font-size:15px;line-height:1.6;color:#8a8f98;border:1px dashed #c9ccd4;border-radius:12px}

/* 窄版：ATT&CK 長條列改兩行排法（名稱＋數字一行、長條整行），避免軌道被固定欄寬擠扁（2026-10-31 全站健檢 F-01） */
@media (max-width: 640px) {
  .apt-atlas .bar-row { grid-template-columns: 1fr auto; grid-template-areas: "name num" "track track"; row-gap: 5px; }
  .apt-atlas .bar-name { grid-area: name; }
  .apt-atlas .bar-track { grid-area: track; }
  .apt-atlas .bar-num { grid-area: num; }
}
