@charset "UTF-8";
/**
 *
 * page-shop.scss
 *
 */
/* ------------------------------------------------------------
 写真を固定した導入部。タイトルから本文へスクロールする。
------------------------------------------------------------ */
.shop-hero {
	--shop-shade: .3;
	--shop-scene-height: 100vh;
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	background-color: var(--color-shop-title);
	background-image: none;
	color: var(--color-white);
	overflow: clip;
	isolation: isolate;
}

@media screen and (min-width: 1024px) {
	.shop-hero {
		--shop-wave-height: 12rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero {
		--shop-wave-height: 8.8rem ;
	}
}

.shop-hero__visual,
.shop-hero__overlay {
	grid-area: 1 / 1 / 3 / 2;
	align-self: start;
	position: sticky;
	top: 0;
	height: var(--shop-scene-height);
	pointer-events: none;
}

.shop-hero__overlay {
	z-index: 1;
}

.shop-hero__visual {
	z-index: -1;
	overflow: hidden;
}

.shop-hero__visual::after {
	content: '';
	position: absolute;
	inset: 0;
	background-color: var(--color-black);
	background-image: none;
	opacity: var(--shop-shade);
}

.shop-hero__visual img {
	display: block;
	height: 100%;
	-o-object-fit: cover;
	object-fit: cover;
}

@media screen and (min-width: 1024px) {
	.shop-hero__visual img {
		-o-object-position: center top;
		object-position: center top;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__visual img {
		-o-object-position: 66.15% top;
		object-position: 66.15% top;
	}
}

.shop-hero__heading {
	grid-area: 1 / 1;
	z-index: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	height: var(--shop-scene-height);
	text-align: center;
}

@media screen and (min-width: 1024px) {
	.shop-hero__heading {
		padding: 0 3rem 3.4rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__heading {
		padding: 0 2rem ;
	}
}

.shop-hero__title {
	font-family: var(--font-gothic2);
	padding-top: 0.1px;
	padding-bottom: 0.1px;
	font-weight: 400;
	letter-spacing: -0.1em;
}

.shop-hero__title::before, .shop-hero__title::after {
	content: '';
	display: block;
	width: 0;
	height: 0;
	font-size: inherit;
}

.shop-hero__title::before {
	margin-top: var(--font-gothic2-top);
}

.shop-hero__title::after {
	margin-bottom: var(--font-gothic2-bottom);
}

@media screen and (min-width: 1024px) {
	.shop-hero__title {
		font-size: var(--font-size70);
		--line-height: 1;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__title {
		font-size: var(--font-size40);
		--line-height: 1;
	}
}

.shop-hero__en {
	font-family: var(--font-sans-serif);
	padding-top: 0.1px;
	padding-bottom: 0.1px;
	letter-spacing: 0.06em;
}

.shop-hero__en::before, .shop-hero__en::after {
	content: '';
	display: block;
	width: 0;
	height: 0;
	font-size: inherit;
}

.shop-hero__en::before {
	margin-top: var(--font-sans-serif-top);
}

.shop-hero__en::after {
	margin-bottom: var(--font-sans-serif-bottom);
}

@media screen and (min-width: 1024px) {
	.shop-hero__en {
		font-size: var(--font-size20);
		--line-height: 1;
		margin-top: 2.8rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__en {
		font-size: var(--font-size13);
		--line-height: 1;
		margin-top: 2rem ;
	}
}

.shop-hero__intro {
	grid-area: 2 / 1;
	z-index: 0;
	display: flex;
	align-items: center;
	margin-inline: auto;
	padding-right: 0 ;
	padding-left: 0 ;
}

@media screen and (min-width: 1024px) {
	.shop-hero__intro {
		max-width: 130rem ;
		width: calc(100% - 20rem);
		padding-top: 22.8rem ;
		padding-bottom: calc(14rem + var( --shop-wave-height ));
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__intro {
		width: 80%;
		padding-top: 22.3rem ;
		padding-bottom: calc(21.2rem + var( --shop-wave-height ));
	}
}

.shop-hero__copy {
	--shop-copy-shadow-offset: 0 0.1rem 0.5rem ;
	text-shadow: var(--shop-copy-shadow-offset) var(--color-shadow-soft);
}

@media screen and (min-width: 1024px) {
	.shop-hero__copy {
		font-size: var(--font-size18);
		--line-height: 2.33333;
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__copy {
		font-size: var(--font-size13);
		--line-height: 2;
	}
}

.shop-hero__wave {
	position: absolute;
	bottom: 0;
	left: 0;
	z-index: 1;
	margin-bottom: -1px;
	width: 100%;
	height: var(--shop-wave-height);
	background-color: transparent;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 166.67 18' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0c41.67 0 41.67 16 83.33 16S125 0 166.67 0v18H0Z'/%3E%3C/svg%3E"), linear-gradient(var(--color-white), var(--color-white));
	background-position: left top, left bottom;
	background-repeat: repeat-x, no-repeat;
	pointer-events: none;
}

@media screen and (min-width: 1024px) {
	.shop-hero__wave {
		background-size: 166.67px 18px, 100% calc(100% - 18px);
	}
}

@media screen and (max-width: 1023px) {
	.shop-hero__wave {
		background-size: 83.335px 9px, 100% calc(100% - 9px);
	}
}

/* ------------------------------------------------------------
 商品一覧 / カテゴリ
------------------------------------------------------------ */
/* ------------------------------------------------------------
 shop-catalog
------------------------------------------------------------ */
.shop-catalog {
	margin-inline: auto;
}

@media screen and (min-width: 1024px) {
	.shop-catalog {
		max-width: 130rem ;
		width: calc(100% - 20rem);
		margin-top: 20.9rem ;
		scroll-margin-top: 13rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-catalog {
		width: 80%;
		margin-top: 8rem ;
		scroll-margin-top: 10rem ;
	}
}

.shop-catalog__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

@media screen and (min-width: 1024px) {
	.shop-catalog__header {
		gap: 3rem ;
		margin-bottom: 8.8rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-catalog__header {
		flex-direction: column;
		gap: 3.2rem ;
		margin-bottom: 4rem ;
	}
}

.shop-catalog__title {
	flex-shrink: 0;
	font-family: var(--font-gothic2);
	padding-top: 0.1px;
	padding-bottom: 0.1px;
	font-weight: 400;
	letter-spacing: -0.045em;
}

.shop-catalog__title::before, .shop-catalog__title::after {
	content: '';
	display: block;
	width: 0;
	height: 0;
	font-size: inherit;
}

.shop-catalog__title::before {
	margin-top: var(--font-gothic2-top);
}

.shop-catalog__title::after {
	margin-bottom: var(--font-gothic2-bottom);
}

@media screen and (min-width: 1024px) {
	.shop-catalog__title {
		font-size: var(--font-size62);
		--line-height: 1;
	}
}

@media screen and (max-width: 1023px) {
	.shop-catalog__title {
		font-size: var(--font-size35);
		--line-height: 1;
	}
}

.shop-catalog__title:focus {
	outline: none;
}

/* ------------------------------------------------------------
 shop-list
------------------------------------------------------------ */
.shop-list {
	display: grid;
}

@media screen and (min-width: 1024px) {
	.shop-list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 6.9rem 3.3333rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 3.4rem 2rem ;
	}
}

.shop-catalog__empty {
	text-align: center;
	font-size: var(--font-size18);
	--line-height: 1.66667;
	padding: 10rem 2rem ;
}

.shop-catalog__reset {
	display: block;
	border: 0;
	background-color: transparent;
	background-image: none;
	background-size: auto;
	background-position: 0% 0%;
	background-repeat: repeat;
	text-decoration: underline;
	text-underline-offset: 0.4rem ;
	color: var(--color-brand-red);
	font-size: inherit;
	margin-top: 2.8rem ;
	margin-inline: auto;
	transition: opacity var(--transition-hover);
}

@media (hover: hover) {
	.shop-catalog__reset:hover:where(body[data-hover-enabled="true"] *, [data-hover-enabled="true"]) {
		opacity: var(--hover-opacity);
	}
}

/* ------------------------------------------------------------
 商品一覧のページネーション配置
------------------------------------------------------------ */
.shop-catalog > .p-pagination {
	margin-inline: auto;
}

@media screen and (min-width: 1024px) {
	.shop-catalog > .p-pagination {
		max-width: 47.5rem ;
		margin-top: 16.5rem ;
	}
}

:where(.shop-main) :is(button, a, select):focus-visible {
	outline: 2px solid var(--color-brand-blue);
	outline-offset: 4px;
}

.shop-main [hidden] {
	display: none !important;
}

/* ------------------------------------------------------------
 shop-sr-only
------------------------------------------------------------ */
.shop-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	border: 0;
	white-space: nowrap;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
}

/* ------------------------------------------------------------
 商品詳細
------------------------------------------------------------ */
/* ------------------------------------------------------------
 shop-detail
------------------------------------------------------------ */
.shop-detail {
	margin-inline: auto;
}

@media screen and (min-width: 1024px) {
	.shop-detail {
		max-width: 130rem ;
		width: calc(100% - 20rem);
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail {
		width: 80%;
	}
}

@media screen and (min-width: 1024px) {
	.shop-single-main .shop-detail__layout {
		max-width: 121rem ;
		grid-template-columns: minmax(0, 640fr) minmax(0, 450fr);
		-webkit-column-gap: 9.917355%;
		-moz-column-gap: 9.917355%;
		column-gap: 9.917355%;
	}
}

.shop-detail__body {
	min-width: 0;
}

@media screen and (max-width: 1023px) {
	.shop-detail__body {
		margin-top: 5rem ;
	}
}

@media screen and (max-width: 1023px) and (min-width: 561px) {
	.shop-gallery {
		width: 100%;
		margin-inline: auto;
	}
}

.shop-gallery__main {
	position: relative;
	aspect-ratio: 1;
	background-color: var(--color-shop-product-bg);
	background-image: none;
}

.shop-gallery__image {
	display: block;
	height: 100%;
	-o-object-fit: cover;
	object-fit: cover;
}

.shop-gallery__placeholder {
	position: absolute;
	inset: 0;
}

/* ------------------------------------------------------------
 shop-detail-hero
------------------------------------------------------------ */
.shop-gallery__thumbnails {
	display: flex;
	flex-wrap: wrap;
}

@media screen and (min-width: 1024px) {
	.shop-gallery__thumbnails {
		gap: 2.34rem ;
		margin-top: 3.4rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-gallery__thumbnails {
		gap: 1rem ;
		margin-top: 1rem ;
	}
}

.shop-gallery__thumbnail {
	position: relative;
	display: block;
	aspect-ratio: 1;
	border: 0;
	background-color: var(--color-shop-product-bg);
	background-image: none;
	padding: 0;
	transition: opacity var(--transition-hover);
}

@media (hover: hover) {
	.shop-gallery__thumbnail:hover:where(body[data-hover-enabled="true"] *, [data-hover-enabled="true"]) {
		opacity: var(--hover-opacity);
	}
}

@media screen and (min-width: 1024px) {
	.shop-gallery__thumbnail {
		width: 8rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-gallery__thumbnail {
		width: 4.8rem ;
	}
}

@media (prefers-reduced-motion: reduce) {
	.shop-gallery__thumbnail {
		transition: none;
	}
}

.shop-gallery__thumbnail img {
	display: block;
	height: 100%;
	-o-object-fit: cover;
	object-fit: cover;
}

.shop-gallery__thumbnail[aria-pressed='true'] {
	outline: none;
}

.shop-gallery__thumbnail:focus-visible {
	outline: 2px solid var(--color-brand-blue);
	outline-offset: 3px;
}

.shop-detail__title {
	overflow-wrap: anywhere;
	font-family: var(--font-sans-serif2);
	font-weight: 400;
}

@media screen and (min-width: 1024px) {
	.shop-detail__title {
		font-size: var(--font-size32);
		--line-height: 1.1875;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__title {
		font-size: var(--font-size26);
		--line-height: 1.30769;
	}
}

.shop-detail__pricing {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
}

@media screen and (min-width: 1024px) {
	.shop-detail__pricing {
		gap: 2.4rem ;
		margin-top: 3.8rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__pricing {
		gap: 1rem ;
		margin-top: 4.2rem ;
	}
}

.shop-detail__price {
	display: flex;
	align-items: center;
	white-space: nowrap;
}

@media screen and (min-width: 1024px) {
	.shop-detail__price {
		gap: 0.5rem ;
		font-family: var(--font-sans-serif2);
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__price {
		gap: 0.4rem ;
		font-family: var(--font-gothic);
		font-weight: 800;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__amount {
		font-size: var(--font-size21);
		--line-height: 1;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__amount {
		font-size: var(--font-size24);
		--line-height: 1;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__tax {
		font-size: var(--font-size11);
		--line-height: 1;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__tax {
		font-size: var(--font-size13);
		--line-height: 1;
	}
}

.shop-detail__shipping-included {
	font-weight: 700;
}

@media screen and (min-width: 1024px) {
	.shop-detail__shipping-included {
		font-size: var(--font-size14);
		--line-height: 1.42857;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__shipping-included {
		font-size: var(--font-size12);
		--line-height: 1.5;
	}
}

/* ------------------------------------------------------------
 shop-order
------------------------------------------------------------ */
.shop-order {
	display: flex;
	flex-wrap: wrap;
}

@media screen and (min-width: 1024px) {
	.shop-order {
		gap: 2rem ;
		margin-top: 5.4rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-order {
		align-items: center;
		gap: 2.6rem ;
		margin-top: 1.8rem ;
	}
}

.shop-order__quantity {
	display: flex;
	align-items: center;
	font-weight: 700;
}

@media screen and (min-width: 1024px) {
	.shop-order__quantity {
		gap: 1.3rem ;
		font-size: var(--font-size14);
		--line-height: 1;
	}
}

@media screen and (max-width: 1023px) {
	.shop-order__quantity {
		gap: 0.4rem ;
		font-size: var(--font-size12);
		--line-height: 1;
	}
}

.shop-order__quantity input {
	border-radius: 0.4rem ;
	border: var(--solid-shop-option);
	background-color: var(--color-white);
	background-image: none;
	text-align: center;
	color: var(--color-txt);
	padding: 0.2rem ;
}

@media screen and (min-width: 1024px) {
	.shop-order__quantity input {
		width: 2.4rem ;
		height: 2.2rem ;
		font-size: var(--font-size14);
	}
}

@media screen and (max-width: 1023px) {
	.shop-order__quantity input {
		width: 2.2rem ;
		height: 2.2rem ;
		font-size: var(--font-size12);
	}
}

.shop-order__quantity input:focus-visible {
	outline: 2px solid var(--color-brand-blue);
	outline-offset: 3px;
}

.shop-order__quantity input[aria-invalid='true'] {
	border-color: var(--color-line-brand-red);
}

@media screen and (min-width: 1024px) {
	.shop-order__cart {
		width: 100%;
	}
}

@media screen and (max-width: 1023px) {
	.shop-order__cart {
		flex: 1;
		min-width: 0;
	}
}

.shop-order__cart > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	border-radius: 8rem ;
	border: var(--solid-brand-red);
	background-color: var(--color-brand-red);
	background-image: none;
	color: var(--color-white);
	font-weight: 700;
	transition: background-color var(--transition-button), color var(--transition-button);
}

@media screen and (min-width: 1024px) {
	.shop-order__cart > a {
		min-height: 7.4rem ;
		border-radius: 1rem ;
		font-size: var(--font-size14);
		--line-height: 1.42857;
		padding: 1.6rem 4.2rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-order__cart > a {
		min-height: 4.2rem ;
		font-size: var(--font-size14);
		--line-height: 1.42857;
		padding: 0.8rem 2rem 0.8rem 2.4rem ;
	}
}

@media (prefers-reduced-motion: reduce) {
	.shop-order__cart > a {
		transition: none;
	}
}

.shop-order__cart > a[aria-disabled='true'] {
	cursor: default;
}

@media (hover: hover) {
	.shop-order__cart > a:hover:where(body[data-hover-enabled="true"] *, [data-hover-enabled="true"]) {
		background-color: var(--color-white);
		color: var(--color-brand-red);
	}
}

.shop-order__cart > a:focus-visible {
	outline: 2px solid var(--color-brand-blue);
	outline-offset: 4px;
}

@media screen and (min-width: 1024px) {
	.shop-order__cart .i-cart-shop {
		--width: 3.129rem ;
		display: none;
	}
}

@media screen and (max-width: 1023px) {
	.shop-order__cart .i-cart-shop {
		--width: 2.3rem ;
	}
}

.shop-order__error {
	width: 100%;
	color: var(--color-brand-red);
	font-size: var(--font-size13);
	--line-height: 1.53846;
}

@media screen and (max-width: 1023px) {
	.shop-order__error {
		order: 1;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__description {
		font-size: var(--font-size16);
		--line-height: 2;
		margin-top: 5.4rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__description {
		font-size: var(--font-size13);
		--line-height: 2;
		margin-top: 4rem ;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__shipping {
		font-size: var(--font-size14);
		--line-height: 1.85714;
		margin-top: 4.8rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__shipping {
		font-size: var(--font-size11);
		--line-height: 2;
		margin-top: 4.2rem ;
	}
}

.shop-detail__specifications {
	width: 100%;
	border: var(--solid-shop-table);
}

@media screen and (min-width: 1024px) {
	.shop-detail__specifications {
		font-size: var(--font-size14);
		--line-height: 1.57143;
		margin-top: 3.2rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__specifications {
		font-size: var(--font-size13);
		--line-height: 1.38462;
		margin-top: 3.8rem ;
	}
}

.shop-detail__specifications > div {
	display: grid;
}

@media screen and (min-width: 1024px) {
	.shop-detail__specifications > div {
		grid-template-columns: 28.5% minmax(0, 1fr);
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__specifications > div {
		grid-template-columns: 25% minmax(0, 1fr);
	}
}

.shop-detail__specifications > div + div {
	border-top: var(--solid-shop-table);
}

.shop-detail__specifications dt,
.shop-detail__specifications dd {
	display: flex;
	align-items: center;
	min-width: 0;
	overflow-wrap: anywhere;
}

@media screen and (min-width: 1024px) {
	.shop-detail__specifications dt,
	.shop-detail__specifications dd {
		min-height: 4.5rem ;
		padding-block: 1rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__specifications dt,
	.shop-detail__specifications dd {
		min-height: 3.6rem ;
		padding-block: 0.8rem ;
	}
}

.shop-detail__specifications dt .c-crop,
.shop-detail__specifications dd .c-crop {
	min-width: 0;
}

.shop-detail__specifications dt {
	border-right: var(--solid-shop-table);
	background-color: var(--color-shop-table-accent);
}

@media screen and (min-width: 1024px) {
	.shop-detail__specifications dt {
		padding-left: 3rem ;
		padding-right: 2rem ;
		font-weight: 700;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__specifications dt {
		padding-left: 0.9rem ;
		padding-right: 0.3rem ;
		font-weight: 500;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__specifications dd {
		padding-left: 2.6rem ;
		padding-right: 2rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__specifications dd {
		padding-left: 1rem ;
		padding-right: 0.6rem ;
	}
}

@media screen and (min-width: 1024px) {
	.shop-detail__legal {
		font-weight: 700;
		font-size: var(--font-size14);
		--line-height: 1;
		margin-top: 2.5rem ;
	}
}

@media screen and (max-width: 1023px) {
	.shop-detail__legal {
		font-weight: 500;
		font-size: var(--font-size11);
		--line-height: 1;
		margin-top: 2.2rem ;
	}
}

.shop-detail__legal > a,
.shop-detail__legal > span {
	display: inline-flex;
	align-items: center;
	gap: 0.8rem ;
}

.shop-detail__legal a {
	transition: opacity var(--transition-hover);
}

@media (hover: hover) {
	.shop-detail__legal a:hover:where(body[data-hover-enabled="true"] *, [data-hover-enabled="true"]) {
		opacity: var(--hover-opacity);
	}
}

/* 商品情報とコメントの間。PCは固定幅、SPは画面幅に合わせる。 */
.shop-detail-images {
	display: grid;
	width: 900px;
	max-width: 100%;
	margin-inline: auto;
	gap: 20px;
	margin-top: 12rem ;
}

@media screen and (max-width: 1023px) {
	.shop-detail-images {
		width: 100%;
		gap: 10px;
		margin-top: 5rem ;
	}
}

.shop-detail-images img {
	display: block;
	width: 100%;
	height: auto;
}
