:root{--bg: #0b1220;--panel: #111827;--panel2: #1e293b;--line: #273449;--text: #e5e7eb;--muted: #94a3b8;--accent: #22d3ee;--warn: #fbbf24;--c-SDI:#06b6d4;--c-HDMI:#8b5cf6;--c-XLR:#f59e0b;--c-TRS:#fbbf24;--c-AES:#fb923c;--c-MADI:#f97316;--c-CAT6:#22c55e;--c-FIBER:#84cc16;--c-SMPTE:#a3e635;--c-REF:#e879f9;--c-TC:#f472b6;--c-RS422:#94a3b8;--c-TALLY:#ef4444;--c-USB:#e2e8f0;--c-TB:#c7d2fe;--c-POWER:#6b7280}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button,.btn{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;font:inherit}button:hover,.btn:hover{border-color:var(--accent)}button.on{background:var(--accent);color:#042f2e;border-color:var(--accent);font-weight:600}button.primary{background:var(--accent);color:#042f2e;font-weight:600}button.danger{color:#fca5a5}button.danger:hover{border-color:#ef4444}button.sm{padding:3px 8px;font-size:12px}button:disabled{opacity:.5;cursor:default}input,select,textarea{background:#0f172a;color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font:inherit;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}label{display:block;margin:8px 0;color:var(--muted);font-size:12px}label input,label select,label textarea{margin-top:3px;color:var(--text)}h3{margin:6px 0 8px;font-size:15px}h4{margin:14px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:11px}.center{text-align:center}.grow{flex:1}.row{display:flex;gap:8px;align-items:center;margin:10px 0;flex-wrap:wrap}.tag{display:inline-block;padding:1px 6px;border-radius:4px;font-size:10.5px;font-weight:700;color:#0b1220}.app,.home{height:100%;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.top nav{display:flex;gap:4px}.logo{font-weight:800;font-size:16px;display:flex;align-items:center;gap:8px;letter-spacing:.02em}.ring{width:16px;height:16px;border:3px solid var(--accent);border-radius:50%;display:inline-block;box-shadow:inset 0 0 0 3px var(--bg),inset 0 0 0 6px var(--accent)}.pname{width:260px;font-weight:600}.save{font-size:11px;color:var(--muted)}.save.error{color:#f87171}.save.saving{color:var(--warn)}.work{flex:1;display:grid;grid-template-columns:300px 1fr 360px;min-height:0}.library,.inspector{background:var(--panel);border-right:1px solid var(--line);overflow:auto;display:flex;flex-direction:column;min-height:0}.inspector{border-right:0;border-left:1px solid var(--line);padding:10px 12px}.lib-head{padding:8px;display:grid;gap:6px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}.lib-list{padding:6px}.lib-cat{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:10px 4px 4px}.lib-item{padding:6px 8px;border:1px solid var(--line);border-radius:6px;margin:4px 0;cursor:grab;background:var(--panel2)}.lib-item:hover{border-color:var(--accent)}.lib-item.patch{border-style:dashed}.lib-name{font-weight:600}.lib-name .vendor{color:var(--accent);font-weight:500;font-size:11px}.lib-name .ru{float:right;color:var(--muted);font-size:10px;font-weight:400}.lib-sum{font-size:10.5px;color:var(--muted)}.canvas-wrap{position:relative;min-width:0;min-height:0;overflow:hidden}.canvas-wrap svg{display:block;user-select:none;-webkit-user-select:none}.canvas-wrap svg text{pointer-events:none}.canvas-hud{position:absolute;left:10px;bottom:10px;display:flex;gap:6px;align-items:center;background:#111827d9;padding:5px 8px;border-radius:8px;border:1px solid var(--line)}.canvas-hud .hint{font-size:11px;color:var(--muted);margin-left:8px}.stats{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 0;font-size:12px;color:var(--muted)}.stats b{color:var(--text)}.zone-row{display:grid;grid-template-columns:34px 1fr 28px;gap:6px;margin:4px 0;align-items:center}.zone-row input[type=color]{padding:0;height:26px}.group-row{display:grid;grid-template-columns:1fr 48px 64px 46px 54px 26px;gap:3px;margin:4px 0;align-items:center}.group-row input,.group-row select{padding:4px;font-size:11px}.conn-list{max-height:260px;overflow:auto;font-size:11.5px}.conn{padding:3px 4px;border-bottom:1px solid var(--line);cursor:pointer;display:flex;gap:5px;align-items:center;flex-wrap:wrap}.conn:hover{background:var(--panel2)}.page{flex:1;overflow:auto;padding:14px 20px}.page-tabs,.filters{display:flex;gap:6px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.filters input,.filters select{width:auto;min-width:160px}.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl th,.tbl td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}.tbl th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}.tbl tbody tr:hover{background:var(--panel2);cursor:pointer}.tbl.compact td,.tbl.compact th{padding:3px 6px}.tbl tr.free td{color:var(--muted)}.tbl.matrix td{text-align:center}.tbl.matrix td.hot{background:#22d3ee26;font-weight:700}.tbl.matrix td.diag{color:var(--muted)}.patch-sheets{display:grid;gap:18px}.patch-sheet{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.van{width:100%;max-width:1200px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.legend{display:flex;gap:6px;flex-wrap:wrap}.home main{padding:20px;max-width:1000px;width:100%;margin:0 auto}.login-wrap{height:100%;display:grid;place-items:center}.login{width:320px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px;display:grid;gap:10px}.login .err{color:#fca5a5;font-size:12px}.doc article{max-width:900px;margin:0 auto;line-height:1.55;font-size:14px}.doc h1{font-size:26px;margin:10px 0 16px}.doc h2{font-size:20px;margin:28px 0 10px;border-bottom:1px solid var(--line);padding-bottom:4px}.doc h3{font-size:16px;margin:20px 0 6px}.doc table{border-collapse:collapse;width:100%;margin:10px 0;font-size:13px}.doc th,.doc td{border:1px solid var(--line);padding:5px 8px;text-align:left}.doc th{background:var(--panel2)}.doc code{background:var(--panel2);padding:1px 5px;border-radius:4px;font-size:12.5px}.doc pre{background:var(--panel2);padding:10px;border-radius:6px;overflow:auto}.doc li.sub{margin-left:22px;list-style:circle}.doc blockquote{border-left:3px solid var(--accent);margin:10px 0;padding:4px 12px;color:var(--muted)}@media print{body{background:#fff;color:#000}.top,.page-tabs,.filters,.canvas-hud{display:none!important}.page{padding:0;overflow:visible}.tbl th,.tbl td,.doc th,.doc td{border-color:#999;color:#000}.patch-sheet{break-inside:avoid;border-color:#999;background:#fff}.tag{border:1px solid #000;color:#000!important;background:#fff!important}.muted{color:#555}}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:14px}.sketch-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;break-inside:avoid}.sketch-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:8px}@media print{.gallery{grid-template-columns:1fr 1fr}.sketch-card{background:#fff;border-color:#999}}.page-tabs.small{margin:8px 0}.page-tabs.small button{padding:3px 8px;font-size:12px}.label-block{margin:8px 0 12px}.range-fill{display:grid;grid-template-columns:44px 10px 44px 1fr auto auto;gap:4px;align-items:center;margin:4px 0}.range-fill input[type=number]{padding:3px 4px}.range-fill .inline{display:flex;align-items:center;gap:2px;margin:0;font-size:11px}.range-fill .inline input{width:auto}.label-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:3px 6px}.label-cell{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:4px;margin:0;font-size:11px}.label-cell span{color:var(--muted);text-align:right}.label-cell input{padding:2px 5px;font-size:11px}.group-row.ctrl{grid-template-columns:1fr 76px 48px 26px}.designer{flex:1;display:grid;grid-template-columns:260px 1fr 560px;min-height:0}.dz-left,.dz-right{background:var(--panel);overflow:auto;padding:10px 12px}.dz-left{border-right:1px solid var(--line)}.dz-right{border-left:1px solid var(--line)}.dz-main{padding:10px 14px;overflow:auto;min-width:0}.dz-pick{margin-top:6px}.dz-pick .lib-item{cursor:pointer;padding:4px 8px}.lib-item.user{border-color:#a78bfa}.lib-item.user .vendor{color:#a78bfa}.dz-canvas{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px}.dz-head,.dz-row{display:grid;grid-template-columns:1.4fr 46px 1fr 40px 42px 42px 40px 54px 52px;gap:3px;align-items:center;margin:3px 0}.dz-head{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.dz-row input,.dz-row select{padding:3px 4px;font-size:11px}.dz-btns{display:flex;gap:2px}.inline-field{display:flex;align-items:center;gap:4px;margin:0;font-size:11px}.inline-field input,.inline-field select{width:auto;min-width:120px}.over{color:#f87171!important}.group-card{border:1px solid var(--line);border-radius:6px;padding:6px;margin:6px 0;background:var(--panel2)}.group-top{display:grid;grid-template-columns:1fr 26px;gap:4px;align-items:center}.group-top select{font-weight:600}.group-fields{display:grid;grid-template-columns:52px 1fr 60px 64px;gap:4px;margin-top:4px}.group-fields label{margin:0;font-size:10px}.group-fields input,.group-fields select{padding:3px 5px;font-size:11px;margin-top:1px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;width:min(760px,92vw);max-height:80vh;overflow:auto}
