html.ks-loader-pending,
html.ks-loader-pending body {
	overflow: hidden !important;
}

.ks-page-loader {
	--ks-loader-bg: #f4f0e8;
	--ks-loader-ink: #181512;
	--ks-loader-accent: #96652e;
	--ks-loader-progress: 0%;
	position: fixed;
	z-index: 2147483000;
	inset: 0;
	display: none;
	place-items: center;
	overflow: hidden;
	background: var(--ks-loader-bg);
	color: var(--ks-loader-ink);
	font-family: Arial, Helvetica, sans-serif;
	contain: layout paint;
}

html.ks-loader-pending .ks-page-loader {
	display: grid;
}

.ks-page-loader *,
.ks-page-loader *::before,
.ks-page-loader *::after {
	box-sizing: border-box;
}

.ks-page-loader__field {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.ks-page-loader__field::before {
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(color-mix(in srgb, var(--ks-loader-ink) 9%, transparent) 1px, transparent 1px),
		linear-gradient(90deg, color-mix(in srgb, var(--ks-loader-ink) 9%, transparent) 1px, transparent 1px);
	background-size: 72px 72px;
	content: "";
	-webkit-mask-image: radial-gradient(circle at center, #000, transparent 76%);
	mask-image: radial-gradient(circle at center, #000, transparent 76%);
}

.ks-page-loader__field > span {
	position: absolute;
	background: var(--ks-loader-accent);
	opacity: .7;
}

.ks-page-loader__field > span:nth-child(1) { top: 7%; right: 6%; width: min(33vw, 520px); height: 9px; background: repeating-linear-gradient(135deg, var(--ks-loader-accent) 0 13px, transparent 13px 21px); }
.ks-page-loader__field > span:nth-child(2) { bottom: 9%; left: 6%; width: 1px; height: 22vh; }
.ks-page-loader__field > span:nth-child(3) { bottom: 9%; left: 6%; width: min(24vw, 360px); height: 1px; }

.ks-page-loader__content {
	position: relative;
	z-index: 2;
	display:grid;
	justify-items: center;
	width: min(88vw, 620px);
	text-align: center;
}

.ks-page-loader__visual {
	position: relative;
	display: grid;
	place-items: center;
	width: clamp(190px, 26vw, 330px);
	aspect-ratio: 1;
}

.ks-loader-blade,
.ks-loader-scanner,
.ks-loader-cut {
	position: absolute;
	inset: 0;
	display: none;
}

.ks-page-loader__media {
	position: relative;
	z-index: 8;
	display: grid;
	place-items: center;
	width: 42%;
	height: 42%;
}

.ks-page-loader__media img {
	display: block;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

.ks-page-loader__copy {
	position: relative;
	display: grid;
	gap: 10px;
	margin-top: clamp(25px, 4vh, 42px);
}

.ks-page-loader__copy::before {
	position: absolute;
	top: -17px;
	left: 50%;
	width: 46px;
	height: 4px;
	background: repeating-linear-gradient(135deg, var(--ks-loader-accent) 0 5px, transparent 5px 8px);
	content: "";
	transform: translateX(-50%);
}

.ks-page-loader__copy strong {
	font-family: "Arial Narrow", "Roboto Condensed", Arial, sans-serif;
	font-size: clamp(25px, 4vw, 43px);
	font-weight: 850;
	letter-spacing: .055em;
	line-height: 1;
}

.ks-page-loader__copy span {
	color: var(--ks-loader-accent);
	font-size: 10px;
	font-weight: 850;
	letter-spacing: .2em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ks-page-loader__progress {
	position: relative;
	width: min(72vw, 330px);
	height: 3px;
	margin-top: 30px;
	overflow: visible;
	background: color-mix(in srgb, var(--ks-loader-ink) 16%, transparent);
}

.ks-page-loader__progress i {
	display: block;
	width: var(--ks-loader-progress);
	height: 100%;
	background: var(--ks-loader-accent);
	transition: width .18s linear;
}

.ks-page-loader__progress b {
	position: absolute;
	top: -4px;
	left: var(--ks-loader-progress);
	width: 11px;
	height: 11px;
	border: 2px solid var(--ks-loader-bg);
	border-radius: 50%;
	background: var(--ks-loader-accent);
	transform: translateX(-50%);
	transition: left .18s linear;
}

/* Forged blade */
.ks-page-loader--forged_blade .ks-loader-blade { display: block; }

.ks-loader-blade::before {
	position: absolute;
	inset: 8%;
	border-radius: 50%;
	background:
		repeating-conic-gradient(from 0deg, var(--ks-loader-accent) 0deg 4deg, transparent 4deg 12deg),
		radial-gradient(circle, transparent 0 54%, var(--ks-loader-ink) 55% 57%, transparent 58%);
	content: "";
	animation: ks-loader-spin 4.8s linear infinite;
}

.ks-loader-blade::after {
	position: absolute;
	inset: 22%;
	border: 1px solid color-mix(in srgb, var(--ks-loader-ink) 31%, transparent);
	border-radius: 50%;
	content: "";
}

.ks-loader-blade i:nth-child(1) {
	position: absolute;
	inset: 33%;
	border: 2px solid var(--ks-loader-accent);
	border-radius: 50%;
	animation: ks-loader-pulse 1.8s ease-in-out infinite;
}

.ks-loader-blade i:nth-child(2),
.ks-loader-blade i:nth-child(3) {
	position: absolute;
	top: 50%;
	left: 4%;
	width: 92%;
	height: 1px;
	background: color-mix(in srgb, var(--ks-loader-ink) 24%, transparent);
	transform: rotate(45deg);
}

.ks-loader-blade i:nth-child(3) { transform: rotate(-45deg); }

/* Precision scanner */
.ks-page-loader--precision_scan .ks-loader-scanner { display: block; }
.ks-page-loader--precision_scan .ks-page-loader__visual { border: 1px solid color-mix(in srgb, var(--ks-loader-ink) 22%, transparent); }

.ks-loader-scanner::before {
	position: absolute;
	inset: 10%;
	border: 1px solid var(--ks-loader-accent);
	border-radius: 50%;
	background:
		linear-gradient(color-mix(in srgb, var(--ks-loader-ink) 10%, transparent) 1px, transparent 1px),
		linear-gradient(90deg, color-mix(in srgb, var(--ks-loader-ink) 10%, transparent) 1px, transparent 1px);
	background-size: 24px 24px;
	content: "";
}

.ks-loader-scanner::after {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 36%;
	aspect-ratio: 1;
	border: 1px dashed var(--ks-loader-accent);
	border-radius: 50%;
	content: "";
	transform: translate(-50%, -50%);
	animation: ks-loader-target-pulse 1.5s ease-in-out infinite;
}

.ks-loader-scanner i {
	position: absolute;
	z-index: 2;
	top: 12%;
	right: 12%;
	left: 12%;
	height: 2px;
	background: var(--ks-loader-accent);
	box-shadow: 0 8px 24px var(--ks-loader-accent);
	animation: ks-loader-scan 2s var(--ks-brand-ease, ease-in-out) infinite;
}

.ks-loader-scanner span::before,
.ks-loader-scanner span::after {
	position: absolute;
	top: 50%;
	left: 50%;
	background: var(--ks-loader-accent);
	content: "";
	transform: translate(-50%, -50%);
}

.ks-loader-scanner span::before { width: 80%; height: 1px; }
.ks-loader-scanner span::after { width: 1px; height: 80%; }

/* Katana cut */
.ks-page-loader--katana_cut .ks-loader-cut { display: block; }

.ks-loader-cut i {
	position: absolute;
	top: 8%;
	bottom: 8%;
	width: 22%;
	background: var(--ks-loader-ink);
	clip-path: polygon(28% 0, 100% 0, 72% 100%, 0 100%);
	animation: ks-loader-bars 1.8s cubic-bezier(.2,.8,.2,1) infinite alternate;
}

.ks-loader-cut i:nth-child(1) { left: 10%; }
.ks-loader-cut i:nth-child(2) { left: 39%; animation-delay: -.55s; }
.ks-loader-cut i:nth-child(3) { right: 10%; animation-delay: -1.1s; }

.ks-loader-cut span {
	position: absolute;
	z-index: 5;
	top: 50%;
	left: -4%;
	width: 108%;
	height: 4px;
	background: var(--ks-loader-accent);
	box-shadow: 0 0 24px color-mix(in srgb, var(--ks-loader-accent) 75%, transparent);
	transform: rotate(-34deg) scaleX(0);
	animation: ks-loader-slash 1.5s cubic-bezier(.2,.8,.2,1) infinite;
}

.ks-page-loader--katana_cut .ks-page-loader__media {
	padding: 10px;
	background: var(--ks-loader-bg);
}

/* Exit */
.ks-page-loader.is-leaving {
	pointer-events: none;
	animation: ks-loader-exit .62s cubic-bezier(.7,0,.2,1) forwards;
}

.ks-page-loader.is-leaving .ks-page-loader__content {
	animation: ks-loader-content-exit .38s ease forwards;
}

@keyframes ks-loader-spin { to { transform: rotate(360deg); } }
@keyframes ks-loader-pulse { 50% { opacity: .35; transform: scale(.88); } }
@keyframes ks-loader-target-pulse { 0%,100% { opacity: 1; transform: translate(-50%, -50%) scale(1); } 50% { opacity: .35; transform: translate(-50%, -50%) scale(.84); } }
@keyframes ks-loader-scan { 0%,100% { top: 13%; opacity: .35; } 50% { top: 86%; opacity: 1; } }
@keyframes ks-loader-bars { to { transform: translateY(9px); } }
@keyframes ks-loader-slash { 0%,28% { transform: rotate(-34deg) scaleX(0); transform-origin: left; } 62%,100% { transform: rotate(-34deg) scaleX(1); transform-origin: left; } }
@keyframes ks-loader-content-exit { to { opacity: 0; transform: scale(.96) translateY(-10px); } }
@keyframes ks-loader-exit { 0% { clip-path: inset(0); } 100% { clip-path: inset(0 0 100% 0); visibility: hidden; } }

@media (max-width: 600px) {
	.ks-page-loader__field::before { background-size: 44px 44px; }
	.ks-page-loader__field > span:nth-child(1) { width: 58vw; }
	.ks-page-loader__visual { width: min(68vw, 260px); }
	.ks-page-loader__copy { margin-top: 30px; }
}

@media (prefers-reduced-motion: reduce) {
	.ks-page-loader *,
	.ks-page-loader *::before,
	.ks-page-loader *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
	}
}

@media print {
	.ks-page-loader { display: none !important; }
}
