:root {
  color-scheme: dark;
  --bg:#091017;--panel:#101923;--panel2:#16222e;--panel3:#1d2b38;--line:#2b3b49;
  --text:#e8eef4;--muted:#8fa1b1;--blue:#39bdf8;--green:#38d083;--yellow:#f5bd48;
  --red:#ff6470;--orange:#ff8a4d;--a:#ffd84d;--b:#39d4a8;--c:#ff6170;--n:#55aaff;
  font-family:Inter,"Microsoft YaHei","PingFang SC",system-ui,sans-serif;
}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;background:var(--bg);color:var(--text)}button,input,select{font:inherit;color:inherit}button{cursor:pointer}
.topbar{height:58px;display:flex;align-items:center;gap:18px;padding:0 16px;border-bottom:1px solid var(--line);background:#0c141d}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{margin:0;font-size:17px}.brand span{font-size:10px;color:var(--muted)}.header-status{margin-left:auto;padding:5px 10px;border-radius:99px;font-size:10px;border:1px solid}.header-status.normal,.badge.normal{color:var(--green);border-color:#286b4c;background:#102a20}.header-status.warning,.badge.warning{color:var(--yellow);border-color:#705a26;background:#2b2413}.header-status.danger,.badge.danger{color:var(--red);border-color:#71313a;background:#2c171b}.top-actions{display:flex;gap:6px}.top-actions button,.file-button{padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);font-size:11px}.file-button{position:relative;overflow:hidden;cursor:pointer}.file-button input{position:absolute;inset:0;opacity:0}
.layout{height:calc(100vh - 58px);display:grid;grid-template-columns:232px minmax(520px,1fr) 326px;min-width:980px}.left-panel{border-right:1px solid var(--line)}.right-panel{border-left:1px solid var(--line)}.panel-scroll{overflow-y:auto;background:#0e1720;scrollbar-color:#314758 #0e1720}.panel-block{border-bottom:1px solid var(--line)}.panel-block.compact{padding:12px}.panel-block h2{font-size:12px;margin:0 0 9px}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.heading-row h2{margin:0}.badge{padding:3px 7px;border:1px solid;border-radius:99px;font-size:9px}.hidden{display:none!important}.empty{color:var(--muted);font-size:10px;line-height:1.6}
.segmented{display:grid;gap:4px}.segmented.four{grid-template-columns:repeat(4,1fr)}.segmented button,.tool-grid button,.source-tabs button,.mini-tabs button,.view-actions button,.scenario-row button{border:1px solid var(--line);border-radius:6px;background:var(--panel2);font-size:10px;padding:7px 4px}.segmented button.active,.tool-grid button.active,.source-tabs button.active,.mini-tabs button.active{border-color:var(--blue);background:#103b54;color:#8edcff}.switch-row{display:flex;align-items:center;gap:9px;margin-top:9px;font-size:10px;color:var(--muted)}.switch-row label{display:flex;align-items:center;gap:3px}.switch-row input{accent-color:var(--blue)}.relay-state{margin-top:8px;padding:6px 8px;border-radius:5px;background:#0a1219;color:var(--green);font-size:9px}.tool-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.resistance-control{margin-top:10px}.resistance-control label{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.resistance-control output{color:var(--text);font-variant-numeric:tabular-nums}.resistance-control input{width:100%;accent-color:var(--yellow)}.range-labels{display:flex;justify-content:space-between;color:#607485;font-size:8px}.microcopy{margin:7px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.scenario-row{display:grid;grid-template-columns:1fr 48px;gap:5px}.scenario-row select{min-width:0;padding:7px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);font-size:10px}
.source-details{padding:0}.source-details summary{padding:12px;cursor:pointer;font-size:12px;font-weight:650}.source-details>div{margin:0 12px 10px}.source-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.source-tabs button{padding:6px 2px;font-size:9px}.setting-row{display:grid;grid-template-columns:30px 1fr 1fr;gap:5px;align-items:center;margin:6px 12px}.setting-row strong{font-size:10px}.number-field{position:relative}.number-field input{width:100%;padding:6px 19px 6px 5px;border:1px solid var(--line);border-radius:5px;background:#091119;font-size:10px}.number-field span{position:absolute;right:5px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:8px}.inspector-card{display:flex;flex-direction:column;gap:8px}.inspector-title{padding:7px;border-radius:5px;background:#091119;font-size:10px;word-break:break-all}.inspector-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.inspector-actions button{padding:6px 2px;border:1px solid var(--line);border-radius:5px;background:var(--panel2);font-size:9px}.inspector-actions button.active{border-color:var(--blue);color:var(--blue)}.delete-button{padding:7px;border:1px solid #71313a;border-radius:5px;background:#2c171b;color:var(--red);font-size:10px}
.canvas-panel{min-width:0;display:flex;flex-direction:column;background:#070d12}.canvas-toolbar{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;border-bottom:1px solid var(--line);background:#0d161f}.canvas-legend{display:flex;gap:12px;color:var(--muted);font-size:9px}.canvas-legend span{display:flex;align-items:center;gap:4px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot.normal{background:var(--green)}.dot.virtual{background:var(--yellow)}.dot.open{background:var(--red)}.view-actions{display:flex;align-items:center;gap:4px}.view-actions button{padding:4px 7px}.view-actions span{width:42px;text-align:center;color:var(--muted);font-size:9px}.canvas-viewport{position:relative;flex:1;overflow:hidden;cursor:grab;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:24px 24px}.canvas-viewport.panning{cursor:grabbing}.stage-transform{position:absolute;left:0;top:0;transform-origin:0 0}.wiring-stage{position:relative;width:1420px;height:1180px}.stage-column{position:absolute;top:28px;z-index:5}.source-column{left:20px;width:170px}.block-column-a{left:215px;width:280px}.block-column-b{left:520px;width:280px}.component-column{left:825px;width:255px}.device-column{left:1105px;width:280px}.stage-column>.card,.stage-column>.terminal-block{margin-bottom:16px}
.card,.terminal-block{border:1px solid #324859;border-radius:8px;background:rgba(18,29,39,.97);box-shadow:0 8px 24px rgba(0,0,0,.2);overflow:hidden}.card-title,.block-title{padding:7px 9px;border-bottom:1px solid #324859;background:#192734;font-size:10px;font-weight:700;letter-spacing:.04em}.card-subtitle{display:block;margin-top:2px;color:var(--muted);font-size:8px;font-weight:400}.port-list{padding:5px 7px}.bank-port{height:28px;display:flex;align-items:center;justify-content:space-between;gap:5px;border-bottom:1px solid rgba(77,99,117,.22)}.bank-port:last-child{border:0}.source-column .bank-port{flex-direction:row-reverse}.source-column .port-label{text-align:right}.port-label{display:flex;flex-direction:column;font-size:9px}.port-label small{color:var(--muted);font-size:7px}.port{position:relative;z-index:8;width:12px;height:12px;padding:0;border:2px solid #8299aa;border-radius:50%;background:#081018;cursor:crosshair}.port:after{content:"";position:absolute;inset:2px;border-radius:50%;background:#61788b}.port.phase-a:after{background:var(--a)}.port.phase-b:after{background:var(--b)}.port.phase-c:after{background:var(--c)}.port.phase-n:after{background:var(--n)}.port:hover,.port.drag-target{border-color:#fff;box-shadow:0 0 0 4px rgba(57,189,248,.2)}
.component-diagram{padding:7px}.component-row{display:grid;grid-template-columns:1fr 30px 1fr;align-items:center;min-height:27px;font-size:8px}.component-row .port:first-child{justify-self:end}.component-row .port:last-child{justify-self:start}.component-symbol{height:2px;background:#6e8799;position:relative}.component-symbol.closed{background:var(--green)}.component-symbol.open:after{content:"";position:absolute;width:16px;height:2px;right:0;background:var(--red);transform:rotate(-24deg);transform-origin:right}.component-label{text-align:center;color:var(--muted);font-size:7px;margin:3px 0}
.wire-layer{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;overflow:visible}.wire-path{fill:none;stroke:#71c7ef;stroke-width:2.5;stroke-linecap:round;pointer-events:stroke;cursor:pointer}.wire-path.short{stroke:var(--orange);stroke-width:3.5}.wire-path.virtual{stroke:var(--yellow);stroke-dasharray:7 4}.wire-path.selected{stroke:#fff;stroke-width:4}.wire-hit{fill:none;stroke:transparent;stroke-width:13;pointer-events:stroke}.wire-handle{pointer-events:all;cursor:grab;fill:#091119;stroke:#fff;stroke-width:2}.preview-wire{fill:none;stroke:var(--blue);stroke-width:2;stroke-dasharray:5 4}.fixed-wire{opacity:.82}
.fault-list{display:flex;flex-direction:column;gap:5px;margin-top:8px}.fault-item{display:grid;grid-template-columns:6px 1fr;gap:7px;padding:6px;border-radius:5px;background:#091119;font-size:9px}.fault-item i{width:6px;height:6px;margin-top:3px;border-radius:50%;background:var(--yellow)}.fault-item.danger i{background:var(--red)}.fault-item.good i{background:var(--green)}.fault-item strong{display:block;font-size:9px}.fault-item span{display:block;color:var(--muted);margin-top:1px;line-height:1.4}.phasor-chart{width:100%;height:auto;margin-top:8px;border-radius:6px;background:radial-gradient(circle,#14222d,#080f15)}.mini-tabs{display:flex;gap:2px}.mini-tabs button{padding:4px 7px}.data-table{width:100%;border-collapse:collapse;font-size:9px;font-variant-numeric:tabular-nums}.data-table th{padding:6px 3px;color:var(--muted);font-weight:500;text-align:left;border-bottom:1px solid var(--line)}.data-table td{padding:6px 3px;border-bottom:1px solid rgba(55,75,91,.45);white-space:nowrap}.ok{color:var(--green)}.warn{color:var(--yellow)}.bad{color:var(--red)}.toast{position:fixed;left:50%;bottom:18px;z-index:30;transform:translate(-50%,15px);opacity:0;padding:8px 12px;border:1px solid #476173;border-radius:6px;background:#15232e;font-size:10px;transition:.18s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1180px){.layout{grid-template-columns:215px minmax(460px,1fr) 292px}.right-panel{font-size:9px}}

/* User-supplied layered terminal assets. */
.wiring-stage{width:var(--stage-w,1520px);height:var(--stage-h,1900px)}
.block-column-a{left:var(--block-a-x,210px);top:var(--block-a-y,28px);width:calc(var(--face-w,344px) + var(--wire-w,140px) + var(--wire-w,140px))}.block-column-b{left:var(--block-b-x,850px);top:var(--block-b-y,28px);width:calc(var(--face-w,344px) + var(--wire-w,140px) + var(--wire-w,140px))}.source-column{left:var(--source-x,20px);top:var(--source-y,28px)}.component-column{left:var(--component-x,20px);top:var(--component-y,700px);width:170px}.device-column{left:var(--device-x,20px);top:var(--device-y,1350px);width:170px}
.terminal-hardware,.terminal-hardware.terminal-block{width:calc(var(--face-w,344px) + var(--wire-w,140px) + var(--wire-w,140px));overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}.terminal-hardware .block-title{padding:7px 10px}.terminal-hardware .card-subtitle{font-size:8px}
.terminal-assembly{position:relative;width:calc(var(--face-w,344px) + var(--wire-w,140px) + var(--wire-w,140px));padding:var(--cap-top,51px) 0 var(--cap-bottom,14px);overflow:visible;background:#edf0ef}.terminal-rows{position:relative;z-index:2}
.terminal-cap{display:block;position:absolute;left:var(--cap-left,157px);width:310px;pointer-events:none;z-index:3}.terminal-cap-top{top:0;height:51px}.terminal-cap-bottom{position:relative;left:var(--cap-left,157px);width:310px;height:14px;margin-top:0}.terminal-block-code{position:absolute;z-index:4;top:var(--code-y,9px);left:var(--cap-left,157px);width:310px;text-align:center;color:#f4f7fb;font-size:var(--code-size,22px);line-height:1;font-weight:700;pointer-events:none}
.terminal-row{position:relative;display:grid;grid-template-columns:var(--wire-w,140px) var(--face-w,344px) var(--wire-w,140px);height:var(--row-pitch,42px);align-items:stretch;border:0}.terminal-face{position:relative;z-index:3;width:var(--face-w,344px);height:47px;overflow:visible;border:0;background:transparent}.terminal-face>.terminal-row-sprite{display:block;width:var(--face-w,344px);height:47px;object-fit:fill;filter:none}
.terminal-wire{position:relative;z-index:1;width:var(--wire-w,140px);height:47px;display:block;background:transparent}.terminal-wire:before{content:none}.terminal-wire>img{position:absolute;top:12px;width:var(--wire-w,140px);height:auto;pointer-events:none}.terminal-wire.left>img{left:0}.terminal-wire.right>img{right:0}.terminal-wire b{position:absolute;z-index:9;width:104px;overflow:hidden;text-overflow:ellipsis;color:#1f2529;font-size:var(--wire-label-size,7px);font-weight:700;line-height:1;white-space:nowrap;text-shadow:0 1px rgba(255,255,255,.55);pointer-events:none}.terminal-wire.left b{left:calc(var(--wire-label-left-x,28px) - 10px);top:var(--wire-label-left-y,16px);text-align:center}.terminal-wire.right b{right:calc(var(--wire-label-right-x,28px) - 10px);top:var(--wire-label-right-y,16px);text-align:center}.terminal-wire.yellow b{color:#312809}.terminal-wire.white b{color:#3b4145}.terminal-wire.paired-wire b{outline:2px solid var(--blue);outline-offset:2px;background:rgba(57,189,248,.18)}
.terminal-number{position:absolute;z-index:7;top:var(--number-y,16px);width:17px;height:16px;padding:1px 0 0;border:0;background:transparent;color:#172025;text-align:center;font-size:var(--number-size,9px);font-weight:800;line-height:1}.number-left{left:var(--number-x,3px)}.number-right{right:var(--number-x,3px)}
.port.paired-end{border-color:#fff;box-shadow:0 0 0 4px rgba(57,189,248,.56)}.terminal-port{position:absolute;z-index:8;width:30px;height:30px;padding:0;border:0;border-radius:2px;background:transparent;cursor:crosshair}.terminal-port:after{inset:11px;opacity:0;transition:opacity .12s,box-shadow .12s}.terminal-port:hover:after,.terminal-port.paired-end:after,.terminal-port.drag-target:after{opacity:1;box-shadow:0 0 0 4px rgba(57,189,248,.72)}.terminal-port.port-left{left:47px;top:8px}.terminal-port.port-right{right:47px;top:8px}
.horizontal-link{position:absolute;z-index:7;left:var(--link-x,125px);top:var(--link-y,10px);width:94px;height:26px;padding:0;border:0;background:transparent;color:transparent;transition:none}.horizontal-link:before,.horizontal-link:after{content:none}.horizontal-link>img{display:block;width:94px;height:26px}.horizontal-link:hover,.horizontal-link.selected{outline:2px solid rgba(57,189,248,.9);outline-offset:2px}.horizontal-link.virtual{outline:2px solid var(--yellow);outline-offset:2px;filter:drop-shadow(0 0 5px rgba(245,189,72,.85))}.horizontal-link.open{background:transparent;transform:translateX(var(--link-open-shift,42px));filter:drop-shadow(-4px 0 0 rgba(255,100,112,.9))}.horizontal-link.open:after{content:"";position:absolute;left:-25px;top:11px;width:19px;height:3px;background:var(--red);box-shadow:0 0 5px rgba(255,100,112,.9)}
.terminal-jumper{position:absolute;z-index:11;left:var(--jumper-x,366px);width:36px;height:85px;padding:0;border:0;border-radius:0;background:transparent}.terminal-jumper:after{content:none}.terminal-jumper.link-R{left:var(--jumper-r-x,326px)}.terminal-jumper img{position:absolute;left:0;width:36px;pointer-events:none}.terminal-jumper .jumper-top{top:0;height:32px}.terminal-jumper .jumper-bottom{bottom:0;height:38px}.terminal-jumper:hover,.terminal-jumper.selected{outline:2px solid var(--blue);outline-offset:2px}.terminal-jumper.virtual{filter:drop-shadow(0 0 5px rgba(245,189,72,.95));outline:2px solid var(--yellow);outline-offset:2px}
.terminal-wire.pulled.left>img{transform:translate(var(--wire-pull-left-x,0px),var(--wire-pull-left-y,0px))}.terminal-wire.pulled.left>b{transform:translate(var(--wire-pull-left-x,0px),var(--wire-pull-left-y,0px))}.terminal-wire.pulled.right>img{transform:translate(var(--wire-pull-right-x,0px),var(--wire-pull-right-y,0px))}.terminal-wire.pulled.right>b{transform:translate(var(--wire-pull-right-x,0px),var(--wire-pull-right-y,0px))}.terminal-wire.inserted.left>img{transform:translate(var(--wire-insert-left-x,0px),var(--wire-insert-left-y,0px))}.terminal-wire.inserted.right>img{transform:translate(var(--wire-insert-right-x,0px),var(--wire-insert-right-y,0px))}.terminal-wire.inserted.left>b{transform:translate(var(--wire-insert-left-x,0px),var(--wire-insert-left-y,0px))}.terminal-wire.inserted.right>b{transform:translate(var(--wire-insert-right-x,0px),var(--wire-insert-right-y,0px))}
.terminal-jumper-group{position:absolute;z-index:11;width:36px;pointer-events:none}.terminal-jumper-group.visual-right{left:var(--jumper-x,366px)}.terminal-jumper-group.visual-left{left:var(--jumper-r-x,326px)}.terminal-jumper-group img{position:absolute;left:0;width:36px;pointer-events:none}.terminal-jumper-group .jumper-top{height:32px;transform:translate(var(--jumper-top-x,0px),var(--jumper-top-y,0px))}.terminal-jumper-group .jumper-middle{height:43px;transform:translate(var(--jumper-middle-x,0px),var(--jumper-middle-y,0px))}.terminal-jumper-group .jumper-bottom{height:38px;transform:translate(var(--jumper-bottom-x,0px),var(--jumper-bottom-y,0px))}.terminal-jumper-group.virtual{filter:drop-shadow(0 0 5px rgba(245,189,72,.95))}
.terminal-jumper-hit{position:absolute;z-index:12;width:36px;height:var(--row-pitch,42px);padding:0;border:0;background:transparent}.terminal-jumper-hit.visual-right{left:var(--jumper-x,366px)}.terminal-jumper-hit.visual-left{left:var(--jumper-r-x,326px)}.terminal-jumper-hit:hover,.terminal-jumper-hit.selected{outline:2px solid var(--blue);outline-offset:1px}.terminal-jumper-hit.virtual{outline:2px solid var(--yellow);outline-offset:1px}
@media(max-width:860px){html,body{height:auto;min-height:100%;overflow:auto}.topbar{height:auto;min-height:52px;flex-wrap:wrap;gap:8px;padding:8px 10px}.brand{min-width:0}.brand h1{font-size:14px}.brand span{display:none}.header-status{margin-left:auto}.top-actions{width:100%;justify-content:flex-end}.top-actions button,.file-button{padding:6px 8px;font-size:10px}.layout{display:flex;flex-direction:column;min-width:0;height:auto}.left-panel,.right-panel{border:0;overflow:visible}.left-panel{order:2}.canvas-panel{order:1;height:620px;min-height:620px}.right-panel{order:3}.panel-scroll{overflow:visible}.canvas-toolbar{height:auto;min-height:42px;align-items:flex-start;gap:7px;padding:6px 8px}.canvas-legend{display:none}.view-actions{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.view-actions button{font-size:9px}.wiring-stage{width:var(--stage-w,1520px);height:var(--stage-h,1900px)}}

/* Light technical workbench and direct-manipulation affordances. */
:root{color-scheme:light;--bg:#f3f6f8;--panel:#ffffff;--panel2:#edf2f6;--panel3:#e3ebf1;--line:#c7d3dc;--text:#1b2a35;--muted:#61727e;--blue:#1479b8;--green:#18885a;--yellow:#bf7b00;--red:#c7353f;--orange:#b85a12}
body{background:var(--bg);color:var(--text)}.topbar{background:#fff;border-color:var(--line);box-shadow:0 1px 4px rgba(24,46,61,.08)}.top-actions button,.file-button,.segmented button,.tool-grid button,.source-tabs button,.mini-tabs button,.view-actions button,.scenario-row button{background:#fff;color:var(--text);border-color:var(--line)}.segmented button.active,.tool-grid button.active,.source-tabs button.active,.mini-tabs button.active{background:#e3f2fb;color:#075b91;border-color:#4ca5d8}.header-status.normal,.badge.normal{background:#edf8f1;border-color:#83c7a4;color:#157348}.header-status.warning,.badge.warning{background:#fff6df;border-color:#e0b45c;color:#9a6200}.header-status.danger,.badge.danger{background:#ffedef;border-color:#dc8c93;color:#a32934}
.left-panel,.right-panel,.panel-scroll{background:#fff;border-color:var(--line)}.panel-block{border-color:#d8e1e7}.relay-state,.inspector-title{background:#f3f7f9;color:#24523d}.number-field input,.scenario-row select{background:#fff;color:var(--text);border-color:var(--line)}.inspector-actions button{background:#fff;color:var(--text);border-color:var(--line)}.inspector-actions button.active{background:#e3f2fb;border-color:#4ca5d8;color:#075b91}.delete-button{background:#fff1f2;border-color:#e1a2a7;color:#a32934}
.canvas-panel{background:#f8fafb}.canvas-toolbar{background:#fff;border-color:var(--line)}.canvas-viewport{background-color:#f7fafc;background-image:linear-gradient(rgba(62,92,112,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(62,92,112,.09) 1px,transparent 1px)}.card{background:#fff;border-color:#c9d6df;box-shadow:0 2px 7px rgba(26,57,76,.09)}.card-title,.block-title{background:#eaf1f5;border-color:#c9d6df;color:#1c3342}.port{background:#fff;border-color:#7890a0}.port:after{background:#748897}.port.paired-end{border-color:#075b91;box-shadow:0 0 0 4px rgba(20,121,184,.24)}.wire-path{stroke:#1677b3}.wire-path.selected{stroke:#0b4264}.wire-handle{fill:#fff;stroke:#0b5f90}.preview-wire{stroke:#1479b8}.phasor-chart{background:#f7fafc}.fault-item{background:#f5f8fa}.toast{background:#fff;color:var(--text);border-color:#a8bdcb;box-shadow:0 8px 20px rgba(22,48,65,.15)}
.trash-drop{position:absolute;right:22px;bottom:22px;z-index:40;display:none;grid-template-columns:28px auto;align-items:center;gap:7px;padding:8px 11px;border:1px solid #d59a9f;border-radius:5px;background:#fff7f7;color:#a32934;box-shadow:0 5px 15px rgba(96,35,39,.15);pointer-events:none}.trash-drop.visible{display:grid}.trash-drop.hot{background:#c7353f;border-color:#a32934;color:#fff;transform:scale(1.04)}.trash-drop span{font-size:20px;line-height:1}.trash-drop small{font-size:10px;font-weight:700;white-space:nowrap}
.inspector-popup{position:fixed;inset:0;z-index:80;display:grid;place-items:center}.inspector-popup.hidden{display:none}.inspector-popup-backdrop{position:absolute;inset:0;background:rgba(27,42,53,.28)}.inspector-popup-panel{position:relative;width:min(360px,calc(100vw - 32px));padding:12px;border:1px solid #b8c8d3;border-radius:7px;background:#fff;box-shadow:0 18px 48px rgba(15,39,55,.24)}.inspector-popup-title{display:flex;align-items:center;justify-content:space-between;margin:-2px -2px 10px;padding-bottom:9px;border-bottom:1px solid #d8e1e7;font-size:12px}.inspector-popup-title button{width:28px;height:28px;border:0;background:transparent;color:#60727e;font-size:22px;line-height:1}.inspector-popup-panel .inspector-card{gap:10px}.inspector-popup-panel .resistance-control{margin:2px 0 0}.inspector-popup-panel .resistance-control span{display:flex;justify-content:space-between;color:#516671;font-size:10px}
@media(max-width:860px){.top-actions{overflow-x:auto;justify-content:flex-start;padding-bottom:1px}.top-actions>*{flex:0 0 auto}.canvas-panel{height:min(68vh,650px);min-height:500px}.canvas-toolbar{position:relative;z-index:45}.view-actions{width:100%;margin-left:0;justify-content:flex-end}.left-panel{padding-bottom:8px}.right-panel{padding-bottom:16px}.panel-block.compact{padding:11px}.inspector-block{display:none}.inspector-popup{place-items:end stretch}.inspector-popup-panel{width:100%;max-height:72vh;border-radius:8px 8px 0 0;padding:15px 16px 20px;overflow:auto}.trash-drop{right:14px;bottom:14px}.terminal-wire b{font-size:max(6px,var(--wire-label-size,7px))}}
.terminal-port{background:transparent!important}.canvas-viewport{touch-action:none}.terminal-number,.terminal-wire b{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.terminal-hardware{border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;overflow:visible!important}.terminal-hardware>.block-title{border:0!important;background:transparent!important}
.horizontal-link:hover,.horizontal-link.selected,.horizontal-link.virtual,.terminal-jumper:hover,.terminal-jumper.selected,.terminal-jumper.virtual,.terminal-jumper-hit:hover,.terminal-jumper-hit.selected,.terminal-jumper-hit.virtual{outline:0!important;filter:none!important}.horizontal-link.open{filter:none!important}.horizontal-link.open:after{content:none!important}.terminal-jumper-group.virtual{filter:none!important}
.source-column{width:210px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px}.source-column>.card{min-width:0;margin:0}.source-column .card-title{padding:6px 7px;font-size:9px}.source-column .port-list{padding:4px 5px}.source-column .bank-port{height:24px;gap:3px}.source-column .port-label{font-size:8px;white-space:nowrap}.source-column .port{flex:0 0 auto}
.component-column{width:210px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px}.component-column>.card{min-width:0;margin:0}.component-column .card-title{padding:6px 7px;font-size:9px}.component-column .port-list{padding:4px 5px}.component-column .bank-port{height:24px;gap:3px}.component-column .port-label{font-size:8px;white-space:nowrap}.component-column .port{flex:0 0 auto}
.device-column{left:6px;width:210px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px}.device-column>.card{min-width:0;margin:0}.device-column .card-title{padding:6px 7px;font-size:9px}.device-column .port-list{padding:4px 5px}.device-column .bank-port{height:24px;gap:3px}.device-column .port-label{font-size:8px;white-space:nowrap}.device-column .port{flex:0 0 auto}
 .canvas-panel,.canvas-panel *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}.canvas-viewport,.wiring-stage,.wire-layer,.terminal-assembly,.terminal-row,.terminal-wire,.terminal-face{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.wiring-stage,.wire-layer{touch-action:none}
@media(max-width:860px){:root{--mobile-canvas-height:clamp(390px,58dvh,560px)}.topbar{display:none}.layout{padding-top:0}.terminal-number{font-size:var(--number-size,9px)}.terminal-wire b{font-size:var(--wire-label-size,7px)}.canvas-panel{position:fixed;top:0;right:0;left:0;z-index:20;width:100%;height:var(--mobile-canvas-height);min-height:0;flex:none;box-shadow:0 5px 14px rgba(22,49,64,.2);will-change:transform}.left-panel{order:2;position:relative;z-index:1;margin-top:var(--mobile-canvas-height)}.right-panel{order:3;display:flex;flex-direction:column;position:relative;z-index:1}.right-panel .phasor-panel{order:-1}.canvas-viewport{cursor:grab}}
#phasorChart marker#arr-UX path{fill:#55aaff!important}#phasorChart line[marker-end="url(#arr-UX)"]{stroke:#55aaff!important}#phasorChart text:nth-of-type(4){fill:#55aaff!important}
.mobile-panel-resize{display:none}
@media(max-width:860px){:root{--mobile-canvas-height:clamp(260px,43dvh,480px)}.canvas-panel{height:var(--mobile-canvas-height)!important;min-height:0!important}.left-panel{margin-top:var(--mobile-canvas-height);padding-bottom:8px}.left-panel>.phasor-panel{border-top:0}.left-panel>.phasor-panel .phasor-chart{height:228px;margin-top:6px}.mobile-panel-resize{position:fixed;top:calc(var(--mobile-canvas-height) - 11px);left:50%;z-index:55;display:grid;place-items:center;width:66px;height:22px;padding:0;border:1px solid #a8bdcb;border-radius:11px;background:#fff;box-shadow:0 2px 7px rgba(22,48,65,.16);touch-action:none;transform:translateX(-50%)}.mobile-panel-resize span,.mobile-panel-resize:before,.mobile-panel-resize:after{width:23px;height:2px;border-radius:2px;background:#6e8799;content:""}.mobile-panel-resize span{display:block}.mobile-panel-resize:before{margin-bottom:2px}.mobile-panel-resize:after{margin-top:2px}.mobile-panel-resize:active{background:#e3f2fb;border-color:#4ca5d8}.inspector-block{display:none!important}.inspector-popup{inset:calc(var(--mobile-canvas-height) + 282px) 0 0;z-index:90;place-items:end stretch;pointer-events:none}.inspector-popup-backdrop{pointer-events:auto}.inspector-popup-panel{max-height:max(160px,calc(100dvh - var(--mobile-canvas-height) - 282px));pointer-events:auto}}
.canvas-viewport .inspector-popup{position:absolute;inset:0;z-index:50;place-items:center;pointer-events:auto}.canvas-viewport .inspector-popup-panel{width:min(360px,calc(100% - 28px));max-height:calc(100% - 28px);overflow:auto;pointer-events:auto}.canvas-viewport .inspector-popup-backdrop{pointer-events:auto}
@media(max-width:860px){.canvas-viewport .inspector-popup{inset:0;z-index:70;place-items:center}.canvas-viewport .inspector-popup-panel{width:min(340px,calc(100% - 24px));max-height:calc(100% - 24px);border-radius:7px;padding:13px}.canvas-viewport .inspector-popup-backdrop{background:rgba(27,42,53,.24)}}
.mobile-settings-dock,.mobile-settings-close{display:none}
@media(max-width:860px){body>.mobile-settings-dock{position:fixed;bottom:max(10px,env(safe-area-inset-bottom));left:50%;z-index:100;display:flex;flex-direction:row;gap:6px;padding:7px;border:1px solid #c9d6df;border-radius:8px;background:rgba(255,255,255,.94);box-shadow:0 3px 10px rgba(22,48,65,.16);backdrop-filter:blur(6px);transform:translateX(-50%)}.mobile-settings-dock button{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #c1d0da;border-radius:50%;background:#fff;color:#506774;font-size:12px;font-weight:800;line-height:1}.mobile-settings-dock button.active{border-color:#1479b8;background:#e3f2fb;color:#075b91;box-shadow:0 0 0 3px rgba(20,121,184,.12)}.left-panel:not(.mobile-settings-page-open){display:none!important}.left-panel.mobile-settings-page-open{position:fixed;inset:12px;z-index:95;display:block!important;height:auto;margin:0!important;padding:0 0 12px;overflow-y:auto;border:1px solid #b8c8d3!important;border-radius:8px;background:#fff;box-shadow:0 0 0 100vmax rgba(27,42,53,.24),0 18px 46px rgba(15,39,55,.28)}.left-panel>.mobile-settings-close{display:none}.left-panel.mobile-settings-page-open>.mobile-settings-close{position:sticky;top:8px;z-index:2;display:grid;place-items:center;width:28px;height:28px;margin:8px 10px 0 auto;padding:0;border:1px solid #b8c8d3;border-radius:50%;background:#fff;color:#526a79;font-size:20px;line-height:1}.left-panel>[data-mobile-panel]{display:none!important}.left-panel>[data-mobile-panel].mobile-panel-active{display:block!important}.left-panel>.phasor-panel.mobile-panel-active{margin-bottom:8px}.left-panel>.source-details.mobile-panel-active>div{margin-bottom:12px}.right-panel.mobile-detail-panels-moved{display:none!important}}
@media(max-width:860px){body.mobile-settings-closed .canvas-panel,body.mobile-settings-open .canvas-panel{height:100dvh!important}body.mobile-settings-closed .mobile-panel-resize,body.mobile-settings-open .mobile-panel-resize{display:none!important}.left-panel.mobile-settings-page-open{inset:auto 0 0!important;height:clamp(280px,36dvh,340px)!important;max-height:calc(100dvh - 72px);padding:0 0 10px!important;border-radius:8px 8px 0 0!important;box-shadow:0 -10px 28px rgba(15,39,55,.24)!important}.left-panel.mobile-settings-page-open>.mobile-settings-close{top:6px}.left-panel.mobile-settings-page-open>.phasor-panel{margin-top:0}}
.segmented.two{grid-template-columns:repeat(2,1fr)}.source-output-controls{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:7px 12px 5px}.source-output-controls .segmented{display:grid;grid-template-columns:repeat(2,max-content);gap:4px}.source-output-controls .segmented button{min-height:28px;padding:5px 9px;font-size:10px;line-height:1.1}.ct-secondary-control{display:flex;align-items:center;gap:5px}.ct-secondary-control>span{color:var(--muted);font-size:9px;line-height:1;white-space:nowrap}
@media(max-width:860px){.left-panel.mobile-settings-page-open>.mobile-settings-close{position:absolute!important;top:10px!important;right:10px!important;z-index:8;width:36px!important;height:36px!important;margin:0!important;border-radius:50%!important;box-shadow:0 2px 8px rgba(22,48,65,.18)}.left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active{margin:0!important;padding:8px 12px 10px}.left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active .heading-row{display:none!important}.left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active .phasor-chart{height:calc(min(100dvh - 90px,360px));min-height:248px;margin-top:0!important;touch-action:pan-y}}
@media(max-width:860px){body.mobile-phasor-open .left-panel.mobile-settings-page-open{height:min(410px,calc(100dvh - 16px))!important;overflow:hidden!important}body.mobile-phasor-open .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active{height:100%;padding:0!important;overflow:hidden}body.mobile-phasor-open .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active .phasor-chart{display:block;width:100%;height:100%!important;min-height:0!important;margin:0!important;touch-action:pan-y}}
.mobile-phasor-title{display:none}@media(max-width:860px){body.mobile-phasor-open .left-panel.mobile-settings-page-open{height:auto!important;max-height:calc(100dvh - 16px);overflow:hidden!important;border-color:#b9cbd8!important;background:#fff}body.mobile-phasor-open .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active{height:auto!important;padding:0!important;overflow:hidden;background:#fff}body.mobile-phasor-open .mobile-phasor-title{display:flex;align-items:center;min-height:42px;padding:10px 58px 9px 15px;border-bottom:1px solid #dbe5eb;background:#fff;color:#244154;font-size:13px;font-weight:750;line-height:1}body.mobile-phasor-open .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active .phasor-chart{display:block;width:100%;height:auto!important;min-height:0!important;margin:0!important;border:1px solid #d8e3ea;border-width:0 0 1px;background:linear-gradient(135deg,#fbfdfe,#f2f7fa);touch-action:pan-y}}
.mobile-phasor-pagination{display:none}@keyframes phasor-slide-next{from{opacity:.25;transform:translateX(18px)}to{opacity:1;transform:translateX(0)}}@keyframes phasor-slide-prev{from{opacity:.25;transform:translateX(-18px)}to{opacity:1;transform:translateX(0)}}@media(max-width:860px){body.mobile-phasor-open .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active{position:relative}body.mobile-phasor-open .mobile-phasor-pagination{position:absolute;bottom:10px;left:50%;z-index:5;display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:99px;background:rgba(43,65,80,.2);backdrop-filter:blur(4px);transform:translateX(-50%);pointer-events:none}body.mobile-phasor-open .mobile-phasor-pagination i{display:block;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.58);transition:width .18s,background .18s}body.mobile-phasor-open .mobile-phasor-pagination i.active{width:15px;background:rgba(20,121,184,.9)}body.mobile-phasor-open #phasorChart.phasor-swipe-next{animation:phasor-slide-next .2s ease-out}body.mobile-phasor-open #phasorChart.phasor-swipe-prev{animation:phasor-slide-prev .2s ease-out}}
.sequence-chart.phasor-swipe-next{animation:phasor-slide-next .22s ease-out}.sequence-chart.phasor-swipe-prev{animation:phasor-slide-prev .22s ease-out}
.sequence-chart{touch-action:pan-y}
.sequence-pagination{display:none}@media(max-width:860px){.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active{position:relative;overflow:hidden}.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-pagination{position:absolute;bottom:10px;left:50%;z-index:5;display:flex;align-items:center;gap:5px;transform:translateX(-50%);pointer-events:none}.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-pagination i{display:block;width:5px;height:5px;border-radius:50%;background:rgba(84,109,125,.28);transition:width .18s,background .18s}.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-pagination i.active{width:12px;border-radius:99px;background:rgba(20,121,184,.82)}}
@media(max-width:860px){body.mobile-sequence-open .left-panel.mobile-settings-page-open{height:auto!important;max-height:calc(100dvh - 16px);overflow:hidden!important;border-color:#b9cbd8!important;background:#fff}body.mobile-sequence-open .left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active{height:auto!important;margin:0!important;padding:0!important;overflow:hidden;background:#fff}body.mobile-sequence-open .left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .heading-row{display:flex!important;align-items:center;min-height:42px;margin:0;padding:10px 58px 9px 15px;border-bottom:1px solid #dbe5eb;background:#fff;color:#244154;line-height:1}body.mobile-sequence-open .left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .heading-row h2{margin:0;font-size:13px;font-weight:750}body.mobile-sequence-open .left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-chart{display:block;width:100%;height:auto!important;min-height:0!important;margin:0!important;border:1px solid #d8e3ea;border-width:0 0 1px;background:linear-gradient(135deg,#fbfdfe,#f2f7fa);touch-action:pan-y}body.mobile-sequence-open .left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-pagination{bottom:13px}}
@media(max-width:860px){body.mobile-phasor-open .mobile-phasor-pagination{bottom:13px;gap:5px;padding:0;background:transparent;backdrop-filter:none}body.mobile-phasor-open .mobile-phasor-pagination i{width:5px;height:5px;border-radius:50%;background:rgba(84,109,125,.28);transition:width .18s,background .18s}body.mobile-phasor-open .mobile-phasor-pagination i.active{width:12px;border-radius:99px;background:rgba(20,121,184,.82)}.sequence-chart.phasor-swipe-next{animation:phasor-slide-next .2s ease-out}.sequence-chart.phasor-swipe-prev{animation:phasor-slide-prev .2s ease-out}}
@media(max-width:860px){.left-panel.mobile-settings-page-open>.mobile-settings-close{display:none!important}.left-panel.mobile-settings-page-open .mobile-phasor-title{padding-right:15px!important}}
@media(max-width:860px){.left-panel.mobile-settings-page-open>.mobile-settings-close{display:grid!important;position:absolute!important;top:10px!important;right:10px!important;z-index:8;width:36px!important;height:36px!important;margin:0!important;border-radius:50%!important;box-shadow:0 2px 8px rgba(22,48,65,.18)}.left-panel.mobile-settings-page-open .mobile-phasor-title{padding-right:58px!important}}
@media(max-width:860px){body>.inspector-popup{position:fixed!important;inset:0!important;z-index:140!important;display:grid;place-items:start center!important;padding:max(14px,env(safe-area-inset-top)) 12px 0;pointer-events:none}body>.inspector-popup .inspector-popup-backdrop{display:none}body>.inspector-popup .inspector-popup-panel{width:min(330px,calc(100vw - 24px));max-height:min(310px,calc(100dvh - 28px));padding:12px 13px;overflow:auto;border-radius:8px;box-shadow:0 12px 30px rgba(15,39,55,.28);pointer-events:auto}}
@media(max-width:860px){body>.inspector-popup{padding:0!important}body>.inspector-popup .inspector-popup-panel{position:absolute;top:var(--mobile-inspector-center,28dvh);transform:translateY(-50%)}}
.jumper-count-actions{grid-template-columns:repeat(4,1fr)!important}.short-confirm-copy{margin:0;padding:8px;border:1px solid #d8e3ea;border-radius:5px;background:#f4f8fa;color:#405866;font-size:11px;line-height:1.45}.short-confirm-copy strong{color:#075b91;font-variant-numeric:tabular-nums}
.source-settings-section{margin-top:12px;padding-top:10px;border-top:1px solid #d8e3ea}.source-settings-section h2{margin:0 0 8px;font-size:11px}.source-settings-section .source-output-controls{margin:0 0 7px}.source-settings-section .source-tabs{margin:0}.source-settings-section #sourceSettings{margin:0}.scenario-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.scenario-grid button{min-height:34px;padding:5px 6px;border:1px solid #c8d7e0;border-radius:5px;background:#f7fafc;color:#375263;font-size:10px;line-height:1.25;text-align:left}.scenario-grid button:active{border-color:#4ca5d8;background:#e3f2fb;color:#075b91}
.sequence-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px}.sequence-value-group{display:grid;gap:4px;padding:7px;border:1px solid #d8e3ea;border-radius:5px;background:#f7fafc}.sequence-value-group>strong{color:#375263;font-size:10px}.sequence-value-group span{display:flex;align-items:baseline;justify-content:space-between;gap:5px;min-width:0}.sequence-value-group b{color:#075b91;font-size:10px}.sequence-value-group em{min-width:0;overflow:hidden;color:#526a79;font-size:9px;font-style:normal;text-align:right;white-space:nowrap;text-overflow:ellipsis}
@media(max-width:860px){.sequence-values{grid-template-columns:1fr}.sequence-value-group em{overflow:visible;text-overflow:clip}}
.local-short-layer{position:absolute;inset:0;z-index:1;width:100%;height:100%;overflow:visible;pointer-events:none}.wire-path.short.local-short{stroke:#263740;stroke-width:5.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 .7px .8px rgba(15,25,31,.34));pointer-events:stroke;cursor:grab}.wire-path.short.local-short.dragging-local-short{cursor:grabbing;filter:drop-shadow(0 4px 4px rgba(15,25,31,.4));animation:short-wire-lift .16s ease-out both}.wire-path.short.local-short.selected{animation:short-wire-select .52s ease-out both;filter:drop-shadow(0 0 3px rgba(103,163,182,.72))}.short-wire-end{stroke:#122128;stroke-width:.7;filter:drop-shadow(0 .9px .8px rgba(8,18,23,.5));pointer-events:none}.short-wire-end.selected{animation:short-wire-select .52s ease-out both;filter:drop-shadow(0 0 3px rgba(103,163,182,.72))}.wire-path.local-terminal-link{fill:none;stroke:#8b989e;stroke-width:3.8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px .5px rgba(25,40,48,.25));pointer-events:none}.wire-path.local-terminal-link.selected{stroke:#1479b8;stroke-width:4.5}@keyframes short-wire-select{0%{opacity:.72;filter:drop-shadow(0 0 0 rgba(103,163,182,0))}48%{opacity:1;filter:drop-shadow(0 0 6px rgba(103,163,182,.92))}100%{opacity:1}}@keyframes short-wire-lift{from{stroke-width:5.4;filter:drop-shadow(0 .7px .8px rgba(15,25,31,.34))}to{stroke-width:6.1;filter:drop-shadow(0 4px 4px rgba(15,25,31,.4))}}
.canvas-viewport>.trash-drop{top:12px;right:14px;bottom:auto;z-index:70}
.port.operation-armed,.terminal-port.operation-armed:after{border-color:#1479b8!important;opacity:1;box-shadow:0 0 0 5px rgba(20,121,184,.34)}.horizontal-link.operation-armed,.terminal-jumper-hit.operation-armed{outline:0!important}.wire-path.operation-armed,.wire-handle.operation-armed,.terminal-wire.operation-armed{filter:drop-shadow(0 0 4px rgba(20,121,184,.72))}
/* Single-column terminal workbench: the terminal strip defines the canvas width. */
.block-column-a,.block-column-b{left:0!important;width:var(--stage-w)!important}.source-column,.component-column,.device-column{left:0!important;width:var(--stage-w)!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}.canvas-viewport{overscroll-behavior:contain;touch-action:none}.stage-transform{will-change:transform;backface-visibility:hidden}.view-actions #zoomOutBtn,.view-actions #zoomInBtn,.view-actions #zoomValue,.view-actions #fitBtn{display:none!important}
/* Compact single-column composition. */
.topbar{display:none!important}.layout{height:100vh!important}.terminal-hardware .card-subtitle{display:none!important}.terminal-hardware .block-title{padding:5px 10px!important}.block-column-b>.terminal-block{margin-bottom:8px!important}.source-column>.card:last-child{grid-column:1 / -1;width:calc(50% - 4px);justify-self:center}.source-column .card-title,.component-column .card-title,.device-column .card-title{padding:8px 10px!important;font-size:11px!important}.source-column .port-list,.component-column .port-list,.device-column .port-list{padding:5px 8px!important}.source-column .bank-port,.component-column .bank-port,.device-column .bank-port{height:28px!important}.source-column .port-label,.component-column .port-label,.device-column .port-label{font-size:10px!important}.source-column .port{width:13px;height:13px}.component-column .port,.device-column .port{width:13px;height:13px}.canvas-undo{position:absolute!important;bottom:max(14px,env(safe-area-inset-bottom))!important;left:14px!important;z-index:72!important;padding:8px 11px!important;border:1px solid #b7c9d4!important;border-radius:6px!important;background:rgba(255,255,255,.95)!important;box-shadow:0 3px 11px rgba(20,46,63,.16)!important;color:#244154!important;font-size:11px!important}@media(max-width:860px){.canvas-undo{bottom:max(14px,env(safe-area-inset-bottom))!important;left:12px!important}}
.terminal-assembly{background:transparent!important}
.terminal-hardware>.block-title{display:none!important}
.canvas-toolbar .view-actions{display:none!important}.canvas-top-actions{position:absolute;top:12px;left:12px;z-index:72;display:flex;align-items:center;gap:7px}.canvas-top-actions .canvas-undo,.canvas-top-actions #wireVisibilityBtn{position:static!important;display:inline-flex!important;align-items:center;justify-content:center;min-height:32px;margin:0!important;padding:7px 10px!important;border:1px solid #b7c9d4!important;border-radius:6px!important;background:rgba(255,255,255,.95)!important;box-shadow:0 3px 11px rgba(20,46,63,.16)!important;color:#244154!important;font-size:11px!important;white-space:nowrap}@media(max-width:860px){.canvas-top-actions{top:10px;left:10px;gap:6px}.canvas-top-actions .canvas-undo,.canvas-top-actions #wireVisibilityBtn{min-height:30px;padding:6px 8px!important;font-size:10px!important}}
.canvas-toolbar{display:none!important}.canvas-top-actions{top:12px!important;right:12px!important;left:auto!important}.canvas-top-actions .canvas-undo,.canvas-top-actions #resetBtn{display:grid!important;place-items:center;width:34px;height:34px;min-height:34px!important;padding:0!important;border-radius:50%!important;font-size:21px!important;font-weight:700;line-height:1!important}.canvas-viewport>.trash-drop{top:56px!important}@media(max-width:860px){.canvas-top-actions{top:10px!important;right:10px!important}.canvas-top-actions .canvas-undo,.canvas-top-actions #resetBtn{width:32px;height:32px;min-height:32px!important;font-size:19px!important}.canvas-viewport>.trash-drop{top:52px!important}}
@media(max-width:860px){body>.mobile-settings-dock{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important}}
@media(max-width:860px){
 .left-panel.mobile-settings-page-open{bottom:0!important;padding:0 0 calc(56px + env(safe-area-inset-bottom))!important;border-bottom:0!important}
 .left-panel.mobile-settings-page-open>.mobile-settings-close{position:sticky!important;top:10px!important;right:auto!important;z-index:12!important;display:grid!important;margin:10px 10px -46px auto!important}
 .left-panel.mobile-settings-page-open>[data-mobile-panel].mobile-panel-active{margin-bottom:0!important;border-bottom:0!important}
 body.mobile-phasor-open .mobile-phasor-pagination,.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active .sequence-pagination{bottom:4px!important}
 .toast{top:58px;bottom:auto;z-index:150;transform:translate(-50%,-14px)}
 .toast.show{transform:translate(-50%,0)}
}
.source-column,.component-column,.device-column{left:36px!important;width:calc(var(--stage-w) - 72px)!important}
.source-column .card-title,.component-column .card-title,.device-column .card-title{padding:10px 12px!important;font-size:15px!important}.source-column .card-subtitle,.component-column .card-subtitle,.device-column .card-subtitle{margin-top:3px!important;font-size:11px!important}.source-column .port-list,.component-column .port-list,.device-column .port-list{padding:7px 10px!important}.source-column .bank-port,.component-column .bank-port,.device-column .bank-port{height:36px!important}.source-column .port-label,.component-column .port-label,.device-column .port-label{font-size:13px!important}.source-column .port,.component-column .port,.device-column .port{width:16px!important;height:16px!important}
.terminal-row.drag-target-row{background:transparent;box-shadow:none}.terminal-row.drag-target-row:before{position:absolute;z-index:0;top:4px;right:0;left:0;height:42px;background:rgba(20,121,184,.16);box-shadow:inset 0 0 0 2px rgba(20,121,184,.72);content:"";pointer-events:none}.terminal-row.drag-target-row .terminal-face{filter:drop-shadow(0 0 4px rgba(20,121,184,.5))}.terminal-wire.dragging-wire-material{z-index:20;pointer-events:none;transform:translate(var(--drag-material-x,0px),var(--drag-material-y,0px))}.terminal-wire.dragging-wire-material>img,.terminal-wire.dragging-wire-material>b{transform:none!important}.terminal-jumper-group.dragging-jumper-material{z-index:30;transform:translate(var(--drag-material-x,0px),var(--drag-material-y,0px)) scale(1.035);transform-origin:center;pointer-events:none;filter:drop-shadow(0 4px 5px rgba(15,39,55,.28))}
.horizontal-link.operation-armed>img{animation:component-pop .18s ease-out both;filter:drop-shadow(0 3px 3px rgba(20,121,184,.28))}@keyframes component-pop{from{transform:scale(1)}to{transform:scale(1.06)}}
.terminal-port:hover{border-color:transparent!important;box-shadow:none!important}.terminal-port:hover:after{inset:10px!important;opacity:1!important;background:radial-gradient(circle at 34% 29%,#fff 0 11%,#d9e1e5 12% 27%,#71808a 29% 52%,#26343d 54% 74%,#0f1a20 76% 100%)!important;box-shadow:0 1px 2px rgba(12,28,38,.42)!important;scale:1.42;transition:opacity .14s ease,scale .16s cubic-bezier(.16,1,.3,1),box-shadow .16s ease!important}@media(hover:hover) and (pointer:fine){.terminal-port:after{inset:10px!important;opacity:0;scale:.72;transition:opacity .14s ease,scale .16s cubic-bezier(.16,1,.3,1),box-shadow .16s ease}.terminal-port:hover:after{opacity:1;scale:1.42;box-shadow:0 2px 4px rgba(12,28,38,.5)!important}}
.terminal-port.operation-armed{border-color:transparent!important;background:transparent!important;box-shadow:none!important;scale:1!important}.terminal-port.operation-armed:after{inset:10px!important;opacity:1!important;background:radial-gradient(circle at 34% 29%,#fff 0 11%,#d9e1e5 12% 27%,#71808a 29% 52%,#26343d 54% 74%,#0f1a20 76% 100%)!important;box-shadow:0 2px 4px rgba(12,28,38,.5)!important;scale:1.34}
.preview-wire{stroke:#1479b8!important;stroke-width:2.6!important;stroke-dasharray:7 5!important;stroke-linecap:round;animation:wire-preview-flow .55s linear infinite;pointer-events:none}@keyframes wire-preview-flow{to{stroke-dashoffset:-24}}
.preview-wire-layer{z-index:30!important;pointer-events:none!important}
/* Motion layer: short, physical responses without competing with direct manipulation. */
button{transition:transform .18s cubic-bezier(.2,.8,.2,1),background-color .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease}
button:active{transform:scale(.94)}
.canvas-top-actions button{transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s ease,background-color .22s ease}
.canvas-top-actions button:hover{transform:translateY(-1px);box-shadow:0 6px 15px rgba(24,59,78,.2)!important}
.terminal-row{transition:filter .16s ease,background-color .16s ease}
.terminal-wire,.terminal-jumper-group,.horizontal-link{will-change:transform;transition:filter .16s ease,scale .16s cubic-bezier(.16,1,.3,1)}
.horizontal-link:hover{scale:1.045}
.terminal-row.drag-target-row:before{animation:terminal-target-pulse .9s ease-in-out infinite}
.port.drag-target{animation:terminal-target-pulse .72s ease-in-out infinite}
.fault-item{animation:fault-settle .24s cubic-bezier(.16,1,.3,1) both}
.app-ready .terminal-assembly{animation:terminal-settle .38s cubic-bezier(.16,1,.3,1) both}
@keyframes terminal-settle{from{opacity:.72;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes fault-settle{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes terminal-target-pulse{0%,100%{filter:drop-shadow(0 0 0 rgba(20,121,184,0))}50%{filter:drop-shadow(0 0 7px rgba(20,121,184,.52))}}
@media(max-width:860px){
 body>.mobile-settings-dock{gap:9px!important;bottom:max(12px,env(safe-area-inset-bottom))!important}
 .mobile-settings-dock button{width:38px!important;height:38px!important;border-color:rgba(123,151,169,.52)!important;background:rgba(255,255,255,.92)!important;box-shadow:0 3px 10px rgba(27,53,68,.16)!important;font-size:15px!important;transition:transform .24s cubic-bezier(.16,1,.3,1),background-color .2s ease,box-shadow .2s ease!important}
 .mobile-settings-dock button.active{transform:translateY(-4px) scale(1.08);background:#e4f2fb!important;box-shadow:0 7px 16px rgba(13,95,144,.24)!important}
 .left-panel.mobile-settings-page-open{animation:drawer-rise .28s cubic-bezier(.16,1,.3,1) both}
 .left-panel.mobile-settings-page-open>.mobile-settings-close{transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease!important}
 .left-panel.mobile-settings-page-open>.mobile-settings-close:active{transform:scale(.9)}
}
@keyframes drawer-rise{from{transform:translateY(20px);opacity:.92}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.terminal-jumper-hit.jumper-snap-target{background:rgba(24,136,90,.16);box-shadow:0 0 0 3px rgba(24,136,90,.34)}

/* Crossing the terminal centre changes only the physical artwork; the sleeve
   number remains readable and the pointer-follow translation stays immediate. */
.terminal-wire.dragging-wire-material>img{transform:scaleX(var(--drag-material-flip,1))!important;transform-origin:center;transition:transform .16s cubic-bezier(.16,1,.3,1)!important}.terminal-wire.dragging-wire-material>b{transform:none!important}
.terminal-jumper-group.dragging-jumper-material .jumper-top{transform:translate(var(--jumper-top-x,0px),var(--jumper-top-y,0px)) scaleX(var(--drag-material-flip,1))!important}.terminal-jumper-group.dragging-jumper-material .jumper-middle{transform:translate(var(--jumper-middle-x,0px),var(--jumper-middle-y,0px)) scaleX(var(--drag-material-flip,1))!important}.terminal-jumper-group.dragging-jumper-material .jumper-bottom{transform:translate(var(--jumper-bottom-x,0px),var(--jumper-bottom-y,0px)) scaleX(var(--drag-material-flip,1))!important}.terminal-jumper-group.dragging-jumper-material img{transform-origin:center;transition:transform .17s cubic-bezier(.16,1,.3,1)!important}
@media(hover:hover) and (pointer:fine){.terminal-wire:not(.empty),.terminal-jumper-group,.wire-path.short.local-short{cursor:pointer;scale:1;transition:scale .16s cubic-bezier(.16,1,.3,1),filter .16s ease}.terminal-wire:not(.empty):not(.dragging-wire-material):hover,.terminal-jumper-group:not(.dragging-jumper-material):hover{scale:1.035;filter:drop-shadow(0 3px 4px rgba(25,67,91,.17))}.wire-path.short.local-short:hover{scale:1.035;transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 2px 3px rgba(21,56,76,.36))}}

/* One coherent 1.8px technical icon family for the floating mobile dock. */
.mobile-settings-dock button svg{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.mobile-settings-dock button{font-size:0!important}.mobile-settings-dock button.active svg{stroke-width:2}

/* Re-rendering a single terminal block must not replay the page-entry motion. */
.app-ready .terminal-assembly{animation:none!important}

/* Refined industrial workbench: low-contrast structure, one blue interaction accent. */
:root{--surface-soft:#f5f8fa;--surface-tint:#edf4f8;--shadow-soft:0 10px 28px rgba(31,61,80,.10);--shadow-float:0 12px 26px rgba(27,56,74,.16);font-family:"Segoe UI Variable","Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif}
body{background:linear-gradient(135deg,#f4f7f9 0%,#eef3f6 100%)}
.canvas-viewport{background-color:#f9fbfc;background-image:linear-gradient(rgba(75,104,120,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(75,104,120,.065) 1px,transparent 1px),radial-gradient(circle at 50% 0%,rgba(255,255,255,.92),rgba(255,255,255,0) 47%);background-size:24px 24px,24px 24px,100% 100%}
.panel-block{position:relative}.panel-block.compact{padding:13px 12px}.panel-block h2,.source-details summary{color:#223b4b;font-weight:720;letter-spacing:.01em}.heading-row{min-height:22px}
.fault-item,.sequence-value-group{border:1px solid rgba(188,207,218,.68);background:linear-gradient(145deg,#fbfdfe,#f3f7f9);box-shadow:0 1px 0 rgba(255,255,255,.9) inset}.fault-item{border-radius:7px;padding:7px}.sequence-value-group{border-radius:7px;padding:8px}
.phasor-chart{border:1px solid #dce6ec;background:radial-gradient(circle at 50% 42%,#fff 0%,#f4f8fa 78%);box-shadow:inset 0 1px 0 rgba(255,255,255,.95)}
.source-column>.card,.component-column>.card,.device-column>.card{border-color:#cbd9e2;box-shadow:0 2px 9px rgba(28,59,77,.08)}.source-column .card-title,.component-column .card-title,.device-column .card-title{background:linear-gradient(135deg,#f9fcfd,#e8f0f5);letter-spacing:.015em}
.segmented button,.tool-grid button,.source-tabs button,.mini-tabs button,.scenario-grid button{transition:transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease,background-color .18s ease,box-shadow .18s ease,color .18s ease}.segmented button:hover,.tool-grid button:hover,.source-tabs button:hover,.mini-tabs button:hover,.scenario-grid button:hover{border-color:#8ebed9;background:#f2f9fd;box-shadow:0 2px 7px rgba(28,105,150,.10)}.segmented button.active,.tool-grid button.active,.source-tabs button.active,.mini-tabs button.active{box-shadow:inset 0 1px 0 rgba(255,255,255,.72),0 2px 6px rgba(25,111,165,.10)}
.canvas-top-actions button{border-color:#b9cad5!important;background:rgba(255,255,255,.94)!important;box-shadow:0 5px 16px rgba(30,61,79,.14)!important}.canvas-top-actions button:hover{background:#fff!important;box-shadow:0 8px 20px rgba(30,61,79,.18)!important}.terminal-block-code{text-shadow:0 1px 1px rgba(0,0,0,.22)}
.terminal-row.drag-target-row:before{background:linear-gradient(90deg,rgba(20,121,184,.06),rgba(20,121,184,.17),rgba(20,121,184,.06));box-shadow:inset 0 0 0 1px rgba(20,121,184,.72)}.mobile-settings-dock button{will-change:transform}.inspector-popup-panel{border-radius:10px;box-shadow:var(--shadow-float)}
@media(prefers-reduced-motion:no-preference){.terminal-hardware,.panel-block,.canvas-top-actions{will-change:transform,opacity}}

/* Compact instrument-panel finishing pass. */
.panel-scroll{scrollbar-color:#b8c7d1 #f7fafc;scrollbar-width:thin}
.panel-scroll::-webkit-scrollbar{width:8px;height:8px}.panel-scroll::-webkit-scrollbar-track{background:#f7fafc}.panel-scroll::-webkit-scrollbar-thumb{border:2px solid #f7fafc;border-radius:99px;background:#b8c7d1}.panel-scroll::-webkit-scrollbar-thumb:hover{background:#92aaba}
.left-panel,.right-panel{box-shadow:inset -1px 0 rgba(255,255,255,.8)}.right-panel{box-shadow:inset 1px 0 rgba(255,255,255,.8),-7px 0 18px rgba(42,69,85,.035)}
.panel-block.compact{padding-block:14px}.panel-block.compact+.panel-block.compact{border-top-color:rgba(215,226,233,.72)}
.panel-block h2{font-size:12px;line-height:1.2}.panel-block h2:first-letter{color:#0b669c}.heading-row .badge{font-weight:700;letter-spacing:.02em}
.relay-state{border:1px solid rgba(177,212,193,.65);background:linear-gradient(135deg,#f4fbf7,#ecf7f0);border-radius:7px}
.source-details{background:linear-gradient(180deg,rgba(246,250,252,.7),#fff 34%)}.source-details summary{padding:14px 12px 10px}.source-details[open] summary{color:#0b669c}
.source-output-controls{flex-wrap:wrap;padding:7px 8px;border:1px solid #dbe7ed;border-radius:8px;background:#f8fbfc}.source-output-controls .ct-secondary-control{margin-left:auto}.source-settings-section{margin-inline:12px;border-top:0;padding-top:2px}
@media(max-width:1180px){.source-output-controls{justify-content:flex-start}.source-output-controls .ct-secondary-control{margin-left:0}}
.tool-grid button{min-height:34px;font-weight:650}.resistance-control{padding:8px 8px 5px;border:1px solid #dce6eb;border-radius:8px;background:#fbfdfe}.resistance-control input{margin-top:5px}
.scenario-grid{gap:6px}.scenario-grid button{min-height:39px;border-radius:7px}.scenario-grid button:hover{transform:translateY(-1px)}
.fault-list{gap:7px}.fault-item{grid-template-columns:7px 1fr;min-height:43px}.fault-item i{width:7px;height:7px}.fault-item strong{color:#244154;letter-spacing:.005em}.fault-item span{color:#6a7e8a}
.sequence-values{gap:8px}.sequence-value-group>strong{padding-bottom:3px;border-bottom:1px solid #e1eaef}.sequence-value-group span{min-height:15px}.sequence-value-group em{font-variant-numeric:tabular-nums}
.phasor-panel .heading-row,.sequence-panel .heading-row{margin-bottom:2px}.phasor-chart{margin-top:7px}.mini-tabs{padding:2px;border:1px solid #dce7ed;border-radius:7px;background:#f5f9fb}.mini-tabs button{border-color:transparent;background:transparent}.mini-tabs button.active{background:#fff;box-shadow:0 1px 4px rgba(28,76,104,.13)}
.canvas-viewport:after{position:absolute;inset:0;z-index:2;content:"";pointer-events:none;background:linear-gradient(90deg,rgba(232,240,245,.22),transparent 13%,transparent 87%,rgba(232,240,245,.22));mix-blend-mode:multiply}
.wire-layer,.preview-wire-layer,.stage-transform{isolation:isolate}.canvas-top-actions{padding:4px;border:1px solid rgba(197,212,222,.85);border-radius:99px;background:rgba(250,252,253,.76);backdrop-filter:blur(7px)}
@media(max-width:860px){
 .left-panel.mobile-settings-page-open{animation:none!important;background:linear-gradient(180deg,#fff,#f8fbfc)!important}
 .left-panel.mobile-settings-page-open>.phasor-panel.mobile-panel-active,.left-panel.mobile-settings-page-open>.sequence-panel.mobile-panel-active{box-shadow:inset 0 1px rgba(255,255,255,.9)}
 .mobile-settings-dock button{border-color:#c5d4de!important;background:rgba(255,255,255,.96)!important}
}

/* Component settings: a compact technical sheet instead of a generic card. */
.inspector-popup-panel{padding:14px!important;border:1px solid #b7c9d4!important;border-radius:12px!important;background:linear-gradient(145deg,#fff,#f6fafc)!important;box-shadow:0 18px 42px rgba(26,58,77,.24)!important}
.inspector-popup-title{min-height:34px;margin:0 0 12px!important;padding:0 0 10px!important;border-bottom:1px solid #dbe6ec!important;color:#203b4b!important;font-size:12px!important;letter-spacing:.025em}
.inspector-popup-title strong{display:flex;align-items:center;gap:7px;font-weight:760}.inspector-popup-title strong:before{width:4px;height:16px;border-radius:4px;background:#1479b8;content:""}
.inspector-popup-title button{display:grid;place-items:center;width:30px!important;height:30px!important;border:1px solid #d1e0e8!important;border-radius:50%!important;background:#fff!important;color:#56707f!important;font-size:20px!important;transition:transform .18s cubic-bezier(.16,1,.3,1),background-color .18s ease,box-shadow .18s ease!important}.inspector-popup-title button:hover{background:#edf6fb!important;box-shadow:0 2px 8px rgba(24,91,129,.14)}
.inspector-popup-panel .inspector-card{gap:11px!important}.inspector-popup-panel .inspector-title{display:flex;align-items:center;min-height:39px;margin:0!important;padding:9px 10px!important;border:1px solid #d4e2e9!important;border-left:3px solid #59a4cf!important;border-radius:8px!important;background:linear-gradient(90deg,#edf6fa,#f9fcfd)!important;color:#254455!important;font-size:12px!important;font-weight:720;line-height:1.35;word-break:break-word}
.inspector-popup-panel .inspector-actions{grid-template-columns:repeat(auto-fit,minmax(78px,1fr))!important;gap:7px!important}.inspector-popup-panel .inspector-actions button{min-height:35px;padding:7px 8px!important;border:1px solid #cbdbe4!important;border-radius:7px!important;background:#fff!important;color:#385666!important;font-size:11px!important;font-weight:660;box-shadow:0 1px 0 rgba(255,255,255,.9) inset}.inspector-popup-panel .inspector-actions button:hover{border-color:#78b3d2!important;background:#f2f9fd!important}.inspector-popup-panel .inspector-actions button.active{border-color:#2785ba!important;background:#e3f3fb!important;color:#075b91!important;box-shadow:0 0 0 2px rgba(39,133,186,.12)!important}
.inspector-popup-panel .resistance-control{padding:10px!important;border-color:#d4e3ea!important;border-radius:8px!important;background:rgba(255,255,255,.72)!important}.inspector-popup-panel .delete-button{min-height:35px;border-radius:7px!important;font-weight:680!important}.inspector-popup-panel .short-confirm-copy{border-radius:8px!important;background:#f4f8fa!important}
@media(max-width:860px){body>.inspector-popup .inspector-popup-panel{padding:13px 14px!important;border-radius:12px!important}.inspector-popup-title{margin-bottom:10px!important}.inspector-popup-panel .inspector-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* The terminal screw is a supplied hardware asset, not a painted CSS dot. */
.terminal-port{width:30px;height:30px;border:0!important;background:transparent!important;box-shadow:none!important}.terminal-port:after{content:none!important}.terminal-port.port-left{left:var(--screw-left-x,47px);top:var(--screw-left-y,8px)}.terminal-port.port-right{right:var(--screw-right-x,47px);top:var(--screw-right-y,8px)}.terminal-screw{display:block;width:22px;height:22px;margin:4px;pointer-events:none;filter:drop-shadow(0 1px 1px rgba(8,25,34,.34));transform:rotate(calc(var(--screw-left-rotation,0deg) + var(--screw-random-rotation,0deg)));transform-origin:center;transition:transform .16s cubic-bezier(.16,1,.3,1),filter .16s ease}.terminal-port.port-right .terminal-screw{transform:scaleX(-1) rotate(calc(var(--screw-right-rotation,0deg) + var(--screw-random-rotation,0deg)))}.terminal-port:hover .terminal-screw,.terminal-port.operation-armed .terminal-screw{filter:drop-shadow(0 2px 2px rgba(8,25,34,.42));transform:scale(1.16) rotate(calc(var(--screw-left-rotation,0deg) + var(--screw-random-rotation,0deg)))}.terminal-port.port-right:hover .terminal-screw,.terminal-port.port-right.operation-armed .terminal-screw{transform:scale(-1.16,1.16) rotate(calc(var(--screw-right-rotation,0deg) + var(--screw-random-rotation,0deg)))}
.terminal-port.drag-target.port-left .terminal-screw{filter:drop-shadow(0 2px 2px rgba(8,64,94,.35));transform:scale(1.14) rotate(calc(var(--screw-left-rotation,0deg) + var(--screw-random-rotation,0deg)))}.terminal-port.drag-target.port-right .terminal-screw{filter:drop-shadow(0 2px 2px rgba(8,64,94,.35));transform:scale(-1.14,1.14) rotate(calc(var(--screw-right-rotation,0deg) + var(--screw-random-rotation,0deg)))}
.terminal-jumper-group{transform-origin:center;transition:transform .16s cubic-bezier(.16,1,.3,1),filter .16s ease}.terminal-jumper-group.jumper-emphasis:not(.dragging-jumper-material),.terminal-jumper-group.selected:not(.dragging-jumper-material){transform:scale(1.035);filter:drop-shadow(0 3px 4px rgba(25,67,91,.24))}

/* Exam authoring is separate from ordinary scheme import/export.  The exam
   surface is intentionally compact so it remains usable above the canvas. */
.top-actions #examExitBtn{border-color:#b8d7c7;background:#eff9f3;color:#176e49}
.canvas-top-actions .canvas-exam-entry,.canvas-top-actions .canvas-exam-submit{display:grid!important;place-items:center;min-width:38px;height:34px;padding:0 9px!important;border-radius:17px!important;color:#0c628f!important;font-size:10px!important;font-weight:750!important;letter-spacing:.04em}.canvas-top-actions .canvas-exam-submit{border-color:#197a52!important;background:#eaf8f0!important;color:#176c48!important}
.canvas-top-actions .canvas-exam-submit.hidden{display:none!important}
.exam-popup{position:fixed;inset:0;z-index:140;display:grid;place-items:center;padding:18px}.exam-popup-backdrop{position:absolute;inset:0;background:rgba(20,43,57,.54);backdrop-filter:blur(12px) saturate(.68)}.exam-popup-panel{position:relative;width:min(390px,calc(100vw - 32px));padding:15px;border:1px solid #b7cbd7;border-radius:12px;background:linear-gradient(145deg,#fff,#f5f9fb);box-shadow:0 20px 48px rgba(20,53,72,.25)}.exam-popup-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px;padding-bottom:10px;border-bottom:1px solid #dce7ed;color:#213d4e;font-size:13px}.exam-popup-title strong{display:flex;align-items:center;gap:7px}.exam-popup-title strong:before{width:4px;height:16px;border-radius:999px;background:#1479b8;content:""}.exam-popup-title button{display:grid;place-items:center;width:29px;height:29px;border:1px solid #cfdee6;border-radius:50%;background:#fff;color:#5d7482;font-size:19px}.exam-field{display:grid;gap:6px;color:#3b5565;font-size:11px;font-weight:650}.exam-field input{width:100%;padding:9px 10px;border:1px solid #c9d9e2;border-radius:7px;background:#fff;color:#213845;outline:none}.exam-field input:focus{border-color:#559bc3;box-shadow:0 0 0 3px rgba(20,121,184,.12)}.exam-note{margin:10px 0 13px;padding:8px 9px;border-left:3px solid #72b1d4;border-radius:5px;background:#eef7fb;color:#5e7481;font-size:10px;line-height:1.55}.exam-actions{display:grid;grid-template-columns:1fr 1.28fr;gap:8px}.exam-actions button{min-height:38px;border:1px solid #c5d7e1;border-radius:8px;background:#fff;color:#365568;font-size:11px;font-weight:700;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.exam-actions button:hover{border-color:#8bbbd6;box-shadow:0 3px 9px rgba(31,89,121,.12);transform:translateY(-1px)}.exam-actions .exam-import{grid-column:1/-1;min-height:40px;border-color:#a9ccdf;background:#f4fbff;color:#12638e}.exam-actions .primary{border-color:#1479b8;background:#1479b8;color:#fff;box-shadow:0 3px 9px rgba(20,121,184,.2)}
.exam-standard-actions{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:6px;margin-top:12px;padding-top:11px;border-top:1px solid #dce7ed}.exam-standard-actions button,.exam-standard-actions .file-button{display:grid;place-items:center;min-height:31px;margin:0;padding:6px;border:1px solid #d3e0e7;border-radius:7px;background:#fff;color:#56707f;font-size:9px;font-weight:700;line-height:1;white-space:nowrap}.exam-standard-actions button:first-child{border-color:#98c5dc;background:#f0f9fd;color:#10618d}.exam-standard-actions .file-button input{display:none}
body.exam-popup-open>.mobile-settings-dock{opacity:0!important;pointer-events:none!important;transform:translate(-50%,18px)!important}
body.exam-mode [data-mobile-panel="scenario"],body.exam-mode [data-mobile-panel-tab="scenario"],body.exam-mode #scenarioGrid,body.exam-mode #resetBtn,body.exam-mode #examSetupBtn,body.exam-mode #examImportLabel{display:none!important}body.exam-mode .horizontal-link.open,body.exam-mode .horizontal-link.virtual,body.exam-mode .terminal-jumper-group.virtual{filter:none!important}body.exam-mode .horizontal-link.open:after{display:none!important}body.exam-mode .horizontal-link.virtual,body.exam-mode .terminal-jumper-hit.virtual{outline:0!important}body.exam-mode .exam-hidden{display:none!important}
@keyframes exam-unresolved-pulse{0%,100%{filter:drop-shadow(0 0 1px rgba(199,53,63,.45));opacity:1}50%{filter:drop-shadow(0 0 7px rgba(199,53,63,.92));opacity:.78}}
body.exam-mode .terminal-port.exam-fault-target .terminal-screw{filter:drop-shadow(0 0 4px rgba(199,53,63,.9))!important;animation:exam-unresolved-pulse 1.25s ease-in-out infinite}
body.exam-mode .terminal-wire.exam-fault-target>img{filter:drop-shadow(0 0 4px rgba(199,53,63,.85));animation:exam-unresolved-pulse 1.25s ease-in-out infinite}
body.exam-mode .terminal-wire.exam-fault-target b{color:#a32934!important;text-shadow:0 1px rgba(255,255,255,.9)}
body.exam-mode .horizontal-link.exam-fault-target,body.exam-mode .terminal-jumper-group.exam-fault-target{filter:drop-shadow(0 0 5px rgba(199,53,63,.9))!important;animation:exam-unresolved-pulse 1.25s ease-in-out infinite}
body.exam-mode .terminal-jumper-hit.exam-fault-target{outline:0!important;filter:none!important}
body.exam-mode .wire-path.exam-fault-wire{stroke:#c7353f!important;stroke-width:4px!important;filter:drop-shadow(0 0 4px rgba(199,53,63,.8));animation:exam-unresolved-pulse 1.25s ease-in-out infinite}
body.exam-mode .short-wire-end.exam-fault-wire{filter:drop-shadow(0 0 4px rgba(199,53,63,.9));animation:exam-unresolved-pulse 1.25s ease-in-out infinite}
@media(max-width:860px){.top-actions{gap:5px}.top-actions #examSetupBtn,.top-actions #examExitBtn{font-size:10px;padding:6px 8px}.canvas-top-actions .canvas-exam-entry,.canvas-top-actions .canvas-exam-submit{height:32px;min-width:36px;font-size:9px!important}.exam-popup{align-items:end;padding:0}.exam-popup-panel{width:100%;max-width:none;border-radius:14px 14px 0 0;padding:14px 16px 18px}.exam-popup-title{margin-bottom:11px}.exam-actions{grid-template-columns:repeat(2,1fr)}.exam-actions button{min-height:38px}}
