/* 接続図(実物の絵。rig.js)。単位は SVG の中が mm。色はページの明るい紙の地に合わせる(2026-09-27。筐体・刻印の色は faces.js)。
   ページ(index.html)が body に .simple を付けている間(「シンプル」表示)は、端子名・Maestro の札など細かい表示を隠す */
.rig { position: relative; }
.rig-bar { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; margin: 2px 0 6px; font-size: 12.5px; }
.rig-state { color: var(--dim); }
.rig-state.ok { color: var(--ok); }
.rig-state.bad { color: var(--warn); font-weight: 600; }
.rig-reset { padding: 3px 10px; font-size: 12px; }
.rig-warn {
  background: var(--warn-bg); border: 1px solid var(--warn-line); color: var(--warn-ink); border-radius: 10px;
  padding: 8px 12px; margin: 0 0 8px; font-size: 13px;
}
.rig-warn ul { margin: 4px 0 4px; padding-left: 18px; }
.rig-warn li { margin: 2px 0; }
.rig-warn small { color: var(--warn-dim); }
/* ステージはページの地そのもの(別の色の箱にしない。2026-09-27) */
.rig-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; background: transparent; }
/* ステージ: 絵(SVG)の下の層にページの生きた天面(.rig-live の .top = 有機EL・ノブ・LED)。絵の地はポインタを素通しし、
   描いた物(側面・ケーブル・プラグ・札・EL の箱)だけが指を受ける。大きさ(1mm = s 画素)はページが setScale で決める */
.rig-canvas { position: relative; margin: 0 auto; }
.rig-live { position: absolute; inset: 0; }
svg.rig-svg { position: absolute; left: 0; top: 0; display: block; width: 100%; height: 100%; touch-action: pan-x pan-y;
  user-select: none; pointer-events: none; overflow: visible; }
