/* ==========================================================================
   Combine FASTA — Tool-specific styles
   Shared Benchling-style framework: tools/common/tbb-sequence-tools.css
   ========================================================================== */

/* ── Textarea ────────────────────────────────────────────────────────────── */
.tbb-combine-fasta .tbb-seq-textarea {
	min-height: 200px;
}

/* ── Output max-height ───────────────────────────────────────────────────── */
@media ( min-width: 900px ) {
	.tbb-combine-fasta .tbb-seq-output-pre {
		max-height: 420px;
	}
}

/* ==========================================================================
   Validation panel
   ========================================================================== */

.tbb-cf-val-header {
	display:         flex;
	align-items:     center;
	justify-content: space-between;
	margin-bottom:   10px;
}

.tbb-cf-val-header .tbb-seq-section-label {
	margin-bottom: 0;
}

.tbb-cf-autoclean-btn {
	font-size:   12px;
	padding:     4px 12px;
	line-height: 18px;
}

/* Count badges */
.tbb-cf-val-counts {
	display:     flex;
	align-items: center;
	gap:         8px;
	flex-wrap:   wrap;
	margin-bottom: 10px;
}

.tbb-cf-val-badge {
	display:        inline-flex;
	align-items:    center;
	gap:            4px;
	padding:        4px 10px;
	border-radius:  20px;
	font-size:      12px;
	font-weight:    600;
	border:         1px solid transparent;
}

.tbb-cf-val-badge--ok {
	background: var(--tbb-seq-success-light);
	color:      var(--tbb-seq-success);
	border-color: #aadcb5;
}

.tbb-cf-val-badge--warn {
	background: var(--tbb-seq-warning-light);
	color:      var(--tbb-seq-warning);
	border-color: #eac54f;
}

.tbb-cf-val-badge--error {
	background: var(--tbb-seq-danger-light);
	color:      var(--tbb-seq-danger);
	border-color: #ffb8b0;
}

/* Per-sequence issue list */
.tbb-cf-val-issues {
	display:        flex;
	flex-direction: column;
	gap:            4px;
	margin-top:     4px;
}

.tbb-cf-issue {
	display:       flex;
	align-items:   flex-start;
	gap:           8px;
	padding:       7px 10px;
	border-radius: var(--tbb-seq-radius-sm);
	font-size:     12px;
	line-height:   1.4;
	border:        1px solid transparent;
}

.tbb-cf-issue--warn {
	background:   var(--tbb-seq-warning-light);
	border-color: #eac54f;
	color:        #7d5700;
}

.tbb-cf-issue--error {
	background:   var(--tbb-seq-danger-light);
	border-color: #ffb8b0;
	color:        #82071e;
}

.tbb-cf-issue-icon {
	flex-shrink: 0;
	font-style:  normal;
	margin-top:  1px;
}

.tbb-cf-issue-seq {
	font-weight:  600;
	margin-right: 4px;
}

/* ==========================================================================
   Duplicate detection
   ========================================================================== */

.tbb-cf-dup-row {
	display:     flex;
	align-items: center;
	gap:         10px;
	flex-wrap:   wrap;
}

.tbb-cf-dup-stat {
	font-size:   13px;
	font-weight: 600;
	color:       var(--tbb-seq-text);
}

.tbb-cf-dup-sep {
	color:     var(--tbb-seq-text-muted);
	font-size: 12px;
}

.tbb-cf-dup-label {
	display:     inline-flex;
	align-items: center;
	gap:         6px;
	font-size:   13px;
	color:       var(--tbb-seq-text);
	cursor:      pointer;
	margin-left: 4px;
}

.tbb-cf-dup-label input[type="checkbox"] {
	width:  14px;
	height: 14px;
	cursor: pointer;
	accent-color: var(--tbb-seq-primary);
}

/* ==========================================================================
   Sequence breakdown table
   ========================================================================== */

.tbb-cf-breakdown-header {
	display:         flex;
	align-items:     center;
	justify-content: space-between;
	margin-bottom:   8px;
}

.tbb-cf-breakdown-header .tbb-seq-section-label {
	margin-bottom: 0;
}

.tbb-cf-sort-hint {
	font-size: 11px;
	color:     var(--tbb-seq-text-muted);
}

.tbb-cf-table-wrap {
	overflow-x:    auto;
	border:        1px solid var(--tbb-seq-border);
	border-radius: var(--tbb-seq-radius-sm);
}

.tbb-cf-table {
	width:           100%;
	border-collapse: collapse;
	font-size:       13px;
	min-width:       480px;
}

