.runtime-card { margin: 10px 12px 8px; padding: 15px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.08); background: radial-gradient(circle at top right, rgba(72, 166, 255, 0.18), transparent 40%), linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.01)); box-shadow: 0 18px 42px rgba(0, 0, 0, 0.28); } .runtime-card-success { border-color: rgba(48, 209, 88, 0.24); } .runtime-card-warning { border-color: rgba(255, 214, 10, 0.24); } .runtime-card-danger { border-color: rgba(240, 64, 64, 0.24); } .runtime-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; } .runtime-card-header-left { min-width: 0; flex: 1; } .runtime-card-kicker { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text3); margin-bottom: 4px; } .runtime-card-title { font-size: 16px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); display: flex; align-items: center; gap: 7px; } /* Pulsing green dot when runtime is running */ .runtime-status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #30d158; flex-shrink: 0; animation: runtime-pulse 2s ease-in-out infinite; } @keyframes runtime-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(48, 209, 88, 0.5); } 50% { box-shadow: 0 0 0 5px rgba(48, 209, 88, 0); } } .runtime-card-mode { flex-shrink: 0; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 5px 8px; border-radius: 999px; border: 1px solid var(--border2); color: var(--text2); background: rgba(255, 255, 255, 0.04); } .runtime-card-mode-local { color: #71c5ff; border-color: rgba(113, 197, 255, 0.28); } .runtime-card-mode-remote { color: #92e5c7; border-color: rgba(146, 229, 199, 0.24); } .runtime-card-copy { margin-top: 10px; color: var(--text2); font-size: 12px; line-height: 1.5; } .runtime-card-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .runtime-card-meta span, .runtime-card-note { border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.04); color: var(--text2); font-size: 11px; line-height: 1.3; padding: 7px 10px; } .runtime-card-meta-model { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .runtime-card-note { display: block; margin-top: 10px; border-radius: 12px; color: #f3d38b; border-color: rgba(243, 211, 139, 0.16); background: rgba(243, 211, 139, 0.08); } .runtime-card-error { margin-top: 10px; padding: 8px 10px; border-radius: 10px; border: 1px solid rgba(240, 64, 64, 0.2); background: rgba(240, 64, 64, 0.08); color: #ffb4b4; font-size: 11px; line-height: 1.5; } .runtime-card-result { margin-top: 10px; padding: 10px 12px; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.05); color: var(--text); font-size: 12px; line-height: 1.5; } .runtime-card-result-success { border-color: rgba(48, 209, 88, 0.22); background: rgba(48, 209, 88, 0.1); color: #baf0c8; } .runtime-card-result-warning { border-color: rgba(243, 211, 139, 0.24); background: rgba(243, 211, 139, 0.1); color: #f3d38b; } .runtime-card-result-danger { border-color: rgba(240, 64, 64, 0.22); background: rgba(240, 64, 64, 0.1); color: #ffb7b7; } .runtime-card-actions { display: flex; gap: 8px; margin-top: 14px; } .runtime-card-btn { flex: 1; border-radius: 10px; border: 1px solid var(--border2); padding: 9px 12px; font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; transition: transform 0.12s ease, border-color 0.12s ease, background 0.12s ease; } .runtime-card-btn:active:not(:disabled) { transform: scale(0.98); } .runtime-card-btn:disabled { opacity: 0.55; cursor: not-allowed; } .runtime-card-btn-secondary { color: var(--text); background: rgba(255, 255, 255, 0.04); } .runtime-card-btn-secondary:hover:not(:disabled) { border-color: var(--accent); } /* Start — green */ .runtime-card-btn-start { color: #fff; border-color: rgba(48, 209, 88, 0.5); background: linear-gradient(135deg, #1ea84d, #30d158); display: flex; align-items: center; justify-content: center; gap: 6px; } .runtime-card-btn-start:hover:not(:disabled) { background: linear-gradient(135deg, #25c05a, #3fe068); } /* Stop — red */ .runtime-card-btn-stop { color: #fff; border-color: rgba(240, 64, 64, 0.5); background: linear-gradient(135deg, #c0302e, #f04040); display: flex; align-items: center; justify-content: center; gap: 6px; } .runtime-card-btn-stop:hover:not(:disabled) { background: linear-gradient(135deg, #d03838, #f55555); } /* Setup — blue (same as primary) */ .runtime-card-btn-setup { color: #fff; border-color: rgba(72, 166, 255, 0.6); background: linear-gradient(135deg, #2b88e6, #46c2ff); display: flex; align-items: center; justify-content: center; gap: 6px; } .runtime-card-btn-setup:hover:not(:disabled) { background: linear-gradient(135deg, #3193f5, #55cbff); } /* Spinner for in-progress lifecycle */ .runtime-btn-spinner { display: inline-block; width: 11px; height: 11px; border: 2px solid rgba(255, 255, 255, 0.35); border-top-color: #fff; border-radius: 50%; animation: runtime-spin 0.7s linear infinite; flex-shrink: 0; } @keyframes runtime-spin { to { transform: rotate(360deg); } }