:host { display: block; height: 100%; overflow: auto; } .compare { padding: 12px; } .compare-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; } .compare-title { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: #0f172a; } .compare-title .mat-icon { color: #64748b; font-size: 18px; width: 18px; height: 18px; line-height: 18px; } .compare-actions { display: flex; align-items: center; gap: 8px; } .compare-filter { padding: 3px 10px; border: 1px solid #e2e8f0; border-radius: 999px; background: #ffffff; color: #475569; font-size: 11px; font-weight: 600; cursor: pointer; } .compare-filter.active { border-color: #c7d2fe; background: #eef2ff; color: #3730a3; } /* * Model output differs between runs on its own. Saying so next to the count is the difference * between a comparison that informs and one that invites false conclusions. */ .compare-note { margin: 0 0 10px; color: #64748b; font-size: 11.5px; line-height: 1.45; } .compare-warning { margin: 0 0 10px; padding: 8px 10px; border: 1px solid #fed7aa; border-radius: 6px; background: #fff7ed; color: #9a3412; font-size: 12px; line-height: 1.45; } .compare-empty { color: #64748b; font-size: 12px; } .compare-node { margin-bottom: 12px; padding: 8px 10px; border: 1px solid #e2e8f0; border-radius: 8px; background: #ffffff; } .compare-node-title { display: flex; align-items: center; gap: 6px; margin: 0 0 6px; font-size: 12.5px; font-weight: 700; color: #0f172a; } .compare-status { margin: 0 0 6px; color: #92400e; font-size: 11px; font-weight: 600; } .compare-badge { padding: 0 5px; border-radius: 3px; background: #f1f5f9; color: #64748b; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; } .compare-badge.outcome { background: #dcfce7; color: #15803d; } .compare-state { margin-left: auto; padding: 0 6px; border-radius: 999px; font-size: 9.5px; font-weight: 700; text-transform: uppercase; } .compare-state.changed { background: #fef3c7; color: #92400e; } .compare-state.equal { background: #f1f5f9; color: #64748b; } .compare-state.only-left { background: #fee2e2; color: #b91c1c; } .compare-state.only-right { background: #dcfce7; color: #15803d; } .compare-value + .compare-value { margin-top: 8px; padding-top: 8px; border-top: 1px solid #f1f5f9; } .compare-value-name { display: flex; align-items: center; gap: 5px; margin-bottom: 4px; font-size: 11.5px; font-weight: 600; color: #334155; } /* Two columns, each scrolling its own long value rather than the page scrolling sideways. */ .compare-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; } .compare-cell { min-width: 0; max-height: 320px; overflow: auto; padding: 6px 8px; border: 1px solid #e2e8f0; border-radius: 6px; background: #f8fafc; color: #0f172a; font-size: 12px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; } .compare-cell .added { background: #dcfce7; color: #14532d; border-radius: 2px; } .compare-cell .removed { background: #fee2e2; color: #7f1d1d; border-radius: 2px; }