/**
 * Syuro.Co-  structure-design.md ??
 * ???????: ??? <640, ??? 768991, ???? ?992
 */

:root {
	--bg-primary: #fcfcfa;
	--text-primary: #000000;
	--text-secondary: #666666;
	--text-muted: #999999;
	--header-pad-x: 40px;
	--header-pad-y: 20px;
	--section-pad-x: 40px;
	--section-pad-y: 40px;
	--gap-section: 72px;
	--font-sans: "Pretendard", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
	--font-serif: "Cormorant Garamond", "Times New Roman", serif;
}

[data-theme="dark"] {
	--bg-primary: #1a1a1a;
	--text-primary: #ffffff;
	--text-secondary: #cccccc;
	--text-muted: #888888;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
}

body {
	margin: 0;
	font-family: var(--font-sans);
	font-size: 16px;
	line-height: 1.5;
	color: var(--text-primary);
	background-color: var(--bg-primary);
	transition: background-color 0.25s ease, color 0.25s ease;
}

a {
	color: inherit;
	text-decoration: none;
}

a:hover {
	opacity: 0.72;
	text-decoration: underline;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

.syuro-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 99999;
	padding: 8px 16px;
	background: var(--text-primary);
	color: var(--bg-primary);
}

.syuro-skip-link:focus {
	left: 8px;
	top: 8px;
}

/*  Header  */
.site-header {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: var(--bg-primary);
	border-bottom: 1px solid rgba(0, 0, 0, 0.06);
	transition: background-color 0.25s ease;
}

[data-theme="dark"] .site-header {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

.site-header__inner {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 16px;
	max-width: 100%;
	padding: var(--header-pad-y) var(--header-pad-x);
	min-height: 60px;
}

.site-header__nav {
	justify-self: start;
}

.site-header__logo {
	justify-self: center;
	text-align: center;
	font-size: 16px;
	font-weight: 400;
	letter-spacing: 0.02em;
}

.site-header__logo a:hover {
	opacity: 1;
	text-decoration: none;
}

.site-header__utils {
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 16px;
	flex-wrap: wrap;
	justify-content: flex-end;
}

.site-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 16px 20px;
	align-items: center;
}

.site-nav__item {
	position: relative;
	font-size: 16px;
}

.site-nav__item > a {
	display: inline-block;
}

.site-nav__sub {
	list-style: none;
	margin: 0;
	padding: 8px 0 0;
	position: absolute;
	left: 0;
	top: 100%;
	min-width: 180px;
	background: var(--bg-primary);
	border: 1px solid rgba(0, 0, 0, 0.08);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
	z-index: 10;
}

[data-theme="dark"] .site-nav__sub {
	border-color: rgba(255, 255, 255, 0.12);
}

.site-nav__item--has-sub:hover > .site-nav__sub,
.site-nav__item--has-sub:focus-within > .site-nav__sub {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.site-nav__sub li {
	padding: 6px 14px;
	font-size: 14px;
}

.menu-toggle {
	display: none;
	background: none;
	border: 0;
	padding: 8px;
	cursor: pointer;
	font-family: inherit;
	font-size: 14px;
	color: var(--text-primary);
}

.theme-toggle {
	background: none;
	border: 0;
	cursor: pointer;
	font-size: 14px;
	color: var(--text-primary);
	padding: 4px 0;
	font-family: inherit;
}

.lang-switch {
	font-size: 14px;
}

/*  Layout  */
.site-main {
	min-height: 50vh;
}

.section {
	padding: var(--section-pad-y) var(--section-pad-x);
}

.section--intro {
	min-height: 320px;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding-top: clamp(48px, 12vh, 100px);
	padding-bottom: clamp(48px, 12vh, 100px);
}

.section--intro__title {
	font-family: var(--font-serif);
	font-size: clamp(1.75rem, 4vw, 2.75rem);
	font-weight: 500;
	margin: 0 0 12px;
	line-height: 1.15;
	max-width: 28ch;
}

.section--intro__lead {
	margin: 0;
	font-size: clamp(0.875rem, 2vw, 1rem);
	color: var(--text-secondary);
	max-width: 40ch;
}

.section--shop {
	padding-bottom: clamp(48px, 8vh, 96px);
}

.section__title {
	font-family: var(--font-sans);
	font-weight: 500;
	font-size: 24px;
	margin: 0 0 28px;
}

/* Product grid: 3 / 2 / 1 */
.product-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.product-card {
	display: flex;
	flex-direction: column;
}

.product-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.product-card__link:hover {
	opacity: 1;
	text-decoration: none;
}

.product-card__thumb {
	position: relative;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: rgba(0, 0, 0, 0.04);
}

[data-theme="dark"] .product-card__thumb {
	background: rgba(255, 255, 255, 0.06);
}

.product-card__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.35s ease;
}

