:root{
  --red:#B80000;--red-soft:#FDF2F2;--red-line:#F0CFCF;--red-deep:#8F0000;
  --ink:#191A1D;--ink-2:#454750;--ink-3:#5C5F66;
  --line:#E5E5E8;--line-2:#F0F0F2;
  --bg:#F6F6F4;--panel:#FFFFFF;--sidebar:#FFFFFF;
  --green:#1E7F4F;--green-soft:#EAF6EF;--green-line:#CDE8D9;
  --amber:#B7791F;--amber-soft:#FBF4E4;--amber-line:#ECDDB8;
  --orange:#C2410C;--orange-soft:#FCEEE6;
  --mono:"SFMono-Regular",ui-monospace,"DejaVu Sans Mono",Menlo,Consolas,monospace;
  --sans:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic","Noto Sans JP",sans-serif;
  --highlight:rgba(184,0,0,0.08);
  --acc:#B80000;--accent:#B80000;--ink2:#454750;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);font-size:13px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.side{background:var(--sidebar);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;overflow-y:auto;padding:18px 0}
.brand{font-weight:800;letter-spacing:.5px;font-size:15px;padding:4px 20px 16px}
.brand b{color:var(--red)} .brand span{display:block;color:var(--ink-3);font-size:9.5px;font-weight:600;letter-spacing:1.5px;margin-top:2px}
.navsec{padding:9px 12px 2px} .navsec .lab{font-size:9.5px;font-weight:800;letter-spacing:1.5px;color:var(--ink-3);padding:0 8px 6px}
.navitem{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:9px;cursor:pointer;color:var(--ink-2);font-weight:600;font-size:12.5px;transition:.12s}
.navitem:hover{background:var(--line-2)} .navitem.on{background:var(--red-soft);color:var(--red);font-weight:700;box-shadow:inset 3px 0 0 var(--red)}
.navitem .ic{width:16px;height:16px;flex:none;opacity:.8}
.navitem .ct{margin-left:auto;font-family:var(--mono);font-size:10px;background:var(--line-2);color:var(--ink-3);border-radius:6px;padding:1px 7px}
.navitem.on .ct{background:#fff;color:var(--red)}
.main-area{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;background:rgba(246,246,244,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:13px 32px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;width:100%;row-gap:8px}
/* 2段化v2（2026-07-06）：orderハック廃止＝明示的な行コンテナ（.tb-row×2）。JS注入要素（ユーザー等）もrow1内に自然に収まる */
.crumb b{color:var(--ink);font-weight:700;font-size:14px}
.cases{position:relative}
.pj-selector{display:flex;align-items:center;gap:8px;padding:6px 12px;border:1.5px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer;font-size:12px;font-weight:600;color:var(--ink);transition:all .15s;min-width:180px}
.pj-selector:hover{border-color:var(--ink-3);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.pj-selector .dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}
.pj-selector .arrow{margin-left:auto;font-size:10px;color:var(--ink-3);transition:transform .2s}
.pj-selector.open .arrow{transform:rotate(180deg)}
.pj-dropdown{position:absolute;top:calc(100% + 4px);right:0;min-width:280px;background:var(--panel);border:1.5px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:100;display:none;overflow:hidden}
.pj-dropdown.show{display:block;animation:fadeSlide .15s ease}
@keyframes fadeSlide{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.pj-dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:12px;color:var(--ink);cursor:pointer;transition:background .1s;border-bottom:1px solid var(--line)}
.pj-dropdown-item:last-child{border-bottom:none}
.pj-dropdown-item:hover{background:rgba(99,102,241,.05)}
.pj-dropdown-item.active{background:rgba(99,102,241,.08);font-weight:700}
.pj-dropdown-item .dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}
.pj-dropdown-item .pj-name{flex:1}
.pj-dropdown-item .pj-phase{font-size:10px;color:var(--ink-3);flex-shrink:0}
.pj-dropdown-item .pj-del{font-size:11px;color:var(--ink-3);padding:2px 6px;border-radius:4px;border:1px solid transparent;cursor:pointer;opacity:0;transition:all .15s}
.pj-dropdown-item:hover .pj-del{opacity:1}
.pj-dropdown-item .pj-del:hover{color:var(--red);border-color:var(--red-line);background:var(--red-soft)}
.pj-dropdown-add{display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:12px;color:#6366f1;cursor:pointer;font-weight:600;border-top:1.5px solid var(--line);transition:background .1s}
.pj-dropdown-add:hover{background:rgba(99,102,241,.05)}
.phase-badge{font-size:11px;font-weight:700;padding:5px 12px;border-radius:8px;color:#fff;white-space:nowrap}
.phase-badge.delay{background:var(--red)} .phase-badge.ok{background:var(--green)} .phase-badge.warn{background:var(--amber)}
.simbanner{background:var(--amber-soft);border-bottom:1px solid var(--amber-line);color:#7A5B2E;font-size:11.5px;font-weight:600;padding:8px 26px;text-align:center;display:none}
.content{padding:24px 32px 70px;width:100%}
.content.wide{width:100%}
.pjcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 20px;cursor:pointer;transition:.12s}
.pjcard:hover{border-color:var(--red-line);transform:translateY(-2px)}
.pjcard h3{font-size:14px;font-weight:800;margin-bottom:10px;display:flex;align-items:center;gap:10px}
.pjcard .pjrow{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--line-2);font-size:12px;color:var(--ink-2)}
.pjcard .pjrow:last-child{border-bottom:0}
.pjcard .pjrow .k{color:var(--ink-3)} .pjcard .pjrow .v{font-family:var(--mono);font-weight:700}
.page{display:none} .page.active{display:block}
h2{font-size:12px;font-weight:800;letter-spacing:1.5px;color:var(--ink-3);text-transform:uppercase;margin:24px 0 12px;display:flex;align-items:center;gap:9px}
h2:first-child{margin-top:0} h2::before{content:"";width:14px;height:2px;background:var(--red);display:inline-block}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 17px;margin-bottom:14px}
.panel.link{cursor:pointer;transition:.12s} .panel.link:hover{border-color:var(--red-line);transform:translateY(-1px)}
.ptitle{font-size:11px;font-weight:800;color:var(--ink-2);margin-bottom:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ptitle .more{margin-left:auto;font-size:10.5px;color:var(--red);font-weight:700;cursor:pointer}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.kpi{display:flex;justify-content:space-between;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--line-2)} .kpi:last-child{border-bottom:0}
.kpi .k{font-size:12px;color:var(--ink-2)} .kpi .v{font-family:var(--mono);font-weight:700;font-size:15px} .kpi .v small{font-size:11px;color:var(--ink-3);font-weight:500}
.meter{display:inline-block;width:84px;height:7px;background:var(--line-2);border-radius:99px;overflow:hidden;vertical-align:middle;margin-right:8px}
.meter i{display:block;height:100%;background:var(--green)} .meter i.low{background:var(--amber)} .meter i.crit{background:var(--red)}
.bars{display:flex;gap:5px;margin-top:8px} .sevpill{flex:1;text-align:center;padding:6px 0;border-radius:7px;font-family:var(--mono);font-weight:700;font-size:13px;color:#fff} .sevpill div{font-size:9px;font-weight:600;opacity:.92}
.sev-c{background:var(--red)} .sev-h{background:var(--orange)} .sev-m{background:var(--amber)} .sev-l{background:#7A7D83}
.signal{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed var(--line-2);font-size:12px} .signal:last-child{border-bottom:0}
.led{width:10px;height:10px;border-radius:50%;flex:none} .led.on{background:var(--red);box-shadow:0 0 0 3px var(--red-soft)} .led.off{background:#D5D6D9}
.signal .s2{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)} .signal.lit{color:var(--red);font-weight:700}
.src{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:700;padding:2px 9px;border-radius:6px;letter-spacing:.3px;white-space:nowrap}
.src::before{content:"";width:6px;height:6px;border-radius:50%}
.src.muted{background:var(--line-2);color:var(--ink-3)} .src.muted::before{background:var(--ink-3)}
.src.design{background:#EEF2FB;color:#2B4B8F} .src.design::before{background:#2B4B8F}
.src.exec{background:var(--green-soft);color:var(--green)} .src.exec::before{background:var(--green)}
.src.pm{background:#EEEDFE;color:#534AB7} .src.pm::before{background:#6366f1}
.src.retro{background:var(--amber-soft);color:var(--amber)} .src.retro::before{background:var(--amber)}
.src.review{background:#E6F4F1;color:#0F766E} .src.review::before{background:#0F766E}
.srcline{margin:0 2px 12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.genat{font-size:10px;color:var(--ink-3);font-family:var(--mono)}
.cover{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.cover.covered{background:var(--green-soft);color:var(--green)} .cover.partial{background:var(--amber-soft);color:var(--amber)} .cover.uncovered{background:var(--red-soft);color:var(--red)}
.impact{font-size:10px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.impact.hi{background:var(--red-soft);color:var(--red)} .impact.mid{background:var(--amber-soft);color:var(--amber)} .impact.lo{background:var(--line-2);color:var(--ink-2)}
.review-badge{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:#EEF2FB;color:#2B4B8F;white-space:nowrap}
.prio{font-family:var(--mono);font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px}
.prio.H{background:var(--red-soft);color:var(--red)} .prio.M{background:var(--amber-soft);color:var(--amber)} .prio.L{background:var(--line-2);color:var(--ink-2)}
.exr{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.exr.ok{background:var(--green-soft);color:var(--green)} .exr.ng{background:var(--red-soft);color:var(--red)} .exr.blk{background:var(--amber-soft);color:var(--amber)} .exr.none{background:var(--line-2);color:var(--ink-3)}
.exr.warn{background:#FFF3E0;color:#E65100} .exr.prog{background:#EEF2FB;color:#2B4B8F} .exr.hold{background:#EEF4FC;color:#3a6ea5}
.exr.oos{background:var(--line-2);color:var(--ink-3);text-decoration:line-through;text-decoration-thickness:1px}
.prog-exec{display:flex;gap:16px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 18px;margin-bottom:14px}
.prog-exec .pe-rate{font-size:24px;font-weight:700}.prog-exec .pe-meta{font-size:11px;color:var(--ink-3)}
.prog-exec .pe-bar{flex:1}.prog-exec .pe-legend{display:flex;gap:12px;font-size:11px}
.exbar{display:inline-flex;height:10px;border-radius:6px;overflow:hidden;background:var(--line-2);vertical-align:middle}
.exbar i{display:block;height:100%}
.dotk{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}
.ex-lvl{margin-bottom:14px;border:1px solid var(--line);border-radius:12px;overflow:clip;background:var(--panel)}
.ex-lh{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg-soft,#f3f6fb)}
.ex-lh,.ex-sh{cursor:pointer;user-select:none}
.ex-chev{display:inline-block;font-size:11px;color:var(--ink-3);transition:transform .15s}
.ex-lvl.collapsed>.ex-lh>.ex-chev,.ex-spec.collapsed>.ex-sh>.ex-chev{transform:rotate(-90deg)}
.ex-lvl.collapsed>.ex-lvl-body{display:none}
.ex-spec.collapsed>.ex-spec-body{display:none}
.ex-code{font-size:11px;font-weight:700;color:#fff;background:var(--ink);border-radius:5px;padding:2px 8px}
.ex-spec{border:1px solid var(--line);border-radius:8px;margin:8px 10px;overflow:clip}
.ex-sh{display:flex;align-items:center;gap:9px;padding:8px 12px;background:#fafbfd;border-bottom:1px solid var(--line-2)}
.ex-spid{font-size:11px;font-weight:700;color:var(--ink);background:#eef4fc;border-radius:4px;padding:2px 8px}
.ex-stitle{font-size:12.5px;font-weight:600}
.ex-tbl{table-layout:fixed;width:100%}
.ex-tbl th,.ex-tbl td{white-space:normal;word-break:break-word;overflow-wrap:anywhere;vertical-align:top}
.ex-tbl .stcell{white-space:nowrap}
.tag2{font-size:10px;color:var(--ink-3);background:var(--line-2);border-radius:4px;padding:1px 6px}
.stcell{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:7px;padding:3px 9px;font-size:11px;font-weight:600;cursor:pointer;background:#fff}
.stcell:hover{background:var(--line-2)}.stcell .nx{font-size:9px;color:var(--ink-3);font-weight:400}
.btn-exec-agent{border:none;background:#1E7F4F;color:#fff;border-radius:7px;padding:7px 14px;font-size:12px;font-weight:600;cursor:pointer;margin-right:8px;display:inline-flex;align-items:center;gap:6px;transition:filter .15s}
.btn-exec-agent:hover{filter:brightness(1.08)}
.btn-exec-agent[disabled]{opacity:.4;cursor:default;background:var(--ink-3);border-color:var(--ink-3)}
.sev{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:6px;color:#fff;white-space:nowrap}
.sev-Critical{background:var(--red)} .sev-High{background:var(--orange)} .sev-Medium{background:var(--amber)} .sev-Low{background:#7A7D83}
.sev-高{background:var(--red)} .sev-中{background:var(--amber)} .sev-低{background:#7A7D83}
.stat{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.stat.open{background:var(--red-soft);color:var(--red)} .stat.fixing{background:var(--amber-soft);color:var(--amber)} .stat.retest{background:#EEF2FB;color:#2B4B8F} .stat.fixed{background:var(--green-soft);color:var(--green)}
.chip{display:inline-block;font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;background:var(--line-2);color:var(--ink-2);white-space:nowrap;margin:1px 2px}
.chip.cat{background:#EEF2FB;color:#2B4B8F}
.legacy{font-family:var(--mono);font-size:9.5px;color:var(--ink-3);background:var(--line-2);padding:1px 6px;border-radius:4px}
.filterbar{display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:13px 15px;margin-bottom:13px}
.fcell{display:flex;flex-direction:column;gap:5px} .fcell label{font-size:9.5px;font-weight:700;letter-spacing:.5px;color:var(--ink-3)}
.fcell select,.fcell input{background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:8px 10px;font-size:12px;font-family:var(--sans);min-width:130px}
.fcell.kw input{min-width:200px} .fcell select:focus,.fcell input:focus{outline:none;border-color:var(--red-line);box-shadow:0 0 0 3px var(--red-soft)}
.rescount{font-size:11.5px;color:var(--ink-3);margin:0 2px 9px;font-family:var(--mono)} .rescount b{color:var(--ink)}
.tablewrap{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:clip;margin-bottom:14px}/* clip=角丸の切り抜きを維持しつつスクロールコンテナ化しない（内側の列見出しstickyを画面に効かせる） */
.sum-sec{margin:0 0 16px}
.sum-sec-ttl{font-size:12px;font-weight:700;color:var(--ink-2);letter-spacing:.04em;margin:0 0 8px 2px}
.sum-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
/* ===== 集計サマリー刷新（2026-07-05）：KPIバンド＋分布グラフ ===== */
.kpiband{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 12px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:11px 14px;transition:box-shadow .15s,transform .15s}
.kpi[onclick]:hover{box-shadow:0 3px 14px rgba(0,0,0,.09);transform:translateY(-1px)}
.kpi-v{font-size:24px;font-weight:800;line-height:1.15;color:var(--ink)}
.kpi-l{font-size:11px;color:var(--ink-2);font-weight:600;margin-top:2px}
.kpi-s{font-size:10.5px;color:var(--ink-3);margin-top:1px}
.kpi.warn .kpi-v{color:var(--red)}
.kpi.accent .kpi-v{color:#0a7d3c}
.sum-chart{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:12px 15px;margin:0 0 12px}
.sum-chart-hd{display:flex;align-items:center;gap:14px;margin-bottom:9px;flex-wrap:wrap}
.sum-chart-ttl{font-size:12px;font-weight:700;color:var(--ink-2)}
.sum-chart-hd label{font-size:11px;color:var(--ink-2);display:inline-flex;align-items:center;gap:5px}
.sum-chart-hd select{font-size:11.5px;padding:2px 6px;border:1px solid var(--line);border-radius:6px;background:#fff}
.sum-legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.sum-legend .lg{font-size:11px;color:var(--ink-2);display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.sum-legend .lg:hover{color:var(--ink)}
.sum-legend .lg i{width:10px;height:10px;border-radius:3px;display:inline-block}
/* ===== 絞込刷新（2026-07-05）：因子水準チップ＋常設フリー検索 ===== */
.facetbar{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:11px 15px;margin-bottom:13px}
.fsearch{display:flex;align-items:center;gap:8px;margin-bottom:9px;color:var(--ink-3)}
.fsearch input{flex:0 1 320px;border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:12.5px;background:#fff}
.fsearch .fclear{margin-left:4px}
.fgroup{display:flex;align-items:baseline;gap:8px;padding:3px 0}
.fglab{font-size:11px;font-weight:700;color:var(--ink-3);min-width:92px;flex-shrink:0}
.fchips{display:flex;flex-wrap:wrap;gap:5px}
.fchip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;padding:2.5px 9px;border:1px solid var(--line);border-radius:20px;background:#fff;cursor:pointer;color:var(--ink-2);user-select:none;transition:all .12s}
.fchip b{font-size:10px;font-weight:700;color:var(--ink-3);background:rgba(0,0,0,.05);border-radius:8px;padding:0 5px;line-height:15px}
.fchip:hover{border-color:var(--ink-3)}
.fchip.on{background:var(--red);border-color:var(--red);color:#fff;font-weight:600}
.fchip.on b{background:rgba(255,255,255,.25);color:#fff}
.fchip.zero{opacity:.45}
.sum-card{padding:14px 16px}
.sum-card .sum-ttl{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-weight:700;font-size:13.5px;color:var(--ink);margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.sum-card .sum-total{font-size:11px;font-weight:600;color:var(--ink-3)}
.sum-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:5px 8px;border-radius:8px;text-decoration:none;color:inherit;cursor:pointer;transition:background .12s}
.sum-row:hover{background:var(--bg)}
.sum-row .sum-label{font-size:12px;color:var(--ink-2)}
.sum-row .sum-num{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.sum-row .sum-num small{font-size:10px;font-weight:500;color:var(--ink-3);margin-left:2px}
.tablewrap thead th{cursor:pointer;user-select:none}
table{width:100%;border-collapse:collapse}
thead th{text-align:left;font-size:10.5px;font-weight:800;letter-spacing:.5px;color:var(--ink-2);padding:11px 14px;border-bottom:2px solid var(--line);white-space:nowrap;background:#f3f4f6;text-transform:uppercase}
thead th.sortable{cursor:pointer;user-select:none;position:relative;padding-right:20px;transition:color .15s}
thead th.sortable:hover{color:var(--accent)}
thead th.sortable::after{content:"⇅";position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:9px;opacity:.4}
thead th.sortable.asc::after{content:"↑";opacity:.9;color:var(--accent)} thead th.sortable.desc::after{content:"↓";opacity:.9;color:var(--accent)}
tbody tr{border-bottom:1px solid var(--line-2);transition:.1s} tbody tr:last-child{border-bottom:0} tbody tr:hover{background:#f0f1ff}
tbody tr:nth-child(even){background:#fafafa}
tbody tr.expandable{cursor:pointer}
tbody td{padding:12px 14px;font-size:12.5px;vertical-align:middle}
td.id{font-family:var(--mono);font-size:11px;color:var(--ink-3)} td.title-cell{font-weight:700;color:var(--ink);max-width:320px}
td.mono{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.card-row-title{font-weight:700;font-size:13px;flex:1;min-width:150px}
.card-row-body{margin-top:10px;display:none;border-top:1px solid var(--line-2);padding-top:10px}
.card-row-body.open{display:block}
.card-row-links{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.card-row-note{font-size:12px;color:var(--amber);padding:6px 10px;margin-top:6px;background:var(--amber-soft);border-left:3px solid var(--amber);border-radius:0 6px 6px 0}
.tlink{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:700;font-family:var(--mono);cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink-2);transition:.12s;white-space:nowrap}
.tlink:hover{border-color:var(--red-line);color:var(--red)} .tlink.disabled{opacity:.35;cursor:default;pointer-events:none}
.tlink.fr{background:#EEF2FB;color:#2B4B8F;border-color:#D6E0F5} .tlink.br{background:var(--amber-soft);color:#7A5B2E;border-color:var(--amber-line)}
.tlink.td{background:#EEF2FB;color:#2B4B8F;border-color:#D6E0F5} .tlink.bug{background:var(--red-soft);color:var(--red);border-color:var(--red-line)}
.tlink.nfr{background:var(--line-2);color:var(--ink-2);border-color:var(--line)}
.confrow{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line-2);font-size:12px;align-items:flex-start} .confrow:last-child{border-bottom:0}
.confrow .no{flex:none;width:20px;height:20px;border-radius:50%;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
.nodata{padding:20px;text-align:center;color:var(--ink-3);font-size:13px}
.mrow{padding:8px 0;border-bottom:1px dashed var(--line-2);font-size:12.5px;color:var(--ink-2)} .mrow:last-child{border-bottom:0} .mrow b{color:var(--ink)}
.docsec{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:14px 16px;margin-bottom:10px} .docsec h4{font-size:12.5px;font-weight:800;margin-bottom:5px} .docsec p{font-size:12.5px;color:var(--ink-2);line-height:1.8}
/* ステータスバー */
.statusbar{display:flex;align-items:center;gap:14px;padding:15px 18px;border-radius:12px;margin-bottom:16px;border:1px solid var(--line);background:var(--panel)}
.statusbar.delay{background:var(--red-soft);border-color:var(--red-line)} .statusbar.ok{background:var(--green-soft);border-color:var(--green-line)} .statusbar.warn{background:var(--amber-soft);border-color:var(--amber-line)}
.conftabs{display:flex;gap:6px;margin-bottom:12px} .conftab{font-size:11.5px;font-weight:700;padding:6px 12px;border-radius:7px;border:1px solid var(--border);background:var(--bg-2);cursor:pointer;color:var(--ink-2)} .conftab.on{background:var(--red);color:#fff;border-color:var(--red)}
.stbadge{font-weight:800;font-size:14px;padding:5px 13px;border-radius:8px;color:#fff;white-space:nowrap} .stbadge.delay{background:var(--red)} .stbadge.ok{background:var(--green)} .stbadge.warn{background:var(--green)}
.sttext{font-size:13px;color:var(--ink-2);flex:1} .sttext b{color:var(--ink)} .stmeta{text-align:right;font-size:11px;color:var(--ink-3);line-height:1.5}
.confrow .to{font-size:11px;color:var(--ink-3);font-style:italic}
.stbadge{font-weight:800;font-size:14px;padding:5px 13px;border-radius:8px;color:#fff;white-space:nowrap} .stbadge.delay{background:var(--red)} .stbadge.ok{background:var(--green)} .stbadge.warn{background:var(--amber)}
.sttext{font-size:13px;color:var(--ink-2)} .sttext b{color:var(--ink)}
.stmeta{margin-left:auto;text-align:right;font-family:var(--mono);font-size:11px;color:var(--ink-3);line-height:1.5}
/* クイックアクセス */
/* アクティビティ */
.tl{position:relative;padding-left:24px;margin-top:6px} .tl::before{content:"";position:absolute;left:6px;top:4px;bottom:4px;width:2px;background:var(--line)}
.ev{position:relative;padding:0 0 14px} .ev:last-child{padding-bottom:0} .ev::before{content:"";position:absolute;left:-21px;top:3px;width:11px;height:11px;border-radius:50%;background:#fff;border:2px solid var(--ink-3)}
.ev.design::before{border-color:#2B4B8F} .ev.exec::before{border-color:var(--green)}
.evhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .evtime{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-left:auto}
.agtag{font-family:var(--mono);font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;color:#fff;white-space:nowrap}
.ag-design{background:#2B4B8F} .ag-exec{background:var(--green)} .ag-pm{background:#6366f1} .ag-review{background:var(--amber)}
@keyframes trHL{0%{background:var(--highlight)}100%{background:transparent}}
/* インラインスピナー（ボタン内） */
.spinner-inline{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}
.btn:disabled .spinner-inline{border-color:rgba(0,0,0,.15);border-top-color:var(--accent)}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* 進捗パネル */
.draft-progress-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:12px}
.draft-phase{font-size:13px;color:var(--ink-1);display:flex;align-items:center;gap:6px}
.draft-phase .spinner-inline{border-color:rgba(0,0,0,.1);border-top-color:var(--accent);width:16px;height:16px}
.btn:disabled{opacity:.7;cursor:not-allowed}
/* 業務フロー図ビューア */
.bflow-viewer{position:relative;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fafbfc}
.bflow-toolbar{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--surface);border-bottom:1px solid var(--border);font-size:11px;flex-wrap:wrap}
.bflow-toolbar button{background:var(--bg);border:1px solid var(--border);border-radius:4px;min-width:28px;height:28px;cursor:pointer;font-size:14px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-1);transition:.15s;white-space:nowrap}
.bflow-toolbar button:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.bflow-toolbar .sep{width:1px;height:20px;background:var(--border)}
.bflow-toolbar .zoom-label{color:var(--ink-2);min-width:40px;text-align:center;font-weight:600}
.bflow-toolbar .dl-btn{font-size:11px;width:auto;padding:0 10px;gap:4px}
.bflow-toolbar .dl-hint{font-size:9px;color:var(--ink-3);font-weight:400}
.bflow-canvas{overflow:auto;cursor:grab;min-height:300px;max-height:70vh;padding:20px;user-select:none}
.bflow-canvas.dragging{cursor:grabbing}
.bflow-canvas svg{transition:transform .1s ease}
.bflow-fs-overlay{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.9);display:flex;flex-direction:column}
.bflow-fs-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(255,255,255,.1);flex-shrink:0}
.bflow-fs-toolbar button{background:rgba(255,255,255,.9);border:none;border-radius:4px;min-width:32px;height:32px;cursor:pointer;font-size:16px;display:inline-flex;align-items:center;justify-content:center}
.bflow-fs-toolbar button:hover{background:#fff}
.bflow-fs-toolbar .close-btn{background:#ff4444;color:#fff}
.bflow-fs-toolbar .close-btn:hover{background:#ff6666}
.bflow-fs-body{flex:1;overflow:auto;cursor:grab;padding:20px;user-select:none}
.bflow-fs-body.dragging{cursor:grabbing}
.hl-active{animation:trHL 2.5s ease-out forwards;outline:2px solid var(--red);outline-offset:2px}
@media(max-width:840px){.shell{grid-template-columns:1fr} .side{position:fixed;left:0;top:0;width:236px;z-index:50;transform:translateX(-100%);transition:.25s;box-shadow:0 0 40px rgba(0,0,0,.12)} .side.open{transform:none} .grid2,.grid3,.grid4{grid-template-columns:1fr 1fr} .content{padding:18px 16px 60px} .cases{margin-left:0}}
@media(max-width:600px){.grid2,.grid3,.grid4,.qa-grid{grid-template-columns:1fr}}
/* ===== 中間成果物 ===== */
.artcard{background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:14px}
.artcard .ah{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.artcard .ah .cov{font-size:11px;color:var(--ink-2)}
.chip.tech{background:#eef;color:#336;border:1px solid #ccf;font-size:10px}
table.amx{width:100%;border-collapse:collapse;font-size:12px;margin-top:4px}
table.amx th{background:var(--bg-2);font-weight:600;text-align:left;padding:6px 8px;border:1px solid var(--border);font-size:11px}
table.amx td{padding:6px 8px;border:1px solid var(--border);vertical-align:top}
table.amx .mono{font-family:monospace;font-size:11px;white-space:nowrap}
table.amx tr.fhdr td{background:var(--bg-2);font-weight:600;font-size:11px}
.footnote{font-size:11px;color:var(--ink-2);margin-left:8px}

/* ===== テスト実行詳細 ===== */
.texec-parent{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;overflow:hidden}
.tp-meter{width:80px;height:6px;background:#e0e0e0;border-radius:3px;display:inline-block;vertical-align:middle}
.tp-meter .fill{height:100%;border-radius:3px;background:var(--green)}
.tp-meter .fill.warn{background:var(--amber)}
.tp-meter .fill.bad{background:var(--red)}
.chip.rerun{background:#fff3e0;color:#e65100;font-size:9px}
.reexec-panel{background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:18px}
.reexec-panel h3{font-size:14px;font-weight:700;margin:0 0 10px;color:var(--ink)}
.reexec-info{font-size:11px;color:var(--ink-3);margin-top:4px}
/* ソート可能テーブル */
.fclear{background:none;border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-size:11px;color:var(--ink-3);cursor:pointer;margin-left:auto}
.fclear:hover{border-color:var(--red);color:var(--red)}
thead th.sortable{cursor:pointer;user-select:none} thead th.sortable:hover{color:var(--red)}
thead th .arr{margin-left:4px;font-size:9px;opacity:.5} thead th.act .arr{opacity:1;color:var(--red)}
.stat{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.stat.ok{background:var(--green-soft);color:var(--green)} .stat.warn{background:var(--amber-soft);color:var(--amber)} .stat.bad{background:var(--red-soft);color:var(--red)}
.review{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:#EEF2FB;color:#2B4B8F;white-space:nowrap}
.impact{font-size:10px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.impact.hi{background:var(--red-soft);color:var(--red)} .impact.mid{background:var(--amber-soft);color:var(--amber)} .impact.lo{background:var(--bg-2);color:var(--ink-2)}
.rtm-table{width:100%;border-collapse:collapse;font-size:12px}
.rtm-table th{background:#FCFCFB;border:1px solid var(--border);padding:7px 8px;text-align:left;font-size:10px;color:var(--ink-3);font-weight:800;white-space:nowrap}
.rtm-table td{border:1px solid var(--line);padding:7px 8px;vertical-align:top}
.rtm-table tr:hover{background:#f8f8fa}
/* 詳細画面 */
.back{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);font-weight:700;cursor:pointer;margin-bottom:14px;padding:8px 16px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:background .15s,border-color .15s,color .15s}
.back:hover{color:#fff;background:var(--accent);border-color:var(--accent)}
.dhead{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px 20px;margin-bottom:14px}
.dhead .did{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.dhead h1{font-size:19px;font-weight:800;margin:4px 0 10px}
.dmeta{display:flex;flex-wrap:wrap;gap:18px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.dmeta div .l{color:var(--ink-3);font-weight:700;letter-spacing:.5px;margin-bottom:2px;font-size:10px}
.dmeta div .vv{font-family:var(--mono);color:var(--ink);font-size:11.5px}
.chain{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0}
.chain .arw{color:var(--ink-3);font-weight:700;margin:0 2px}
.chain .cl{font-size:10px;font-weight:800;letter-spacing:.5px;color:var(--ink-3);min-width:78px}
.tchip{display:inline-block;font-size:11px;font-weight:700;padding:4px 9px;border-radius:7px;margin:2px 4px 2px 0;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--ink-2);transition:.12s}
.sum-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 7px;border-radius:10px;background:var(--red);color:#fff;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;margin-right:8px;flex:none}
.chip-more{display:inline-block;font-size:11px;font-weight:700;padding:4px 9px;margin:2px 0;color:var(--red);cursor:pointer;text-decoration:underline;white-space:nowrap}
.chip-more:hover{opacity:.8}
.tchip:hover{border-color:var(--red-line);color:var(--red)}
.tchip.br{background:#FBF4E4;color:#7A5B2E;border-color:#ECDDB8} .tchip.fr{background:#EEF2FB;color:#2B4B8F;border-color:#D6E0F5}
.tchip.nfr{background:var(--bg-2);color:var(--ink-2)} .tchip.td{background:#EEF2FB;color:#2B4B8F;border-color:#D6E0F5}
.tchip.bug{background:var(--red-soft);color:var(--red);border-color:var(--red-line)}
.tracejust{margin-top:10px;font-size:12px;background:var(--amber-soft);border:1px solid #ECDDB8;border-radius:8px;padding:10px 12px;color:#7A5B2E}
/* バグ詳細メタカード */
.meta-cards{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.meta-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 14px;min-width:120px;flex:1}
.meta-card .mc-label{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3);margin-bottom:4px}
.meta-card .mc-val{font-size:12.5px;font-weight:700;color:var(--ink)}
.sev-badge{font-size:10.5px;font-weight:800;padding:4px 10px;border-radius:6px;white-space:nowrap;display:inline-block}
.sev-badge.Critical{background:#FDE8E8;color:#C62828} .sev-badge.High{background:#FFF3E0;color:#E65100}
.sev-badge.Medium{background:var(--amber-soft);color:var(--amber)} .sev-badge.Low{background:var(--bg-2);color:var(--ink-3)}
.bug-stat-badge{font-size:10px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap}
.bug-stat-badge.open{background:#FDE8E8;color:#C62828} .bug-stat-badge.fixing{background:var(--amber-soft);color:var(--amber)}
.bug-stat-badge.retest{background:#EEF2FB;color:#2B4B8F} .bug-stat-badge.closed{background:var(--green-soft);color:var(--green)}
.section-block{margin:16px 0;padding:16px 18px;background:var(--panel);border:1px solid var(--border);border-radius:10px}
.section-block h3{font-size:13px;font-weight:800;color:var(--ink);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.section-block ol{font-size:12px;color:var(--ink-2);line-height:1.8;margin:0;padding-left:20px}
.block-risk{display:inline-block;font-size:10px;font-weight:800;padding:3px 8px;border-radius:5px;margin-left:6px}
.block-risk.hi{background:#FDE8E8;color:#C62828} .block-risk.mid{background:var(--amber-soft);color:var(--amber)} .block-risk.lo{background:var(--bg-2);color:var(--ink-3)}
/* 見本準拠: バグ詳細 */
.docsec{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px}
.docsec h4{font-size:12.5px;font-weight:800;color:var(--ink);margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.docsec p{font-size:12px;color:var(--ink-2);line-height:1.8;margin:0}
.docsec ol{font-size:12px;color:var(--ink-2);line-height:1.8;margin:0;padding-left:18px}
.docsec ul{font-size:12px;color:var(--ink-2);line-height:1.8;margin:0;padding-left:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tblock{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px}
.tblock.hot{background:#FDE8E8;border-color:var(--red-line)}
.tblock .tbhd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.tblock .tbn{font-size:22px;font-weight:800;color:var(--red)}
.tblock .tbn small{font-size:11px;font-weight:600}
.tblock .tbody{font-size:12px;color:var(--ink-2);line-height:1.7}
.dhead .ev{padding:10px 14px;border-left:3px solid var(--line);margin-bottom:2px;position:relative}
.dhead .ev::before{display:none}
.dhead .ev.exec{border-left-color:var(--green)} .dhead .ev.振返{border-left-color:var(--amber);background:var(--amber-soft)}
.dhead .ev.pm{border-left-color:#2B4B8F} .dhead .ev.design{border-left-color:var(--red)}
.evhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.evact{font-weight:700;font-size:12.5px}
.evtime{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}
.evchange{font-size:12px;color:var(--ink-2);margin-top:3px}
.agtag{font-size:9px;font-weight:800;padding:2px 7px;border-radius:4px;color:#fff;text-transform:uppercase}
.ag-exec{background:var(--green)} .ag-振返{background:var(--amber)} .ag-pm{background:#6366f1} .ag-design{background:#2B4B8F}
.ag-human{background:#6B4FAB}
/* テストPM画面 */
.signal{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);font-size:12px;color:var(--ink-2)}
.signal:last-child{border-bottom:none}
.signal.lit{background:var(--red-soft);color:var(--red);font-weight:600}
.led{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.led.on{background:var(--red);box-shadow:0 0 6px var(--red)}
.led.off{background:var(--line-2)}
.signal .s2{margin-left:auto;font-size:10px;color:var(--ink-3);font-weight:400}
.pm-note{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 16px;font-size:12px;color:var(--ink-2);margin-bottom:16px;line-height:1.7}
.pm-note b{color:var(--ink)}
/* テスト計画書：レベル別カード */
.revcard{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}
.revcard.hot{border-color:var(--red-line);background:#FFFBFB}
.revhd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line);font-size:12px}
.revbody{padding:14px 16px}
.revrow{display:flex;gap:8px;align-items:flex-start;padding:6px 0;font-size:12px;color:var(--ink-2)}
.revrow .rl{min-width:80px;font-weight:700;color:var(--ink);flex-shrink:0}
.owner{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink-2)}
.cpath{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:10px 14px;background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-bottom:6px}
.cparw{color:var(--ink-3);font-size:14px}
.cpnote{margin-bottom:14px;line-height:1.7}
.mblock{padding:10px 14px;background:var(--panel);border:1px solid var(--border);border-radius:10px;font-size:12px;color:var(--ink-2);line-height:1.7}
/* 改訂起案 */
.revtrig{font-size:11px;color:var(--ink-3);font-weight:700}
.revact{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.btn2{font-size:12px;font-weight:700;padding:7px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}
.btn2:hover{background:var(--bg-2)}
.okmsg{margin-top:8px;padding:8px 12px;background:var(--green-soft);border:1px solid var(--green);border-radius:8px;font-size:12px;color:var(--green);font-weight:600}
/* キックオフ対話・会議 */
.kolog{display:flex;flex-direction:column;gap:10px;margin:6px 0}
.koturn{display:flex;gap:8px;align-items:flex-start}
.koturn.human{flex-direction:row-reverse}
.kobubble{max-width:70%;padding:10px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--border);font-size:12px}
.koturn.pm .kobubble{background:#EEF2FB;border-color:#D6DEF0}
.koturn.human .kobubble{background:var(--green-soft);border-color:var(--green);text-align:right}
.kotxt{color:var(--ink);line-height:1.7}
.kotime{font-size:10px;color:var(--ink-3);font-family:var(--mono);margin-top:4px}
.kolog-wrap{max-height:420px;overflow-y:auto;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--bg)}
.koinput{display:flex;gap:8px;margin-top:10px;align-items:flex-end;position:sticky;bottom:0;background:var(--bg);padding:8px 0 0}
.koinput textarea{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:12px;font-family:inherit;resize:vertical;min-height:42px}
.koinput select{padding:6px 8px;border:1px solid var(--border);border-radius:8px;font-size:11px;font-family:inherit;min-width:120px;max-width:180px}
.ko-edit-area{display:flex;flex-direction:column;gap:6px}
.ko-edit-area textarea{width:100%;min-height:60px;padding:8px;border:1px solid var(--accent);border-radius:6px;font-size:12px;font-family:inherit;resize:vertical}
.ko-edit-btns{display:flex;gap:6px;justify-content:flex-end}
.ko-item-ops{display:flex;gap:4px;flex-wrap:wrap}
.bl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3);margin-bottom:4px}
.iss{padding:6px 0;border-bottom:1px solid var(--line);font-size:12px}
.iss .tp{font-weight:700;color:var(--ink)}
.iss .dc{color:var(--ink-2);margin-top:2px}
.stat.done{background:var(--green-soft);color:var(--green)}
.stat.run{background:#EEF2FB;color:#2B4B8F}
.stat.wait{background:var(--line-2);color:var(--ink-3)}
.pill{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:6px;background:var(--line-2);color:var(--ink-2);margin:2px 4px 2px 0}
.pill.rule{background:var(--amber-soft);color:var(--amber)}
.rrsel{padding:5px 8px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:inherit}
/* 参照資料 */
/* 参照資料の一覧刷新（2026-07-05）：縦一列→レスポンシブグリッド（横幅に応じ2〜3列）。
   件数が増えたら一覧内スクロール（ページ全体を占有しない）。行はカード2段組（1段目=名前・版・状態／2段目=メモ／3段目=来歴・操作）。 */
.doclist{margin:8px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:8px;max-height:342px;overflow-y:auto;padding:2px}
.docrow{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:12px;align-content:flex-start}
.docrow .docdesc-edit{flex:1 1 100%;order:5}
.docrow>.footnote{order:6}
.docrow .docops{order:7;margin-left:auto}
.docbadge{font-size:10px;font-weight:800;padding:2px 7px;border-radius:4px;text-transform:uppercase;color:#fff;flex-shrink:0}
.docbadge.pdf{background:#E53935} .docbadge.xlsx{background:#2E7D32} .docbadge.docx{background:#1565C0}
.docbadge.pptx{background:#E65100} .docbadge.md{background:#6A1B9A} .docbadge.txt{background:#546E7A}
.docbadge.other{background:var(--ink-3)}
.docname{font-weight:700;color:var(--ink);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docver{font-family:var(--mono);font-size:10px;color:var(--ink-3);flex-shrink:0}
.docdesc{font-size:11px;color:var(--ink-2);flex:2;min-width:0}
.docdesc-edit{font-size:11px;color:var(--ink);flex:2;min-width:0;border:1px solid var(--line);border-radius:5px;padding:4px 7px;font-family:inherit;
  /* テキストエリア化（2026-07-06 片本さん指示＝自動入力の要約100〜150字が全部見えるように）：
     field-sizing:content対応ブラウザは内容に合わせ自動で伸縮・非対応でも縦リサイズ可＋2行確保 */
  resize:vertical;line-height:1.5;min-height:3em;max-height:12em;field-sizing:content;display:block;box-sizing:border-box}
.docdesc-edit.empty{border-color:#e0a800;background:#fffaf0}
.docdesc-warn{font-size:11px;color:#b7791f;background:#fffaf0;border:1px solid #f0d488;border-radius:6px;padding:7px 11px;margin-top:8px}
.drag-handle{cursor:grab;color:var(--ink-3);font-size:14px;padding:0 6px;user-select:none;flex-shrink:0}
.drag-handle:active{cursor:grabbing}
.docrow.drag-over{border-top:2px solid #6366f1;background:rgba(99,102,241,.04)}
.scope-toggle{border:1px solid var(--line);border-radius:6px;padding:2px 10px;font-size:11px;font-weight:700;cursor:pointer;margin-left:4px}
.scope-toggle.on{background:#e7f5ec;border-color:#9bd4af;color:#1a7f3c}
.scope-toggle.off{background:#f1f1f3;border-color:#d0d0d5;color:#8a8a92}
.scope-toggle:hover{opacity:.85}
.docops{display:flex;gap:6px;flex-shrink:0}
.docops a,.docops button{font-size:11px;font-weight:600;color:var(--blue);background:none;border:none;cursor:pointer;text-decoration:underline;padding:0}
.docops a:hover,.docops button:hover{color:var(--ink)}
/* テスト計画：confirmed バッジ */
.tp-badge-unconf{display:inline-block;background:var(--amber);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:6px;vertical-align:middle}
.tp-badge-conf{display:inline-block;background:var(--green);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:6px;vertical-align:middle}
.tp-ta{width:100%;min-height:60px;border:1.5px solid var(--border);border-radius:8px;padding:8px 10px;font-size:12.5px;font-family:inherit;resize:vertical;background:var(--bg);color:var(--ink)}
.tp-inp{width:100%;border:1.5px solid var(--border);border-radius:6px;padding:5px 8px;font-size:12.5px;font-family:inherit;background:var(--bg);color:var(--ink)}
/* PMエージェント起動パネル */
.pm-panel{background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.08));border:1.5px solid rgba(99,102,241,.25);border-radius:12px;padding:14px 18px;margin-bottom:16px}
.pm-panel .btn-pm{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;padding:8px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.pm-panel .btn-pm:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(99,102,241,.3)}
.pm-panel .btn-pm:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.pm-loading{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}
.pm-loading .spinner{width:16px;height:16px;border:2px solid rgba(99,102,241,.2);border-top-color:#6366f1;border-radius:50%;animation:spin 0.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* AIエージェント統合パネル */
.agent-hub{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:0;margin-bottom:16px;overflow:hidden}
.agent-card-title{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px}
.agent-card-desc{font-size:11.5px;color:var(--ink-2);margin-bottom:8px;line-height:1.5}
.btn-agent{border:none;padding:7px 16px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;color:#fff}
.btn-agent:hover{transform:translateY(-1px);filter:brightness(1.1)}
.btn-agent:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}
.btn-agent.pm{background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 2px 8px rgba(99,102,241,.25)}
.btn-agent.design{background:linear-gradient(135deg,#0ea5e9,#6366f1);box-shadow:0 2px 8px rgba(14,165,233,.25)}
/* ===== 統一エージェント起動エリア ===== */
.agent-launch{margin:10px 0}
.al-btn{border:none;border-radius:7px;padding:9px 18px;font-size:13px;font-weight:600;color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:filter .15s}
.al-btn:hover{filter:brightness(1.08)} .al-btn:disabled{opacity:.85;cursor:not-allowed;filter:none}
.al-spark::before{content:"\2726";font-size:13px}
.al-tag.ag-design,.al-btn.ag-design{background:#2B4B8F}
.al-tag.ag-exec,.al-btn.ag-exec{background:#1E7F4F}
.al-tag.ag-retro,.al-btn.ag-retro{background:#B7791F}
.al-tag.ag-pm,.al-btn.ag-pm{background:#6366f1}
.al-tag.ag-review,.al-btn.ag-review{background:#0F766E}
.al-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.bulkbar{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:0 0 10px;font-size:12px}
.al-desc{font-size:13px;color:#191A1D;font-weight:700;margin:0;flex:1 1 260px;line-height:1.55}
.al-caution{display:flex;gap:9px;align-items:flex-start;background:var(--amber-soft);border:1px solid var(--amber-line);border-radius:8px;padding:10px 12px;margin-top:12px;font-size:12px;color:var(--amber);line-height:1.6}
.al-banner{display:flex;gap:9px;align-items:flex-start;border-radius:8px;padding:10px 12px;margin:0 0 12px;font-size:12px;line-height:1.6}
.al-banner .al-bd{flex:1}
.al-banner .al-x{font-size:15px;color:var(--ink-3);cursor:pointer;flex-shrink:0}
.al-done{background:var(--green-soft);border:1px solid var(--green-line);color:var(--green)}
.al-error{background:var(--red-soft);border:1px solid var(--red-line);color:var(--red)}
@keyframes al-bar{0%{left:-35%}100%{left:100%}}
.agent-status{margin-top:6px;min-height:18px}
/* 差分サマリーテーブル */
.diff-summary-table{border-collapse:collapse;font-size:11px;margin:6px 0;width:auto}
.diff-summary-table th,.diff-summary-table td{padding:2px 8px;text-align:right;border:1px solid var(--border)}
.diff-summary-table th{background:var(--bg2);font-weight:600;color:var(--ink-2)}
.diff-summary-table td:first-child{text-align:left;font-weight:600;color:var(--ink)}
.diff-summary-table .cnt-new{color:var(--green)}
.diff-summary-table .cnt-mod{color:#0ea5e9}
.diff-summary-table .cnt-unm{color:var(--amber)}
.diff-summary-table .cnt-unc{color:var(--ink-3)}
/* 削除マーク表示 */
tr.deleted-row{opacity:.45;cursor:default;background:repeating-linear-gradient(135deg,transparent,transparent 8px,rgba(239,68,68,.03) 8px,rgba(239,68,68,.03) 16px)}
tr.deleted-row td.title{text-decoration:line-through}
.del-mark{display:inline-block;font-size:10px;padding:1px 6px;border-radius:4px;background:rgba(245,158,11,.12);color:#b45309;font-weight:600;margin-left:4px}
.restore-btn{font-size:11px;padding:1px 8px;line-height:1.6;border-radius:6px;cursor:pointer}
/* 日時メタ表示 */
/* 設計実行履歴セクション */
.design-runs-section summary{font-size:12px;font-weight:600;color:var(--ink-2);cursor:pointer;padding:6px 0}
.design-runs-section summary:hover{color:var(--ink)}
.design-run-item{padding:8px 12px;border-left:3px solid var(--border);margin-bottom:6px;font-size:11px;background:var(--bg2);border-radius:0 6px 6px 0}
.design-run-header{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.design-run-header .run-id{font-weight:700;color:var(--ink)}
.design-run-header .run-time{color:var(--ink-3)}
.design-run-header .run-model{font-size:10px;padding:1px 6px;border-radius:4px;background:rgba(99,102,241,.1);color:#6366f1}
.design-run-stats{margin-top:4px;font-family:var(--mono);font-size:10px;color:var(--ink-2)}
.design-run-docs{margin-top:2px;font-size:10px;color:var(--ink-3)}
/* ドロップゾーン */
.dropzone{border:2px dashed var(--border);border-radius:12px;padding:24px 16px;text-align:center;transition:all .2s;cursor:pointer;background:rgba(99,102,241,.02)}
.dropzone:hover,.dropzone.dragover{border-color:#6366f1;background:rgba(99,102,241,.06)}
.dropzone-icon{font-size:32px;margin-bottom:6px;opacity:.5}
.dropzone-text{font-size:12px;color:var(--ink-3);line-height:1.6}
.dropzone-text strong{color:var(--ink);font-weight:600}
.bulk-progress{margin-top:10px;font-size:11px;color:var(--ink-3)}
.bulk-progress .bar{width:100%;height:4px;background:var(--line);border-radius:2px;margin-top:4px;overflow:hidden}
.bulk-progress .bar-fill{height:100%;background:linear-gradient(90deg,#6366f1,#0ea5e9);border-radius:2px;transition:width .3s}
.bulk-file-list{margin-top:8px;max-height:200px;overflow-y:auto;font-size:11px}
.bulk-file-item{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--line)}
.bulk-file-item:last-child{border-bottom:none}
.bulk-file-item .fname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.bulk-file-item .fstatus{flex-shrink:0;font-size:10px}
.bulk-file-item .fstatus.ok{color:var(--green)}
.bulk-file-item .fstatus.ng{color:var(--red)}
.bulk-file-item .fstatus.wait{color:var(--ink-3)}
/* source（出典）表示 */
.tp-source{font-size:10.5px;color:var(--muted);margin-top:2px;font-style:italic}
.tp-source::before{content:'参照資料：'}   /* 2026-07-06 片本さん指摘：幽霊の正体＝このCSS疑似要素（JS/PY全grepでは見えなかった） */
/* 質問表 */
.q-panel{margin-top:8px}
.q-filters{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.q-filters .q-chip{padding:4px 12px;border-radius:16px;font-size:11px;font-weight:600;cursor:pointer;border:1.5px solid var(--border);background:var(--card);color:var(--ink-2);transition:all .18s;user-select:none}
.q-filters .q-chip:hover{border-color:var(--accent);color:var(--accent);background:rgba(99,102,241,.06)}
.q-filters .q-chip.active{background:rgba(99,102,241,.1);color:var(--accent);border-color:var(--accent)}
/* プライマリボタン */
.btn{font-size:12px;font-weight:600;padding:7px 16px;border-radius:8px;border:none;background:var(--ink);color:#fff;cursor:pointer;transition:all .15s}
.btn:hover{background:var(--ink-2)}
.btn:active{transform:translateY(0)}
.btn-danger{font-size:12px;font-weight:600;padding:7px 16px;border-radius:8px;border:1px solid var(--red-line);background:#fff;color:var(--red);cursor:pointer;transition:all .15s}
.btn-danger:hover{background:var(--red);color:#fff;border-color:var(--red)}
.btn-danger:disabled{opacity:.5;cursor:not-allowed}
/* 質問追加ボタン */
.btn-add-q{background:linear-gradient(135deg,#10b981,#34d399);box-shadow:0 1px 4px rgba(16,185,129,.2);font-size:12px;gap:4px;display:inline-flex;align-items:center}
.btn-add-q:hover{background:linear-gradient(135deg,#059669,#10b981);box-shadow:0 3px 10px rgba(16,185,129,.25)}
.q-card{border:1.5px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px;background:var(--card);transition:border-color .15s}
.q-card.q-open{border-left:3px solid var(--amber)}
.q-card.q-answered{border-left:3px solid var(--blue)}
.q-card.q-applied{border-left:3px solid var(--green)}
.q-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.q-status{font-size:10px;font-weight:700;padding:2px 7px;border-radius:8px;white-space:nowrap}
.q-status.open{background:var(--amber);color:#fff}
.q-status.answered{background:#2563eb;color:#fff}
.q-status.applied{background:var(--green);color:#fff}
.q-status.resolved{background:#059669;color:#fff}
.q-status.deleted{background:#6b7280;color:#fff}
.q-status.followUp{background:#7c3aed;color:#fff}
.q-status{background:#6b7280;color:#fff}
.rv-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;white-space:nowrap;background:#6b7280;color:#fff}
.rv-badge.open{background:#6b7280}
.rv-badge.inProgress{background:#2563eb}
.rv-badge.confirming{background:#d97706}
.rv-badge.closed{background:#059669}
.rv-badge.dismissed{background:#b91c1c}
.rv-sev{font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;white-space:nowrap;background:#9ca3af;color:#fff}
.rv-sev.blocker{background:#7f1d1d}
.rv-sev.major{background:#dc2626}
.rv-sev.rework{background:#ea580c}
.rv-sev.toHuman{background:#7c3aed}
.rv-sev.minor{background:#9ca3af}
.rv-sev.high{background:#dc2626}
.rv-sev.medium{background:#d97706}
.rv-sev.low{background:#6b7280}
/* 課題管理台帳のステータスバッジ（issue_status 6水準・rl-stateは旧リスク台帳から継承したクラス名） */
.rl-state{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;white-space:nowrap;background:#eef0f2;color:#374151}
.rl-state.open{background:#fee2e2;color:#b91c1c}
.rl-state.monitoring{background:#fef3c7;color:#92400e}
.rl-state.inProgress{background:#dbeafe;color:#1d4ed8}
.rl-state.resolved{background:#d1fae5;color:#047857}
.rl-state.closed{background:#e5e7eb;color:#4b5563}
.rl-state.dismissed{background:#f3f4f6;color:#9ca3af;text-decoration:line-through}
.rv-btn{font-size:11px;padding:3px 9px;border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--ink);cursor:pointer}
.rv-btn:hover{background:#f3f4f6}
.rv-btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}
.rv-btn:disabled{opacity:.4;cursor:not-allowed;background:#f3f4f6}
@keyframes rvspin{to{transform:rotate(360deg)}}
.q-target{font-size:11px;font-weight:600;color:var(--muted)}
.q-text{font-size:12.5px;line-height:1.5;margin-bottom:8px}
.q-answer-area{display:flex;gap:8px;align-items:flex-start}
.q-answer-area textarea{flex:1;min-height:50px;border:1.5px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;font-family:inherit;resize:vertical;background:var(--bg);color:var(--ink)}
.q-answer-area .btn{font-size:11px;padding:6px 12px;white-space:nowrap}
/* 個別承認・差し戻し */
.tp-actions{display:flex;gap:4px;margin-top:4px}
.tp-actions .btn-sm{font-size:10px;padding:2px 8px;border-radius:6px;border:1px solid var(--border);cursor:pointer;transition:all .15s}
.tp-actions .btn-confirm{background:var(--green);color:#fff;border-color:var(--green)}
.tp-actions .btn-confirm:hover{opacity:.85}
.tp-actions .btn-edit,.btn-sm.btn-edit{background:var(--card);color:var(--blue);border-color:var(--blue);font-size:10px}
.tp-actions .btn-edit:hover,.btn-sm.btn-edit:hover{background:var(--blue);color:#fff}
.tp-actions .btn-reject{background:transparent;color:var(--amber);border-color:var(--amber)}
.tp-actions .btn-reject:hover{background:rgba(245,158,11,.1)}
.btn-pdf{font-size:11px;font-weight:600;padding:5px 14px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--ink-2);cursor:pointer;margin-left:auto;transition:all .15s;display:inline-flex;align-items:center;gap:4px}.btn-pdf:hover{background:var(--bg-2);border-color:var(--ink-3)}
/* --- 版管理・履歴・モーダル用スタイル --- */
.artifact-bar {
  display: flex; align-items: center; gap: 14px; padding: 10px 0 14px;
  border-bottom: 1px solid var(--line); margin-bottom: 16px;
}
.artifact-bar .label { font-weight: 700; color:var(--red); display:flex; align-items:center; gap:6px;}
.artifact-bar .label::before { content:"—"; color:var(--red); }
.artifact-bar .ver-link {
  font-family: var(--mono); color: #2563eb; cursor: pointer; text-decoration: underline; font-weight: 600;
}
.artifact-bar .updated { font-family: var(--mono); color:var(--ink-3); font-size:12px; }
.artifact-bar .bump-btn {
  border: 1px solid var(--line); background:var(--panel); border-radius:8px; padding:5px 14px; cursor:pointer; font-size:13px;
}
.artifact-bar .bump-btn:hover { background:var(--bg); }

.td-ppbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px;padding:8px 0;border-bottom:1px solid var(--line)}
.td-ppbar .btn2[disabled]{opacity:.4;cursor:default}
.td-statusrow{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:0 0 16px;flex-wrap:wrap}
.td-st{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:700}
.td-st.box{background:#f1eef7;color:#6b5b95;border:1px dashed #b9a9d6}
.td-st.draft{background:#eef4fc;color:#3a6ea5}
.td-st.review{background:#fdeede;color:#B7791F}
.td-st.approved{background:#e6f0e9;color:#1E7D3C}
.history-sec { margin-top:28px; }
.history-sec .h-ttl { font-weight:700; color:var(--red); display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.history-sec .h-ttl::before { content:"—"; }
.history-box { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:6px 0; }
.h-row { display:flex; align-items:center; padding:9px 18px; border-bottom:1px solid var(--line-2); font-size:13px; }
.h-row.h-head { font-weight:700; background:var(--bg-2); }
.h-row.h-head span { color:var(--ink-3); font-size:11px; }
.h-ver { flex:0 0 78px; font-family:var(--mono); font-weight:600; font-size:12px; color:var(--ink-2); }
.h-row:last-child { border-bottom:none; }
.h-actor { flex:0 0 110px; font-weight:600; font-size:12px; }
.h-actor.op { color:var(--red); } .h-actor.qa { color:#7c3aed; } .h-actor.ag { color:#0891b2; } .h-actor.sys { color:var(--ink-3); }
.h-content { flex:1; color:var(--ink); }
.h-content .fld { color:var(--ink-3); }
.h-time { flex:0 0 100px; text-align:right; color:var(--ink-3); font-size:12px; }
.h-more { text-align:center; color:var(--red); font-size:13px; padding:10px; cursor:pointer; }

.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.35); display:none; align-items:center; justify-content:center; z-index:9000; }
.modal-overlay.open { display:flex; }
.modal { background:var(--panel); border-radius:14px; padding:24px; width:460px; max-width:92vw; box-shadow:0 12px 40px rgba(0,0,0,.2); }
.modal h3 { font-size:16px; margin-bottom:4px; font-weight: 700; }
.modal .sub { color:var(--ink-3); font-size:13px; margin-bottom:16px; }
.modal .cur { font-family:var(--mono); font-weight:700; }
.modal .group-ttl { font-weight:600; font-size:13px; margin:14px 0 8px; }
.modal label.radio { display:flex; gap:8px; align-items:flex-start; padding:8px 10px; border:1px solid var(--line); border-radius:8px; margin-bottom:6px; cursor:pointer; }
.modal label.radio:hover { background:var(--bg); }
.modal label.radio .desc { font-size:12px; color:var(--ink-3); }
.modal textarea { width:100%; border:1px solid var(--line); border-radius:8px; padding:10px; font-size:13px; min-height:70px; margin-top:6px; font-family:inherit; }
.modal .preview { font-size:13px; color:#2563eb; margin-top:10px; font-weight: 600; }
.modal .actions { display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }
.modal .actions .ghost { border:1px solid var(--line); background:var(--panel); border-radius:8px; padding:8px 18px; cursor:pointer; }
.modal .actions .primary { border:none; background:#2563eb; color:#fff; border-radius:8px; padding:8px 18px; cursor:pointer; }
.vh-table { width:100%; border-collapse:collapse; margin-top:0; font-size:13px; table-layout:fixed; }
.vh-table th, .vh-table td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--line-2); vertical-align:top; }
.vh-table th { color:var(--ink-3); font-size:12px; position:sticky; top:0; background:var(--panel); z-index:1; }
.vh-table .vnum { font-family:var(--mono); font-weight:600; white-space:nowrap; }
.vh-table td:nth-child(2), .vh-table td:nth-child(3) { white-space:nowrap; }
.vh-table td:nth-child(4) { white-space:normal; word-break:break-word; line-height:1.5; }

/* ===== テスト設計 刷新（T7・新スキーマ描画用） ===== */
.td-sumcards{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 16px}
.td-sumcard{flex:1 1 320px;min-width:300px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.td-sumcard-h{font-size:13px;font-weight:800;color:var(--ink);margin:0 0 8px}
.td-sumtable{width:100%;border-collapse:collapse;font-size:12px}
.td-sumtable th{text-align:left;font-weight:700;color:var(--ink-2);border-bottom:1px solid var(--line);padding:4px 8px}
.td-sumtable td{padding:4px 8px;border-bottom:1px solid var(--line-2)}
.td-sumtable .num{text-align:right;font-family:var(--mono)}
.td-sumtable .strong{font-weight:700}
.td-sumtable tfoot td{font-weight:700;border-top:2px solid var(--line);border-bottom:none}
.td-levelgroup{margin:0 0 22px}
.td-levelhead{font-size:13px;font-weight:800;color:var(--ink);padding:8px 10px;margin:0 0 6px;background:var(--line-2);border-left:3px solid var(--accent);border-radius:6px}
.td-chev{display:inline-block;margin-right:6px;font-size:11px;color:var(--ink-3);transition:transform .15s}
.td-levelgroup.collapsed .td-chev{transform:rotate(-90deg)}
.td-levelgroup.collapsed .td-levelbody{display:none}
.td-levelgroup-out .td-levelhead{color:var(--ink-3);border-left-color:var(--ink-3);background:var(--line)}
.td-out-badge{display:inline-block;font-size:11px;font-weight:700;color:var(--ink-3);background:var(--line);border:1px solid var(--line-2);border-radius:10px;padding:1px 8px;margin-left:6px}
.td-tech{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 14px}
.td-tech .tech-col{flex:1;min-width:240px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel)}
.td-tech .tech-h{font-size:11px;font-weight:800;letter-spacing:.5px;margin:0 0 6px}
.td-tech .tech-h.adopt{color:var(--green)} .td-tech .tech-h.reject{color:var(--ink-3)}
.td-tech .tech-row{display:flex;gap:8px;align-items:baseline;margin:4px 0}
.scencard{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 12px;background:var(--panel)}
.scencard .ah{display:flex;gap:8px;align-items:center;margin:0 0 6px}
.chap{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:0 0 10px;background:var(--panel)}
.chap .ct{display:flex;gap:8px;align-items:center;margin:0 0 4px}
.chap .ct .n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--accent);color:#fff;font-size:11px;font-weight:800}
.chap .ct h3{font-size:13px;font-weight:700;margin:0}
.chap .cbody{font-size:12px;color:var(--ink-2);white-space:pre-wrap}
.trace-line{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px}
.trace-line .arrow{color:var(--ink-3);font-weight:700;margin:0 2px}
/* 観点充足の正異別・軸別分解（静的な箱の可視化・T7） */
.cov-breakdown{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0 0 6px}
.cov-breakdown .cov-lab{font-size:10px;font-weight:800;letter-spacing:.5px;color:var(--ink-3);min-width:56px}
.cov-chip{font-family:var(--mono);font-size:11px;background:var(--green-soft);color:var(--green);border:1px solid var(--green-line);border-radius:6px;padding:1px 7px}
.cov-chip.gap{background:var(--red-soft);color:var(--red);border-color:var(--red-line)}
/* テスト実行 E2E手順グルーピング（T9） */
.ex-step{margin:0 0 10px}
.ex-steph{display:flex;gap:8px;align-items:center;padding:6px 10px;background:var(--line-2);border-left:3px solid var(--accent);border-radius:6px;margin:0 0 4px;font-size:12px}
.ex-steph .ex-code{font-family:var(--mono);font-weight:800;font-size:11px;background:var(--accent);color:#fff;border-radius:5px;padding:1px 7px}
/* T10 カバレッジ突合カード（設計画面・振り返り画面 共通） */
.cov-audit{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0 0 16px;background:var(--panel)}
.cov-audit-h{font-size:13px;font-weight:800;color:var(--ink);margin:0 0 10px}
.cov-audit-row{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 8px}
.cov-audit-metric{min-width:150px}
.cov-audit-metric .cl{font-size:10px;font-weight:800;letter-spacing:.5px;color:var(--ink-3);margin:0 0 2px}
.cov-audit-metric .vv{font-family:var(--mono);font-size:18px;font-weight:800}
/* テスト実行の証拠リンク（HISTORY・実行→証拠→閲覧のループ） */
.evi-link{display:inline-block;margin:0 6px 3px 0;padding:1px 7px;border:1px solid var(--line);border-radius:10px;font-size:10px;color:var(--accent);text-decoration:none;white-space:nowrap}
.evi-link:hover{background:var(--panel);border-color:var(--accent)}
.evi-link.gap{color:var(--red);border-color:var(--red);cursor:not-allowed}

/* ===== テスト実行 右パネル（実行専用・常時編集） ===== */
.ex-execarea{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:14px}
.ex-ea-ttl{font-size:12px;font-weight:800;color:var(--ink-2);margin-bottom:10px}
.ex-ea-field{margin-bottom:12px}
.ex-ea-field>label{display:block;font-size:11px;font-weight:700;color:var(--ink-3);margin-bottom:4px}
.ex-ea-field textarea,.ex-ea-field input[type=text]{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:6px;padding:7px 9px;font-size:13px;font-family:inherit;background:var(--panel)}
.ex-ea-field textarea:focus,.ex-ea-field input[type=text]:focus{outline:none;border-color:var(--accent)}
.ex-ea-ro{font-size:12px;color:var(--ink-2);background:var(--panel);border:1px dashed var(--line);border-radius:6px;padding:6px 9px}
/* 実行結果 大ボタン */
.exr-round-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.exr-rtab{display:inline-flex;align-items:center;gap:2px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--panel);font-size:12px;font-weight:700;color:var(--ink-2);cursor:pointer;transition:.12s}
.exr-rtab:hover{background:var(--line-2)}
.exr-rtab.on{border-color:var(--accent);background:var(--accent-soft,#EEF2FB);color:var(--accent,#2B4B8F)}
.exr-rtab-del{margin-left:4px;color:var(--ink-3);font-weight:700;border-radius:4px;padding:0 4px}
.exr-rtab-del:hover{color:var(--red);background:var(--red-soft)}
.exr-rtab-add{padding:5px 10px;border:1px dashed var(--line);border-radius:7px;background:var(--panel);font-size:12px;font-weight:700;color:var(--ink-3);cursor:pointer}
.exr-rtab-add:hover{border-color:var(--accent);color:var(--accent,#2B4B8F)}
.exr-bigbtns{display:flex;gap:6px;flex-wrap:wrap}
.exr-bigbtn{flex:1;min-width:64px;padding:10px 6px;border-radius:8px;border:1.5px solid var(--line);background:var(--panel);font-size:13px;font-weight:800;cursor:pointer;color:var(--ink-3);transition:.12s}
.exr-bigbtn:hover{border-color:var(--ink-3)}
.exr-bigbtn.on.ok{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.exr-bigbtn.on.ng{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.exr-bigbtn.on.blk{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}
.exr-bigbtn.on.hold{background:#EEF4FC;border-color:#3a6ea5;color:#3a6ea5}
.exr-bigbtn.on.oos{background:var(--line-2);border-color:var(--ink-3);color:var(--ink-3);text-decoration:line-through}
.exr-bigbtn.on.none{background:var(--line-2);border-color:var(--ink-3);color:var(--ink-2)}
/* エビデンス ドロップゾーン */
.ex-evi-drop{border:1.5px dashed var(--line);border-radius:8px;padding:12px;font-size:12px;color:var(--ink-3);text-align:center;background:var(--panel)}
.ex-evi-drop.drag{border-color:var(--accent);background:var(--red-soft)}
.ex-attach-lbl{color:var(--accent);font-weight:700;cursor:pointer;text-decoration:underline}
/* 読み取り専用 詳細 */
.ex-pd{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.ex-pd-row{display:flex;border-bottom:1px solid var(--line-2);font-size:12px}
.ex-pd-row:last-child{border-bottom:none}
.ex-pd-l{flex:0 0 120px;background:var(--bg);padding:7px 10px;font-weight:700;color:var(--ink-3)}
.ex-pd-v{flex:1;padding:7px 10px;color:var(--ink);white-space:pre-wrap}
/* 証跡 */
.ex-histbox{border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.ex-hist-row{display:flex;gap:8px;align-items:baseline;font-size:11px;padding:4px 0;border-bottom:1px solid var(--line-2)}
.ex-hist-row:last-child{border-bottom:none}
.ex-hist-at{flex:0 0 auto;color:var(--ink-3);font-size:10px}
.ex-hist-by{flex:0 0 auto;font-weight:700;color:var(--ink-2)}

/* 【全ページ共通】最上部へ／最下部へ スクロールボタン（画面右・常時表示）。
   勝手なスクロール移動は廃止し、移動はユーザーの意思でこのボタンから行う。 */
#scroll-nav{position:fixed;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px;z-index:300}
body.asst-open #scroll-nav{right:634px}   /* アシスタントドック展開中はドックの左へ退避（隠れ防止・2026-07-05） */
@media(max-width:1280px){body.asst-open #scroll-nav{right:14px}}
.scroll-nav-btn{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--card,#fff);color:var(--ink-2);font-size:20px;line-height:1;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.14);display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s}
.scroll-nav-btn:hover{background:var(--blue,#2563eb);color:#fff;border-color:var(--blue,#2563eb)}
.scroll-nav-btn:active{transform:scale(.94)}
@media(max-width:840px){#scroll-nav{right:10px;gap:8px}.scroll-nav-btn{width:38px;height:38px;font-size:18px}}

/* ===== GENZ品質OSアシスタント（ダイアログ） ===== */
.asst-open-btn{white-space:nowrap}
.asst-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line,#d8d8d8)}
.asst-title{font-size:16px;font-weight:700;color:var(--ink,#1f1f1f)}
.asst-x{border:none;background:none;font-size:16px;cursor:pointer;color:var(--ink-3,#888)}
.asst-sub{padding:10px 18px 0;font-size:12px;color:var(--ink-3,#6b6b6b);line-height:1.6}
.asst-agentrow{display:flex;align-items:center;gap:10px;padding:10px 18px;flex-wrap:wrap}
.asst-lbl{font-size:12px;font-weight:700;color:var(--ink-2,#333)}
.asst-select{padding:6px 10px;border:1px solid var(--line,#d8d8d8);border-radius:6px;font-size:13px}
.asst-hint{font-size:11px;color:var(--ink-3,#888)}
.asst-log{flex:1;overflow-y:auto;padding:12px 18px;background:var(--bg,#f8fafc);min-height:380px}
.asst-empty{font-size:12px;color:var(--ink-3,#888);line-height:1.7;padding:8px 0}
.asst-sys{text-align:center;font-size:11px;color:var(--ink-3,#888);margin:8px 0}
.asst-msg{margin:10px 0;display:flex;flex-direction:column}
.asst-msg.me{align-items:flex-end}
.asst-msg.ai{align-items:flex-start}
.asst-meta{font-size:10px;color:var(--ink-3,#888);margin-bottom:2px}
.asst-at{color:var(--ink-3,#aaa)}
.asst-bubble{max-width:92%;padding:8px 12px;border-radius:10px;font-size:13px;line-height:1.6}
.asst-msg.me .asst-bubble{background:var(--red,#c00);color:#fff;border-bottom-right-radius:2px}
.asst-msg.ai .asst-bubble{background:#fff;border:1px solid var(--line,#d8d8d8);color:var(--ink,#1f1f1f);border-bottom-left-radius:2px}
.asst-inputrow{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--line,#d8d8d8)}
.asst-input{flex:1;resize:vertical;border:1px solid var(--line,#d8d8d8);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit}
.asst-send{border:none;background:var(--red,#c00);color:#fff;border-radius:8px;padding:0 18px;font-weight:700;cursor:pointer}
.asst-send:hover{background:#a00}
.asst-control:empty{display:none}
.asst-control{padding:0 18px}
.asst-ask{font-size:12px;color:var(--ink-2,#333);padding:8px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.asst-optbtn{border:1px solid var(--red,#c00);background:#fff;color:var(--red,#c00);border-radius:14px;padding:4px 12px;font-size:12px;cursor:pointer}
.asst-optbtn:hover{background:var(--red,#c00);color:#fff}
.asst-optbtn.ghost{border-color:var(--line,#d8d8d8);color:var(--ink-3,#888)}
.asst-optbtn.ghost:hover{background:var(--ink-3,#888);color:#fff}
/* アシスタント：表・添付 */
.asst-tbl{border-collapse:collapse;margin:6px 0;font-size:12px;width:100%}
.asst-tbl th,.asst-tbl td{border:1px solid var(--line,#d8d8d8);padding:5px 8px;text-align:left;vertical-align:top}
.asst-tbl th{background:var(--bg,#f4f4f4);font-weight:700}
.asst-attach{display:inline-flex;align-items:center;justify-content:center;width:38px;border:1px solid var(--line,#d8d8d8);border-radius:8px;cursor:pointer;font-size:16px;user-select:none}
.asst-attach:hover{background:var(--bg,#f4f4f4)}
.asst-attachrow{padding:0 18px;font-size:11px;color:var(--ink-3,#888);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.asst-attachrow:empty{display:none}
.asst-chip{background:#fff;border:1px solid var(--line,#d8d8d8);border-radius:12px;padding:2px 8px}
.asst-chip a{color:var(--red,#c00);cursor:pointer;margin-left:2px}

/* ===== アシスタント：右ドッキングパネル（2026-07-05 片本さん指示＝非モーダル化・ページを見ながら会話・画面遷移可） =====
   暗幕なし・右端固定。本文は body.asst-open で右余白を空ける（狭い画面は重ねる）。最小化＝右下のバーに畳む。 */
.asst-ov{position:fixed;top:0;right:0;bottom:0;width:min(620px,96vw);z-index:7500;display:flex;background:none}
.asst-shell{width:100%;height:100%;display:flex;background:#fff;border-radius:0;overflow:hidden;box-shadow:-10px 0 34px rgba(0,0,0,.16);border-left:1px solid var(--line,#d8d8d8)}
.asst-ov.min{top:auto;bottom:16px;right:16px;width:300px;height:50px}
.asst-ov.min .asst-shell{border-radius:12px;border:1px solid var(--line,#d8d8d8);box-shadow:0 8px 28px rgba(0,0,0,.2)}
.asst-ov.min .asst-side,.asst-ov.min .asst-log,.asst-ov.min .asst-control,.asst-ov.min .asst-attachrow,.asst-ov.min .asst-inputrow{display:none}
body.asst-open .main-area{margin-right:620px}
@media(max-width:1280px){body.asst-open .main-area{margin-right:0}}   /* 狭い画面はドックを重ねる（余白を取らない） */
.asst-side{width:150px;min-width:150px;background:#f7f8fa;border-right:1px solid var(--line,#d8d8d8);display:flex;flex-direction:column}
.asst-side-top{padding:14px}
.asst-newbtn{width:100%;border:1px solid var(--red,#c00);background:#fff;color:var(--red,#c00);border-radius:8px;padding:9px 0;font-weight:700;cursor:pointer;font-size:13px}
.asst-newbtn:hover{background:var(--red,#c00);color:#fff}
.asst-histttl{font-size:11px;color:var(--ink-3,#888);padding:4px 16px;font-weight:700}
.asst-hist{flex:1;overflow-y:auto;padding:4px 8px}
.asst-histempty{font-size:11px;color:var(--ink-3,#aaa);padding:10px 8px}
.asst-histitem{padding:8px 10px;border-radius:8px;cursor:pointer;margin-bottom:2px}
.asst-histitem:hover{background:#eceff3}
.asst-histitem.cur{background:#e9edf3}
.asst-histt{font-size:12px;color:var(--ink,#1f1f1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asst-histm{font-size:10px;color:var(--ink-3,#999);margin-top:1px}
.asst-main{flex:1;display:flex;flex-direction:column;min-width:0}
.asst-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line,#d8d8d8)}
.asst-title{font-size:15px;font-weight:700;color:var(--ink,#1f1f1f)}
.asst-headright{display:flex;align-items:center;gap:10px}
.asst-x{border:none;background:none;font-size:16px;cursor:pointer;color:var(--ink-3,#888)}
.asst-select{padding:6px 10px;border:1px solid var(--line,#d8d8d8);border-radius:6px;font-size:13px}
.asst-log{flex:1;overflow-y:auto;padding:14px 18px;background:var(--bg,#f8fafc)}
.asst-empty{font-size:12px;color:var(--ink-3,#888);line-height:1.8;padding:8px 0}
.asst-sys{text-align:center;font-size:11px;color:var(--ink-3,#888);margin:8px 0}
.asst-msg{margin:12px 0;display:flex;flex-direction:column}
.asst-msg.me{align-items:flex-end}
.asst-msg.ai{align-items:flex-start}
.asst-meta{font-size:10px;color:var(--ink-3,#888);margin-bottom:2px}
.asst-at{color:var(--ink-3,#aaa)}
.asst-bubble{max-width:92%;padding:9px 13px;border-radius:10px;font-size:13px;line-height:1.7}
.asst-msg.me .asst-bubble{background:var(--red,#c00);color:#fff;border-bottom-right-radius:2px}
.asst-msg.ai .asst-bubble{background:#fff;border:1px solid var(--line,#d8d8d8);color:var(--ink,#1f1f1f);border-bottom-left-radius:2px}
.asst-control:empty{display:none}
.asst-control{padding:0 18px}
.asst-ask{font-size:12px;color:var(--ink-2,#333);padding:8px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.asst-optbtn{border:1px solid var(--red,#c00);background:#fff;color:var(--red,#c00);border-radius:14px;padding:4px 12px;font-size:12px;cursor:pointer}
.asst-optbtn:hover{background:var(--red,#c00);color:#fff}
.asst-optbtn.ghost{border-color:var(--line,#d8d8d8);color:var(--ink-3,#888)}
.asst-attachrow{padding:0 18px 4px;font-size:11px;color:var(--ink-3,#888);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.asst-attachrow:empty{display:none}
.asst-chip{background:#fff;border:1px solid var(--line,#d8d8d8);border-radius:12px;padding:2px 8px}
.asst-chip a{color:var(--red,#c00);cursor:pointer;margin-left:2px}
.asst-inputrow{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--line,#d8d8d8);align-items:flex-end}
.asst-attach{display:inline-flex;align-items:center;justify-content:center;width:40px;height:38px;border:1px solid var(--line,#d8d8d8);border-radius:8px;cursor:pointer;font-size:16px;user-select:none}
.asst-attach:hover{background:var(--bg,#f4f4f4)}
.asst-input{flex:1;resize:vertical;border:1px solid var(--line,#d8d8d8);border-radius:8px;padding:9px 11px;font-size:13px;font-family:inherit}
.asst-send{border:none;background:var(--red,#c00);color:#fff;border-radius:8px;padding:0 20px;height:38px;font-weight:700;cursor:pointer}
.asst-send:hover{background:#a00}
.asst-tbl{border-collapse:collapse;margin:6px 0;font-size:12px;width:100%}
.asst-tbl th,.asst-tbl td{border:1px solid var(--line,#d8d8d8);padding:5px 8px;text-align:left;vertical-align:top}
.asst-tbl th{background:var(--bg,#f4f4f4);font-weight:700}


/* ===== 一覧のスクロール追従（全成果物共通の標準）＝行数が多くてもタイトル部を見失わない =====
   position:sticky のみで実現（スクロール監視なし）。固定位置はトップバー実高さから _applyStickyOffsets（00_core）が
   CSS変数（--stk0/--stk1/--stk2/--stk1t）へ実測反映する。詳細ページはスティッキー・タイトルバーの下に列見出しが
   収まるよう、描画時にページ要素へ --stk-th を上書きする。 */
:root{--stk0:60px}
/* A. 列見出しの固定（.tablewrap 直下のテーブル＝標準の一覧すべて。入れ子の子テーブルは対象外） */
.tablewrap>table>thead th{position:sticky;top:var(--stk-th,var(--stk0));background:var(--panel);z-index:5;box-shadow:0 1px 0 var(--line)}
/* B-1. テスト実行一覧：工程ヘッダ→仕様書ヘッダ→列見出しの積み重ね固定 */
.ex-lh{position:sticky;top:var(--stk0);z-index:8}
.ex-sh{position:sticky;top:var(--stk1,calc(var(--stk0) + 42px));z-index:7}
#page-texec .tablewrap>table>thead th{top:var(--stk2,calc(var(--stk0) + 90px))}
/* B-2. テスト設計一覧：工程ヘッダ→列見出しの積み重ね固定（仕様書＝行のため2段） */
.td-levelhead{position:sticky;top:var(--stk0);z-index:8}
.td-levelbody>table>thead th{position:sticky;top:var(--stk1t,calc(var(--stk0) + 42px));background:var(--panel);z-index:5;box-shadow:0 1px 0 var(--line)}
/* C. 一括操作バー（選択時に現れる .bulkbar）＝全ページ共通で画面上部に固定（大量行の一括操作をスクロール位置に依らず可能に） */
.bulkbar{position:sticky;top:var(--stk0);z-index:9}


/* ===== タスク・指示カンバン（第2段） ===== */
.tk-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
.tk-col{background:var(--line-2);border-radius:10px;padding:8px;min-height:140px}
.tk-col.dragover{outline:2px dashed var(--accent);outline-offset:-4px}
.tk-colh{font-size:12px;font-weight:800;color:var(--ink-2);margin:2px 4px 8px;display:flex;justify-content:space-between}
.tk-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px 11px;margin-bottom:8px;cursor:grab;font-size:12px}
.tk-card:hover{border-color:var(--ink-3);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.tk-card.doing{border:2px solid var(--accent)}
@media(max-width:1100px){.tk-board{grid-template-columns:1fr}}

/* ===== テスト計画ページ刷新（2026-07-05・提案5＋§5統合） ===== */
.tp-hero{display:flex;align-items:center;gap:18px;background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:14px 18px;margin:0 0 14px}
.tp-hero-ttl{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:7px}
.tp-hero-chips{display:flex;gap:8px;flex-wrap:wrap}
.hchip{font-size:11.5px;color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:16px;padding:3px 11px;cursor:pointer;transition:border-color .12s}
.hchip:hover{border-color:var(--ink-3)}
.hchip b{color:var(--ink);margin-left:2px}
.hchip.warn{border-color:var(--red);color:var(--red)} .hchip.warn b{color:var(--red)}
.tp-shell{display:grid;grid-template-columns:186px 1fr;gap:20px;align-items:start}
.tp-nav{position:sticky;top:calc(var(--stk0,58px) + 10px);background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:8px 6px;max-height:calc(100vh - var(--stk0,58px) - 28px);overflow-y:auto}
.tpnav-i{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-2);padding:6px 9px;border-radius:8px;cursor:pointer;line-height:1.4}
.tpnav-i:hover{background:rgba(0,0,0,.04)}
.tpnav-i.on{background:rgba(140,31,40,.08);color:var(--ink);font-weight:700}
.tpnav-i b{margin-left:auto;font-size:10px;color:var(--ink-3);font-weight:600}
.tpnav-lab{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpnav-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;border:1.5px solid var(--ink-3);background:transparent}
.tpnav-dot.full{background:#0a7d3c;border-color:#0a7d3c}
.tpnav-dot.part{background:linear-gradient(90deg,#c47b0a 50%,transparent 50%);border-color:#c47b0a}
.tpnav-dot.na{border-color:var(--line)}
.tp-sec{scroll-margin-top:calc(var(--stk0,58px) + 8px)}   /* 着地位置＝固定トップバー実高さ（_applyStickyOffsets実測）を避ける */
#page-testplan .revcard{scroll-margin-top:calc(var(--stk0,58px) + 8px)}   /* 工程ステッパーからの詳細ジャンプも同様 */
#page-trace #req-list{scroll-margin-top:calc(var(--stk0,58px) + 8px)}
/* テスト仕様書詳細の左固定目次（2026-07-05）：このページはトップバー＋仕様書スティッキーバーの二段吊りのため --stk-th 基準 */
#page-tdesign-detail h2{scroll-margin-top:calc(var(--stk-th,var(--stk0,58px)) + 8px)}
#page-tdesign-detail .tp-nav{top:calc(var(--stk-th,var(--stk0,58px)) + 10px);max-height:calc(100vh - var(--stk-th,58px) - 28px)}
.tp-empty{border:1.5px dashed var(--line);border-radius:9px;padding:10px 13px;font-size:12px;color:var(--ink-3);cursor:pointer;transition:all .12s;background:rgba(0,0,0,.015)}
.tp-empty:hover{border-color:var(--red);color:var(--red);background:rgba(140,31,40,.03)}
.tp-steps{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;margin:4px 0 12px}
.tp-step{flex:1;min-width:120px;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:9px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:box-shadow .15s,transform .15s}
.tp-step:hover{box-shadow:0 3px 12px rgba(0,0,0,.09);transform:translateY(-1px)}
.tp-step.on{border-top:3px solid var(--red)}
.tp-step.off{opacity:.5;border-top:3px solid var(--line)}
.tp-step-id{font-size:10px;font-weight:800;color:var(--red);letter-spacing:.04em}
.tp-step.off .tp-step-id{color:var(--ink-3)}
.tp-step-nm{font-size:12.5px;font-weight:700;color:var(--ink)}
.tp-step-dt{font-size:10px;color:var(--ink-3);font-family:var(--mono)}
.tp-step-fill{font-size:9px;color:#0a7d3c;letter-spacing:2px}
.tp-step-sep{align-self:center;color:var(--ink-3);font-size:15px;font-weight:700;flex:0}
@media(max-width:1020px){.tp-shell{grid-template-columns:1fr}.tp-nav{position:static;display:flex;flex-wrap:wrap;max-height:none}}

/* ===== 汎用モーダル（_rvShowModal＝レビュー・資料カタログ・パース履歴・読取注意一覧などが共用） =====
   2026-07-06 片本さん報告の是正：このCSSが失われておりモーダルが浮かずページ最下部へ生表示されていた。 */
.rv-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9500;display:flex;align-items:center;justify-content:center}
.rv-modal{background:#fff;border-radius:12px;width:min(640px,92vw);max-height:82vh;overflow:auto;padding:20px 24px 16px;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.rv-modal h3{margin:0 0 10px;font-size:16px}
.rv-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}

/* 実行中ピルの視認性強化（2026-07-06 片本さん指示＝目立たない・実行中と分かるように） */
@keyframes gz-pill-pulse{0%,100%{box-shadow:0 0 0 0 rgba(192,32,32,.35)}50%{box-shadow:0 0 0 6px rgba(192,32,32,0)}}
@keyframes gz-pill-spin{to{transform:rotate(360deg)}}
#job-pill.running{background:#fdf0ef;border:1px solid #e5b8b4;border-left:4px solid var(--red,#c02020);animation:gz-pill-pulse 1.6s ease-in-out infinite;font-weight:600;color:#8a1f1a}
#job-pill .gz-spin{display:inline-block;width:13px;height:13px;border:2px solid #e5b8b4;border-top-color:var(--red,#c02020);border-radius:50%;animation:gz-pill-spin .9s linear infinite;flex-shrink:0}