/* Header */
.tbb-cf-th {
	padding:        8px 12px;
	background:     var(--tbb-seq-bg-subtle);
	border-bottom:  1px solid var(--tbb-seq-border);
	text-align:     left;
	font-size:      11px;
	font-weight:    600;
	text-transform: uppercase;
	letter-spacing: .05em;
	color:          var(--tbb-seq-text-muted);
	white-space:    nowrap;
	user-select:    none;
}

.tbb-cf-th[data-col] {
	cursor: pointer;
}

.tbb-cf-th[data-col]:hover {
	background: #eaecef;
	color:      var(--tbb-seq-text);
}

.tbb-cf-th--active {
	color: var(--tbb-seq-primary) !important;
}

.tbb-cf-sort-icon {
	font-size: 10px;
	opacity:   .5;
}

/* Body rows */
.tbb-cf-tr {
	border-bottom: 1px solid var(--tbb-seq-border);
	transition:    background 80ms ease;
}

.tbb-cf-tr:last-child:not(.tbb-cf-tr--expand) {
	border-bottom: none;
}

.tbb-cf-tr--data {
	cursor: pointer;
}

.tbb-cf-tr--data:hover {
	background: var(--tbb-seq-bg-subtle);
}

.tbb-cf-tr--data.tbb-cf-tr--open {
	background: var(--tbb-seq-primary-light);
}

.tbb-cf-tr--expand {
	border-bottom: 1px solid var(--tbb-seq-border);
}

.tbb-cf-td {
	padding:     8px 12px;
	color:       var(--tbb-seq-text);
	vertical-align: middle;
}

.tbb-cf-td--index {
	color:     var(--tbb-seq-text-muted);
	font-size: 11px;
	width:     28px;
}

.tbb-cf-td--name {
	max-width:     220px;
	overflow:      hidden;
	text-overflow: ellipsis;
	white-space:   nowrap;
	font-weight:   500;
}

.tbb-cf-td--mono {
	font-family: var(--tbb-seq-font-mono);
}

/* Status badges inside table */
.tbb-cf-status {
	display:        inline-flex;
	align-items:    center;
	gap:            4px;
	padding:        2px 8px;
	border-radius:  20px;
	font-size:      11px;
	font-weight:    600;
	white-space:    nowrap;
	border:         1px solid transparent;
}

.tbb-cf-status--ok    { background: var(--tbb-seq-success-light); color: var(--tbb-seq-success); border-color: #aadcb5; }
.tbb-cf-status--warn  { background: var(--tbb-seq-warning-light); color: var(--tbb-seq-warning); border-color: #eac54f; }
.tbb-cf-status--error { background: var(--tbb-seq-danger-light);  color: var(--tbb-seq-danger);  border-color: #ffb8b0; }
.tbb-cf-status--dup   { background: #fff0eb; color: #bc4c00; border-color: #ffa28b; }

/* Type badge inside table */
.tbb-cf-type {
	font-size:   11px;
	font-weight: 600;
	color:       var(--tbb-seq-text-muted);
	white-space: nowrap;
}

.tbb-cf-type--dna     { color: var(--tbb-seq-primary); }
.tbb-cf-type--protein { color: var(--tbb-seq-warning); }

/* Expand chevron */
.tbb-cf-expand-icon {
	display:     inline-block;
	font-size:   10px;
	margin-left: 6px;
	opacity:     .45;
	transition:  transform 80ms ease;
	vertical-align: middle;
}

.tbb-cf-tr--open .tbb-cf-expand-icon {
	transform: rotate(90deg);
}

/* Expanded sequence block */
.tbb-cf-seq-expand {
	padding:      10px 12px 12px;
	background:   var(--tbb-seq-bg-subtle);
	border-top:   1px solid var(--tbb-seq-border);
}

.tbb-cf-seq-expand pre {
	margin:       0;
	font-family:  var(--tbb-seq-font-mono);
	font-size:    12px;
	line-height:  1.6;
	color:        var(--tbb-seq-text);
	white-space:  pre-wrap;
	word-break:   break-all;
	max-height:   180px;
	overflow-y:   auto;
}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media ( max-width: 600px ) {
	.tbb-cf-val-header { flex-wrap: wrap; gap: 8px; }
	.tbb-cf-dup-row    { flex-direction: column; align-items: flex-start; gap: 6px; }
	.tbb-cf-dup-sep    { display: none; }
}

@media ( prefers-reduced-motion: reduce ) {
	.tbb-cf-tr,
	.tbb-cf-expand-icon { transition: none; }
}