.product-card__link:hover .product-card__thumb img {
	transform: scale(1.06);
}

.product-card__body {
	padding-top: 12px;
}

.product-card__title {
	font-size: 16px;
	font-weight: 400;
	margin: 0 0 4px;
	line-height: 1.35;
}

.product-card__meta {
	font-size: 12px;
	font-weight: 300;
	color: var(--text-muted);
	margin: 0 0 6px;
}

.product-card__price {
	font-size: 14px;
	margin: 0;
}

.section__cta {
	margin-top: 32px;
}

.section__cta a {
	font-size: 14px;
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
	text-decoration: none;
}

.section__cta a:hover {
	opacity: 0.72;
}

/* Optional full-viewport section */
.section--viewport {
	min-height: 100vh;
	min-height: 100dvh;
	display: flex;
	align-items: center;
	justify-content: center;
	scroll-snap-align: start;
}

.syuro-front--snap {
	scroll-snap-type: y proximity;
}

/* WooCommerce product loop grid */
.syuro-shop-archive ul.products {
	display: grid !important;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}

.syuro-shop-archive ul.products::before,
.syuro-shop-archive ul.products::after {
	display: none !important;
}

.shop-filter-narrow {
	display: none;
	margin-bottom: 20px;
}

.shop-filter-narrow__summary {
	cursor: pointer;
	font-size: 14px;
	font-weight: 600;
	padding: 8px 0;
}

.shop-filter-narrow__body {
	padding-top: 12px;
}

@media (max-width: 991px) {
	.shop-sidebar--desktop {
		display: none;
	}

	.shop-filter-narrow {
		display: block;
	}

	.syuro-shop-archive ul.products {
		grid-template-columns: repeat(2, 1fr);
		gap: 15px;
	}
}

@media (max-width: 639px) {
	.syuro-shop-archive ul.products {
		grid-template-columns: 1fr;
		gap: 10px;
	}
}

/* Sorting */
.syuro-shop-archive .woocommerce-ordering {
	margin: 0;
}

.syuro-shop-archive .woocommerce-ordering select {
	font-family: var(--font-sans);
	font-size: 14px;
	padding: 8px 12px;
	border: 1px solid rgba(0, 0, 0, 0.15);
	background: var(--bg-primary);
	color: var(--text-primary);
}

[data-theme="dark"] .syuro-shop-archive .woocommerce-ordering select {
	border-color: rgba(255, 255, 255, 0.2);
}

.syuro-single-product .summary,
.syuro-single-product .woocommerce-product-gallery {
	max-width: 640px;
	margin-left: auto;
	margin-right: auto;
}

/*  Shop archive  */
.shop-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 32px;
	padding: var(--section-pad-y) var(--section-pad-x);
}

@media (min-width: 992px) {
	.shop-layout--with-sidebar {
		grid-template-columns: minmax(200px, 32%) minmax(0, 1fr);
		align-items: start;
	}
}

.shop-page-title {
	font-family: var(--font-serif);
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	font-weight: 500;
	margin: 0 0 8px;
}

.shop-page-desc {
	margin: 0 0 24px;
	color: var(--text-secondary);
	font-size: 15px;
}

.shop-toolbar {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 28px;
}

.shop-toolbar__sort label {
	font-size: 14px;
	margin-right: 8px;
}

.shop-toolbar__sort select {
	font-family: var(--font-sans);
	font-size: 14px;
	padding: 8px 12px;
	border: 1px solid rgba(0, 0, 0, 0.15);
	background: var(--bg-primary);
	color: var(--text-primary);
	border-radius: 0;
}

[data-theme="dark"] .shop-toolbar__sort select {
	border-color: rgba(255, 255, 255, 0.2);
}

