.form-floating.has-icon {
	position: relative;
	--ff-field-h: calc(3.5rem + 2px);
	--ff-icon-size: 1.1rem;
	--ff-icon-x: .9rem;
	--ff-icon-gap: .6rem;
	--bs-form-floating-padding-x: calc(var(--ff-icon-x) + var(--ff-icon-size) + var(--ff-icon-gap));
}

.form-floating.has-icon>.form-control {
	height: var(--ff-field-h);
	background: var(--surface-2);
	color: var(--text);
	border: 1px solid var(--border);
	border-radius: var(--radius-xs);
	padding-left: var(--bs-form-floating-padding-x);
	box-shadow: none;
	line-height: 1.25;
}

.form-floating.has-icon>label {
	color: var(--muted);
	padding-left: var(--bs-form-floating-padding-x);
	z-index: 3;
}

.form-floating>.form-control::placeholder {
	color: transparent
}

.form-floating>.form-control:focus {
	border-color: var(--brand);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 22%, transparent);
	background: color-mix(in oklab, var(--surface-2) 92%, var(--brand) 8%);
}

.floating-icon {
	position: absolute;
	left: var(--ff-icon-x);
	top: calc((var(--ff-field-h) - var(--ff-icon-size))/2);
	font-family: "bootstrap-icons";
	font-size: var(--ff-icon-size);
	line-height: 1;
	color: var(--muted);
	pointer-events: none;
	z-index: 2;
	transition: color .12s ease;
}

.form-floating.has-icon:has(#hashInput:focus) .floating-icon {
	color: var(--brand)
}

h6.text-muted {
	color: var(--muted) !important;
	font-weight: 700;
	letter-spacing: .04em;
	margin-top: .25rem
}

.result-row {
	display: grid;
	grid-template-columns: minmax(7.5rem, max-content) 1fr;
	align-items: stretch !important;
	gap: .75rem;
}

.result-label {
	display: grid;
	place-items: center;
	min-height: 2.25rem;
	border-radius: .6rem;
	font-weight: 700;
	letter-spacing: .02em
}

.badge[class*="text-bg-"] {
	color: #fff !important
}

.badge.text-bg-primary {
	background: var(--brand) !important;
	border: 1px solid color-mix(in oklab, var(--brand) 70%, #000 30%)
}

.badge.text-bg-danger {
	background: var(--err) !important;
	border: 1px solid color-mix(in oklab, var(--err) 70%, #000 30%)
}

.badge.text-bg-success {
	background: var(--ok) !important;
	border: 1px solid color-mix(in oklab, var(--ok) 60%, #000 40%)
}

.badge.text-bg-info {
	background: var(--brand-2) !important;
	border: 1px solid color-mix(in oklab, var(--brand-2) 70%, #000 30%)
}

.result-box {
	background: var(--surface-2);
	border: 1px solid var(--border);
	border-radius: .6rem;
	padding: .7rem .8rem;
	transition: background .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.result-row:hover .result-box {
	background: color-mix(in oklab, var(--surface-2) 90%, var(--brand) 10%);
	border-color: color-mix(in oklab, var(--border) 60%, var(--brand) 40%);
	box-shadow: 0 6px 18px color-mix(in oklab, var(--brand) 10%, transparent);
}

.result-value {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
	font-size: .95rem;
	word-break: break-all;
}

.result-box code {
	user-select: all;
	cursor: text
}

.algo-toggle {
	--seg-h: 32px;
	position: absolute;
	top: .6rem;
	right: .6rem;
	z-index: 4;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: var(--seg-h);
	padding: 3px;
	border-radius: 999px;
	background: var(--surface);
	border: 1px solid var(--border);
	box-shadow: 0 6px 16px rgba(0, 0, 0, .12);
}

.algo-toggle .btn-check {
	position: absolute !important;
	opacity: 0 !important;
	pointer-events: none !important
}

.algo-toggle .btn {
	border: 0 !important;
	background: transparent !important;
	color: var(--text-soft) !important;
	height: calc(var(--seg-h) - 6px);
	line-height: calc(var(--seg-h) - 6px);
	padding: 0 .9rem !important;
	border-radius: 10px !important;
	font-weight: 800;
	letter-spacing: .02em;
	font-size: .9rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 82px;
	transition: color .15s ease, background .15s ease, box-shadow .15s ease;
}

.algo-toggle .btn:hover {
	color: var(--text) !important;
	background: color-mix(in oklab, var(--surface) 88%, var(--brand) 12%) !important
}

.algo-toggle .btn-check:checked+.btn {
	color: #fff !important;
	background: linear-gradient(180deg, color-mix(in oklab, var(--brand) 88%, #fff), var(--brand)) !important;
	box-shadow: 0 6px 18px color-mix(in oklab, var(--brand) 18%, transparent);
}

.algo-toggle .btn-check:focus+.btn {
	box-shadow: none
}

.algo-toggle .btn-check:focus-visible+.btn {
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 22%, transparent)
}

@media (max-width:575.98px) {
	.form-control-lg {
		font-size: 1rem
	}

	.form-floating.has-icon {
		--ff-field-h: calc(3.25rem + 2px);
		--ff-icon-size: 1rem;
		--ff-icon-x: .75rem;
		--ff-icon-gap: .5rem;
	}

	.result-row {
		grid-template-columns: 1fr;
		gap: .55rem
	}

	.result-label {
		justify-content: flex-start;
		min-height: 0;
		padding: .5rem .6rem
	}

	.result-value {
		font-size: .92rem
	}

	.algo-toggle {
		position: static;
		width: 100%;
		margin-top: .6rem;
		--seg-h: 44px;
		padding: 4px;
		border-radius: 14px;
	}

	.algo-toggle .btn {
		height: 36px;
		line-height: 36px;
		border-radius: 12px !important;
		flex: 1 1 50%;
		min-width: 0;
		font-size: 1rem;
	}
}

#sha2Group, #sha3Group { flex-direction: column; }
#sha3Group.d-none { display: none !important; }