/* ==========================================================================
   TBB Lab Calculators — Punnett Square Dihybrid Cross Stylesheet
   ========================================================================== */

/* ── Phenotype palette (4 classes) ──────────────────────────────────────── */
.tbb-dihybrid-calculator {
	--dh-dd-bg:     #dbeafe;
	--dh-dd-border: #93c5fd;
	--dh-dd-text:   #1d4ed8;

	--dh-dr-bg:     #dcfce7;
	--dh-dr-border: #86efac;
	--dh-dr-text:   #15803d;

	--dh-rd-bg:     #ffedd5;
	--dh-rd-border: #fdba74;
	--dh-rd-text:   #c2410c;

	--dh-rr-bg:     #fee2e2;
	--dh-rr-border: #fca5a5;
	--dh-rr-text:   #dc2626;
}

/* ── Parent cards grid ───────────────────────────────────────────────────── */
.tbb-dihybrid-parents-grid {
	display:               grid;
	grid-template-columns: 1fr 1fr;
	gap:                   1.25rem;
	margin-bottom:         1.25rem;
}

.tbb-dihybrid-parent-card {
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       1.25rem;
}

.tbb-dihybrid-parent-card-header {
	display:       flex;
	align-items:   center;
	gap:           .45rem;
	font-size:     1.3rem;
	font-weight:   700;
	color:         var(--tbb-text);
	margin-bottom: 1rem;
}

.tbb-dihybrid-parent-icon {
	font-size: 1.5rem;
}

