/* 本体图册（#/ontowork/atlas）。只用 .at- 开头的类，配色沿用 style.css 的变量。
 * 外壳状态类只挂在 .at-shell 上：at-nav-off（只是标记）/ at-focus / at-top-off / at-rail-off / at-side-off / at-side-float / at-side-sheet / at-legend-off。
 * 宽度变量由 onto-atlas.js 按 SHELL 常量写到 .at-shell 上：--at-rail-w / --at-rail-wo / --at-side-w / --at-side-wo / --at-gap；
 * 画布高度用 --at-top（画布顶到页面顶）和 --at-pad-b（页面下内边距 + 8）。字号只用 13 / 14 / 15 / 16，徽标与药丸 12。 */
.at-shell{--at-fs-title:16px;--at-fs-head:15px;--at-fs:13px;--at-rail-w:40px;--at-rail-wo:200px;--at-side-w:28px;--at-side-wo:360px;--at-gap:8px;
  --at-top:200px;--at-pad-b:40px;--mm:#2b7c9b;--pp:#b07419;--sd:#4b5bd0;--fi:#3b8656;--co:#8a4d9c;--qm:#b0523b;
  position:relative;display:flex;flex-direction:column;gap:var(--at-gap);min-width:0;font-size:var(--at-fs)}

/* 主站左导航的收起归外壳管（web/pkn-nav.js + shell-tweaks.css 的 html.pkn-nav-collapsed）。
 * 这里不写外壳以外的规则，也不用 has 伪类选择器：老版本 Chrome（<105）不认，规则整条失效。 */
/* 专注：盖住主站顶栏、动作条和左导航 */
.at-shell.at-focus{position:fixed;inset:0;z-index:25;background:var(--canvas);padding:8px}

