/* ---------------------------------------------------------------------------
 * Profile photo cropper (2026-08-25).
 *
 * Fixed to the viewport and appended to <body> for the same reason as the other
 * overlays here: contain:layout on .site-wrap makes that element the containing
 * block for anything fixed inside it.
 * ------------------------------------------------------------------------- */
.nasi-crop {
	position: fixed;
	inset: 0;
	z-index: 100001;
	display: grid;
	place-items: center;
	padding: 18px;
}
.nasi-crop__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(29, 27, 22, .55);
}
.nasi-crop__box {
	position: relative;
	width: 100%;
	max-width: 340px;
	background: #fff;
	border-radius: 14px;
	padding: 20px 18px 14px;
	box-shadow: 0 18px 50px rgba(0, 0, 0, .3);
	text-align: center;
}
.nasi-crop__title {
	margin: 0 0 4px;
	font-size: 19px;
	font-weight: 800;
	color: #1d1b16;
}
.nasi-crop__hint {
	margin: 0 0 14px;
	font-size: 13px;
	color: #6b6355;
}
.nasi-crop__stage {
	width: 260px;
	height: 260px;
	margin: 0 auto 14px;
	border-radius: 50%;
	overflow: hidden;
	background: #f0eae0;
	box-shadow: 0 0 0 2px #f4b000, 0 0 0 3px rgba(0, 0, 0, .08);
}
.nasi-crop__stage canvas {
	display: block;
	width: 260px;
	height: 260px;
	cursor: grab;
	touch-action: none;
}
.nasi-crop__stage canvas:active { cursor: grabbing; }
.nasi-crop__zoom { width: 100%; margin: 0 0 16px; accent-color: #f4b000; }
.nasi-crop__actions {
	display: flex;
	gap: 10px;
	justify-content: center;
}
.nasi-crop__actions button {
	min-height: 44px;
	padding: 10px 18px;
	border-radius: 8px;
	font-weight: 800;
	cursor: pointer;
	border: 1.5px solid #231700;
}
.nasi-crop__cancel { background: #fff; color: #231700; }
.nasi-crop__ok { background: #f4b000; color: #231700; border-color: #f4b000; }
.nasi-crop__ok:hover, .nasi-crop__ok:focus-visible { background: #e5a600; }

.nasi-photo-error {
	margin: 8px 0 0;
	font-size: 13px;
	font-weight: 700;
	color: #b3261e;
}
