.nb-block {
	border: 1px solid #d7dbe0;
	border-radius: 8px;
	padding: 1rem 1.25rem;
	margin: 1rem 0;
	font-size: 14px;
	line-height: 1.45;
	background: #fff;
}
.nb-block h4 {
	margin: 0 0 .25rem;
	font-size: 1.05rem;
}
.nb-block .nb-desc {
	margin: 0 0 .75rem;
	color: #50575e;
}
.nb-controls {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: .75rem;
	margin: .5rem 0;
}
.nb-field {
	display: flex;
	flex-direction: column;
	font-size: 12px;
	color: #50575e;
	gap: .15rem;
}
.nb-field select,
.nb-field input {
	width: 100px;
	font-size: 13px;
	padding: .2rem .3rem;
}
.nb-io {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin: .75rem 0;
}
.nb-fieldset {
	flex: 0 0 auto;
}
.nb-legend {
	font-size: 12px;
	font-weight: 600;
	color: #1d2327;
	margin-bottom: .25rem;
	max-width: 22rem;
}
/* Horizontal scroll wrapper so wide grids never overflow the page on narrow
   screens; the table keeps its natural (content) width and scrolls instead. */
.nb-scroll {
	max-width: 100%;
	overflow-x: auto;
}
.nb-grid {
	border-collapse: collapse;
	width: auto;
	table-layout: auto;
}
.nb-grid td {
	border: 1px solid #dcdcde;
	padding: 0;
}
.nb-grid input {
	width: 6.5em;
	max-width: none;
	border: 0;
	padding: .25rem .35rem;
	text-align: right;
	font-variant-numeric: tabular-nums;
	box-sizing: border-box;
}
.nb-grid th.nb-lbl {
	border: 1px solid #dcdcde;
	padding: .2rem .45rem;
	background: #f0f0f1;
	color: #1d2327;
	font-size: 12px;
	font-weight: 600;
	text-align: center;
	white-space: nowrap;
}
.nb-grid th.nb-corner {
	background: #e5e5e7;
	color: #50575e;
	font-weight: 500;
}
/* The little "wife →" / "husb ↓" headers on the marginal strips. */
.nb-grid th.nb-marginlbl {
	background: #eaf1f8;
	color: #2c3e50;
	font-weight: 500;
	font-size: 11px;
}
/* Target-marginal input cells, tinted so they read as separate from the seed. */
.nb-grid td.nb-margin input {
	background: #f4f8fc;
}
.nb-grid td.nb-margin.nb-empty {
	background: #f0f0f1;
	border-color: #dcdcde;
}
.nb-grid.nb-result td {
	padding: .25rem .5rem;
	text-align: right;
	font-variant-numeric: tabular-nums;
	background: #f6f7f7;
}
.nb-grid.nb-result td.nb-neg {
	background: #fcebec;
	color: #b32d2e;
	font-weight: 600;
}
.nb-run {
	background: #2271b1;
	color: #fff;
	border: 0;
	border-radius: 4px;
	padding: .4rem .9rem;
	cursor: pointer;
	font-size: 13px;
}
.nb-run:disabled {
	opacity: .6;
	cursor: default;
}
.nb-status {
	font-size: 12px;
	color: #50575e;
}
.nb-results {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-top: 1rem;
}
.nb-card {
	border: 1px solid #e0e0e0;
	border-radius: 6px;
	padding: .6rem .75rem;
	background: #fbfbfc;
}
.nb-warn {
	color: #b32d2e;
	font-size: 12px;
	margin: .4rem 0 0;
}
.nb-diag {
	color: #50575e;
	font-size: 12px;
	margin: .4rem 0 0;
	max-width: 26rem;
}
