@charset "utf-8";
/* ==========================================================================
   TABLE OF CONTENTS
   검색 팁: Ctrl+F / Cmd+F 로 [태그] 검색
   --------------------------------------------------------------------------
   [skip-link]    본문 바로가기
   [logo]         브랜드 로고
   [header]       사이트 헤더
   [coming-soon]  준비중
   [product-list] 제품 목록
   [pagination]   페이지네이션
   [footer]       사이트 푸터
   [bottom-nav]   하단 내비게이션
   ========================================================================== */

@layer components {
	.ui-skip-link {
		position: fixed;
		top: 0;
		left: 0;
		z-index: 9999;
		display: inline-block;
		margin: 0;
		padding: var(--spacing-05) var(--spacing-08);
		font-size: 16rem;
		text-align: center;
		color: var(--color-white);
		text-decoration: underline;
		background: var(--color-neutral-900);
		border-radius: var(--radius-2);
		&:not(:focus-visible) {
			width: 0;
			height: 0;
			overflow: hidden;
			padding: 0;
			border: 0;
			clip-path: inset(100%);
		}
	}
	.ui-logo {
		flex-shrink: 0;
		font: var(--font-weight-700) 20rem / 1 var(--font-family-sans-serif);
		&.ui-logo--white {
			color: #fff;
		}
	}
	.ui-header {
		position: sticky;
		top: 0;
		z-index: 10;
		background: var(--color-white);
		border-bottom: var(--border-width-1) solid var(--color-neutral-200);
		._main-container {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding-block: var(--spacing-03);
			@media (width >= 1280px) {
				gap: var(--spacing-07);
			}
			@media (width < 1280px) {
				gap: var(--spacing-05);
			}
		}
		._search {
			&._search-inline {
				flex: 1;
				max-width: 560px;
				@media (width < 768px) {
					display: none;
				}
			}
			&._search-row {
				padding-block: var(--spacing-03);
				@media (width >= 768px) {
					display: none;
				}
			}
			._search-form {
				display: flex;
				align-items: center;
				height: var(--spacing-14);
				overflow: hidden;
				border: var(--border-width-2) solid var(--color-neutral-200);
				border-radius: var(--radius-full);
				&:focus-within {
					border-color: var(--color-primary-500);
				}
				@media (prefers-reduced-motion: no-preference) {
					transition: border-color var(--duration-base);
				}
			}
			._search-input {
				flex: 1;
				height: 100%;
				padding-inline: var(--spacing-09);
				font: var(--font-body-3);
				background: transparent;
				border: none;
				outline: none;
				&::placeholder {
					color: var(--color-neutral-400);
				}
			}
			._search-btn {
				display: flex;
				flex-shrink: 0;
				align-items: center;
				justify-content: center;
				width: 48px;
				height: 100%;
				color: var(--color-white);
				background: var(--color-primary-500);
				&:hover {
					background: var(--color-primary-600);
				}
				@media (prefers-reduced-motion: no-preference) {
					transition: background var(--duration-base);
				}
				.material-symbols-outlined {
					font-size: var(--spacing-09);
				}
			}
		}
		._utils {
			display: flex;
			flex-shrink: 0;
			align-items: center;
			gap: var(--spacing-02);
			._util-link {
				position: relative;
				display: flex;
				flex-direction: column;
				align-items: center;
				gap: var(--spacing-03);
				padding-inline: var(--spacing-04);
				font: var(--font-body-5);
				white-space: nowrap;
				color: var(--color-neutral-600);
				border-radius: var(--radius-2);
				&:hover {
					color: var(--color-black);
				}
				@media (prefers-reduced-motion: no-preference) {
					transition: color var(--duration-base);
				}
				@media (width > 768px) {
					&._link-search {
						display: none;
					}
				}
				@media (width < 1280px) {
					&._link-cart,
					&._link-my {
						display: none;
					}
				}
				._nav-icon-wrap {
					position: relative;
				}
				.material-symbols-outlined {
					position: relative;
					display: block;
					font-size: var(--spacing-10);
				}
				._badge {
					position: absolute;
					top: 0;
					left: 90%;
					display: grid;
					place-items: center;
					height: 1.6em;
					aspect-ratio: 1;
					padding-inline: var(--spacing-03);
					font-weight: var(--font-weight-700);
					font-size: 10rem;
					text-align: center;
					color: var(--color-white);
					background: var(--color-notification);
					border-radius: var(--radius-full);
					translate: -50%;
				}
				._label {
					font: var(--font-body-5);
					@media (width < 1280px) {
						display: none;
					}
				}
			}
		}
		._nav {
			padding-block: var(--spacing-03);
			._nav-container {
				display: flex;
				align-items: center;
				gap: var(--spacing-03);
			}
			._category-all {
				display: inline-flex;
				flex-shrink: 0;
				align-items: center;
				gap: var(--spacing-04);
				padding: var(--spacing-06);
				font: var(--font-body-4-bold);
				color: var(--color-white);
				background: var(--color-primary-500);
				border-radius: var(--radius-2);
				&:hover {
					background: var(--color-primary-600);
				}
				@media (prefers-reduced-motion: no-preference) {
					transition: var(--duration-base);
				}
				.material-symbols-outlined {
					font-size: inherit;
				}
				._category-all-label {
					@media (width < 768px) {
						/* display: none; */
					}
				}
			}
			._category-list {
				display: inline-flex;
				overflow: auto;
			}
			._category-link {
				display: inline-flex;
				align-items: center;
				padding: var(--spacing-03) var(--spacing-07);
				font: var(--font-body-4);
				white-space: nowrap;
				color: var(--color-neutral-600);
				border-radius: var(--radius-2);
				outline-offset: -2px;
				@media (prefers-reduced-motion: no-preference) {
					transition: var(--duration-base);
				}
				&:hover {
					color: var(--color-black);
					background: var(--color-neutral-100);
				}
				&.is-current {
					font-weight: var(--font-weight-700);
					color: var(--color-primary-500);
				}
			}
		}
	}
	.ui-coming-soon {
		padding-block: var(--spacing-section);
		text-align: center;
		._icon {
			width: 1.2em;
			font: var(--font-heading-1);
			fill: var(--color-neutral-500);
		}
		._heading {
			font: var(--font-heading-1);
			color: var(--color-neutral-900);
		}
		._description {
			margin-top: var(--spacing-08);
			font: var(--font-body-1);
			color: var(--color-neutral-500);
		}
	}
	.ui-product-list {
		--column-min-width: calc((100% - var(--grid-gutter)) / 2);
		--column-base-width: 150rem;
		--column-max-width-raw: 332;
		--column-max-width: calc(var(--column-max-width-raw) * 1rem);
		--thumb-ratio: 1;
		container-type: inline-size;
		&:not(.swiper-wrapper) {
			display: grid;
			gap: var(--spacing-12) var(--grid-gutter);
			@media (width >= 320px) {
				grid-template-columns: repeat(auto-fill, minmax(min(var(--column-min-width), clamp(var(--column-base-width), calc(var(--column-max-width-raw) / var(--container-width-base) * 100vw), var(--column-max-width))), 1fr));
			}
		}
		._item {
			position: relative;
			&.swiper-slide {
				width: var(--column-max-width);
				margin-right: var(--grid-gutter);
				&:last-child {
					margin-right: 0;
				}
			}
			&._item--skeleton {
				cursor: default;
				pointer-events: none;
				:is(._thumb-wrapper, ._name, ._desc, ._price-wrap) {
					--skeleton-base: #ebebeb;
					--skeleton-shimmer: #f5f5f5;
					position: relative;
					display: block;
					contain: content;
					color: transparent;
					background: var(--skeleton-base);
					border-radius: 4rem;
					&::after {
						position: absolute;
						inset: 0;
						background: linear-gradient(90deg, transparent 25%, var(--skeleton-shimmer) 50%, transparent 75%);
						content: "";
						@media (prefers-reduced-motion: no-preference) {
							animation: shimmer 1.4s infinite linear;
						}
					}
				}
				:is(._name, ._desc, ._price-wrap) {
					height: 1lh;
				}
				._thumb,
				._btn-wish {
					visibility: hidden;
				}
			}
		}
		._link {
			display: grid;
		}
		._thumb-wrapper {
			position: relative;
			display: block;
			aspect-ratio: var(--thumb-ratio);
			background: #fff url("/assets/images/board/no_image.gif") no-repeat 50% / cover;
		}
		._thumb {
			display: block;
			width: 100%;
			height: 100%;
			object-fit: cover;
			text-indent: -100vw;
		}
		._name {
			margin-top: var(--spacing-06);
			font-weight: var(--font-weight-700);
			font-size: 18rem;
		}
		._desc {
			margin-top: var(--spacing-04);
			font-size: var(--spacing-08);
			&:empty {
				display: none;
			}
		}
		._price-wrap {
			margin-top: var(--spacing-08);
		}
		._origin-price {
			font-weight: 600;
			color: var(--color-neutral-500);
			text-decoration: line-through;
		}
		._price {
			font-weight: 700;
		}
		._discount-rate {
			font-weight: var(--font-weight-600);
			color: var(--color-notification);
		}
		._badges {
			margin-top: var(--spacing-06);
		}
		._badge {
			--badge-color: #d12121;
			display: inline-flex;
			align-items: center;
			justify-content: center;
			height: var(--spacing-10);
			padding-inline: var(--spacing-04);
			font: var(--font-body-5);
			font-weight: var(--font-weight-500);
			text-align: center;
			color: var(--badge-color);
			border: var(--border-width-1) solid var(--badge-color);
			&._badge--new {
				color: #fff;
				background: var(--badge-color);
			}
		}
		._btn-wish {
			position: absolute;
			top: 0;
			right: 0;
			width: var(--spacing-14);
			aspect-ratio: 1;
			background: url("/assets/images/shop/icon_interest.svg") no-repeat 50% /18rem;
			background-color: transparent;
			background-repeat: no-repeat;
			background-position: 50% 50%;
			&._btn-wish--wished {
				background-image: url("/assets/images/shop/icon_interest_on.svg");
			}
		}
	}
	@keyframes shimmer {
		0% {
			transform: translateX(-100%);
		}
		100% {
			transform: translateX(100%);
		}
	}
	.ui-pagination {
	}
	.pagination-skip {
		position: absolute;
		left: -9999px;
		width: 1px;
		height: 1px;
		overflow: hidden;
		white-space: nowrap;

		background: var(--color-text-primary, #000); /* 다크모드 자동 대응 */
		color: var(--color-background-primary, #fff);
		font-size: 13px;
		font-weight: 500;
		padding: 8px 14px;
		border-radius: 6px;
		text-decoration: none;
		outline: none;
		z-index: 9999;
	}

	.pagination-skip:focus-visible {
		position: fixed;
		top: 16px;
		left: 16px;
		width: auto;
		height: auto;
		overflow: visible;
		outline: 2px solid var(--color-text-primary, #000);
		outline-offset: 2px;
	}
	.ui-footer {
		padding-block: var(--spacing-12);
		font: var(--font-body-4);
		color: var(--color-neutral-900);
		background: var(--color-neutral-100);
		a {
			text-decoration: underline;
		}
		._company-info {
			._company-info-list {
				display: flex;
				flex-wrap: wrap;
				gap: var(--spacing-05) 2ch;
				@media (width < 768px) {
					flex-direction: column;
				}
			}
			._company-info-item {
				display: inline-flex;
				flex-wrap: wrap;
				gap: 0 0.4ch;
			}
		}
		._links {
			display: flex;
			flex-wrap: wrap;
			align-items: flex-start;
			gap: var(--spacing-05);
			margin-top: var(--spacing-08);
		}
		._copyright {
			margin-top: var(--spacing-08);
		}
	}
	.ui-bottom-nav {
		--bottom-nav-height: var(--spacing-17);
		position: sticky;
		inset: auto 0 0;
		z-index: 11;
		min-width: 300rem;
		overflow: auto;
		background: var(--color-white);
		border-top: var(--border-width-1) solid var(--color-neutral-100);
		@media (width >= 1280px) {
			display: none;
		}
		._nav-list {
			display: grid;
			grid-auto-flow: column;
			grid-auto-columns: 1fr;
		}
		._nav-link {
			display: grid;
			place-content: center;
			place-items: center;
			gap: var(--spacing-02);
			height: var(--bottom-nav-height);
			font: var(--font-body-5);
			color: var(--color-neutral-500);
			@media (prefers-reduced-motion: no-preference) {
				transition: color var(--duration-base);
			}
			.material-symbols-outlined {
				display: block;
				font-size: 24rem;
				font-variation-settings:
					"FILL" 0,
					"wght" 300,
					"GRAD" 0,
					"opsz" 24;
			}
			&.is-current {
				font-weight: var(--font-weight-600);
				color: var(--color-primary-500);
				.material-symbols-outlined {
					font-variation-settings:
						"FILL" 1,
						"wght" 500,
						"GRAD" 0,
						"opsz" 24;
				}
			}
			&:hover:not(.is-current),
			&:focus-visible {
				color: var(--color-neutral-500);
			}
		}
		._nav-icon-wrap {
			position: relative;
		}
		._nav-badge {
			position: absolute;
			top: 0;
			left: 90%;
			display: grid;
			place-items: center;
			height: 1.6em;
			aspect-ratio: 1;
			padding-inline: var(--spacing-03);
			font-weight: var(--font-weight-700);
			font-size: 10rem;
			text-align: center;
			color: var(--color-white);
			background: var(--color-notification);
			border-radius: var(--radius-full);
			translate: -50%;
		}
	}
}