svg.rig-svg > g { pointer-events: visiblePainted; }
.rig-dev .rig-top { cursor: pointer; }
.rig-el { cursor: pointer; }
.rig-selbox { fill: none; stroke: transparent; stroke-width: 1; pointer-events: none; }
.rig-dev.sel .rig-selbox { stroke: var(--accent); stroke-width: 1.1; stroke-dasharray: 3 1.6; }
svg.rig-svg text { font-family: var(--font-ui); }
.rig-name { fill: var(--ink); font-size: 6px; font-weight: 600; letter-spacing: .1px; }
.rig-shadow { fill: rgba(70, 50, 30, .08); }
.rig-dev.off { opacity: .5; }
.rig-ledglow { pointer-events: none; }
.rig-flap { cursor: zoom-in; }
.rig-decal { fill: #4a4f58; font-size: 2.6px; font-weight: 600; letter-spacing: .05px; }
/* ジャックの枠: ふだんは見えない。ドラッグ中は挿せる所(点線)・いま挿す所(塗り)、規則に当たる所は赤 */
.rig-jack { fill: none; stroke: transparent; stroke-width: .6; pointer-events: none; }
.rig-jack.can { stroke: var(--accent); stroke-dasharray: 1.6 1.2; }
.rig-jack.hot { stroke: var(--accent); stroke-width: 1.2; fill: rgba(142, 42, 51, .22); stroke-dasharray: none; }
.rig-jack.bad { stroke: var(--warn); stroke-width: 1.1; stroke-dasharray: none; }
/* ケーブル(2026-09-27): **1本の Cat5e = 1本の実線**。色 = どの EL の線か(0 = どの EL にも決まらない線)。
   下に紙の色の縁(casing)を敷いて、線どうし・機の縁から浮かせる。点線は「抜いた」線だけ、赤は成立しないつなぎ方 */
.rig-cable path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.rig-cable .casing { stroke: var(--stage-bg); }
.rig-cable .jacket { stroke: var(--cab0); }
.rig-cable.col1 .jacket { stroke: var(--cab1); }
.rig-cable.col2 .jacket { stroke: var(--cab2); }
.rig-cable.col3 .jacket { stroke: var(--cab3); }
.rig-cable.col4 .jacket { stroke: var(--cab4); }
.rig-cable.din .jacket { stroke-linecap: butt; }
/* バイトが通った瞬間に光る点線(「全体」表示のときだけ): 下り(EL から)= 白 / 上り(EL へ)= 墨 */
.rig-cable .flow { stroke-width: 1.3; opacity: 0; stroke-dasharray: 3 3; pointer-events: none; }
.rig-cable .flow.down { stroke: var(--wire-act); }
.rig-cable .flow.up { stroke: var(--wire-up); stroke-dashoffset: 3; }
.rig-cable .flow.act { opacity: .95; }
.simple .rig-cable .flow { display: none; }
.rig-cable .hit { stroke: transparent; stroke-width: 9; cursor: pointer; pointer-events: stroke; }
.rig-cable.cut .jacket { stroke-dasharray: 3 2.4; opacity: .7; }
.rig-cable.cut .casing { opacity: .6; }
.rig-cable.bad .jacket { stroke: var(--warn); }
.rig-cable.dragging { opacity: .35; }
/* 1本を強調(マウスを乗せる / 指で1回押す): その線と両端のプラグ・端子を明るく、他を薄く */
.hl-on .rig-cable:not(.hot) { opacity: .18; }
.hl-on .rig-plug:not(.hot) { opacity: .3; }
.rig-cable.hot .jacket { filter: none; stroke-width: 4.6; }
.rig-jack.lit { stroke: var(--accent); stroke-width: 1.2; stroke-dasharray: none; fill: rgba(142, 42, 51, .12); }
.rig-el circle.rig-jack.lit { stroke: var(--accent); stroke-width: 1.4; }
.rig-dragline { fill: none; stroke: var(--accent); stroke-width: 1.4; stroke-dasharray: 3 2; pointer-events: none; }
/* プラグ(2026-09-28。上から見た姿をケーブルの向きに寝かせる。rig.js の plugArt)とジャックの口(正面。socketArt)。
   ブーツはケーブルと同じ色(どの EL の線か)。抜いた = 口から離れて傾き、線は点線、✂ の印(赤ではない)/
   挿し違え(規則に当たる)= 赤い縁と赤い線 */
.rig-plug { cursor: grab; }
.rig-plug:active { cursor: grabbing; }
.rig-plug path, .rig-plug rect, .rig-miplug path, .rig-miplug rect { vector-effect: none; }
.p-cat .clear { fill: rgba(226, 238, 242, .72); stroke: #7f9aa3; stroke-width: .3; }
.p-cat .wire { stroke-width: .5; opacity: .55; }
.p-cat .gold, .rig-socket .gold { fill: #d9a93a; stroke: #8a6a1c; stroke-width: .1; }
.p-cat .latch { fill: rgba(240, 247, 249, .8); stroke: #7f9aa3; stroke-width: .28; }
.p-cat .glint { stroke: rgba(255, 255, 255, .9); stroke-width: .5; fill: none; }
.rig-plug .boot { fill: var(--cab0); stroke: rgba(0, 0, 0, .35); stroke-width: .25; }
.rig-plug.col1 .boot { fill: var(--cab1); } .rig-plug.col2 .boot { fill: var(--cab2); }
.rig-plug.col3 .boot { fill: var(--cab3); } .rig-plug.col4 .boot { fill: var(--cab4); }
.rig-plug .rib { stroke: rgba(0, 0, 0, .28); stroke-width: .3; fill: none; }
.p-din .grip { fill: #2e2a27; stroke: #151311; stroke-width: .25; }
.p-din .rib { stroke: rgba(255, 255, 255, .13); }
.p-din .shell, .p-phone .shaft, .p-mini .shaft { fill: #d4d3cf; stroke: #6f6c66; stroke-width: .25; }
.p-din .shine, .p-phone .shine, .p-mini .shine { stroke: rgba(255, 255, 255, .85); stroke-width: .6; fill: none; }
.p-din .key { stroke: #8d8a84; stroke-width: .35; }
.p-phone .ring, .p-mini .ring { fill: #1d1b19; }
.p-phone .barrel, .p-mini .barrel { fill: #34302c; stroke: #151311; stroke-width: .25; }
.rig-miplug .grip { fill: #f4f1ea; stroke: #7d756b; }
.rig-miplug .boot { fill: #e9e5dc; stroke: #9b9184; }
.rig-miplug .rib { stroke: rgba(0, 0, 0, .12); }
.rig-cutmark { display: none; pointer-events: none; }
.rig-cutmark circle { fill: #fffdf8; stroke: #8f867a; stroke-width: .35; }
.rig-cutmark text { fill: #5d554c; font-size: 4px; font-weight: 700; }
.rig-plug.cut .rig-cutmark { display: inline; }
.rig-plug.cut > g:first-child { opacity: .92; }
.rig-plug.bad .boot, .rig-plug.bad .clear, .rig-plug.bad .grip, .rig-plug.bad .barrel { stroke: var(--warn); stroke-width: 1; }
/* ジャックの口: 金属のシールド / 輪、暗い口、金の接点・ピン */
.rig-socket { pointer-events: none; }
.rig-socket .shield { fill: #cfcecb; stroke: #6f6c66; stroke-width: .3; }
.rig-socket .nut { fill: #b9b7b2; stroke: #85827c; stroke-width: .2; }
.rig-socket .mouth { fill: #1c1a18; }
.rig-socket .pin { fill: #d9a93a; }
.rig-socket .led { stroke: #8fae7a; stroke-width: .9; fill: none; opacity: .6; }
/* Ghost の音声の線(3.5mm → 標準 2 本の分岐)。黒い細い線。挿していない間は分岐の先が Ghost の横に置いてある */
.rig-cable.aud .jacket { stroke: #3b3733; }
.rig-audio { pointer-events: none; }
.rig-audio .rig-aplug[data-aud] { pointer-events: visiblePainted; cursor: grab; }
.rig-aplug .boot { fill: #3b3733; stroke: rgba(0, 0, 0, .4); stroke-width: .25; }
.rig-audhint { fill: var(--dim); font-size: 3.2px; font-weight: 600; }
.simple .rig-audhint { display: none; }
/* 仮想EL の箱(鍵盤の絵 + 背面の MIDI 端子)と Maestro のポートの役目 */
/* EL = ELS-02 を正面から見た線画(rig.js の drawEl。2026-09-28)。紙の地に墨の細い罫: 外形 .4 / 中の区切り .25 / 小さな
   ボタン .2(AX-Edge の胴・置き場の点線と同じ太さの並び)。側板だけ少し濃い紙で奥行きを付ける。黒鍵は墨。
   端子の板は金属の灰(前のまま)。rect.body は選んだ枠・親の枠(中は透明) */
.rig-el rect.body { fill: transparent; stroke: transparent; stroke-width: .4; filter: none; }
.rig-els02 { --elf-ink: #3b342f; }
.rig-els02 .cab { fill: #fdfbf6; stroke: var(--elf-ink); stroke-width: .4; }
.rig-els02 .side { fill: #ebe5da; stroke: var(--elf-ink); stroke-width: .4; }
.rig-els02 .seam { fill: none; stroke: var(--elf-ink); stroke-width: .3; }
.rig-els02 .sw { fill: #f3efe7; stroke: var(--elf-ink); stroke-width: .2; }
.rig-els02 .scrframe { fill: #f3efe7; stroke: var(--elf-ink); stroke-width: .3; }
.rig-els02 .scr { fill: #d9dfe1; stroke: var(--elf-ink); stroke-width: .25; }
.rig-els02 .dial { fill: #fdfbf6; stroke: var(--elf-ink); stroke-width: .25; }
.rig-els02 .blank { fill: #f6f2eb; stroke: var(--elf-ink); stroke-width: .25; }
.rig-els02 .slip { fill: #e4ded3; stroke: var(--elf-ink); stroke-width: .2; }
.rig-els02 .flap { fill: #d8d4cc; stroke: #9b9387; stroke-width: .3; }
.rig-el .rig-kbd.sparse .bed { fill: #fff; stroke: var(--elf-ink); stroke-width: .25; }
.rig-el .rig-kbd.sparse .wk { stroke: none; }
.rig-el .rig-kbd.sparse .oct { fill: none; stroke: var(--elf-ink); stroke-width: .18; }
.rig-el .rig-kbd.sparse .bk { fill: var(--elf-ink); }
.rig-el.parent rect.body { stroke: var(--accent); stroke-width: 1.1; }
.rig-el .rig-eljackname { fill: #2b2724; stroke: #f4f1ea; stroke-width: .7; paint-order: stroke; stroke-linejoin: round; }
.rig-el.sel rect.body { stroke: var(--accent); stroke-width: 1.2; stroke-dasharray: 3 1.6; }
.rig-kbd .bed { fill: #fff; stroke: #8f867a; stroke-width: .35; }
.rig-kbd .wk { stroke: #a79e91; stroke-width: .25; fill: #fff; }
.rig-kbd .bk { fill: #2b2724; }
/* 押されている鍵(EL = 受けたノート / AX-Edge = 押している鍵)。えんじ */
.rig-kbd .wk.on { fill: #e7b9bd; }
.rig-kbd .bk.on { fill: var(--accent); }
/* AX-Edge(ショルダーキーボード)と mi.1 Cable(2026-09-28)。無線は点線 + 電波の弧(Cat5e の実線と見分ける) */
.rig-ax .neck { fill: #2c2926; stroke: #111; stroke-width: .3; }
.rig-ax .head { fill: #1f1d1b; }
.rig-ax .ribbon { fill: #7d766c; stroke: #3a3632; stroke-width: .2; }
.rig-ax .nbtn { fill: #c9c3b9; }
.rig-ax .modbar { fill: #8d857b; }
.rig-ax .body { fill: #f4f2ed; stroke: #9f968a; stroke-width: .45; }
.rig-ax .blade { fill: #b8323b; stroke: #6d1b21; stroke-width: .3; }
.rig-ax .knob { fill: #37332f; stroke: #111; stroke-width: .2; }
.rig-ax .disp { fill: #1e2a33; }
.rig-ax .btns { fill: #9f968a; }
.rig-ax .mi-black { fill: #26221f; stroke: #111; stroke-width: .3; }
.rig-misub { fill: var(--dim); font-size: 3.4px; font-weight: 600; }
.rig-mi1 { pointer-events: none; }
.rig-mi1 .mi-white { fill: #fdfcf8; stroke: #9b9184; stroke-width: .45; }
.rig-mi1 .lead { fill: none; stroke: #e9e5dc; stroke-width: 3; stroke-linecap: round; }
.rig-mi1 .pwr { fill: none; stroke: #8f867a; stroke-width: .8; stroke-linejoin: round; }
.rig-air { pointer-events: none; }
.rig-air .wave { fill: none; stroke: var(--blue); stroke-width: .7; stroke-dasharray: 1.4 1.6; }
.rig-air .arc { fill: none; stroke: var(--blue); stroke-width: .6; stroke-linecap: round; }
.rig-air .ble { fill: var(--blue); font-size: 3.2px; font-weight: 700; letter-spacing: .1em; }
.rig-air .x { fill: var(--warn); font-size: 5px; font-weight: 700; opacity: 0; }
.rig-air.act .wave { stroke-width: 1.2; stroke-dasharray: none; }
.rig-air.off .wave, .rig-air.off .arc { stroke: #b9b1a5; }
.rig-air.off .ble { fill: #b9b1a5; }
.rig-air.off .x { opacity: 1; }
.rig-el circle.rig-jack { fill: none; stroke: transparent; stroke-width: .5; }
.rig-el circle.rig-jack.can, .rig-el circle.rig-jack.hot { stroke: var(--accent); stroke-width: 1.2; }
.rig-el circle.rig-jack.bad { stroke: var(--warn); stroke-width: 1.2; }
.rig-elname { fill: var(--ink); font-size: 5.6px; font-weight: 600; letter-spacing: .2px; }
.rig-elrole { fill: var(--accent); font-size: 4.6px; font-weight: 600; }
.rig-elsub { fill: var(--dim); font-size: 3.2px; }
.rig-eljackname { fill: var(--dim); font-size: 3.4px; font-weight: 600; }
/* EL の BAR / BEAT の窓(2026-09-28): 操作盤と同じ部品(elpanel.js の lcdSvg。色と字は elpanel.css の .ellcd と
   .ellcd-vars)を EL の箱の真上に。押すと箱と同じく EL を選ぶ。「シンプル」表示でも出す */
.rig-ellcd { cursor: pointer; }
/* 使っていない EL の置き場(点線の枠と +。押すと EL の数を増やす) */
.rig-elslot { cursor: pointer; }
.rig-elslot rect { fill: rgba(255, 255, 255, .25); stroke: #c3b8a7; stroke-width: .45; stroke-dasharray: 2 1.6; }
.rig-elslot .plus { stroke: #a89c8a; stroke-width: .7; stroke-linecap: round; fill: none; }
.rig-elslot .rig-slotname { fill: #a89c8a; font-size: 4.6px; letter-spacing: .2px; }
.rig-elslot:hover rect { stroke: var(--accent); fill: rgba(142, 42, 51, .05); }
.rig-elslot:hover .plus { stroke: var(--accent); }
.rig-port rect { fill: rgba(255, 253, 248, .92); stroke: #cfc5b6; stroke-width: .25; }
.rig-port text { fill: var(--dim); font-size: 3.8px; }
.rig-port.m text { fill: var(--accent); font-weight: 700; }
.rig-port.g text { fill: var(--ok); font-weight: 600; }
/* 「シンプル」表示: 細かい表示を隠す(絵・ケーブル・プラグはそのまま) */
.simple .rig-port, .simple .rig-eljackname, .simple .rig-elsub { display: none; }
/* 側面の拡大(刻印を読む)。重ねて出すだけで指は奪わない(留めたときだけ閉じるボタンを押せる) */
.rig-zoom {
  position: absolute; right: 8px; top: 64px; z-index: 5; width: min(560px, calc(100% - 16px));
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 8px 10px 6px;
  box-shadow: 0 10px 30px rgba(60, 40, 20, .18); pointer-events: none;
}
.rig-zoom.atleft { right: auto; left: 8px; }
.rig-zoom.pinned { pointer-events: auto; }
.rig-zhead { display: flex; gap: 8px; align-items: baseline; font-size: 12.5px; color: var(--dim); }
.rig-zhead b { color: var(--ink); }
.rig-zclose { margin-left: auto; padding: 0 8px; line-height: 1.5; }
.rig-zoom:not(.pinned) .rig-zclose { visibility: hidden; }
svg.rig-zsvg { display: block; width: 100%; height: auto; margin-top: 4px; }
svg.rig-zsvg .z1 { fill: var(--ink); font-size: 3.2px; font-weight: 650; }
svg.rig-zsvg .z2 { fill: var(--accent); font-size: 3.2px; }
svg.rig-zsvg .zl { stroke: #b3a999; stroke-width: .25; }
.rig-zsrc { color: var(--dim); font-size: 11px; margin-top: 2px; word-break: break-all; }
/* 挿す手順(ステージのページで出す) */
.rig-stepsbox { margin-top: 6px; font-size: 13px; }
.rig-stepsbox summary { color: var(--dim); cursor: pointer; }
.rig-steps { margin: 6px 0 0; padding-left: 22px; font-size: 13px; color: var(--ink); columns: 2 26em; column-gap: 28px; }
.rig-steps li { break-inside: avoid; margin: 2px 0; }
.rig-steps li.bad { color: var(--warn); }
.rig-steps .kind { display: inline-block; font-size: 11px; color: var(--dim); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; margin-right: 2px; }
@media (max-width: 640px) {
  .rig-steps { columns: 1; font-size: 12.5px; }
}