/* ---- 工具条：单行 44px ---- */
.at-top{display:flex;align-items:center;gap:8px;height:44px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);min-width:0}
.at-back{flex:none}
.at-crumbs{display:flex;align-items:center;gap:4px;font-size:13px;min-width:0;flex:0 1 auto;overflow:hidden;white-space:nowrap}
.at-crumb{color:var(--accent);text-decoration:none;overflow:hidden;text-overflow:ellipsis}.at-crumb:hover{text-decoration:underline}
.at-crumb-on{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis}
.at-sep{color:var(--faint)}
.at-qwrap{position:relative;flex:none;width:260px}
.at-q{width:100%;box-sizing:border-box;height:30px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:13px}
.at-dd{position:absolute;left:0;top:34px;width:380px;max-height:360px;overflow:auto;z-index:30;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 8px 24px rgba(20,33,55,.14)}
.at-dd-item{display:flex;gap:8px;align-items:center;width:100%;min-height:32px;padding:4px 8px;border:0;border-radius:6px;background:none;text-align:left;cursor:pointer;font-size:13px}
.at-dd-item:hover,.at-dd-item.at-on{background:var(--accent-soft)}
.at-dd-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-dd-s{color:var(--muted);font-size:13px;white-space:nowrap}
.at-dd-empty{margin:6px 8px;color:var(--muted)}
.at-sum{flex:1 1 auto;min-width:0;min-height:30px;padding:0 6px;border:0;background:none;color:var(--muted);font-size:13px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.at-sum:hover{color:var(--ink);text-decoration:underline}
.at-sum[hidden]{display:none}
.at-sum[hidden]+.at-popwrap{margin-left:auto}
.at-popwrap{position:relative;flex:none}
.at-pop{position:absolute;z-index:30;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 8px 24px rgba(20,33,55,.14)}
.at-pop[hidden]{display:none}
.at-viewpop{right:0;top:36px;display:flex;flex-direction:column;gap:8px;min-width:200px}
.at-chk{display:inline-flex;gap:6px;align-items:center;font-size:13px}
.at-color{padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:13px}
.at-btn{min-height:30px;padding:3px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);cursor:pointer;font-size:13px;white-space:nowrap}
.at-btn:hover{background:var(--line2)}.at-btn:disabled{opacity:.45;cursor:default}
.at-mini{min-height:24px;padding:1px 8px;font-size:13px}
.at-ico{width:28px;height:28px;min-height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1}
.at-primary{background:var(--accent);border-color:var(--accent);color:#fff}.at-primary:hover{background:var(--accent);opacity:.9}
.at-healthbtn{position:relative;flex:none}
.at-dot{display:inline-block;min-width:18px;height:18px;margin-left:4px;padding:0 4px;box-sizing:border-box;border-radius:9px;background:var(--err);color:#fff;font-size:13px;line-height:18px;text-align:center;vertical-align:1px}
.at-dot[hidden]{display:none}
.at-icons{display:flex;gap:4px;flex:none}
.at-icons .at-btn:not(.at-ico){width:auto;padding:0 8px}
.at-morebtn,.at-unfold{display:none}
/* 工具条收起：32px，只留面包屑和「﹀」 */
.at-shell.at-top-off .at-top{height:32px}
.at-shell.at-top-off .at-top>*:not(.at-crumbs):not(.at-unfold){display:none}
.at-shell.at-top-off .at-unfold{display:inline-flex;margin-left:auto}
/* 窄外壳：先藏摘要，再收图标 */
.at-shell.at-w1200 .at-sum{display:none}
.at-shell.at-w1200 .at-popwrap{margin-left:auto}
.at-shell.at-w900 .at-qwrap{width:160px}
.at-shell.at-w900 .at-morebtn{display:inline-flex}
.at-shell.at-w900:not(.at-top-off) .at-icons{display:none}
.at-shell.at-w900.at-more-on:not(.at-top-off) .at-icons{display:flex;flex-direction:column;position:absolute;right:8px;top:48px;z-index:30;padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 8px 24px rgba(20,33,55,.14)}

/* ---- 主区：共享主数据栏 | 画布 | 右栏 ---- */
.at-main{position:relative;display:flex;gap:var(--at-gap);align-items:stretch;min-width:0;height:calc(100vh - var(--at-top) - var(--at-pad-b));min-height:360px}
.at-canvas{position:relative;flex:1 1 auto;min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}
.at-svg{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.at-svg:active{cursor:grabbing}
.at-hint{position:absolute;left:12px;top:8px;right:120px;font-size:13px;color:var(--muted);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.at-status{position:absolute;left:50%;top:8px;transform:translateX(-50%);font-size:13px;color:var(--muted);background:var(--panel);padding:2px 8px;border:1px solid var(--line2);border-radius:6px;z-index:3}
.at-status[hidden]{display:none}
.at-empty{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 20px;border:1px dashed var(--line);border-radius:10px;background:var(--panel);color:var(--muted);font-size:13px;z-index:2}
.at-empty p{margin:0}.at-empty[hidden]{display:none}
.at-zoom{position:absolute;right:10px;bottom:10px;display:flex;gap:4px;z-index:3}
.at-zoom .at-btn{min-width:30px;height:30px;min-height:30px;padding:0 6px}
.at-legend{position:absolute;left:10px;bottom:10px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;padding:4px 8px;border:1px solid var(--line2);border-radius:6px;background:var(--panel);font-size:13px;z-index:2;max-width:calc(100% - 190px);box-sizing:border-box}
/* × 放在最前面，图例换行时也一直看得到 */
.at-lg-x{flex:none;order:-1;margin-right:-4px}
.at-lg{display:inline-flex;gap:5px;align-items:center;white-space:nowrap}
.at-lg-x{width:22px;height:22px;min-height:22px}
.at-shell .at-legend-pill{position:absolute;left:10px;bottom:10px;z-index:2;display:none}
.at-shell.at-legend-off .at-legend{display:none}
.at-shell.at-legend-off .at-legend-pill{display:inline-flex}
.at-sw{display:inline-block;width:14px;height:10px;border-radius:2px;border:1px solid var(--line)}
.at-lg-flow{border:0;border-top:2px solid var(--accent);height:0}.at-lg-dep{border:0;border-top:1px dashed var(--muted);height:0}.at-lg-dash{border:1px dashed var(--muted)}
.at-pill{display:inline-block;padding:0 8px;border-radius:10px;background:var(--panel2);color:var(--muted);font-size:12px;line-height:20px;white-space:nowrap}
.at-badge{display:inline-block;padding:0 5px;border-radius:4px;font-size:12px;background:var(--panel2)}

/* 共享主数据栏：默认收起成 40px 图标条，展开 200px */
.at-rail{order:-1;flex:none;width:var(--at-rail-wo);display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}
.at-rail-strip{display:none}
.at-shell.at-rail-off .at-rail{width:var(--at-rail-w)}
.at-shell.at-rail-off .at-rail-panel{display:none}
.at-shell.at-rail-off .at-rail-strip{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;height:100%;padding:10px 0;border:0;background:none;cursor:pointer;color:var(--muted)}
.at-rail-strip:hover{background:var(--panel2);color:var(--ink)}
.at-vtext{writing-mode:vertical-rl;letter-spacing:.1em;font-size:13px}
.at-rail-panel{display:flex;flex-direction:column;min-height:0;height:100%}
.at-rail-head{display:flex;align-items:center;gap:6px;padding:8px 8px 6px 12px;border-bottom:1px solid var(--line2)}
.at-rail-head b{flex:1;font-size:14px}
.at-rail-q{margin:6px 8px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.at-rail-list{flex:1;overflow:auto;padding:4px}
.at-rail-row{display:flex;align-items:center;gap:4px;height:32px;padding:0 4px 0 8px;border-radius:6px}
.at-rail-row:hover{background:var(--accent-soft)}
.at-rail-name{flex:1;min-width:0;border:0;background:none;padding:0;text-align:left;font-size:13px;color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-rail-n{color:var(--muted);font-size:13px}
.at-rail-dots{visibility:hidden;width:24px;height:24px;min-height:24px}
.at-rail-row:hover .at-rail-dots,.at-rail-row:focus-within .at-rail-dots{visibility:visible}
@media (hover:none){.at-rail-dots{visibility:visible}}
.at-rail-foot{padding:6px 8px;border-top:1px solid var(--line2)}
.at-rail-foot:empty{display:none}
.at-shell.at-norail .at-rail{display:none}

/* 右栏：展开 360，收起 28px 竖条；停靠 / 浮层 / 底部抽屉 */
.at-side{position:relative;flex:none;width:var(--at-side-wo);display:flex;flex-direction:column;min-width:0;font-size:13px}
.at-side-panel{display:flex;flex-direction:column;height:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:8px 12px;overflow:auto}
.at-side-tab{display:none}
.at-shell.at-side-off .at-side{width:var(--at-side-w)}
.at-shell.at-side-off .at-side-panel{display:none}
.at-shell.at-side-off .at-side-tab,.at-shell.at-side-float .at-side-tab{display:flex;flex-direction:column;align-items:center;gap:6px;width:var(--at-side-w);height:100%;padding:10px 0;border:1px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer;color:var(--muted);writing-mode:vertical-rl;font-size:13px}
.at-side-tab:hover{color:var(--ink);background:var(--panel2)}
.at-side-tab .at-dot{writing-mode:horizontal-tb;margin:0}
.at-shell.at-side-float .at-side{width:var(--at-side-w)}
.at-shell.at-side-float:not(.at-side-off) .at-side-panel{position:absolute;right:0;top:0;bottom:0;width:var(--at-side-wo);z-index:20;box-shadow:-8px 0 24px rgba(20,33,55,.16)}
.at-shell.at-side-sheet .at-side{position:fixed;left:0;right:0;bottom:0;width:auto;height:60vh;z-index:28}
.at-shell.at-side-sheet .at-side-panel{border-radius:12px 12px 0 0;box-shadow:0 -8px 24px rgba(20,33,55,.16)}
.at-shell.at-side-sheet.at-side-off .at-side,.at-shell.at-side-sheet .at-side-tab{display:none}
.at-shell.at-side-sheet .at-rail{display:none}
.at-grip{display:none}
.at-shell.at-side-sheet .at-grip{display:block;width:44px;height:5px;margin:0 auto 6px;border-radius:3px;background:var(--line)}
.at-side-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.at-side-title{font-size:17px;line-height:1.35}
.at-close{width:28px;height:28px;min-height:28px;padding:0}
.at-side-note:empty,.at-side-acts:empty{display:none}
.at-lock{margin:2px 0 8px;padding:6px 8px;border-radius:6px;background:var(--panel2);color:var(--muted);font-size:13px}
.at-scope{margin:0 0 8px;padding:4px 8px;border-left:4px solid var(--accent);border-radius:4px;background:var(--accent-soft);font-size:13px}
.at-scope-lib{border-left-color:var(--pp);background:#fbf3e6}
.at-scope-ovl{border-left-color:var(--faint);background:var(--panel2)}
.at-acts{margin-bottom:8px}
.at-ident{margin:2px 0 6px;color:var(--muted);font-size:13px}
.at-side h4{margin:12px 0 4px;font-size:14px}
.at-grey{color:var(--muted);font-size:13px}
.at-list{margin:4px 0;padding-left:18px}
.at-table{width:100%;border-collapse:collapse;font-size:13px}
.at-table th,.at-table td{padding:5px 6px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top}
.at-table tr.at-on{background:var(--accent-soft)}
.at-num{text-align:right;white-space:nowrap}
.at-mono{font-family:var(--mono);font-size:13px}
.at-link{border:0;background:none;padding:0;color:var(--accent);cursor:pointer;text-align:left;font-size:13px}
.at-reasons{padding-left:18px;margin:4px 0}
.at-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.at-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0;border-bottom:1px solid var(--line)}
.at-tab{border:0;background:none;padding:4px 8px;cursor:pointer;font-size:13px;border-bottom:2px solid transparent}
.at-tab.at-on{border-bottom-color:var(--accent);font-weight:600}
.at-g-seed-field,.at-g-seed{background:#eaf6ec;color:var(--ok)}
.at-g-case-refs,.at-g-case{background:var(--accent-soft);color:var(--accent)}
.at-g-std{background:var(--panel2)}
.at-g-sapk,.at-g-unverified{background:#ececec;color:var(--muted)}
.at-g-object-only,.at-g-none,.at-g-other{background:var(--panel2);color:var(--faint)}
.at-warnb{background:#fff4e0;color:var(--warn)}
.at-srcs{list-style:none;padding:0;margin:0}.at-src{padding:4px 0;border-bottom:1px solid var(--line2)}
li.at-g-sapk{background:#f1f1f1;padding:3px 4px}
.at-pbar{display:flex;height:20px;border-radius:4px;overflow:hidden;font-size:13px;line-height:20px}
.at-pseg{white-space:nowrap;overflow:hidden;padding:0 3px;color:#fff}
.at-pseg-seed{background:var(--ok)}.at-pseg-std{background:var(--tan)}.at-pseg-sapk{background:#9b9b9b}.at-pseg-case{background:var(--accent)}
.at-trust{margin:2px 0 6px;font-size:13px;color:var(--muted)}
.at-trust-T4,.at-trust-T3{background:#e6f4ea;color:#1e6b34}
.at-trust-T2{background:#e8f0fb;color:#24508f}

/* 外壳内浮层：卡片菜单、保存提示、拖动副本 */
.at-menu{min-width:180px;display:flex;flex-direction:column;padding:4px;z-index:31}
.at-menu-item{min-height:30px;padding:4px 10px;border:0;border-radius:6px;background:none;text-align:left;font-size:13px;cursor:pointer}
.at-menu-item:hover{background:var(--accent-soft)}
.at-danger{color:var(--err)}
.at-toast{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);display:flex;gap:8px;align-items:center;padding:6px 12px;border-radius:8px;background:var(--ink);color:#fff;font-size:13px;z-index:32;box-shadow:0 8px 24px rgba(20,33,55,.2)}
.at-toast .at-btn{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.at-toast[hidden]{display:none}
.at-dragghost{position:absolute;z-index:33;pointer-events:none;padding:3px 10px;border:1px solid var(--accent);border-radius:6px;background:var(--panel);opacity:.85;font-size:13px;box-shadow:0 4px 12px rgba(20,33,55,.18)}
.at-dragghost[hidden]{display:none}

/* ---- 画布 ---- */
.at-t{font:13px -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;fill:var(--ink);pointer-events:none}
.at-tt{font-weight:600}.at-ts{fill:var(--muted)}.at-tm{fill:var(--faint)}
.at-f14{font-size:14px}.at-f15{font-size:var(--at-fs-head)}.at-f16{font-size:var(--at-fs-title)}
.at-th{font-weight:600;fill:var(--muted)}
.at-tr{text-anchor:end}.at-tc{text-anchor:middle}
.at-mono-t{font-family:var(--mono)}
.at-rect{fill:var(--panel);stroke:var(--line);stroke-width:1.2}
.at-stripe{stroke:none;fill:var(--tan)}
.at-pick{cursor:pointer}
.at-card:hover>.at-rect,.at-chip:hover .at-rect,.at-exit:hover .at-rect{stroke:var(--accent);stroke-width:2}
.at-sel>.at-rect{stroke:var(--accent);stroke-width:2.5;filter:drop-shadow(0 0 3px var(--accent-soft)) drop-shadow(0 0 3px var(--accent-soft))}
.at-colhead .at-rect{fill:var(--panel2)}
.at-dashed>.at-rect,.at-ext>.at-rect,.at-ghost>.at-rect{stroke-dasharray:5 4}
.at-ghost>.at-rect{fill:var(--canvas)}
.at-hubchip>.at-rect{stroke-dasharray:none;fill:var(--panel2)}
.at-gflow>.at-rect{stroke:var(--muted)}
.at-chip .at-rect{fill:var(--panel2);stroke:var(--line2)}
.at-chip-more .at-rect{fill:var(--canvas);stroke-dasharray:3 3}
.at-more .at-rect{fill:var(--accent-soft);stroke:var(--accent)}
.at-xbtn .at-rect{fill:var(--panel2)}.at-xbtn.at-on .at-rect{fill:var(--accent-soft);stroke:var(--accent)}
.at-bucket .at-rect{fill:var(--canvas);stroke-dasharray:2 3}
.at-exit .at-rect{fill:var(--accent-soft);stroke:var(--line)}
.at-exit.at-hl .at-rect{stroke:var(--accent);stroke-width:2}
.at-sapk>.at-rect{fill:#f4f4f4;stroke:#9b9b9b}
.at-case>.at-rect{stroke:var(--accent)}
.at-suspect>.at-rect{stroke:var(--warn);stroke-width:1.8}
.at-nosrc-card>.at-rect{stroke-dasharray:5 3}
.at-t.at-nosrc{fill:var(--warn);font-weight:600}
.at-insp-nosrc{display:flex;align-items:center;gap:6px;margin:0 0 8px}
.at-badge.at-nosrc{color:var(--warn);border:1px solid var(--warn);background:transparent;font-size:13px;padding:0 6px;border-radius:9px}
.at-center>.at-rect{stroke:var(--ink);stroke-width:2}
.at-warn-dot{fill:#d99a22}
.at-exitpill{fill:var(--accent)}
.at-enter-t{fill:var(--accent)}
.at-enter:hover .at-enter-t{text-decoration:underline}
.at-dots{opacity:0;pointer-events:none}
.at-dots-bg{fill:var(--panel2);stroke:var(--line)}
.at-card:hover .at-dots,.at-card:focus-within .at-dots,.at-sel .at-dots{opacity:1;pointer-events:auto}
@media (hover:none){.at-card:hover .at-dots{opacity:0;pointer-events:none}.at-sel .at-dots{opacity:1;pointer-events:auto}}
.at-band-r{fill:var(--canvas);stroke:var(--line2)}
.at-band-case .at-band-r{fill:#f2f6ff}
.at-seg-pub{fill:var(--ok)}.at-seg-cand{fill:var(--tan)}.at-seg-sapk{fill:#b5b5b5}
.at-e{fill:none;stroke:var(--muted);stroke-width:1}
.at-flow .at-e{stroke:var(--accent);stroke-width:1.6}
.at-dep .at-e{stroke-dasharray:4 4}
.at-comp .at-e{stroke:#9aa5b5;stroke-dasharray:none;stroke-width:.9}
.at-hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke}
.at-arrhead{fill:var(--accent)}
.at-pill-r{fill:var(--panel);stroke:var(--accent)}
.at-pill-t{fill:var(--accent)}
.at-dim{opacity:.3}
.at-hl>.at-rect{stroke:var(--accent);stroke-width:2.4}
.at-hl .at-e,.at-eg.at-hl .at-e{stroke:var(--accent);stroke-width:2.2}
/* 语义缩放：缩到 0.8 以下只留标题 */
.at-lowk .at-detail{display:none}
/* 拖放：可放的位置虚线描边，指到的加粗 */
.at-shell.at-dragging .at-hot>.at-rect{stroke:var(--accent);stroke-dasharray:6 4;stroke-width:2}
.at-hot.at-over>.at-rect{fill:var(--accent-soft);stroke-width:3}
/* 着色：卡片左侧 4px 模块色竖条 */
.at-c-m1 .at-stripe{fill:var(--mm)}.at-c-m2 .at-stripe{fill:var(--pp)}.at-c-m3 .at-stripe{fill:var(--sd)}
.at-c-m4 .at-stripe{fill:var(--fi)}.at-c-m5 .at-stripe{fill:var(--co)}.at-c-m6 .at-stripe{fill:var(--qm)}
.at-p-seed>.at-rect{fill:#eaf6ec}.at-p-std>.at-rect{fill:var(--panel)}.at-p-sapk>.at-rect{fill:#f1f1f1}.at-p-case>.at-rect{fill:var(--accent-soft)}
.at-s-pub>.at-rect{fill:#eaf6ec}.at-s-cand>.at-rect{fill:var(--panel)}
.at-o-present>.at-rect{fill:#eaf6ec}.at-o-part>.at-rect{fill:#fff4e0}.at-o-missing>.at-rect{fill:#f7e9e9}.at-o-none>.at-rect{fill:var(--panel)}
.at-sw.at-c-m1{background:var(--mm)}.at-sw.at-c-m2{background:var(--pp)}.at-sw.at-c-m3{background:var(--sd)}
.at-sw.at-c-m4{background:var(--fi)}.at-sw.at-c-m5{background:var(--co)}.at-sw.at-c-m6{background:var(--qm)}
.at-sw.at-p-seed,.at-sw.at-s-pub,.at-sw.at-o-present{background:#eaf6ec}.at-sw.at-p-sapk{background:#d8d8d8}.at-sw.at-p-case{background:var(--accent-soft)}
.at-sw.at-o-part{background:#fff4e0}.at-sw.at-o-missing{background:#f7e9e9}

/* 维护卡（web/onto-atlas-edit.js），前缀 at-e- */
.at-e-host{font-size:13px}
.at-e-card{display:flex;flex-direction:column;gap:6px;border-left:3px solid var(--accent);padding-left:8px}
.at-e-m-lib{border-left-color:var(--tan)}.at-e-m-ovl{border-left-color:var(--faint)}
.at-e-mode{font-size:13px;color:var(--muted)}
.at-e-lock{margin:2px 0;padding:4px 6px;border-radius:4px;background:var(--panel2);color:var(--muted);font-size:13px}
.at-e-notice{margin:2px 0;padding:4px 6px;border-radius:4px;background:#fff4e0;color:var(--warn);font-size:13px}
.at-e-warn{color:#b0301e;font-size:13px}
.at-e-title{display:flex;align-items:center;gap:6px}.at-e-name{font-size:16px}
.at-e-pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0}
.at-e-st-canonical,.at-e-st-published{background:#eaf6ec;color:var(--ok)}.at-e-st-rejected,.at-e-st-retired{background:#f7e9e9;color:#b0301e}
.at-e-desc{margin:4px 0;white-space:pre-wrap}
.at-e-sel,.at-e-in{padding:3px 6px;border:1px solid var(--line);border-radius:5px;background:var(--panel);font:inherit;font-size:13px;min-width:0}
textarea.at-e-in{min-height:52px;resize:vertical;width:100%;box-sizing:border-box}
.at-e-form{display:flex;flex-direction:column;gap:5px;padding:6px 8px;border:1px solid var(--accent);border-radius:6px;background:var(--accent-soft)}
.at-e-form h4{margin:0 0 2px}
.at-e-row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:6px;align-items:center}
.at-e-lab{font-size:13px;color:var(--muted)}
.at-e-ftable td{cursor:default}.at-e-frow{cursor:pointer}.at-e-frow:hover{background:var(--panel2)}
.at-e-drag{color:var(--faint);cursor:grab;width:12px}
.at-e-col{margin-left:4px;background:#eef3fa;color:var(--accent)}
.at-e-menu td,.at-e-confirm td,.at-e-hist td,.at-e-trace td,.at-e-formrow td{background:var(--canvas)}
.at-e-menu .at-btn{margin-right:4px}
.at-e-danger{color:#b0301e}
.at-e-refs,.at-e-hlist,.at-e-trans{margin:2px 0;padding-left:18px;font-size:13px}
.at-e-add{margin-top:6px}
.at-e-flowrow{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;padding:4px 0;border-bottom:1px solid var(--line2)}
.at-e-flowrow.at-on{background:var(--accent-soft)}
.at-e-flowbox{margin-top:6px;padding:6px;border:1px solid var(--line);border-radius:6px}
.at-e-rule,.at-e-state{padding:5px 0;border-bottom:1px solid var(--line2)}
.at-e-chain{font-weight:600;margin:2px 0}
.at-e-hits{display:flex;flex-direction:column;gap:2px;max-height:140px;overflow:auto}
.at-e-hit{display:flex;gap:6px;align-items:center;font-size:13px}
.at-e-savebar{position:sticky;bottom:0;display:flex;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--accent);border-radius:6px;background:var(--panel);z-index:2}
.at-e-count{flex:1;font-size:13px}
.at-e-save{background:var(--accent);color:#fff;border-color:var(--accent)}
.at-e-toast{display:flex;gap:6px;align-items:center;padding:4px 8px;border-radius:6px;background:#eaf6ec;color:var(--ok);font-size:13px}
.at-e-step{margin-left:6px}
.at-e-dirty{outline:2px solid var(--warn)}
.at-e-savebar[hidden],.at-e-toast[hidden]{display:none}
/* 右栏有维护卡时放宽到 440 */
.at-shell:not(.at-side-off):not(.at-side-sheet) .at-side.at-side-edit{width:440px}
.at-shell.at-side-float:not(.at-side-off) .at-side.at-side-edit{width:var(--at-side-w)}
.at-shell.at-side-float:not(.at-side-off) .at-side.at-side-edit .at-side-panel{width:440px}

@media (max-width:900px){
  .at-q{max-width:none}
  .at-main{min-height:300px}
}

/* 框架维护浮层（web/onto-atlas-edit.js 的 AtlasEdit.frame），前缀 at-f-，挂在 .at-shell 里 */
.at-f-layer{position:absolute;inset:0;pointer-events:none;z-index:33}
.at-f-layer>*{pointer-events:auto}
.at-f-pop{width:300px;max-width:calc(100% - 16px);display:flex;flex-direction:column;gap:6px;font-size:13px}
.at-f-confirm{left:50%;top:30%;transform:translateX(-50%);width:340px;max-width:calc(100% - 16px);z-index:34;font-size:13px}
.at-f-title{margin:0;font-size:15px}
.at-f-body{display:flex;flex-direction:column;gap:6px}
.at-f-input{width:100%;box-sizing:border-box;height:30px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:var(--panel);color:var(--ink)}
.at-f-msg{margin:0;color:#b0301e}
.at-f-msg.at-f-warn{color:var(--warn)}
.at-f-msg[hidden],.at-f-pop[hidden],.at-f-confirm[hidden]{display:none}
.at-f-bar{display:flex;gap:6px;justify-content:flex-end}
.at-f-scope{margin:0;color:var(--muted)}
.at-f-radio{display:flex;gap:6px;align-items:center}
.at-f-hist{margin:0;padding-left:16px;max-height:220px;overflow:auto}
.at-f-acts{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.at-f-acts[hidden]{display:none}
.at-f-unplaced{margin:0;width:100%;color:var(--muted)}
/* 嵌在别的页面里（字段画板「在这里维护」）：固定高度，不按视口算，不出第二层滚动 */
.at-shell.at-embed .at-main{height:420px;min-height:320px}
.at-shell.at-embed.at-focus{position:static}
/* 右栏顶上一小块：说明（点了就地改）+ 一行文字链接；表单画在块里 */
.at-insp{margin:0 0 8px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);font-size:13px}
.at-insp-h{margin:0 0 6px;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.at-insp-g{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:4px 0}
.at-insp-lab{flex:0 0 36px;color:var(--muted);font-size:13px}
.at-insp-note{font-size:13px}
.at-insp-ro{margin:0;color:var(--muted);font-size:13px}
.at-insp-desc{margin:0 0 6px;font-size:13px;color:var(--muted);white-space:pre-wrap;word-break:break-word}
.at-f-desc{width:100%;min-height:80px;resize:vertical;font-size:13px;box-sizing:border-box}
.at-f-log li{display:flex;gap:8px;align-items:baseline;justify-content:space-between;font-size:13px}
.at-insp-err{margin:0 0 8px;padding:6px 8px;border:1px solid var(--err);border-radius:6px;color:var(--err);font-size:13px}
.at-insp-form:empty{display:none}
.at-f-pop.at-f-inline{position:static;width:auto;margin-top:6px;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);box-shadow:none;max-width:none}
.at-e-histtab .at-e-hrow{margin:4px 0;font-size:13px}
.at-e-histtab .at-e-confirm{margin:4px 0 6px;padding:6px;border:1px solid var(--line2);border-radius:6px}
/* 出处页签、原文抽屉、案例开关（S3） */
.at-e-srch{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.at-e-quote{margin:2px 0;font-size:13px;line-height:1.5;white-space:pre-wrap}
.at-e-orig{margin:4px 0 2px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg2,#fafafa);font-size:13px}
.at-e-otext{max-height:260px;overflow:auto;white-space:pre-wrap;line-height:1.55;font-size:13px}
.at-e-ofile{margin-top:6px;border-top:1px dashed var(--line);padding-top:6px}
.at-e-hit{background:#fff1a8;color:inherit;padding:0 1px}
.at-pseg.at-pick{cursor:pointer}.at-pseg.at-pick:hover{filter:brightness(1.1)}
.at-casebox{padding-left:18px}.at-chk-sub .at-sw{margin:0 4px}
.at-sw.at-lg-std{background:var(--tan)}
.at-sw.at-case-C1,.at-badge.at-case-C1{background:#e7efff;border-color:#3d6fd9}
.at-sw.at-case-C2,.at-badge.at-case-C2{background:#f3e8ff;border-color:#8a4fd1}
.at-case.at-case-C1>.at-rect{stroke:#3d6fd9}
.at-case.at-case-C2>.at-rect{stroke:#8a4fd1}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .at-e-hit{background:#6b5a12}}

/* 三段切换：公司库 | 项目 | 项目对照公司库 */
.at-srcseg{display:inline-flex;flex:0 0 auto;border:1px solid var(--line,#d9d9d9);border-radius:8px;overflow:hidden}
.at-srcseg .at-seg{border:0;border-radius:0;font-size:13px;padding:0 10px;min-height:30px}
.at-srcseg .at-seg+.at-seg{border-left:1px solid var(--line,#d9d9d9)}
.at-srcseg .at-seg.at-on{background:var(--accent,#2f6fdf);color:#fff}
.at-srcseg .at-seg:disabled{opacity:.5;cursor:not-allowed}
/* 叠加视图：项目自有对象虚线卡，右栏采用/提议 */
.at-prjonly>.at-rect{stroke:#8a6d1f;fill:#fffaf0}
.at-band-project .at-band-r{fill:#fffaf0}
.at-ovl-acts{margin:8px 0;padding:8px 10px;border:1px solid var(--line,#d9d9d9);border-radius:8px;font-size:13px}
.at-ovl-acts p{margin:4px 0}
.at-ovl-form{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.at-ovl-form .at-in{font-size:13px;padding:4px 6px}
.at-ovl-form li.at-hl{font-weight:600}

/* B2 直接操作：画布上改名框、✎ 🗑 小按钮、连线圆点、虚线「＋」卡、拖放落点；右栏一页到底 */
.at-rn{position:absolute;z-index:34;height:28px;box-sizing:border-box;padding:2px 8px;border:2px solid var(--accent);border-radius:6px;background:var(--panel);color:var(--ink);font-size:14px;box-shadow:0 4px 12px rgba(20,33,55,.18)}
.at-rn[hidden]{display:none}
.at-pen,.at-trash,.at-portdot{opacity:0;transition:opacity .12s}
.at-pick:hover>.at-pen,.at-pick:hover>.at-trash,.at-pick:hover>.at-portdot,.at-sel>.at-pen,.at-sel>.at-trash,.at-sel>.at-portdot,.at-pen:focus,.at-trash:focus{opacity:1}
.at-portdot{cursor:crosshair}
.at-portdot-c{fill:var(--panel);stroke:var(--accent);stroke-width:2}
.at-portdot:hover .at-portdot-c{fill:var(--accent)}
.at-linkline{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:6 4;pointer-events:none}
.at-shell.at-linking [data-connect]>.at-rect{stroke:var(--accent);stroke-dasharray:6 4}
[data-connect].at-over>.at-rect{fill:var(--accent-soft);stroke-width:3}
.at-shell.at-dragging [data-order]>.at-rect{stroke-dasharray:4 4}
[data-order].at-over>.at-rect{stroke:var(--accent);stroke-width:3;stroke-dasharray:6 4;fill:var(--accent-soft)}
.at-ghostnew>.at-rect{fill:transparent;stroke:var(--faint);stroke-dasharray:6 4}
.at-ghostnew:hover>.at-rect{stroke:var(--accent);fill:var(--accent-soft)}
.at-ghostnew .at-tt{fill:var(--muted)}
.at-linkpick{display:flex;flex-direction:column;gap:6px;min-width:280px;max-width:360px;font-size:13px}
.at-linkpick[hidden]{display:none}
.at-linkpick-h{margin:0;font-weight:600}
.at-linkpick-row{display:flex;flex-wrap:wrap;gap:6px}
.at-linkpick-ev{width:100%;box-sizing:border-box;padding:4px 6px;font-size:13px}
.at-linkpick-msg{margin:0}
.at-toast.at-toast-ask{gap:6px}
.at-toast-in{width:200px;padding:3px 6px;border:1px solid rgba(255,255,255,.5);border-radius:5px;background:var(--panel);color:var(--ink);font-size:13px}
.at-insp-links{margin:0 0 4px;display:flex;flex-wrap:wrap;align-items:center;gap:2px 0}
.at-btn.at-link,.at-link{border:0;background:none;padding:0 2px;min-height:24px;color:var(--accent);cursor:pointer;font-size:13px}
.at-btn.at-link:hover{background:none;text-decoration:underline}
.at-link.at-danger,.at-btn.at-link.at-danger{color:#b0301e}
.at-editable{cursor:text;border-radius:4px}
.at-editable:hover{background:var(--accent-soft);outline:1px dashed var(--accent)}
.at-e-page .at-e-body{display:flex;flex-direction:column;gap:10px}
.at-e-sec{display:flex;flex-direction:column;gap:4px}
.at-e-sech{margin:0;font-size:14px;color:var(--ink);border-bottom:1px solid var(--line2);padding-bottom:2px}
.at-e-facts{display:flex;flex-wrap:wrap;align-items:center;gap:2px;font-size:13px;color:var(--muted)}
.at-e-facts .at-e-review{margin-left:2px}
.at-e-inl{width:100%;box-sizing:border-box;border-color:var(--accent)}
.at-e-ftable .at-e-drag{cursor:grab;user-select:none;letter-spacing:-2px}
.at-e-frow{cursor:default}
.at-e-addrow td{padding-top:4px}
.at-e-rowacts{white-space:nowrap}
.at-e-x{color:#b0301e}
.at-e-ce{font-size:13px;color:var(--ink)}
.at-e-rowlinks{display:flex;flex-wrap:wrap;gap:4px 8px}
.at-e-rowlinks[hidden]{display:none}
.at-e-foot{display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin-top:6px;padding-top:6px;border-top:1px solid var(--line2);font-size:13px}
.at-e-seedh{margin:0 0 4px;font-weight:600}
.at-e-seedt td{padding:2px 6px}
.at-e-seedt tr.at-on td{background:var(--accent-soft);font-weight:600}
.at-e-raw{max-height:240px;overflow:auto;margin:4px 0 0;padding:6px;border:1px solid var(--line2);border-radius:6px;font-size:13px;white-space:pre-wrap}
