:root{--bg: #0e1116;--surface: #161a22;--surface-2: #1c212b;--border: #232a37;--text: #dfe5ee;--text-dim: #8a93a6;--accent: #3b82f6;--accent-strong: #2563eb;--success: #10b981;--error: #ef4444;--warning: #f59e0b;--radius: 8px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #000;background:#000}.header nav a{color:#bbb}.header nav a:hover,.header nav a.active{color:#fff}.header .brand{display:inline-flex;align-items:center;line-height:0}.header .brand img{height:32px;width:auto;display:block}.header nav{display:flex;gap:16px;align-items:center}.main{flex:1;padding:32px 24px;max-width:960px;margin:0 auto;width:100%}.shell{display:grid;grid-template-columns:220px 1fr;gap:24px}.sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 8px;height:fit-content}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:block;padding:10px 14px;border-radius:6px;color:var(--text-dim);font-size:14px;text-decoration:none}.sidebar nav a:hover{background:var(--surface-2);color:var(--text)}.sidebar nav a.active{background:var(--surface-2);color:var(--text);font-weight:500}.sidebar nav a.locked{opacity:.55;cursor:not-allowed}.sidebar nav a.locked:hover{background:transparent;color:var(--text-dim)}.shell-main{min-width:0}@media (max-width: 720px){.shell{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px;margin-bottom:16px}.card h1{font-size:22px;margin:0 0 8px}.card .sub{color:var(--text-dim);font-size:14px;margin:0 0 20px}.form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}label{font-size:13px;color:var(--text-dim);font-weight:500}input[type=email],input[type=password],input[type=text],input[type=number],select,textarea{width:100%;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:14px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}input[type=range]{width:100%;accent-color:var(--accent)}.segmented{display:flex;width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;overflow:hidden}.segmented button{flex:1;background:transparent;border:0;padding:10px 16px;color:var(--text-dim);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s,color .15s}.segmented button:hover:not(.active){color:var(--text)}.segmented button.active{background:#3b82f633;color:var(--accent)}.segmented button.active.long{background:#10b98133;color:var(--success)}.segmented button.active.short{background:#ef444433;color:var(--error)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 720px){.two-col{grid-template-columns:1fr}}.leg-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.timeline{display:flex;background:var(--surface-2);border-radius:6px;overflow:hidden;margin-top:12px;font-size:12px}.timeline>div{padding:8px 12px;text-align:center;white-space:nowrap}.timeline .open{background:#3b82f64d}.timeline .hold{background:#10b9814d;flex:1}.timeline .close{background:#f59e0b4d}.timeline .gap{background:var(--surface-2)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500}.badge.draft{background:var(--surface-2);color:var(--text-dim)}.badge.running{background:#10b98133;color:var(--success)}.badge.stopped{background:#f59e0b33;color:var(--warning)}.badge.completed{background:#3b82f633;color:var(--accent)}.badge.error{background:#ef444433;color:var(--error)}.chart-host{width:100%;height:220px}.exchange-icon-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border);border-radius:50%;color:var(--text-dim);font-size:11px;font-weight:600;vertical-align:middle}.test-status{margin-top:8px;padding:10px 12px;border-radius:6px;font-size:14px;display:flex;align-items:center;gap:10px}.test-status.testing{background:#3b82f61a;color:var(--accent);border:1px solid rgba(59,130,246,.3)}.test-status.fail{background:#ef44441a;color:#fca5a5;border:1px solid rgba(239,68,68,.3)}.test-status.ok{background:#10b9811a;color:#6ee7b7;border:1px solid rgba(16,185,129,.3)}.spinner{width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.stepper{display:flex;align-items:stretch;gap:0;margin-top:16px}.stepper .step{flex:1;display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--border);background:var(--surface-2);border-radius:8px;cursor:pointer;text-align:left;color:inherit;font:inherit;position:relative;transition:border-color .15s,background .15s}.stepper .step:hover:not(:disabled){border-color:var(--accent)}.stepper .step:disabled{cursor:not-allowed;opacity:.55}.stepper .step.done{border-color:var(--success)}.stepper .step.busy{border-color:var(--accent)}.stepper .step.fail{border-color:var(--error)}.stepper .step-num{font-size:11px;color:var(--text-dim);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.stepper .step-title{font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px}.stepper .step-hint{font-size:12px;color:var(--text-dim)}.stepper .arrow{display:flex;align-items:center;color:var(--text-dim);padding:0 6px;font-size:18px;-webkit-user-select:none;user-select:none}.stepper .check{color:var(--success)}.stepper .cross{color:var(--error)}.picker{position:relative;width:100%}.picker-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit;font-size:14px;cursor:pointer;transition:border-color .15s}.picker-trigger:hover:not(:disabled){border-color:var(--accent)}.picker-trigger:disabled{opacity:.55;cursor:not-allowed}.picker.open .picker-trigger{border-color:var(--accent)}.picker-value{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.picker-icon{display:inline-flex;align-items:center}.picker-label{font-weight:600}.picker-sub{margin-left:4px}.picker-placeholder{color:var(--text-dim)}.picker-chev{color:var(--text-dim);font-size:12px;transition:transform .15s}.picker.open .picker-chev{transform:rotate(180deg)}.picker-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 28px #00000073;overflow:hidden;display:flex;flex-direction:column}.picker-search{padding:10px;border-bottom:1px solid var(--border);background:var(--surface)}.picker-search input{width:100%;padding:8px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font:inherit;font-size:14px}.picker-search input:focus{outline:none;border-color:var(--accent)}.picker-list{max-height:280px;overflow-y:auto}.picker-empty{padding:14px;text-align:center}.picker-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 14px;background:transparent;border:0;color:var(--text);font:inherit;font-size:14px;cursor:pointer;text-align:left;transition:background .1s}.picker-item:hover:not(:disabled){background:var(--surface-2)}.picker-item.selected{background:#3b82f61a}.picker-item.disabled,.picker-item:disabled{opacity:.4;cursor:not-allowed}.picker-item-main{display:flex;align-items:center;gap:10px;min-width:0}.picker-badge{font-size:12px;font-weight:600;padding:3px 9px;border-radius:6px;background:#10b9811f;color:var(--success);border:1px solid rgba(16,185,129,.3);white-space:nowrap}.picker-badge.accent{background:#3b82f61f;color:var(--accent);border-color:#3b82f64d}.picker-badge.muted{background:var(--surface-2);color:var(--text-dim);border-color:var(--border)}table.exec{width:100%;border-collapse:collapse;font-size:13px}table.exec th,table.exec td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--border)}table.exec th{color:var(--text-dim);font-weight:500}table.exec tr.expandable:hover{background:var(--surface-2)}table.exec tr.expandable-detail td{border-bottom:1px solid var(--border);padding:8px 10px}.btn{padding:10px 18px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit}.btn:hover{background:var(--accent-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn.secondary:hover{background:var(--surface-2)}.btn.danger{background:var(--error)}.btn.danger:hover{background:#dc2626}.alert{padding:12px 16px;border-radius:6px;margin-bottom:16px;font-size:14px}.alert.error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#fca5a5}.alert.success{background:#10b9811a;border:1px solid rgba(16,185,129,.3);color:#6ee7b7}.alert.warning{background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);color:#fcd34d}.alert.info{background:#3b82f61a;border:1px solid rgba(59,130,246,.3);color:#93c5fd}.row{display:flex;gap:12px;align-items:center}.row.between{justify-content:space-between}.muted{color:var(--text-dim)}.small{font-size:13px}.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace}.qr{background:#fff;padding:16px;border-radius:6px;display:inline-block;margin:16px 0}.qr img{display:block}.recovery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:16px 0;padding:16px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px}.recovery-grid code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:14px;padding:4px 8px}footer{padding:24px;text-align:center;color:var(--text-dim);font-size:13px}
