:root{--bg-primary: #0f1117;--bg-secondary: #1a1d27;--bg-card: #1e2130;--bg-card-hover: #252840;--bg-input: #141622;--border-color: #2a2d3e;--border-focus: #6366f1;--text-primary: #e8eaf0;--text-secondary: #9ca3af;--text-muted: #6b7280;--accent: #6366f1;--accent-hover: #818cf8;--success: #22c55e;--success-bg: rgba(34, 197, 94, .12);--warning: #f59e0b;--warning-bg: rgba(245, 158, 11, .12);--error: #ef4444;--error-bg: rgba(239, 68, 68, .12);--info: #3b82f6;--info-bg: rgba(59, 130, 246, .12);--pending: #8b5cf6;--pending-bg: rgba(139, 92, 246, .12);--running: #3b82f6;--running-bg: rgba(59, 130, 246, .12);--radius: 10px;--radius-sm: 6px;--shadow: 0 4px 24px rgba(0, 0, 0, .3);--transition: .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}#root{min-height:100vh}.app-container{max-width:1100px;margin:0 auto;padding:32px 24px}.app-header{margin-bottom:40px}.app-header h1{font-size:28px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,#6366f1,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-header p{color:var(--text-secondary);font-size:14px;margin-top:4px}.auth-container{display:flex;align-items:center;justify-content:center;min-height:100vh}.auth-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius);padding:40px;width:100%;max-width:420px;box-shadow:var(--shadow)}.auth-card h2{font-size:22px;font-weight:600;margin-bottom:8px;text-align:center}.auth-card .subtitle{color:var(--text-secondary);font-size:13px;text-align:center;margin-bottom:28px}.form-group{margin-bottom:18px}.form-group label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group textarea{width:100%;padding:10px 14px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:Inter,monospace;font-size:14px;transition:border-color var(--transition)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #6366f126}.form-group input::placeholder{color:var(--text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border:none;border-radius:var(--radius-sm);font-family:Inter,sans-serif;font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition)}.btn-primary{background:linear-gradient(135deg,#6366f1,#818cf8);color:#fff;width:100%}.btn-primary:hover{background:linear-gradient(135deg,#818cf8,#a5b4fc);transform:translateY(-1px);box-shadow:0 4px 16px #6366f14d}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-danger{background:transparent;border:1px solid var(--error);color:var(--error);padding:6px 14px;font-size:12px}.btn-danger:hover{background:var(--error-bg)}.btn-ghost{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:6px 14px;font-size:12px}.btn-ghost:hover{background:var(--bg-card-hover);color:var(--text-primary)}.tabs{display:flex;gap:2px;background:var(--bg-secondary);border-radius:var(--radius);padding:4px;margin-bottom:28px}.tab{flex:1;padding:10px 20px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition)}.tab:hover{color:var(--text-primary)}.tab.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 2px 8px #0003}.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-header h3{font-size:16px;font-weight:600}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge.pending{background:var(--pending-bg);color:var(--pending)}.badge.running{background:var(--running-bg);color:var(--running)}.badge.completed{background:var(--success-bg);color:var(--success)}.badge.failed{background:var(--error-bg);color:var(--error)}.badge.cancelled{background:#6b72801f;color:var(--text-muted)}.badge.running:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--running);animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.progress-bar-container{width:100%;height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden;margin-top:12px}.progress-bar{height:100%;background:linear-gradient(90deg,#6366f1,#818cf8);border-radius:3px;transition:width .5s ease}.progress-bar.completed{background:linear-gradient(90deg,#22c55e,#4ade80)}.progress-bar.failed{background:linear-gradient(90deg,#ef4444,#f87171)}.migration-item{display:grid;grid-template-columns:1fr auto auto;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background var(--transition)}.migration-item:last-child{border-bottom:none}.migration-item:hover{background:var(--bg-card-hover);margin:0 -24px;padding:16px 24px;border-radius:var(--radius-sm)}.migration-item .device-id{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:var(--accent)}.migration-item .owners{font-size:12px;color:var(--text-secondary);margin-top:4px}.migration-item .owners .arrow{color:var(--text-muted);margin:0 6px}.migration-item .time{font-size:12px;color:var(--text-muted);text-align:right}.log-container{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:16px;max-height:400px;overflow-y:auto;margin-top:16px}.log-entry{display:flex;gap:12px;padding:4px 0;font-size:13px;font-family:SFMono-Regular,Consolas,monospace;line-height:1.5}.log-entry .log-time{color:var(--text-muted);white-space:nowrap;flex-shrink:0}.log-entry .log-step{color:var(--accent);white-space:nowrap;flex-shrink:0;min-width:140px}.log-entry .log-message{color:var(--text-secondary);word-break:break-word}.log-entry.error .log-message{color:var(--error)}.log-entry.warn .log-message{color:var(--warning)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}.detail-item{padding:14px;background:var(--bg-input);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.detail-item .label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.detail-item .value{font-size:14px;color:var(--text-primary);font-family:SFMono-Regular,Consolas,monospace;word-break:break-all}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state .icon{font-size:48px;margin-bottom:16px;opacity:.3}.empty-state p{font-size:14px}.error-message{padding:12px 16px;background:var(--error-bg);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-sm);color:var(--error);font-size:13px;margin-bottom:16px}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px;text-decoration:none;cursor:pointer;margin-bottom:20px;transition:color var(--transition)}.back-link:hover{color:var(--text-primary)}.objects-count{font-size:13px;color:var(--text-secondary);margin-top:4px}
