86 lines
2.9 KiB
CSS
86 lines
2.9 KiB
CSS
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { font-family: 'Segoe UI', sans-serif; background: #f5f5f5; color: #333; }
|
|
|
|
.header {
|
|
background: #1a1a2e; color: white; padding: 16px 24px;
|
|
display: flex; align-items: center; gap: 16px;
|
|
}
|
|
.header h1 { font-size: 20px; font-weight: 600; }
|
|
.header input {
|
|
padding: 8px 12px; border: none; border-radius: 6px;
|
|
width: 360px; font-size: 14px; background: #16213e; color: white;
|
|
}
|
|
.header input::placeholder { color: #888; }
|
|
.header button {
|
|
padding: 8px 20px; border: none; border-radius: 6px;
|
|
background: #0f3460; color: white; cursor: pointer; font-size: 14px;
|
|
}
|
|
.header button:hover { background: #1a5276; }
|
|
|
|
.container { max-width: 1200px; margin: 24px auto; padding: 0 16px; }
|
|
|
|
.exp-card {
|
|
background: white; border-radius: 8px; margin-bottom: 8px;
|
|
box-shadow: 0 1px 3px rgba(0,0,0,0.1); overflow: hidden;
|
|
}
|
|
.exp-header {
|
|
padding: 14px 20px; cursor: pointer; display: flex;
|
|
align-items: center; gap: 12px; user-select: none;
|
|
transition: background 0.15s;
|
|
}
|
|
.exp-header:hover { background: #f8f9fa; }
|
|
.exp-arrow {
|
|
font-size: 12px; color: #666; transition: transform 0.2s;
|
|
width: 16px; text-align: center;
|
|
}
|
|
.exp-arrow.open { transform: rotate(90deg); }
|
|
.exp-name { font-weight: 600; font-size: 15px; flex: 1; }
|
|
.exp-badge {
|
|
background: #e8f0fe; color: #1967d2; padding: 2px 10px;
|
|
border-radius: 12px; font-size: 12px; font-weight: 500;
|
|
}
|
|
|
|
.run-list { display: none; border-top: 1px solid #eee; }
|
|
.run-list.open { display: block; }
|
|
|
|
.run-row {
|
|
padding: 10px 20px 10px 48px; display: flex; align-items: center;
|
|
gap: 12px; border-bottom: 1px solid #f0f0f0; font-size: 14px;
|
|
}
|
|
.run-row:last-child { border-bottom: none; }
|
|
.run-row:hover { background: #fafbfc; }
|
|
|
|
.run-name { flex: 1; font-weight: 500; }
|
|
|
|
.status {
|
|
padding: 3px 10px; border-radius: 12px; font-size: 11px;
|
|
font-weight: 600; text-transform: uppercase; min-width: 80px;
|
|
text-align: center;
|
|
}
|
|
.status.FINISHED { background: #e6f4ea; color: #1e8e3e; }
|
|
.status.RUNNING { background: #e8f0fe; color: #1967d2; }
|
|
.status.FAILED { background: #fce8e6; color: #d93025; }
|
|
.status.KILLED { background: #fef7e0; color: #ea8600; }
|
|
.status.SCHEDULED { background: #f3e8fd; color: #8430ce; }
|
|
|
|
.btn-group { display: flex; gap: 6px; }
|
|
.btn {
|
|
padding: 5px 14px; border: 1px solid #ddd; border-radius: 4px;
|
|
font-size: 12px; cursor: pointer; background: white;
|
|
transition: all 0.15s;
|
|
}
|
|
.btn:hover { background: #f0f0f0; }
|
|
.btn-view { border-color: #1967d2; color: #1967d2; }
|
|
.btn-view:hover { background: #e8f0fe; }
|
|
.btn-train { border-color: #1e8e3e; color: #1e8e3e; }
|
|
.btn-train:hover { background: #e6f4ea; }
|
|
.btn-serve { border-color: #ea8600; color: #ea8600; }
|
|
.btn-serve:hover { background: #fef7e0; }
|
|
|
|
.loading { text-align: center; padding: 40px; color: #888; }
|
|
.error { text-align: center; padding: 40px; color: #d93025; }
|
|
|
|
.run-time {
|
|
color: #888; font-size: 12px; min-width: 140px; text-align: right;
|
|
}
|