.tbb-dihybrid-parent-icon--female { color: #db2777; }
.tbb-dihybrid-parent-icon--male   { color: var(--tbb-primary); }

/* ── Trait columns inside a parent card ──────────────────────────────────── */
.tbb-dihybrid-traits-row {
	display:               grid;
	grid-template-columns: 1fr 1fr;
	gap:                   1rem;
	margin-bottom:         1rem;
}

.tbb-dihybrid-trait-heading {
	font-size:     1.1rem;
	font-weight:   700;
	color:         var(--tbb-text-muted);
	text-transform: uppercase;
	letter-spacing: .06em;
	margin-bottom: .5rem;
}

/* ── Radio pills ─────────────────────────────────────────────────────────── */
.tbb-dihybrid-radios {
	display:   flex;
	gap:       .4rem;
	flex-wrap: wrap;
}

.tbb-dihybrid-radio-label {
	display:       inline-flex;
	align-items:   center;
	gap:           .3rem;
	padding:       .4rem .8rem;
	border:        1.5px solid var(--tbb-border);
	border-radius: 6px;
	cursor:        pointer;
	font-size:     1.25rem;
	font-weight:   600;
	font-family:   var(--tbb-font-mono);
	color:         var(--tbb-text);
	background:    var(--tbb-bg);
	transition:    border-color var(--tbb-transition), background var(--tbb-transition),
	               color var(--tbb-transition);
	user-select:   none;
}

.tbb-dihybrid-radio-label:hover {
	border-color: var(--tbb-primary);
	color:        var(--tbb-primary);
}

.tbb-dihybrid-radio-label input[type="radio"] {
	display: none;
}

.tbb-dihybrid-radio-label:has(input[type="radio"]:checked) {
	background:   var(--tbb-primary);
	border-color: var(--tbb-primary);
	color:        #fff;
}

/* ── Custom genotype input ───────────────────────────────────────────────── */
.tbb-dihybrid-custom-row {
	display:        flex;
	align-items:    center;
	gap:            .75rem;
	flex-wrap:      wrap;
	padding-top:    .875rem;
	border-top:     1px solid var(--tbb-border);
}

.tbb-dihybrid-custom-row .tbb-calc-label {
	margin:     0;
	white-space: nowrap;
	font-size:  1.2rem;
}

.tbb-dihybrid-custom-input {
	display:       block;
	box-sizing:    border-box;
	padding:       .65rem 1rem;
	font-size:     1.3rem;
	font-weight:   600;
	font-family:   var(--tbb-font-mono);
	color:         var(--tbb-text);
	background:    var(--tbb-bg);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	transition:    border-color var(--tbb-transition), box-shadow var(--tbb-transition);
	-webkit-appearance: none;
	width:         120px;
}

.tbb-dihybrid-custom-input:focus {
	outline:      none;
	border-color: var(--tbb-primary);
	box-shadow:   0 0 0 3px rgba(37, 99, 235, 0.15);
}

.tbb-dihybrid-n-input {
	width: 150px;
}

/* ── Allele definitions card ─────────────────────────────────────────────── */
.tbb-dihybrid-alleles-card {
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       1.25rem;
	margin-bottom: 1.25rem;
}

.tbb-dihybrid-alleles-grid {
	display:               grid;
	grid-template-columns: repeat(4, 1fr);
	gap:                   1rem;
}

.tbb-dihybrid-allele-group {
	display:        flex;
	flex-direction: column;
	align-items:    flex-start;
	gap:            .45rem;
}

.tbb-dihybrid-allele-label {
	font-size:   1.15rem;
	font-weight: 600;
	color:       var(--tbb-text-muted);
	line-height: 1.3;
}

.tbb-dihybrid-allele-input {
	display:       block;
	box-sizing:    border-box;
	width:         64px;
	padding:       .6rem;
	font-size:     1.5rem;
	font-weight:   700;
	font-family:   var(--tbb-font-mono);
	text-align:    center;
	color:         var(--tbb-text);
	background:    var(--tbb-bg);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	transition:    border-color var(--tbb-transition), box-shadow var(--tbb-transition);
	-webkit-appearance: none;
}

.tbb-dihybrid-allele-input:focus {
	outline:      none;
	border-color: var(--tbb-primary);
	box-shadow:   0 0 0 3px rgba(37, 99, 235, 0.15);
}

/* ── Action buttons ──────────────────────────────────────────────────────── */
.tbb-dihybrid-calculator .tbb-calc-actions {
	flex-wrap: wrap;
}

/* ── Results wrapper ─────────────────────────────────────────────────────── */
.tbb-dihybrid-results {
	margin-top:  1.75rem;
	padding-top: 1.75rem;
	border-top:  2px solid var(--tbb-border);
}

.tbb-dihybrid-section {
	margin-bottom: 2.25rem;
}

.tbb-dihybrid-section-title {
	display:       flex;
	align-items:   center;
	gap:           .5rem;
	font-size:     1.35rem;
	font-weight:   700;
	color:         var(--tbb-text);
	margin:        0 0 1rem;
	padding-bottom:.5rem;
	border-bottom: 1px solid var(--tbb-border);
}

.tbb-dihybrid-insight-section .tbb-dihybrid-section-title {
	color: var(--tbb-primary);
}

.tbb-dihybrid-insight-icon {
	font-size: 1.3rem;
}

.tbb-dihybrid-insight-desc {
	font-size:     1.25rem;
	color:         var(--tbb-text-muted);
	margin:        0 0 1rem;
	line-height:   1.55;
}

/* ── Punnett 4×4 table ───────────────────────────────────────────────────── */
.tbb-dihybrid-table-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

#tbb-dihybrid-punnett-table table {
	border-collapse: separate;
	border-spacing:  4px;
	font-size:       1.4rem;
	font-weight:     700;
	font-family:     var(--tbb-font-mono);
	margin:          0 auto;
}

#tbb-dihybrid-punnett-table th.tbb-dh-corner {
	background:    transparent;
	border:        none;
	width:         64px;
	height:        52px;
	text-align:    center;
	vertical-align: middle;
	font-size:     1.1rem;
	color:         var(--tbb-text-muted);
	padding:       0;
}

#tbb-dihybrid-punnett-table th.tbb-dh-corner .corner-female { color: #db2777; }
#tbb-dihybrid-punnett-table th.tbb-dh-corner .corner-male   { color: var(--tbb-primary); }

#tbb-dihybrid-punnett-table .tbb-dh-col-head,
#tbb-dihybrid-punnett-table .tbb-dh-row-head {
	min-width:      72px;
	height:         52px;
	text-align:     center;
	vertical-align: middle;
	background:     var(--tbb-bg-subtle);
	border:         1.5px solid var(--tbb-border);
	border-radius:  var(--tbb-radius-sm);
	font-size:      1.4rem;
	font-weight:    700;
	padding:        0 .5rem;
	white-space:    nowrap;
}