.shop-sidebar__title {
	font-size: 14px;
	font-weight: 600;
	margin: 0 0 12px;
}

.shop-filter-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.shop-filter-list li {
	margin-bottom: 8px;
	font-size: 14px;
}

.shop-filter-list a.is-active {
	font-weight: 600;
	text-decoration: underline;
}

/* Pagination */
.woocommerce nav.woocommerce-pagination,
.syuro-pagination {
	margin-top: 40px;
	text-align: center;
}

.woocommerce nav.woocommerce-pagination ul,
.syuro-pagination ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: inline-flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span,
.syuro-pagination a,
.syuro-pagination span {
	display: inline-block;
	padding: 8px 12px;
	font-size: 14px;
	border: 1px solid transparent;
}

.woocommerce nav.woocommerce-pagination ul li span.current,
.syuro-pagination .current {
	font-weight: 600;
	border-color: currentColor;
}

/*  Footer  */
.site-footer {
	padding: 48px var(--section-pad-x) 32px;
	border-top: 1px solid rgba(0, 0, 0, 0.06);
	font-size: 12px;
}

[data-theme="dark"] .site-footer {
	border-top-color: rgba(255, 255, 255, 0.08);
}

.site-footer__inner {
	display: flex;
	flex-wrap: wrap;
	gap: 24px 40px;
	align-items: center;
	justify-content: space-between;
}

.site-footer__nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 20px;
}

.site-footer__social {
	display: flex;
	gap: 16px;
	align-items: center;
}

.site-footer__social a {
	display: inline-flex;
	width: 24px;
	height: 24px;
	align-items: center;
	justify-content: center;
}

.site-footer__copy {
	margin: 24px 0 0;
	width: 100%;
	text-align: center;
	color: var(--text-secondary);
	font-size: 11px;
}

/*  WooCommerce single / notices  */
.woocommerce .woocommerce-breadcrumb {
	font-size: 12px;
	margin-bottom: 16px;
	color: var(--text-secondary);
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	font-size: 14px;
}

/*  Tablet  */
@media (max-width: 991px) {
	:root {
		--header-pad-x: 25px;
		--section-pad-x: 25px;
		--section-pad-y: 32px;
	}

	.product-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 15px;
	}

	.site-header:not(.site-header--ref) .site-nav__item {
		font-size: 14px;
	}
}

/*  Mobile  */
@media (max-width: 639px) {
	:root {
		--header-pad-x: 20px;
		--section-pad-x: 20px;
		--section-pad-y: 28px;
	}

	.product-grid {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.site-header__inner {
		grid-template-columns: auto 1fr auto;
	}

	.site-header__nav--desktop {
		display: none;
	}

	.menu-toggle {
		display: inline-block;
		justify-self: start;
	}

	.site-header__logo {
		grid-column: 2;
	}

	.site-header__utils {
		grid-column: 3;
		gap: 8px;
	}

	.site-header__utils .lang-switch,
	.site-header__utils .account-link {
		display: none;
	}

	.mobile-drawer {
		position: fixed;
		inset: 0;
		background: var(--bg-primary);
		z-index: 2000;
		padding: 24px;
		transform: translateX(-100%);
		transition: transform 0.3s ease;
		overflow-y: auto;
	}

	.mobile-drawer.is-open {
		transform: translateX(0);
	}

	.mobile-drawer__close {
		position: absolute;
		top: 16px;
		right: 16px;
		background: none;
		border: 0;
		font-size: 24px;
		cursor: pointer;
		color: var(--text-primary);
		line-height: 1;
	}

	.mobile-drawer .site-nav__list {
		flex-direction: column;
		align-items: flex-start;
		gap: 20px;
		margin-top: 48px;
	}

	.mobile-drawer .site-nav__sub {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		border: 0;
		padding: 8px 0 0 12px;
	}

	.mobile-drawer__utils {
		margin-top: 40px;
		padding-top: 24px;
		border-top: 1px solid rgba(0, 0, 0, 0.08);
		display: flex;
		flex-direction: column;
		gap: 12px;
		font-size: 14px;
	}

	.product-card__title {
		font-size: 14px;
	}

	.site-footer__inner {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (min-width: 640px) {
	.mobile-only {
		display: none !important;
	}
}
