.balancer-page{max-width:1380px;margin:0 auto 90px}.balancer-page-head{display:flex;justify-content:space-between;align-items:end;padding:38px 4px 24px}.balancer-page-head small{font:500 10px DM Mono;letter-spacing:2px;color:var(--orange)}.balancer-page-head h1{margin:6px 0;font-size:30px}.balancer-page-head p{margin:0;color:#777;font-size:13px}.balancer-page-head>span{padding:8px 12px;background:#282b2d;color:#ddd;font:10px DM Mono}.balancer-layout{display:grid;grid-template-columns:310px 1fr;border:1px solid var(--line);background:#fff;box-shadow:0 15px 45px #1e24280c}.balancer-controls{padding:26px;background:#fafaf8;border-right:1px solid var(--line)}.balancer-preset{display:grid;gap:8px;margin-bottom:22px}.balancer-preset strong{font-size:11px}.balancer-preset button{border:1px solid #ef9b5f;background:#fff6ef;color:#b84f09;padding:10px;font:600 10px DM Mono;cursor:pointer}.balancer-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.balancer-field-grid label,.balancer-belt-label{margin:0}.balancer-field-grid label span,.balancer-belt-label span{display:block;font-size:10px;margin-bottom:6px}.balancer-field-grid label{position:relative}.balancer-field-grid input,.balancer-belt-label select{width:100%;height:42px;border:1px solid #d7d9da;background:#fff;padding:0 10px;font:500 13px DM Mono}.balancer-field-grid b{position:absolute;right:8px;bottom:13px;color:#aaa;font-size:9px}.balancer-belt-label{display:block;margin-top:16px}.balancer-total-check{margin-top:18px;padding:14px;border-left:3px solid #c8c8c4;background:#f1f1ee}.balancer-total-check strong,.balancer-total-check span{display:block}.balancer-total-check strong{font-size:12px}.balancer-total-check span{font-size:10px;color:#777;margin-top:5px}.balancer-total-check.ready{border-color:var(--green);background:#eff9f4}.balancer-total-check.mismatch,.balancer-total-check.blocked{border-color:#d3543b;background:#fff2ef}.balancer-results{padding:26px;min-width:0}.balancer-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.balancer-summary article{border:1px solid var(--line);padding:15px}.balancer-summary small,.balancer-summary span{display:block;color:#888;font-size:9px}.balancer-summary strong{display:block;font:500 23px DM Mono;margin:5px 0}.balancer-summary em{font:10px Noto Sans KR;font-style:normal;margin-left:3px;color:#999}.balancer-diagram-card,.balancer-steps{border:1px solid var(--line);margin-top:12px}.balancer-diagram-card>header,.balancer-steps>header{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line)}.balancer-diagram-card header strong,.balancer-diagram-card header small{display:block}.balancer-diagram-card header small,.balancer-steps header small{font-size:9px;color:#888}.balancer-diagram-card button{border:1px solid #ddd;background:#fff;padding:8px 11px;font-size:10px;cursor:pointer}.balancer-diagram{display:grid;grid-template-columns:minmax(105px,1fr) 130px minmax(130px,1.2fr) 130px minmax(105px,1fr);align-items:center;gap:12px;padding:24px;overflow:auto}.balancer-node-bank{display:grid;gap:5px}.balancer-node-bank h3{text-align:center;font:500 10px DM Mono;color:#999;margin:0 0 4px}.balancer-node-bank span{border:1px solid #ddd;padding:7px 9px;display:flex;justify-content:space-between;gap:8px;font-size:9px;background:#fafafa}.balancer-node-bank.outputs span{border-color:#f2ab78;background:#fff7f0}.balancer-stage{text-align:center;padding:14px 8px;background:#292c2e;color:#fff}.balancer-stage img{display:block;width:46px;height:46px;object-fit:contain;margin:0 auto 7px}.balancer-stage strong,.balancer-stage b,.balancer-stage small{display:block}.balancer-stage strong{font-size:11px}.balancer-stage b{color:var(--orange2);font:500 12px DM Mono;margin:4px}.balancer-stage small{font-size:8px;color:#aaa;line-height:1.5}.balancer-bus{text-align:center;color:#777}.balancer-bus i{display:block;height:2px;background:repeating-linear-gradient(90deg,var(--orange) 0 8px,transparent 8px 12px);margin:8px 0}.balancer-bus strong,.balancer-bus small{display:block}.balancer-bus strong{font-size:10px;color:#333}.balancer-bus small{font-size:8px;line-height:1.5}.balancer-steps ol{list-style:none;margin:0;padding:4px 18px}.balancer-steps li{display:grid;grid-template-columns:42px 1fr;gap:10px;padding:15px 0;border-bottom:1px solid #eee}.balancer-steps li:last-child{border:0}.balancer-steps li>b{font:500 12px DM Mono;color:var(--orange)}.balancer-steps li strong{font-size:12px}.balancer-steps p{font-size:10px;color:#777;line-height:1.65;margin:5px 0 0}@media(max-width:900px){.balancer-page{margin:0 14px 75px}.balancer-page-head{padding:25px 4px 18px}.balancer-page-head>span{display:none}.balancer-layout{grid-template-columns:1fr}.balancer-controls{border-right:0;border-bottom:1px solid var(--line)}.balancer-diagram{min-width:760px}.balancer-diagram-card{overflow:hidden}}@media(max-width:560px){.balancer-page-head h1{font-size:25px}.balancer-page-head p{font-size:11px}.balancer-results{padding:15px}.balancer-summary{grid-template-columns:1fr 1fr}.balancer-diagram-card>header{align-items:flex-start}.balancer-diagram-card header small{max-width:190px}.balancer-diagram{padding:18px}.balancer-steps li{grid-template-columns:32px 1fr}}.balancer-page{max-width:var(--app-page-max);margin:var(--app-page-top) auto var(--app-page-bottom);padding:0 var(--app-page-gutter)}@media(max-width:900px){.balancer-page{margin:var(--app-page-top) auto var(--app-page-bottom);padding-inline:var(--app-page-gutter)}}.balancer-controls{border-top:3px solid var(--orange)}.balancer-results{border-top:3px solid var(--text)}.balancer-total-check{border:1px solid #c8c8c4;border-left-width:4px;border-radius:var(--radius-control)}.balancer-summary article,.balancer-diagram-card,.balancer-steps{border-radius:var(--radius-control);background:var(--card)}.balancer-summary article:first-child{border-top:3px solid var(--orange)}.balancer-diagram-card>header,.balancer-steps>header{background:var(--surface-soft)}@media(max-width:900px){.balancer-results{border-top:0}}.balancer-diagram{display:block;padding:18px;background:#f5f5f2;overflow:visible}.actual-diagram-section{background:#fff;border:1px solid var(--line);margin-bottom:14px}.actual-diagram-section:last-child{margin-bottom:0}.actual-diagram-section>header{padding:12px 14px;border-bottom:1px solid var(--line)}.actual-diagram-section>header b,.actual-diagram-section>header small{display:block}.actual-diagram-section>header b{font-size:12px}.actual-diagram-section>header small{font-size:9px;color:#888;margin-top:3px}.actual-input-list,.actual-output-list{display:grid;gap:10px;padding:12px}.actual-input-module,.actual-output-module{border:1px solid #dfe0df;background:#fafaf8;display:grid;grid-template-columns:145px 1fr;min-width:760px}.actual-input-module>header,.actual-output-module>header{padding:13px;border-right:1px solid #ddd;background:#292c2e;color:#fff}.actual-input-module header strong,.actual-input-module header span,.actual-input-module header small,.actual-output-module header strong,.actual-output-module header span{display:block}.actual-input-module header span{color:var(--orange2);font:500 13px DM Mono;margin:5px 0}.actual-input-module header small,.actual-output-module header span{color:#aaa;font-size:8px;line-height:1.5;margin-top:5px}.tree-scroll{overflow-x:auto;padding:12px}.device-tree{display:flex;align-items:center;gap:18px;position:relative}.device-tree>.tree-children{display:flex;flex-direction:column;gap:8px;position:relative}.device-tree>.tree-children:before{content:"";position:absolute;left:-10px;top:12px;bottom:12px;width:2px;background:#b7b9b9}.diagram-device{width:100px;min-width:100px;border:1px solid #d5d6d5;background:#fff;padding:6px;display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;align-items:center;position:relative}.diagram-device:after{content:"→";position:absolute;right:-15px;color:var(--orange)}.diagram-device img{width:26px;height:26px;grid-row:1/3;object-fit:contain}.diagram-device b{font:600 9px DM Mono}.diagram-device small{font:8px DM Mono;color:#777;white-space:nowrap}.tree-output{display:flex;justify-content:space-between;gap:8px;min-width:104px;border:1px solid #efab78;background:#fff6ee;padding:5px 7px;font:8px DM Mono}.tree-output b{color:#a34c0d}.wiring-scroll{overflow:auto;padding:12px}.wiring table{min-width:720px}.wiring th{text-align:center!important}.wiring td{text-align:center;padding:7px;border:1px solid #eee}.wiring td b,.wiring td small{display:block}.wiring td b{font:600 8px DM Mono;color:#b6530e}.wiring td small{font-size:8px;color:#888}.wiring td.empty{color:#c8c8c8;background:#fafafa}.wiring td.connected{background:#fff7f0}.actual-output-module{grid-template-columns:180px 1fr}.merge-chain{padding:12px 18px;display:flex;align-items:center;gap:8px;overflow-x:auto}.merge-chain-stage{display:flex;align-items:center;gap:7px;white-space:nowrap}.merge-chain-stage>span{font:8px DM Mono;background:#eee;padding:5px}.merge-chain-stage>i,.merge-final{font-style:normal;color:#999;font-size:10px}.merge-chain .diagram-device:after{display:none}.merge-final{white-space:nowrap}.merge-final strong{color:#158151}.optimized-route{display:flex;align-items:center;gap:18px;min-height:52px}.device-row{display:flex;align-items:center;gap:8px}.device-row>i{font-style:normal;color:#999}.route-outputs{display:flex;flex-direction:column;gap:5px}.balancer-diagram-empty{margin:0;padding:35px;text-align:center;color:#888;font-size:11px;background:#fff;border:1px dashed #ccc}.canvas-layout>header{display:flex;align-items:center;justify-content:space-between}.canvas-layout>header button{border:1px solid #ddd;background:#fff;padding:8px 12px;font-size:10px;cursor:pointer}.balancer-canvas-scroll{overflow:auto;background:#fbfbf9}.balancer-canvas-scroll canvas{display:block}.balancer-canvas-legend{display:flex;flex-wrap:wrap;gap:8px;padding:10px 14px;border-top:1px solid #eee}.balancer-canvas-legend span{display:flex;align-items:center;gap:5px;font:9px DM Mono;color:#666}.balancer-canvas-legend i{width:13px;height:3px;display:inline-block}@media(max-width:900px){.balancer-diagram{min-width:0}.actual-diagram-section{overflow:hidden}.actual-input-list,.actual-output-list{overflow-x:auto}}