#tbb-dihybrid-punnett-table .tbb-dh-cell {
	min-width:      92px;
	height:         60px;
	text-align:     center;
	vertical-align: middle;
	border:         1.5px solid var(--tbb-border);
	border-radius:  var(--tbb-radius-sm);
	font-size:      1.35rem;
	font-weight:    700;
	padding:        0 .3rem;
	transition:     background var(--tbb-transition), border-color var(--tbb-transition);
	white-space:    nowrap;
}

/* Cell colours by phenotype class */
#tbb-dihybrid-punnett-table .tbb-dh--dd {
	background:   var(--dh-dd-bg);
	border-color: var(--dh-dd-border);
	color:        var(--dh-dd-text);
}
#tbb-dihybrid-punnett-table .tbb-dh--dr {
	background:   var(--dh-dr-bg);
	border-color: var(--dh-dr-border);
	color:        var(--dh-dr-text);
}
#tbb-dihybrid-punnett-table .tbb-dh--rd {
	background:   var(--dh-rd-bg);
	border-color: var(--dh-rd-border);
	color:        var(--dh-rd-text);
}
#tbb-dihybrid-punnett-table .tbb-dh--rr {
	background:   var(--dh-rr-bg);
	border-color: var(--dh-rr-border);
	color:        var(--dh-rr-text);
}

/* ── Chances grid ────────────────────────────────────────────────────────── */
.tbb-dihybrid-chances-grid {
	display:               grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap:                   .875rem;
}

.tbb-dihybrid-chance-card {
	display:        flex;
	flex-direction: column;
	align-items:    center;
	text-align:     center;
	padding:        1.1rem .875rem;
	border-radius:  var(--tbb-radius-sm);
	border:         1.5px solid var(--tbb-border);
	background:     var(--tbb-bg-subtle);
}

.tbb-dihybrid-chance-card.tbb-dh--dd {
	background: var(--dh-dd-bg);  border-color: var(--dh-dd-border);
}
.tbb-dihybrid-chance-card.tbb-dh--dr {
	background: var(--dh-dr-bg);  border-color: var(--dh-dr-border);
}
.tbb-dihybrid-chance-card.tbb-dh--rd {
	background: var(--dh-rd-bg);  border-color: var(--dh-rd-border);
}
.tbb-dihybrid-chance-card.tbb-dh--rr {
	background: var(--dh-rr-bg);  border-color: var(--dh-rr-border);
}

.tbb-dihybrid-chance-geno {
	font-size:   1.45rem;
	font-weight: 700;
	font-family: var(--tbb-font-mono);
	color:       var(--tbb-text);
	line-height: 1.2;
}

.tbb-dihybrid-chance-pct {
	font-size:   2rem;
	font-weight: 800;
	color:       var(--tbb-primary);
	margin:      .25rem 0 .2rem;
	line-height: 1.1;
}

.tbb-dihybrid-chance-label {
	font-size:  1.05rem;
	color:      var(--tbb-text-muted);
	line-height: 1.3;
}

/* ── Ratios ──────────────────────────────────────────────────────────────── */
.tbb-dihybrid-ratios-box {
	display:        flex;
	flex-direction: column;
	gap:            .75rem;
}

.tbb-dihybrid-ratio-row {
	display:       flex;
	align-items:   baseline;
	gap:           .75rem;
	background:    var(--tbb-bg-subtle);
	border:        1px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       .875rem 1.25rem;
	flex-wrap:     wrap;
}

.tbb-dihybrid-ratio-label {
	font-size:   1.2rem;
	font-weight: 600;
	color:       var(--tbb-text-muted);
	white-space: nowrap;
}

.tbb-dihybrid-ratio-value {
	font-size:   1.3rem;
	font-weight: 700;
	color:       var(--tbb-text);
	font-family: var(--tbb-font-mono);
	word-break:  break-all;
}

/* ── Genotype → Phenotype table ──────────────────────────────────────────── */
.tbb-dihybrid-gp-table {
	width:           100%;
	border-collapse: collapse;
	font-size:       1.3rem;
}

.tbb-dihybrid-gp-table th,
.tbb-dihybrid-gp-table td {
	padding:      .75rem 1rem;
	text-align:   left;
	border-bottom: 1px solid var(--tbb-border);
}

