.site-loader {
	position: fixed;
	z-index: 100000;
	inset: 0;
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	background: var(--site-loader-background, #fff);
	opacity: 1;
	visibility: visible;
	transform: translate3d(0, 0, 0);
	transition: opacity .65s ease, transform .72s cubic-bezier(.22, 1, .36, 1), visibility .65s;
}

html.tabeo-loader-skip .site-loader { display: none !important; }
html.is-site-loading,
html.is-site-loading body { overflow: hidden; }
.site-loader.is-exiting { pointer-events: none; visibility: hidden; }
.site-loader--exit-fade.is-exiting { opacity: 0; }
.site-loader--exit-slide-right.is-exiting { transform: translate3d(100%, 0, 0); }
.site-loader--exit-slide-up.is-exiting { transform: translate3d(0, -100%, 0); }
.site-loader__background { position: absolute; z-index: 0; inset: 0; display: block; overflow: hidden; }
.site-loader__background img { display: block; width: 100%; height: 100%; object-fit: cover; }
.site-loader__content { position: relative; z-index: 1; display: grid; place-items: center; color: var(--site-loader-text-color, #17212b); animation: tabeo-loader-content-enter .8s cubic-bezier(.22, 1, .36, 1) both; }
.site-loader__image { display: block; width: var(--site-loader-image-size-pc, 120px); max-width: 36vw; height: auto; max-height: 30vh; object-fit: contain; }
.site-loader__circle { display: block; width: 54px; height: 54px; border: 4px solid color-mix(in srgb, var(--color-brand) 20%, transparent); border-top-color: var(--color-brand); border-radius: 50%; animation: tabeo-loader-spin .85s linear infinite; }
.site-loader__dots { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 22px; }
.site-loader__dots i { display: block; width: 12px; height: 12px; border-radius: 50%; background: currentColor; animation: tabeo-loader-dot 1.1s ease-in-out infinite both; }
.site-loader__dots i:nth-child(2) { animation-delay: .14s; }
.site-loader__dots i:nth-child(3) { animation-delay: .28s; }
.site-loader__catchphrase { display: block; margin-top: 22px; font-size: clamp(.9rem, 1.3vw, 1.15rem); font-weight: 700; letter-spacing: .08em; line-height: 1.6; text-align: center; }
.site-loader__text { display: block; margin-top: 12px; font-size: .78rem; font-weight: 600; letter-spacing: .12em; line-height: 1.4; }

@keyframes tabeo-loader-spin { to { transform: rotate(360deg); } }
@keyframes tabeo-loader-dot { 0%, 80%, 100% { opacity: .25; transform: translateY(0) scale(.82); } 40% { opacity: 1; transform: translateY(-7px) scale(1); } }
@keyframes tabeo-loader-content-enter { from { opacity: 0; transform: translateY(16px) scale(.97); } to { opacity: 1; transform: translateY(0) scale(1); } }

@media (max-width: 767px) {
	.site-loader__image { width: var(--site-loader-image-size-sp, 60px); max-width: 38vw; }
	.site-loader__circle { width: 44px; height: 44px; border-width: 3px; }
	.site-loader__dots { gap: 8px; }
	.site-loader__dots i { width: 10px; height: 10px; }
	.site-loader__catchphrase { margin-top: 18px; padding: 0 24px; font-size: .9rem; }
	.site-loader__text { margin-top: 10px; font-size: .7rem; }
}

@media (prefers-reduced-motion: reduce) {
	.site-loader { transition-duration: .01ms; }
	.site-loader__circle { animation-duration: 1.8s; }
	.site-loader__dots i, .site-loader__content { animation: none; }
}
