.console-root{--console-bg:#0b0f1a;--console-surface:#121829;--console-border:#1e2a44;--console-accent:#6366f1;--console-accent-soft:rgba(99,102,241,.15);--console-text:#e8ecf4;--console-muted:#94a3b8;min-height:100dvh;background:var(--console-bg);color:var(--console-text)}.console-shell{display:flex;min-height:100dvh}.console-sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--console-border);background:var(--console-surface);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:.5rem}.console-brand{font-weight:600;font-size:1.1rem;margin-bottom:1rem;letter-spacing:-.02em}.console-brand span{color:var(--console-accent)}.console-nav-link{display:flex;align-items:center;gap:.6rem;padding:.65rem .75rem;border-radius:.5rem;color:var(--console-muted);text-decoration:none;font-size:.9rem;transition:background .15s,color .15s}.console-nav-link.active,.console-nav-link:hover{background:var(--console-accent-soft);color:var(--console-text)}.console-main{flex:1;padding:1.5rem 2rem;overflow:auto}.console-card{background:var(--console-surface);border:1px solid var(--console-border);border-radius:12px;padding:1.25rem}.console-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem}.console-stat{padding:1rem;border-radius:10px;background:var(--console-accent-soft);border:1px solid var(--console-border)}.console-stat-value{font-size:1.75rem;font-weight:600}.console-stat-label{font-size:.8rem;color:var(--console-muted);margin-top:.25rem}.console-badge-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border-radius:999px;font-size:.8rem;border:1px solid}.console-input,.console-select,.console-textarea{width:100%;padding:.6rem .75rem;border-radius:8px;border:1px solid var(--console-border);background:#0d1220;color:var(--console-text);font-size:.9rem}.console-label{display:block;font-size:.8rem;color:var(--console-muted);margin-bottom:.35rem}.console-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;border:none;cursor:pointer;transition:opacity .15s}.console-btn:disabled{opacity:.5;cursor:not-allowed}.console-btn-primary{background:var(--console-accent);color:#fff}.console-btn-ghost{background:transparent;color:var(--console-muted);border:1px solid var(--console-border)}.console-map-wrap{position:relative;width:100%;aspect-ratio:16/10;max-height:560px;min-height:420px;border-radius:12px;overflow:hidden;border:1px solid var(--console-border);background:#0d1220}.console-map-leaflet .console-leaflet-map{width:100%;height:100%;min-height:420px;background:#0d1220;z-index:1}.console-leaflet-cluster-icon,.console-leaflet-marker-icon{background:transparent!important;border:none!important}.console-leaflet-marker{display:flex;align-items:center;justify-content:center;border-radius:50%;background:#6366f1;color:#fff;font-size:12px;font-weight:600;border:2px solid #e0e7ff;box-shadow:0 2px 8px rgba(0,0,0,.45);cursor:pointer}.console-leaflet-marker.is-selected{background:#818cf8;transform:scale(1.12);z-index:1000!important}.console-leaflet-cluster{display:flex;align-items:center;justify-content:center;border-radius:50%;background:#4338ca;color:#fff;font-size:13px;font-weight:700;border:2px solid #a5b4fc;box-shadow:0 2px 12px rgba(67,56,202,.6)}.console-leaflet-tooltip{background:var(--console-surface)!important;border:1px solid var(--console-border)!important;color:var(--console-text)!important;font-size:12px!important;padding:4px 8px!important;border-radius:6px!important;box-shadow:0 4px 12px rgba(0,0,0,.35)!important}.console-leaflet-tooltip:before{border-top-color:var(--console-border)!important}.leaflet-control-zoom a{background:var(--console-surface)!important;color:var(--console-text)!important;border-color:var(--console-border)!important}.leaflet-control-attribution{background:rgba(11,15,26,.85)!important;color:var(--console-muted)!important;font-size:10px!important}.leaflet-control-attribution a{color:#818cf8!important}.console-map-marker{cursor:pointer;transition:transform .15s}.console-map-marker:hover{transform:scale(1.08)}.console-drawer{position:absolute;top:0;right:0;width:min(360px,100%);height:100%;background:var(--console-surface);border-left:1px solid var(--console-border);padding:1rem;overflow-y:auto;box-shadow:-8px 0 24px rgba(0,0,0,.35)}.console-wizard-steps{display:flex;gap:.5rem;margin-bottom:1.5rem}.console-wizard-step{flex:1;height:4px;border-radius:2px;background:var(--console-border)}.console-wizard-step.done{background:var(--console-accent)}.console-wizard-step.active{background:#818cf8}.console-table{width:100%;border-collapse:collapse;font-size:.875rem}.console-table td,.console-table th{text-align:left;padding:.65rem .5rem;border-bottom:1px solid var(--console-border)}.console-table th{color:var(--console-muted);font-weight:500}.console-login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--console-bg);padding:1rem}.console-login-card{width:100%;max-width:400px}.pipeline-live{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .5rem;border:1px solid var(--console-border);border-radius:999px;color:var(--console-muted);font-size:.72rem}.pipeline-live.online{color:#86efac;border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.08)}.pipeline-session-card{overflow:hidden}.pipeline-preliminary{padding:.2rem .5rem;border-radius:999px;border:1px solid rgba(245,158,11,.35);background:rgba(245,158,11,.1);color:#fcd34d;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.pipeline-stepper{display:flex;align-items:stretch;min-width:680px;margin:1.35rem 0 .75rem}.pipeline-stepper-scroll{overflow-x:auto}.pipeline-step-wrap{display:flex;align-items:center;flex:1;min-width:0}.pipeline-step{display:flex;align-items:center;gap:.45rem;color:#64748b;min-width:-moz-fit-content;min-width:fit-content;text-align:left}.pipeline-step-icon{width:1.55rem;height:1.55rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid #334155;border-radius:999px;font-size:.75rem}.pipeline-step.done{color:#86efac}.pipeline-step.done .pipeline-step-icon{border-color:#22c55e;background:rgba(34,197,94,.12)}.pipeline-step.current{color:#a5b4fc}.pipeline-step.current .pipeline-step-icon{border-color:#818cf8;background:rgba(99,102,241,.18);box-shadow:0 0 0 4px rgba(99,102,241,.08)}.pipeline-step.failed{color:#fca5a5}.pipeline-step.failed .pipeline-step-icon{border-color:#ef4444;background:rgba(239,68,68,.12)}.pipeline-step-copy{display:flex;flex-direction:column;font-size:.78rem;line-height:1.1}.pipeline-step-copy small{min-height:.75rem;margin-top:.2rem;font-size:.65rem;color:var(--console-muted)}.pipeline-step-line{height:1px;min-width:18px;flex:1;margin:0 .5rem;background:#263249}.pipeline-step-line.done{background:#22c55e}.pipeline-failure{display:flex;align-items:flex-start;gap:.75rem;margin-top:1rem;padding:.85rem;border:1px solid rgba(239,68,68,.3);border-radius:.65rem;background:rgba(239,68,68,.08);color:#fecaca}.pipeline-failure code,.pipeline-failure p{display:block;margin-top:.2rem;font-size:.75rem}.pipeline-details-toggle{display:inline-flex;align-items:center;gap:.35rem;margin-top:.65rem;color:var(--console-muted);font-size:.78rem}.pipeline-details-toggle:hover{color:var(--console-text)}.pipeline-details{margin:1rem -1.25rem -1.25rem;padding:1.1rem 1.25rem 1.25rem;border-top:1px solid var(--console-border);background:rgba(5,9,18,.32)}.pipeline-timeline{display:grid;gap:.35rem}.pipeline-timeline-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(100px,1fr) 80px;align-items:center;gap:.75rem;padding:.55rem .7rem;border:1px solid transparent;border-radius:.5rem;text-align:left}.pipeline-timeline-row.selected,.pipeline-timeline-row:hover{border-color:var(--console-border);background:var(--console-accent-soft)}.pipeline-event{padding:.75rem;border:1px solid var(--console-border);border-left:3px solid #64748b;border-radius:.5rem;background:#0d1220}.pipeline-event.warning{border-left-color:#f59e0b}.pipeline-event.error{border-left-color:#ef4444}.pipeline-event.info{border-left-color:#6366f1}.pipeline-progress-json{overflow-x:auto;margin-top:.55rem;padding:.55rem;border-radius:.4rem;background:#080c16;color:#94a3b8;font-size:.7rem;white-space:pre-wrap}