.tbb-dihybrid-gp-table th {
	background:     var(--tbb-bg-subtle);
	font-weight:    700;
	color:          var(--tbb-text-muted);
	font-size:      1.15rem;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.tbb-dihybrid-gp-table td:first-child {
	font-family: var(--tbb-font-mono);
	font-size:   1.4rem;
}

.tbb-dihybrid-gp-table tr.tbb-dh--dd td { color: var(--dh-dd-text); }
.tbb-dihybrid-gp-table tr.tbb-dh--dr td { color: var(--dh-dr-text); }
.tbb-dihybrid-gp-table tr.tbb-dh--rd td { color: var(--dh-rd-text); }
.tbb-dihybrid-gp-table tr.tbb-dh--rr td { color: var(--dh-rr-text); }

/* ── Parental gametes ────────────────────────────────────────────────────── */
.tbb-dihybrid-gametes-wrap {
	display:   flex;
	gap:       1.5rem;
	flex-wrap: wrap;
}

.tbb-dihybrid-gamete-parent {
	flex:          1;
	min-width:     200px;
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       1rem 1.25rem;
}

.tbb-dihybrid-gamete-parent-label {
	font-size:     1.15rem;
	font-weight:   700;
	color:         var(--tbb-text-muted);
	text-transform: uppercase;
	letter-spacing: .05em;
	margin-bottom: .75rem;
	display:       flex;
	align-items:   center;
	gap:           .35rem;
}

.tbb-dihybrid-gamete-pills {
	display:   flex;
	gap:       .6rem;
	flex-wrap: wrap;
}

.tbb-dihybrid-gamete-pill {
	display:       flex;
	flex-direction: column;
	align-items:   center;
	padding:       .5rem .75rem;
	background:    var(--tbb-bg);
	border:        1.5px solid var(--tbb-border);
	border-radius: 6px;
	font-family:   var(--tbb-font-mono);
}

.tbb-dihybrid-gamete-pill-geno {
	font-size:   1.4rem;
	font-weight: 700;
	color:       var(--tbb-text);
}

.tbb-dihybrid-gamete-pill-pct {
	font-size:   1.1rem;
	color:       var(--tbb-text-muted);
	margin-top:  .15rem;
}

/* ── Chart ───────────────────────────────────────────────────────────────── */
.tbb-dihybrid-chart-wrap {
	max-width:  520px;
	margin:     0 auto;
}

/* ── Heterozygosity metric cards ─────────────────────────────────────────── */
.tbb-dihybrid-metric-cards {
	display:               grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap:                   .875rem;
}

.tbb-dihybrid-metric-card {
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       1rem 1.1rem;
	text-align:    center;
}

.tbb-dihybrid-metric-card--highlight {
	background:   var(--tbb-primary-light, #eff6ff);
	border-color: var(--tbb-primary);
}

.tbb-dihybrid-metric-card--warn {
	background:   #fefce8;
	border-color: #fde68a;
}

.tbb-dihybrid-metric-value {
	font-size:   2rem;
	font-weight: 800;
	color:       var(--tbb-primary);
	line-height: 1.1;
	margin-bottom: .3rem;
}

.tbb-dihybrid-metric-label {
	font-size:  1.15rem;
	font-weight: 600;
	color:      var(--tbb-text);
	line-height: 1.3;
}

.tbb-dihybrid-metric-sub {
	font-size:  1.05rem;
	color:      var(--tbb-text-muted);
	margin-top: .2rem;
	line-height: 1.35;
}

/* ── Chi-Square inputs ───────────────────────────────────────────────────── */
.tbb-dihybrid-chisq-inputs {
	display:   flex;
	gap:       .875rem;
	flex-wrap: wrap;
	margin-bottom: 1rem;
}

.tbb-dihybrid-chisq-field {
	display:        flex;
	flex-direction: column;
	align-items:    flex-start;
	gap:            .35rem;
}

.tbb-dihybrid-chisq-field label {
	font-size:   1.15rem;
	font-weight: 600;
	font-family: var(--tbb-font-mono);
	color:       var(--tbb-text);
}

.tbb-dihybrid-chisq-field .tbb-dihybrid-chisq-expected {
	font-size:  1.05rem;
	color:      var(--tbb-text-muted);
}

.tbb-dihybrid-chisq-field input[type="number"] {
	width:         90px;
	padding:       .55rem .75rem;
	font-size:     1.25rem;
	font-weight:   600;
	font-family:   var(--tbb-font-mono);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	background:    var(--tbb-bg);
	color:         var(--tbb-text);
	-webkit-appearance: none;
	transition:    border-color var(--tbb-transition);
}

.tbb-dihybrid-chisq-field input[type="number"]:focus {
	outline:      none;
	border-color: var(--tbb-primary);
}

/* Chi-square result box */
.tbb-dihybrid-chisq-result {
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       1rem 1.25rem;
	font-size:     1.3rem;
}

.tbb-dihybrid-chisq-result.chisq--pass {
	background:   #f0fdf4;
	border-color: #86efac;
}

.tbb-dihybrid-chisq-result.chisq--fail {
	background:   #fef2f2;
	border-color: #fca5a5;
}

.tbb-dihybrid-chisq-stat {
	font-size:   1.5rem;
	font-weight: 800;
	font-family: var(--tbb-font-mono);
	color:       var(--tbb-text);
}

.tbb-dihybrid-chisq-interpretation {
	font-size:   1.2rem;
	color:       var(--tbb-text-muted);
	margin-top:  .4rem;
	line-height: 1.5;
}

/* ── Expected offspring grid ─────────────────────────────────────────────── */
.tbb-dihybrid-expected-input-row {
	display:     flex;
	align-items: center;
	gap:         .75rem;
	flex-wrap:   wrap;
	margin-bottom: 1rem;
}

.tbb-dihybrid-expected-input-row .tbb-calc-label {
	margin:    0;
	font-size: 1.2rem;
}

.tbb-dihybrid-expected-grid {
	display:               grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap:                   .875rem;
}

.tbb-dihybrid-expected-card {
	background:    var(--tbb-bg-subtle);
	border:        1.5px solid var(--tbb-border);
	border-radius: var(--tbb-radius-sm);
	padding:       .875rem 1rem;
}

.tbb-dihybrid-expected-card.tbb-dh--dd {
	background: var(--dh-dd-bg);  border-color: var(--dh-dd-border);
}
.tbb-dihybrid-expected-card.tbb-dh--dr {
	background: var(--dh-dr-bg);  border-color: var(--dh-dr-border);
}
.tbb-dihybrid-expected-card.tbb-dh--rd {
	background: var(--dh-rd-bg);  border-color: var(--dh-rd-border);
}
.tbb-dihybrid-expected-card.tbb-dh--rr {
	background: var(--dh-rr-bg);  border-color: var(--dh-rr-border);
}

.tbb-dihybrid-expected-pheno {
	font-size:   1.4rem;
	font-weight: 700;
	font-family: var(--tbb-font-mono);
	color:       var(--tbb-text);
}

.tbb-dihybrid-expected-count {
	font-size:   1.9rem;
	font-weight: 800;
	color:       var(--tbb-primary);
	margin:      .2rem 0 .15rem;
}

.tbb-dihybrid-expected-fraction {
	font-size:  1.1rem;
	color:      var(--tbb-text-muted);
}

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media ( max-width: 660px ) {
	.tbb-dihybrid-parents-grid {
		grid-template-columns: 1fr;
	}

	.tbb-dihybrid-alleles-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.tbb-dihybrid-calculator .tbb-calc-actions {
		flex-direction: column;
	}

	.tbb-dihybrid-calculator .tbb-calc-actions .tbb-btn {
		width: 100%;
	}
}

@media ( max-width: 420px ) {
	.tbb-dihybrid-traits-row {
		grid-template-columns: 1fr;
	}

	.tbb-dihybrid-alleles-grid {
		grid-template-columns: 1fr 1fr;
	}

	#tbb-dihybrid-punnett-table .tbb-dh-cell {
		min-width: 72px;
		font-size: 1.1rem;
	}

	#tbb-dihybrid-punnett-table .tbb-dh-col-head,
	#tbb-dihybrid-punnett-table .tbb-dh-row-head {
		min-width: 56px;
		font-size: 1.15rem;
	}
}
