:root{--bg: #111215;--panel: #1a1c21;--panel2: #22252b;--line: #2c3038;--text: #e9eaec;--muted: #979ca5;--accent: #d0182b;--accent2: #ff3347;--ok: #2ecc71;--warn: #f1c40f;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:grid;grid-template-rows:auto minmax(0,1fr) 26px;grid-template-columns:minmax(0,1fr);overflow:hidden}button{font:inherit;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 10px;cursor:pointer}button:hover{background:#2c3038;border-color:#3a3f49}button:disabled{opacity:.4;cursor:default}button.accent{background:var(--accent);border-color:var(--accent)}button.accent:hover{background:var(--accent2)}button.danger:hover{background:#6b1820}.topbar{display:flex;align-items:center;gap:18px;padding:0 14px;min-height:52px;background:linear-gradient(#1c1e23,#15171a);border-bottom:3px solid var(--accent)}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand-mark{width:32px;height:32px;background:var(--accent);border-radius:7px;display:grid;place-items:center}.brand-mark svg{width:26px;height:26px}.brand-text{font-size:18px;letter-spacing:1px;font-style:italic}.brand-text b{color:var(--accent2)}.brand-text small{font-style:normal;letter-spacing:0;font-size:12px;color:var(--muted);margin-left:6px}.menu{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow-x:auto}.topbar,.menu{min-width:0}.menu button{background:transparent;border-color:transparent;white-space:nowrap}.menu button:hover{background:var(--panel2);border-color:var(--line)}.sep{width:1px;height:24px;background:var(--line);margin:0 4px}.dropdown{position:relative}.lang-pick{margin-left:auto;display:flex;align-items:center;gap:6px;color:var(--muted);white-space:nowrap}.lang-pick select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 6px;font:inherit;cursor:pointer}.bghost,.conn-add{cursor:copy}.conn-add:hover circle{fill:#ffd84d}.kb{display:inline-block;margin-left:6px;padding:0 4px;font:600 9.5px/14px system-ui,sans-serif;color:var(--muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.14);border-radius:3px;vertical-align:1px;letter-spacing:.2px}button.accent .kb{color:#ffd9dd;border-color:#ffffff59}.zoombar button{position:relative}.kb.corner{position:absolute;right:1px;bottom:1px;margin:0;padding:0 2px;font-size:8px;line-height:10px}.plan-btn{width:100%;margin-top:8px}.plan-box{max-width:min(1100px,94vw);max-height:90vh;overflow:auto;color:var(--text)}.plan-box .intro{color:var(--muted);font-size:13px;margin:0 0 6px}.plan-box table{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0}.plan-box th{text-align:left;color:var(--muted);font-weight:500;border-bottom:1px solid var(--line);padding:4px}.plan-box td{border-bottom:1px solid #23262c;padding:4px}.plan-box h4{margin:14px 0 6px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.plan-box .sheet{background:#fff;border-radius:8px;padding:8px}.plan-box .sheet svg{width:100%;height:auto;display:block}.plan-box .row{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.border-actions{display:grid;gap:6px}.loop-panel .lane{margin:12px 0 2px;font-weight:700;font-size:13px;border-top:1px solid var(--line);padding-top:8px}.loop-panel .prop.all{border-color:var(--ok)}.loop-panel .choice{position:sticky;bottom:44px;margin-top:8px;padding:6px 8px;font-size:12.5px;font-weight:600;background:var(--panel2);border:1px solid var(--line);border-radius:6px}.loop-panel .row{position:sticky;bottom:0;background:#1a1c21f7;padding-top:6px}.asm-card{position:relative}.asm-card svg{height:64px}.asm-del{position:absolute;top:2px;right:2px;width:20px;height:20px;padding:0;line-height:18px;font-size:14px;border-radius:50%;background:#0006;border-color:transparent;color:var(--muted)}.asm-del:hover{background:#6b1820;color:#fff}.asm-hint{margin:0 0 8px}.gen-box{width:min(440px,94vw)}.gen-form{display:grid;gap:8px;margin:10px 0}.gen-form label:not(.chk),.gen-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13.5px}.gen-form input[type=number],.gen-form select{width:90px;padding:5px 8px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;font:inherit}.gen-form #genBridgeRows{display:grid;gap:8px;padding-left:12px;border-left:2px solid var(--line)}.gen-hint{font-size:12px;color:var(--muted);margin-top:-4px}.gen-actions{display:flex;gap:8px;justify-content:flex-end}.gen-msg{margin:4px 0 10px;padding:8px 10px;border-radius:6px;font-size:13px}.gen-msg.warn{background:#f1c40f1f;color:var(--warn);border:1px solid rgba(241,196,15,.35)}.gen-msg.err{background:#d0182b26;color:#ff8a96;border:1px solid rgba(208,24,43,.45)}.marshal{cursor:grab}.asm-form{background:var(--panel2);border:1px solid var(--ok);border-radius:8px;padding:8px;margin-bottom:8px}.asm-form-title{font-size:12px;color:var(--muted);margin-bottom:6px}.asm-form label{display:grid;gap:4px;font-size:12.5px}.asm-form input{padding:6px 8px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit}.asm-form-row{display:flex;gap:6px;justify-content:flex-end;margin-top:8px}.asm-form-row button{font-size:12.5px}.border-cats{display:grid;grid-template-columns:1fr auto auto;gap:4px 6px;align-items:center;font-size:13px;margin-bottom:8px}.border-cats button{padding:2px 10px;font-size:15px;line-height:1.3}.border-actions button{text-align:left;font-size:12.5px}.piece-card.border-card svg{height:44px}.dropdown-menu{display:none;position:fixed;z-index:50;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px;min-width:220px;box-shadow:0 10px 30px #00000080;overflow-y:auto;overscroll-behavior:contain}.dropdown-menu.open{display:block}.dropdown-menu button{display:block;width:100%;text-align:left;background:transparent;border:none}.dropdown-menu button:hover{background:var(--panel2)}.layout{display:grid;grid-template-columns:270px minmax(0,1fr) 290px;min-height:0}.panel{background:var(--panel);overflow-y:auto;padding:12px;min-height:0}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.panel h2{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin:14px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}.panel h2:first-child{margin-top:0}.dir-toggle{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;color:var(--muted)}.seg{display:flex}.seg button{padding:4px 8px;font-size:12px;border-radius:0}.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}.seg button.on{background:var(--accent);border-color:var(--accent)}#search{width:100%;padding:7px 10px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--text);margin-bottom:6px}.cat-title{font-size:12px;font-weight:600;color:var(--text);margin:12px 0 6px}.cat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.piece-card{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;text-align:center}.piece-card:hover{border-color:var(--accent);background:#262a31}.piece-card svg{width:100%;height:54px;display:block}.piece-card .pn{font-size:11.5px;line-height:1.2;margin-top:4px}.piece-card .pc{font-size:10.5px;color:var(--muted)}.hint{font-size:12px;color:var(--muted);margin-top:12px}.board-wrap{position:relative;overflow:hidden;background:#0d0e10;container-type:inline-size}#board{width:100%;height:100%;display:block;touch-action:none;cursor:default}#board.panning{cursor:grabbing}.piece{cursor:grab}.piece:hover .hl{stroke:#ffffff59}#board.dragging .piece{cursor:grabbing}.selbar{position:absolute;bottom:14px;left:0;right:0;margin-inline:auto;width:max-content;transform:none;max-width:calc(100% - 136px);flex-wrap:wrap;justify-content:center;white-space:normal;display:none;align-items:center;gap:6px;padding:8px 10px;background:#1a1c21f2;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000080}.selbar.show{display:flex}.selbar button{white-space:nowrap}@container (max-width: 1560px){.selbar .kb{display:none}}@container (max-width: 1180px){.selbar button>span{display:none}}.selname{font-size:12px;color:var(--muted);margin-right:6px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.zoombar{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:4px}.zoombar button{width:36px;height:36px;padding:0;font-size:18px;background:#1a1c21f2}.loop-panel{position:absolute;top:14px;right:14px;width:330px;max-height:calc(100% - 90px);overflow-y:auto;background:#1a1c21f7;border:1px solid var(--line);border-top:3px solid var(--ok);border-radius:10px;padding:12px;box-shadow:0 10px 30px #00000080;z-index:30}.loop-panel[hidden]{display:none}.loop-panel h3{margin:0 0 4px;font-size:15px}.loop-panel .gap{font-size:12px;color:var(--muted);margin-bottom:10px}.loop-panel .prop{display:block;width:100%;text-align:left;margin-bottom:6px;padding:8px 10px;border-radius:8px;background:var(--panel2)}.loop-panel .prop.on{border-color:var(--ok);background:#2ecc711f}.loop-panel .prop .t{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}.loop-panel .prop.rep .t{color:var(--warn)}.loop-panel .prop .d{font-size:13px}.loop-panel .row{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.loop-panel .none{font-size:13px;color:#ff8a96;margin:6px 0}.circuits h2{margin-top:14px}.circuit{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin-bottom:6px;font-size:12.5px}.circuit-head{display:flex;justify-content:space-between;font-weight:600;margin-bottom:2px}.lane-row{display:flex;justify-content:space-between;color:var(--muted);padding:1px 0 1px 8px}.lane-row small{margin-left:4px}.lane-row small.closed{color:var(--ok)}.lane-row small.open{color:var(--warn)}.stats .state button{margin-top:6px;width:100%;font-size:12.5px}.toast{position:absolute;left:50%;top:16px;transform:translate(-50%) translateY(-20px);background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--ok);padding:8px 14px;border-radius:8px;opacity:0;transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.ctxmenu{position:absolute;display:none;z-index:40;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px;min-width:200px;box-shadow:0 10px 30px #00000080;max-height:calc(100% - 16px);overflow-y:auto;overscroll-behavior:contain}.ctxmenu.open{display:block}.ctxmenu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:6px 10px}.ctxmenu button:hover{background:var(--panel2)}.ctxmenu hr{border:none;border-top:1px solid var(--line);margin:4px 0}.stats{display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:13px}.stats .k{color:var(--muted)}.stats .v{text-align:right;font-weight:600}.stats .state{grid-column:1 / -1;margin-top:6px;padding:6px 8px;border-radius:6px;font-size:12.5px}.state.closed{background:#2ecc7126;color:var(--ok)}.state.open{background:#f1c40f1f;color:var(--warn)}.state.empty{background:var(--panel2);color:var(--muted)}.state.out{background:#d0182b26;color:#ff6b7a}#bom table{width:100%;border-collapse:collapse;font-size:12.5px}#bom th{text-align:left;color:var(--muted);font-weight:500;padding:4px 2px;border-bottom:1px solid var(--line)}#bom td{padding:4px 2px;border-bottom:1px solid #23262c}#bom td.q{text-align:right;font-weight:700}#bom .empty{color:var(--muted);font-size:12.5px}.table-size{display:grid;gap:6px}.table-size label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.table-size input{width:80px;padding:4px 6px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:5px}.shape-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}.shape-grid button{padding:6px 4px 4px;font-size:11.5px;display:flex;flex-direction:column;align-items:center;gap:3px}.shape-grid button svg{width:100%;height:30px}.shape-grid button.on{border-color:var(--accent);background:#d0182b2e}.table-size label span{display:flex;align-items:center;gap:6px}.table-orient{display:flex;gap:6px;margin-top:8px}.table-orient button{flex:1;font-size:12.5px}.table-info{font-size:12px;color:var(--muted);margin-top:6px}.chk{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 0;cursor:pointer}.chk input{accent-color:var(--accent)}.status{display:flex;gap:20px;align-items:center;padding:0 12px;font-size:12px;color:var(--muted);background:#15171a;border-top:1px solid var(--line)}#statusMsg{flex:1}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;z-index:100;padding:16px}.modal[hidden]{display:none}.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px;max-width:560px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}.modal-actions{position:sticky;bottom:-20px;z-index:1;display:flex;gap:8px;justify-content:flex-end;margin:12px -24px -20px;padding:12px 24px 16px;background:var(--panel);border-top:1px solid var(--line)}.modal-box h3{margin-top:0}.dlg-box{width:min(420px,100%)}.dlg-msg{margin:0;line-height:1.5;overflow-wrap:anywhere}.about-box{width:min(480px,100%)}.about-tag{margin:-6px 0 12px;color:var(--muted);font-size:13px}.about-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}.about-facts dt{color:var(--muted)}.about-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}.about-box h4{margin:14px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}.about-box p{margin:0;font-size:13px;line-height:1.5}.about-box p.about-copy{margin-top:14px;font-size:12px;color:var(--muted)}.modal-actions .about-link{margin-right:auto}.status-ver{background:transparent;border:none;padding:0 2px;font-size:12px;color:var(--muted)}.status-ver:hover{background:transparent;color:var(--text);text-decoration:underline}.modal-box li{margin-bottom:6px}.keys{width:100%;margin:10px 0 16px;font-size:13px}.keys td{padding:3px 4px}kbd{background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:12px}.topbar.fit-1 .menu .kb{display:none}.topbar.fit-2 .menu button>span{display:none}.topbar.fit-3 .brand-text small,.topbar.fit-4 .brand-text{display:none}.topbar.fit-5{flex-wrap:wrap;row-gap:4px;padding-top:6px;padding-bottom:6px}.topbar.fit-5 .menu{order:3;flex-basis:100%;flex-wrap:wrap;justify-content:center;overflow:visible}.topbar.fit-5 .menu .sep{display:none}@media(max-width:1000px){.layout{grid-template-columns:220px minmax(0,1fr)}.panel.right{display:none}}@media(max-width:700px){.layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 36vh}.board-wrap{order:1}.panel.left{order:2;border-right:none;border-top:1px solid var(--line)}.cat-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.lang-pick{font-size:0}.lang-pick select{max-width:110px;font-size:14px}.modal-box{padding:16px 18px}.modal-actions{margin:12px -18px -16px;padding:12px 18px 14px}.status{gap:10px}}*{scrollbar-width:thin;scrollbar-color:#3a3f49 transparent}.menu{scrollbar-width:none}.menu::-webkit-scrollbar{display:none}#printSheet{display:none}.print-box{width:min(460px,94vw)}.asm-tools{display:flex;gap:6px;margin:-2px 0 8px}.asm-tools button{flex:1;font-size:12px;padding:4px 6px}#tableFitBtn{margin-top:8px}#printCircuitOpts{margin:0}.sel-fx .sel-fill{animation:selPulse 1.1s ease-in-out infinite alternate}@keyframes selPulse{0%{fill-opacity:.55}to{fill-opacity:1}}@media(prefers-reduced-motion:reduce){.sel-fx .sel-fill{animation:none}}@media print{body.printing-sheet>*:not(#printSheet){display:none!important}body.printing-sheet #printSheet{display:block!important;color:#000;background:#fff;font-family:Arial,sans-serif}#printSheet .ps-page{page-break-inside:avoid}#printSheet .ps-break{page-break-before:always;break-before:page}#printSheet .ps-head{display:grid;gap:1mm;font-size:9pt;border-bottom:.4mm solid #000;padding-bottom:1.5mm;margin-bottom:2mm}#printSheet .ps-head b{color:#c00}#printSheet .ps-sum{font-size:8.5pt;color:#333}#printSheet svg{display:block;margin:0 auto}#printSheet.mode-bw svg{filter:grayscale(1) contrast(1.15)}#printSheet .ps-foot{font-size:8pt;text-align:center;border-top:.3mm solid #999;padding-top:1.5mm;margin-top:2mm;color:#333}#printSheet .ps-cols{display:grid;grid-template-columns:1fr 1fr;gap:8mm;font-size:9pt}#printSheet table{width:100%;border-collapse:collapse}#printSheet .ps-body{overflow:hidden}#printSheet .ps-body>svg{display:block;margin:0 auto}#printSheet .ps-intro{font-size:9pt}#printSheet .ps-intro p{margin:0 0 1.5mm}#printSheet .ps-table{font-size:9pt}#printSheet .ps-table td,#printSheet .ps-table th{padding:.6mm 1mm;height:4.6mm}#printSheet th,#printSheet td{border-bottom:.2mm solid #bbb;padding:1mm;text-align:left;color:#000}#printSheet h2{font-size:10pt;margin:0 0 2mm;color:#000}#printSheet .circuit{border:.3mm solid #999;border-radius:1.5mm;padding:1.5mm 2mm;margin-bottom:2mm;background:#fff}#printSheet .circuit-head,#printSheet .lane-row{display:flex;justify-content:space-between;color:#000}#printSheet small{color:#333!important}body.printing-plan>*:not(#planModal){display:none!important}body.printing-plan #planModal{position:static;background:#fff;display:block}body.printing-plan .plan-box{max-height:none;overflow:visible;background:#fff;color:#000;border:none;max-width:none}body.printing-plan .plan-box .row{display:none}body.printing-plan .plan-box th,body.printing-plan .plan-box .intro,body.printing-plan .plan-box h4{color:#333}body{display:block;background:#fff}.topbar,.panel,.status,.selbar,.zoombar,.toast{display:none!important}.layout{display:block}.board-wrap{width:100vw;height:100vh;background:#fff}}a.brand{color:inherit;text-decoration:none;border-radius:8px}a.brand:hover .brand-text{color:#fff}a.brand:focus-visible{outline:2px solid var(--warn);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.share-box{width:min(560px,94vw)}.share-intro{color:var(--muted);margin:0 0 12px}.share-link input{width:100%;box-sizing:border-box;padding:8px 10px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:12.5px/1.4 ui-monospace,Consolas,monospace}.share-btns{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 10px}.share-note{font-size:12.5px;color:var(--muted);margin:0 0 6px}.share-long{font-size:12.5px;color:var(--warn);margin:0 0 6px}.share-follow,.about-follow{margin:12px 0 0}a.follow-fb{color:var(--accent2);text-decoration:none;font-weight:600}a.follow-fb:hover{text-decoration:underline}a.follow-fb:focus-visible{outline:2px solid var(--warn);outline-offset:2px;border-radius:4px}.share-step{padding:12px 0;border-top:1px solid var(--line)}.share-step:first-of-type{border-top:none;padding-top:2px}.share-step h4{margin:0 0 6px;font-size:14px;color:var(--text)}.share-step p{margin:0 0 8px;color:var(--muted);font-size:13px}.share-howto{margin:0 0 4px;padding-left:20px;color:var(--muted);font-size:13px}.share-howto li{margin-bottom:4px}.share-step .share-btns{margin:8px 0 0}.share-follow p,.about-follow p{margin:4px 0 0;font-size:12.5px;color:var(--muted)}
