:root{--bg: #111217;--panel: #181b1f;--panel-2: #1f2128;--border: rgba(255, 255, 255, .09);--input-bg: #0d0f12;--text: #d8d9da;--text-muted: #6e7282;--primary: #5794f2;--primary-h: #4a84e0;--enviado: #4fc3f7;--recibido: #73bf69;--otro: #ff9830;--error: #f2495c;--radius: 4px;--shadow: 0 1px 3px rgba(0,0,0,.5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--panel);border-bottom:1px solid var(--border);padding:0 24px;height:52px;display:flex;align-items:center}.app-header__inner{display:flex;align-items:center;gap:10px}.app-logo{font-size:22px}.app-title{font-size:16px;font-weight:600;letter-spacing:.3px}.app-main{padding:20px 24px;display:flex;flex-direction:column;gap:16px;max-width:1400px;width:100%;margin:0 auto}.form-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:16px}.form-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.field{display:flex;flex-direction:column;gap:5px;min-width:180px}.field--grow{flex:1}label{font-size:12px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.optional{text-transform:none;font-weight:400}select,input[type=text],input[type=datetime-local]{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:7px 10px;font-size:14px;width:100%;outline:none;transition:border-color .15s;-moz-appearance:none;appearance:none;-webkit-appearance:none}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236e7282' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}select:focus,input:focus{border-color:var(--primary)}select:disabled,input:disabled{opacity:.4;cursor:not-allowed}.radio-group{display:flex;gap:16px;align-items:center;padding:8px 0}.radio-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;text-transform:none;letter-spacing:0;color:var(--text)}.radio-label input[type=radio]{accent-color:var(--primary);width:15px;height:15px}.form-actions{display:flex;gap:10px;padding-top:4px}.btn{padding:8px 18px;border:none;border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--primary);color:#fff}.btn--primary:not(:disabled):hover{background:var(--primary-h)}.btn--secondary{background:var(--panel-2);color:var(--text);border:1px solid var(--border)}.btn--secondary:not(:disabled):hover{background:#2a2d37}.status-bar{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:13px;padding:10px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.error-box{background:#f2495c1a;border:1px solid rgba(242,73,92,.4);border-radius:var(--radius);padding:12px 16px;color:#f2495c;font-size:13px}.error-box pre{white-space:pre-wrap;font-family:inherit}.log-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.log-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--panel-2)}.log-toolbar__left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.log-count{font-size:13px;color:var(--text-muted);white-space:nowrap}.filter-wrap{position:relative;flex:1;max-width:340px}.filter-input{width:100%;background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 28px 5px 10px;font-size:13px;outline:none;transition:border-color .15s}.filter-input:focus{border-color:var(--primary)}.filter-clear{position:absolute;right:7px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;padding:0;line-height:1}.filter-clear:hover{color:var(--text)}.filter-hint{padding:6px 16px;font-size:12px;color:var(--text-muted);background:var(--panel-2);border-bottom:1px solid var(--border)}.tags-bar{padding:8px 14px;background:var(--panel-2);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.tags-bar--active{background:#5794f20a}.tag-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tag-row__label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);width:54px;flex-shrink:0}.tag-row__chips{display:flex;flex-wrap:wrap;gap:5px}.tag-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:3px;border:1px solid;font-size:11px;font-weight:600;cursor:pointer;transition:background .12s,color .12s}.tag-chip--msg{border-color:#5794f266;color:var(--primary);background:#5794f214}.tag-chip--msg:hover{background:#5794f22e}.tag-chip--msg.tag-chip--active{background:var(--primary);color:#fff;border-color:var(--primary)}.tag-chip--mod{border-color:#ff983066;color:var(--otro);background:#ff983014}.tag-chip--mod:hover{background:#ff98302e}.tag-chip--mod.tag-chip--active{background:var(--otro);color:#fff;border-color:var(--otro)}.tag-chip__count{font-size:10px;font-weight:400;opacity:.7}.tag-more{padding:3px 8px;background:transparent;border:1px dashed var(--border);border-radius:3px;color:var(--text-muted);font-size:11px;cursor:pointer;transition:color .12s,border-color .12s}.tag-more:hover{color:var(--text);border-color:#ffffff40}.tags-clear{align-self:flex-start;margin-top:2px;padding:2px 8px;background:transparent;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;text-decoration:underline}.tags-clear:hover{color:var(--text)}.hl{background:#ffd54f59;color:#ffd54f;border-radius:2px;font-style:normal}.show-toggles{display:flex;align-items:center;gap:4px}.show-label{font-size:11px;color:var(--text-muted);margin-right:2px;white-space:nowrap}.show-btn{padding:4px 11px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;border-radius:var(--radius);transition:background .12s,color .12s,border-color .12s}.show-btn:first-of-type{border-radius:var(--radius) 0 0 var(--radius)}.show-btn:last-of-type{border-radius:0 var(--radius) var(--radius) 0;margin-left:-1px}.show-btn--on{background:#5794f226;border-color:#5794f280;color:var(--primary)}.show-btn--on:hover{background:#5794f240}.show-btn:not(.show-btn--on):hover{background:#ffffff0d;color:var(--text)}.view-toggle{display:flex;gap:2px}.toggle-btn{padding:4px 14px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;border-radius:var(--radius);transition:background .12s,color .12s}.toggle-btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.toggle-btn:last-child{border-radius:0 var(--radius) var(--radius) 0;margin-left:-1px}.toggle-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.table-wrapper{overflow-x:auto;max-height:620px;overflow-y:auto}.log-table{width:100%;border-collapse:collapse;font-size:13px}.log-table th{position:sticky;top:0;background:var(--panel-2);padding:8px 12px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap;z-index:1}.log-table td{padding:7px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.log-table tr:last-child td{border-bottom:none}.log-table tr:hover td{background:#ffffff08}.col-ts{white-space:nowrap;color:var(--text-muted);font-family:Courier New,monospace;font-size:12px;width:130px}.col-type{width:90px}.col-msg{max-width:0}.msg-cell{display:flex;align-items:flex-start;gap:10px;font-family:Courier New,monospace;font-size:12px}.msg-meta{display:flex;align-items:center;gap:6px;flex-shrink:0;width:160px;white-space:nowrap}.msg-meta--empty{width:160px}.msg-type{font-size:12px;font-weight:700;letter-spacing:.3px;color:var(--primary);width:36px}.msg-route{display:flex;align-items:center;gap:4px;color:var(--text-muted);font-size:11px}.msg-mod{display:inline-block;min-width:40px}.msg-arrow{color:#ffffff40;font-size:10px}.msg-body{flex:1;word-break:break-all;color:var(--text);font-size:12px;min-width:0;display:flex;flex-direction:column;gap:0}.msg-submsg{display:flex;flex-direction:column;gap:1px;position:relative}.msg-submsg+.msg-submsg{margin-top:6px}.msg-submsg--multi{padding-left:16px}.msg-submsg__idx{position:absolute;left:0;top:1px;font-size:9px;color:var(--text-muted);opacity:.6;line-height:1}.msg-raw{word-break:break-all;line-height:1.5}.msg-explain{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;color:#a8c8a8;font-style:italic;line-height:1.5;padding-left:2px}.msg-explains{margin-top:5px;padding-top:5px;border-top:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;gap:2px}.msg-explain:before{content:"↳ ";opacity:.6;font-style:normal}.msg-explain--unknown{color:var(--text-muted);opacity:.7}.msg-overflow{margin-top:6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-style:italic;color:var(--text-muted);opacity:.8}.field-token{position:relative;display:inline}.field-token--known{border-bottom:1px dashed rgba(87,148,242,.45);cursor:help}.field-token__tip{display:none;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%);background:#2a2d35;border:1px solid rgba(87,148,242,.4);color:#d8d9da;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;white-space:nowrap;padding:3px 8px;border-radius:3px;pointer-events:none;z-index:100;box-shadow:0 2px 8px #00000080}.field-token__tip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#5794f266}.field-token:hover .field-token__tip{display:block}.badge{display:inline-block;padding:2px 8px;border-radius:3px;font-size:11px;font-weight:600;letter-spacing:.3px}.badge--enviado{background:#4fc3f726;color:var(--enviado);border:1px solid rgba(79,195,247,.3)}.badge--recibido{background:#73bf6926;color:var(--recibido);border:1px solid rgba(115,191,105,.3)}.badge--otro{background:#ff983026;color:var(--otro);border:1px solid rgba(255,152,48,.3)}.raw-view{padding:14px 16px;font-family:Courier New,Consolas,monospace;font-size:12.5px;line-height:1.7;overflow-x:auto;max-height:620px;overflow-y:auto;white-space:pre;background:var(--input-bg)}.raw-line{display:block}.raw-ts{color:var(--text-muted)}.raw-tipo--enviado{color:var(--enviado);font-weight:600}.raw-tipo--recibido{color:var(--recibido);font-weight:600}.raw-tipo--otro{color:var(--otro)}:root{--cat-entradas: #ffb340;--cat-almacenamiento: #5794f2;--cat-distribucion: #b877d9;--cat-expediciones: #73bf69}.picker-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.centro{border-bottom:1px solid var(--border)}.centro:last-child{border-bottom:none}.centro__hdr{width:100%;display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--panel-2);border:none;color:var(--text);cursor:pointer;text-align:left;font-size:14px;font-weight:500;transition:background .12s}.centro__hdr:hover,.centro--open .centro__hdr{background:#22252e}.centro__arrow{font-size:11px;color:var(--text-muted);width:12px;flex-shrink:0}.centro__label{flex:1}.centro__body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px}.sistema-row{display:flex;align-items:center;gap:8px}.sistema-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);width:52px;flex-shrink:0}.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.cat-card{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.cat-card__title{padding:6px 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--border)}.cat-card--entradas .cat-card__title{color:var(--cat-entradas);background:#ffb34014;border-left:3px solid var(--cat-entradas)}.cat-card--almacenamiento .cat-card__title{color:var(--cat-almacenamiento);background:#5794f214;border-left:3px solid var(--cat-almacenamiento)}.cat-card--distribucion .cat-card__title{color:var(--cat-distribucion);background:#b877d914;border-left:3px solid var(--cat-distribucion)}.cat-card--expediciones .cat-card__title{color:var(--cat-expediciones);background:#73bf6914;border-left:3px solid var(--cat-expediciones)}.cat-card__btns{padding:8px;display:flex;flex-wrap:wrap;gap:5px}.inst-group{display:flex;flex-direction:column;gap:4px;width:100%}.inst-group--sep{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.inst-group__tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:0 2px}.inst-group__btns{display:flex;flex-wrap:wrap;gap:5px}.inst-btn{display:flex;flex-direction:column;align-items:center;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);cursor:pointer;transition:background .12s,border-color .12s;min-width:56px;text-align:center}.inst-btn:hover{background:#2a2d37;border-color:#fff3}.inst-btn--active{background:var(--primary)!important;border-color:var(--primary)!important;color:#fff!important}.inst-btn--sistema{background:#45b6d81f;border-color:#45b6d873;color:#45b6d8;font-size:12px;font-weight:700;letter-spacing:.4px;padding:5px 14px;flex-direction:row}.inst-btn--sistema:hover{background:#45b6d833!important;border-color:#45b6d8b3!important}.inst-btn--sistema.inst-btn--active{background:#45b6d8!important;border-color:#45b6d8!important;color:#fff!important}.inst-btn__name{font-size:13px;font-weight:600;line-height:1.2;color:var(--text)}.inst-btn__type{font-size:10px;font-weight:500;line-height:1.2;margin-top:2px;color:var(--text-muted)}.inst-btn--active .inst-btn__name{color:#fff}.inst-btn--active .inst-btn__type{color:#ffffffa6}
