html,body,#root{height:100%;background:#111318;color:#d0d8e8;font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}.war-app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.war-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:52px;background:#0c0e13;border-bottom:2px solid #232838;flex-shrink:0}.war-logo{display:flex;align-items:baseline;gap:14px}.logo-mark{font-size:22px;font-weight:800;letter-spacing:6px;color:#fff;font-family:SF Mono,monospace}.logo-sub{font-size:10px;letter-spacing:3px;color:#6070a0;font-family:SF Mono,monospace}.war-status{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:2px;color:#6070a0;font-family:SF Mono,monospace}.war-status.live{color:#40ffb0}.led{width:9px;height:9px;border-radius:50%;background:#2a3050}.war-status.live .led{background:#40ffb0;box-shadow:0 0 10px #40ffb0}.war-body{display:flex;flex:1;overflow:hidden}.war-sidebar{width:280px;flex-shrink:0;background:#0c0e13;border-right:2px solid #232838;display:flex;flex-direction:column;overflow-y:auto}.sb-section{padding:16px;border-bottom:1px solid #1e2335}.sb-title{font-size:11px;font-weight:600;letter-spacing:2px;color:#8898c0;margin-bottom:14px;text-transform:uppercase;display:flex;align-items:center;gap:8px}.route-count{background:#1e2335;color:#c0cce0;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.sb-empty{color:#4a5570;font-size:12px;padding:6px 0}.reg-form{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.reg-row{display:flex;gap:10px}.w-input{width:100%;background:#181c28;border:1px solid #2a3050;color:#e0e8f8;font-family:inherit;font-size:13px;padding:8px 10px;outline:none;border-radius:4px}.w-input:focus{border-color:#40ffb055}.w-input.num{width:64px}.w-label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;letter-spacing:1px;color:#8898c0}.w-select{width:100%;background:#181c28;border:1px solid #2a3050;color:#e0e8f8;font-family:inherit;font-size:13px;padding:8px;outline:none;border-radius:4px}.w-error{color:#ff6070;font-size:12px}.w-btn{background:#1e2335;border:1px solid #2e3858;color:#c0cce0;font-family:inherit;font-size:12px;font-weight:600;letter-spacing:1.5px;padding:9px 14px;cursor:pointer;border-radius:4px;transition:background .12s,color .12s}.w-btn:hover{background:#283050;color:#fff}.w-btn.danger{border-color:#582030;color:#ff7080;background:#1a1020}.w-btn.danger:hover{background:#381525}.client-card{background:#161a26;border:1px solid #232838;border-radius:5px;padding:10px 12px;margin-bottom:8px;cursor:pointer;transition:border-color .12s}.client-card:hover{border-color:#3a4870}.client-card.open{border-color:#40ffb044}.cc-top{display:flex;align-items:center;justify-content:space-between}.cc-name{font-size:14px;font-weight:600;color:#e8f0ff}.cc-badges{display:flex;gap:5px}.badge{font-size:10px;font-weight:600;letter-spacing:1px;color:#8898c0;border:1px solid #2a3458;padding:2px 7px;border-radius:3px;font-family:SF Mono,monospace}.cc-detail{margin-top:10px;display:flex;flex-direction:column;gap:7px;border-top:1px solid #232838;padding-top:10px}.cc-row{display:flex;gap:8px;align-items:center;font-size:11px;font-weight:600;color:#8898c0;letter-spacing:1px}.cc-row code{color:#a0b4d8;font-size:11px;word-break:break-all}.route-row{display:flex;align-items:center;gap:6px;padding:6px 2px;border-bottom:1px solid #161a26;font-size:12px}.rr-src,.rr-dst{color:#8898c0;display:flex;align-items:center;gap:4px}.rr-src em,.rr-dst em{color:#40ffb0;font-style:normal;font-weight:700;min-width:16px;text-align:center;font-family:SF Mono,monospace}.rr-arrow{color:#3a4870;flex:1;text-align:center;font-size:16px}.rr-del{background:none;border:none;color:#4a5570;cursor:pointer;font-size:13px;padding:3px 6px;border-radius:3px}.rr-del:hover{color:#ff6070;background:#1a1020}.war-matrix-wrap{flex:1;overflow:hidden;display:flex;flex-direction:column;background:#111318}.matrix-empty{flex:1;display:flex;align-items:center;justify-content:center;color:#4a5570;font-size:13px;letter-spacing:2px}.matrix-scroll{flex:1;overflow:auto;padding:28px}.matrix{border-collapse:collapse;table-layout:fixed}.matrix thead{position:sticky;top:0;z-index:10}.matrix thead tr:first-child th{position:sticky;top:0}.matrix thead tr.ch-row th{position:sticky;top:40px}.corner{background:#111318;color:#6070a0;font-size:11px;font-weight:600;letter-spacing:1px;padding:8px 14px;text-align:left;min-width:160px;border-right:2px solid #232838;font-family:SF Mono,monospace}.dst-grp-hdr{background:#0c0e13;color:#c0cce0;font-size:13px;font-weight:600;padding:8px 6px;text-align:center;border-left:2px solid #232838;border-bottom:1px solid #232838;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-hdr{background:#0c0e13;color:#6878a8;font-size:11px;font-weight:600;font-family:SF Mono,monospace;width:38px;min-width:38px;height:28px;text-align:center;border-bottom:2px solid #232838}.ch-hdr.grp-end{border-right:2px solid #232838}.src-grp-label{position:sticky;left:0;background:#0c0e13;color:#c0cce0;font-size:13px;font-weight:600;padding:0 10px;text-align:right;border-right:1px solid #232838;white-space:nowrap;min-width:110px;max-width:110px;overflow:hidden;text-overflow:ellipsis;z-index:5}.src-ch{position:sticky;left:110px;background:#0c0e13;color:#6878a8;font-size:11px;font-weight:600;font-family:SF Mono,monospace;text-align:center;width:30px;min-width:30px;border-right:2px solid #232838;z-index:5}.cell{width:38px;min-width:38px;height:38px;background:#161a26;border:1px solid #1e2335;cursor:pointer;position:relative}.cell:after{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;background:#252d48;transition:background .08s,box-shadow .08s}.cell:hover:after{background:#3a4880}.cell.active{background:#0e1f18}.cell.active:after{background:#40ffb0;box-shadow:0 0 12px #40ffb0,0 0 24px #40ffb060}.cell.self{background:#111318;cursor:default}.cell.self:after{background:#181c26;box-shadow:none}.cell.grp-end{border-right:2px solid #232838}.grp-end-row td{border-bottom:2px solid #232838}.matrix-scroll::-webkit-scrollbar{width:7px;height:7px}.matrix-scroll::-webkit-scrollbar-track{background:#111318}.matrix-scroll::-webkit-scrollbar-thumb{background:#232838;border-radius:4px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#0d1117;color:#c9d1d9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}
