/* Template cards, readiness badges, filter bar, bulk toolbar */ /* ── Readiness badges (extend base .badge) ── */ .badge-ready { background: var(--success-bg); color: var(--success); } .badge-caveats { background: var(--warning-bg); color: var(--warning); } .badge-blocked { background: var(--error-bg); color: var(--error); } .badge-migrated { background: var(--cobalt-light); color: var(--cobalt); } .badge-needs-update { background: var(--warning-bg); color: var(--warning); } .badge-verified { background: var(--success-bg); color: var(--success); } .badge-not-migrated { background: #EDF0F4; color: var(--slate); } .badge-dry-run { background: #EDF0F4; color: var(--slate); } .badge-skipped { background: #EDF0F4; color: var(--slate); } .badge-error { background: var(--error-bg); color: var(--error); } /* ── Table name cell ── */ .table-name { font-weight: 600; color: var(--text); cursor: pointer; } .table-name:hover { color: var(--cobalt); } .table-sub { font-size: var(--font-size-xs); color: var(--text-muted); margin-top: 2px; } /* ── Issue count cell ── */ .issue-count { display: inline-flex; align-items: center; gap: 4px; font-size: var(--font-size-sm); font-weight: 600; } .issue-count.has-issues { color: var(--warning); cursor: pointer; } .issue-count.no-issues { color: var(--success); } .issue-count.blocked { color: var(--error); } /* ── Filter bar ── */ .filter-bar { display: flex; align-items: center; gap: 10px; margin-bottom: var(--space-md); flex-wrap: wrap; } .search-input { flex: 1; min-width: 200px; max-width: 320px; padding: 7px 12px 7px 32px; border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: var(--font-size-base); font-family: var(--font); background: var(--card-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B5F8A' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") no-repeat 10px center; outline: none; color: var(--text); } .search-input:focus { border-color: var(--cobalt); } .search-input::placeholder { color: var(--text-muted); } /* ── Filter tabs ── */ .filter-tabs { display: flex; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; } .filter-tab { padding: 7px 14px; font-size: var(--font-size-sm); font-weight: 600; cursor: pointer; color: var(--text-muted); border-right: 1px solid var(--border); white-space: nowrap; transition: all 0.1s; user-select: none; background: transparent; border-top: none; border-bottom: none; } .filter-tab:last-child { border-right: none; } .filter-tab:hover { background: var(--ecru); } .filter-tab.active { background: var(--cobalt); color: #fff; border-color: var(--cobalt); } .tab-count { font-size: 10px; margin-left: 4px; opacity: 0.8; } /* ── Bulk action toolbar ── */ .bulk-bar { display: flex; align-items: center; gap: 10px; padding: 10px 16px; background: var(--cobalt-light); border: 1px solid var(--cobalt); border-radius: var(--radius-sm); margin-bottom: 12px; } .bulk-bar-text { font-size: var(--font-size-base); font-weight: 600; color: var(--cobalt); flex: 1; } .bulk-bar.hidden { display: none; } /* ── Template row action buttons ── */ .row-actions { display: flex; gap: 6px; align-items: center; } /* ── Stat progress bar (dashboard) ── */ .migration-progress-bar { height: 6px; border-radius: 3px; background: var(--border); overflow: hidden; margin-top: 6px; } .migration-progress-fill { height: 100%; background: var(--cobalt); border-radius: 3px; transition: width 0.4s; } /* ── Attention items (issues view) ── */ .attention-list { display: flex; flex-direction: column; gap: 8px; } .attention-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 16px; border-radius: var(--radius-sm); border: 1px solid var(--border); } .attention-item.blocker { border-left: 3px solid var(--error); background: var(--error-bg); } .attention-item.warning { border-left: 3px solid var(--warning-amber); background: var(--warning-bg); } .attention-icon { font-size: 16px; flex-shrink: 0; } .attention-name { font-weight: 600; font-size: var(--font-size-base); } .attention-detail { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: 2px; } .attention-action { margin-left: auto; flex-shrink: 0; } /* ── Issue rows (template detail) ── */ .issue-row { display: flex; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--border); align-items: flex-start; } .issue-row:last-child { border-bottom: none; } .issue-severity { font-size: var(--font-size-xs); font-weight: 700; padding: 2px 8px; border-radius: 12px; flex-shrink: 0; margin-top: 1px; } .issue-severity.blocker { background: var(--error-bg); color: var(--error); } .issue-severity.warn { background: var(--warning-bg); color: var(--warning); } .issue-severity.info { background: var(--cobalt-light); color: var(--cobalt); } .issue-body { flex: 1; } .issue-title { font-weight: 600; font-size: var(--font-size-base); } .issue-desc { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: 3px; line-height: 1.5; } .issue-fix { font-size: var(--font-size-xs); margin-top: 6px; padding: 4px 10px; background: var(--ecru); border-radius: var(--radius-sm); color: var(--text); display: inline-block; } /* ── Result rows (migration results view) ── */ .result-row { border: 1px solid var(--border); border-radius: var(--radius-sm); margin-bottom: 8px; overflow: hidden; } .result-header { display: flex; align-items: center; gap: 14px; padding: 12px 16px; cursor: pointer; background: var(--card-bg); transition: background 0.1s; } .result-header:hover { background: #FAFBFC; } .result-icon { font-size: 16px; flex-shrink: 0; } .result-name { font-weight: 600; flex: 1; } .result-meta { font-size: var(--font-size-xs); color: var(--text-muted); } .result-body { padding: 12px 16px; border-top: 1px solid var(--border); background: #FAFBFC; display: none; } .result-row.open .result-body { display: block; } /* ── DS template link pill ── */ .ds-pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; background: #EAF2FF; border: 1px solid #B3D4FF; border-radius: var(--radius-pill); font-size: var(--font-size-xs); font-weight: 600; color: var(--cobalt); } /* ── Activity list (dashboard) ── */ .activity-item { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); align-items: flex-start; } .activity-item:last-child { border-bottom: none; } .activity-dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; } .activity-dot.green { background: var(--success); } .activity-dot.amber { background: var(--warning-amber); } .activity-dot.red { background: var(--error); } .activity-dot.blue { background: var(--cobalt); } .activity-text { font-size: var(--font-size-base); flex: 1; } .activity-time { font-size: var(--font-size-xs); color: var(--text-muted); flex-shrink: 0; }