/* CSS Document */

#main{
	&:has(#map){
		#related{
			margin-top: clamp(24px, calc(32 / 768 * 100dvw), 32px);
		}
	}
}

#detail{
	display: grid;
	overflow: hidden;
	background: #fafafa var(--pattern_04) center top / 100px auto;
	& header{
		display: contents;
	}
	&:before{
		content: "";
		grid-column: 1;
		grid-row: 1 / 3;
		background: white var(--object_01) no-repeat calc(100% + clamp(200px, calc(296 / 992 * 100dvw), 296px)) 16px / auto clamp(240px, calc(376 / 992 * 100dvw), 376px);
	}
	#title{
		grid-column: 1;
		grid-row: 1;
		margin-top: clamp(24px, calc(40 / 768 * 100dvw), 40px);
	}
	#photo{
		grid-column: 1;
		grid-row: 2;
		margin-block: 32px clamp(48px, calc(64 / 768 * 100dvw), 64px);
	}
	&:not(:has(#photo)){
		#title{
			margin-bottom: clamp(48px, calc(64 / 768 * 100dvw), 64px);
		}
	}
	#link,
	#text,
	#tag,
	#basic{
		justify-self: center;
		width: min(var(--wrap-fit), 960px);
		margin-top: clamp(48px, calc(64 / 768 * 100dvw), 64px);
	}
	#tag,
	#basic,
	#map{
		order: 1;
	}
	#topics{
		margin-top: clamp(80px, calc(104 / 768 * 100dvw), 104px);
	}
	#map{
		margin-top: clamp(48px, calc(64 / 768 * 100dvw), 64px);
		background: white;
	}
	&:has(#topics){
		#tag{
			margin-top: clamp(80px, calc(104 / 768 * 100dvw), 104px);
		}
	}
	&:not(:has(#map)){
		#basic{
			margin-bottom: clamp(48px, calc(64 / 768 * 100dvw), 64px);
		}
	}
}

#title{
	display: grid;
	grid-template-columns: var(--wrap);
	justify-content: center;
	& h2{
		display: grid;
		grid-template-columns: auto 1fr;
		align-items: baseline;
		column-gap: 0.5em;
		font-weight: 600;
		font-size: clamp(24px, calc(40 / 768 * 100dvw), 40px);
		font-family: var(--font-min);
		letter-spacing: 0.05em;
		&:before{
			content: "";
			aspect-ratio: 1;
			width: 1em;
			background: var(--color-theme);
			transform: translateY(0.1em);
			-webkit-mask: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14"><path d="M14,7.69c-3.62,1.25-5.06,2.69-6.31,6.31,3.33-.33,5.98-2.98,6.31-6.31Z"/><path d="M14,6.31c-.33-3.33-2.98-5.98-6.31-6.31,1.25,3.62,2.69,5.06,6.31,6.31Z"/><path d="M0,7.69c.32,3.33,2.98,5.98,6.31,6.31-1.25-3.62-2.69-5.06-6.31-6.31Z"/><path d="M6.31,0C2.98.32.32,2.98,0,6.31,3.62,5.06,5.06,3.62,6.31,0Z"/></svg>') no-repeat center / contain;
		}
		&:after{
			content: attr(data-ruby);
			grid-column: 1 / 3;
			grid-row: 1;
			margin-left: 5.2em;
			font-size: 0.3em;
			letter-spacing: 0.05em;
		}
	}
	& p{
		font-weight: 500;
		font-size: clamp(18px, calc(20 / 768 * 100dvw), 20px);
		letter-spacing: 0.05em;
	}
}

#photo{
	overflow: hidden;
	&:has(dl:only-child){
		display: grid;
		grid-template-columns: min(var(--wrap-fit), 720px);
		justify-content: center;
	}
	&:not(:has(#photoSlide)){
		display: grid;
		grid-template-columns: min(var(--wrap-fit), 720px);
		justify-content: center;
		& dl{
			grid-column: 1;
			grid-row: 1;
			&:nth-child(n+2){
				display: none;
			}
		}
	}
	&:has(#photoSlide){
		display: grid;
		grid-template-columns: min(calc(100% - clamp(16px, calc(48 / 768 * 100dvw), 48px)), 1250px);
		justify-content: center;
		grid-row-gap: clamp(16px, calc(48 / 768 * 100dvw), 48px);
		&:not(:has(.slick-slider)){
			grid-template-columns: min(var(--wrap-fit), 720px);
			& dl{
				grid-column: 1;
				grid-row: 1;
				&:nth-child(n+2){
					display: none;
				}
			}
		}
	}
	& dl{
		display: grid;
		align-content: start;
		grid-row-gap: 8px;
	}
	& dt{
		order: 1;
		font-weight: 500;
		font-size: clamp(14px, calc(18 / 768 * 100dvw), 18px);
		letter-spacing: 0.05em;
		text-align: center;
		&:empty{
			display: none;
		}
	}
	& a{
		display: block;
	}
	& img{
		aspect-ratio: 4 / 3;
		object-fit: contain;
		background: snow;
		border-radius: 0 0 clamp(24px, calc(32 / 768 * 100dvw), 32px) 0;
	}
	.slick-slider:not(.slick-initialized){
		opacity: 0;
		transition: opacity 0.2s ease-out;
	}
}

#photoSlide{
	display: contents;
	.slick-list{
		overflow: visible;
	}
	.slick-slide{
		width: min(var(--wrap-fit), 720px);
		margin-inline: clamp(8px, calc(20 / 768 * 100dvw), 20px);
		&:not(.slick-current) a{
			pointer-events: none;
		}
	}
	.slick-arrow{
		grid-column: 1;
		grid-row: 2;
		align-self: center;
		z-index: 1;
		&.slick-next{
			justify-self: end;
		}
	}
}

#photoSlideNav{
	grid-column: 1;
	grid-row: 2;
	& dl{
		cursor: pointer;
	}
	& dt{
		display: none;
	}
	& a{
		pointer-events: none;
	}
	& img{
		aspect-ratio: 3 / 2;
		object-fit: cover;
		border-radius: unset;
	}
	&.slick-slider{
		display: grid;
		grid-template-columns: auto 1fr auto;
		align-items: center;
		.slick-list{
			grid-column: 2;
		}
		&:not(:has(.slick-arrow)){
			.slick-list{
				margin-inline: calc(clamp(32px, calc(48 / 768 * 100dvw), 48px) + clamp(8px, calc(16 / 768 * 100dvw), 16px));
			}
			.slick-track{
				transform: unset !important;
			}
		}
	}
	.slick-list{
		margin-inline: clamp(8px, calc(16 / 768 * 100dvw), 16px);
	}
	.slick-slide{
		margin-inline: 8px;
		&.slick-current{
			outline: 2px solid var(--color-theme);
			outline-offset: -2px;
		}
	}
	.slick-arrow{
		visibility: hidden;
	}
}

#link{
	font-weight: 700;
	font-family: "Zen Kaku Gothic New", var(--font);
	& ul{
		display: flex;
		flex-wrap: wrap;
		justify-content: center;
		grid-gap: 16px clamp(24px, calc(40 / 768 * 100dvw), 40px);
	}
	& li{
		display: contents;
	}
	& a,
	& button{
		display: grid;
		grid-template-columns: 1fr auto;
		align-items: center;
		min-width: min(100%, 260px);
		min-height: 56px;
		padding: 4px 24px;
		background: white;
		border: 1px solid #365383;
		border-radius: 28px;
		color: var(--color-theme);
		text-align: center;
		text-decoration: none;
		&:after{
			content: "";
			transform: translateX(8px);
		}
		&#openSlide{
			cursor: pointer;
			&:after{
				aspect-ratio: 1;
				width: 20px;
				background: var(--color-theme) url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" style="fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5px;"><line x1="4.87" y1="10" x2="11.87" y2="10"/><polyline points="11.87 6.46 15.4 10 11.87 13.54"/></svg>') no-repeat center / contain;
				border-radius: 100%;
			}
		}
		&[data-fav-id]{
			border-color: currentColor;
			color: #b09934;
			opacity: 0;
			transition: opacity 0.2s ease-out;
			&:after{
				content: "\2605";
				color: #dac793;
				font-size: 20px;
				line-height: 1;
			}
			&[data-fav-status]{
				opacity: 1;
			}
			&[data-fav-status="on"]{
				background: #b09934;
				color: white;
				&:after{
					color: inherit;
				}
			}
			&[data-fav-status="loading"]{
				color: silver;
				pointer-events: none;
				&:after{
					background: currentColor;
					color: inherit;
					-webkit-mask: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="fill: none; stroke: black; stroke-width: 2.4px; stroke-linecap: round; stroke-linejoin: round;"><circle cx="12" cy="12" r="10" stroke-dasharray="48"><animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="1s" repeatCount="indefinite" /></circle></svg>') no-repeat center / contain;
				}
			}
		}
	}
}

#text{
	letter-spacing: 0.03em;
}

#tag{
	& dl{
		display: grid;
	}
	& dt{
		display: grid;
		grid-template-columns: auto 1fr;
		align-items: baseline;
		column-gap: 8px;
		color: var(--color-theme);
		font-weight: 700;
		font-family: "Zen Kaku Gothic New", var(--font);
		letter-spacing: 0.05em;
		&:before{
			content: "";
			width: 4px;
			height: 1em;
			background: #a1cbed;
			transform: translateY(0.1em);
		}
	}
	& ul{
		display: flex;
		flex-wrap: wrap;
		grid-gap: 16px 8px;
	}
	& li{
		display: grid;
	}
	& a{
		display: grid;
		align-items: center;
		min-height: 32px;
		padding: 0 16px;
		background: white;
		border: 1px solid #8e8e8e;
		border-radius: 16px;
		color: inherit;
		font-weight: 500;
		letter-spacing: 0.05em;
		text-align: center;
		text-decoration: none;
	}
	@media (max-width: 767.98px) {
		& dl{
			grid-row-gap: 8px;
		}
		& dd+dt{
			margin-top: 16px;
		}
	}
	@media (min-width: 768px) {
		& dl{
			grid-template-columns: auto 1fr;
			grid-gap: 16px;
		}
		& dt{
			width: 15em;
			transform: translateY(0.25em);
		}
	}
}

#basic{
	display: grid;
	& h3{
		justify-self: center;
		display: grid;
		grid-template-columns: auto 1fr;
		align-items: baseline;
		column-gap: 8px;
		color: var(--color-theme);
		font-weight: 700;
		font-size: clamp(20px, calc(24 / 768 * 100dvw), 24px);
		font-family: "Zen Kaku Gothic New", var(--font);
		letter-spacing: 0.05em;
		text-align: center;
		&:before,
		&:after{
			content: "";
			grid-column: 1;
			grid-row: 1;
			aspect-ratio: 1;
			width: 1.25em;
			border-radius: 100%;
			transform: translateY(0.25em);
		}
		&:before{
			background: #a1cbed;
		}
		&:after{
			background: currentColor;
			-webkit-mask: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M15,9.98c-.46,0-.86-.17-1.2-.5-.34-.34-.5-.74-.5-1.2s.17-.86.5-1.2.74-.5,1.2-.5.86.17,1.2.5.5.74.5,1.2-.17.86-.5,1.2c-.34.34-.74.5-1.2.5ZM13.68,23.42v-11.54h2.69v11.54h-2.69Z"/></svg>') no-repeat center / contain;
		}
	}
	& h3+div{
		margin-top: 16px;
	}
	& dl{
		display: grid;
		background: white;
		border: 2px solid var(--color-theme);
		border-radius: 8px;
	}
	& dt,
	& dd{
		padding: 16px;
		font-weight: 600;
		letter-spacing: 0.05em;
	}
	& dt{
		background: var(--color-theme);
		color: white;
	}
	& ul{
		display: grid;
		grid-gap: 4px;
	}
	@media (min-width: 768px) {
		& dl{
			grid-template-columns: auto 1fr;
		}
		& dt{
			width: 15em;
			&:nth-of-type(n+2){
				border-top: 1px solid #809bba;
			}
		}
		& dd{
			&:nth-of-type(n+2){
				border-top: 1px solid #8e8e8e;
			}
		}
	}
}

#map{
	display: grid;
	& iframe{
		aspect-ratio: 3 / 2;
		width: 100%;
		max-height: 640px;
		background: snow;
	}
	#mapLink{
		display: flex;
		justify-content: center;
		margin-top: clamp(24px, calc(32 / 768 * 100dvw), 32px);
		& a{
			display: grid;
			grid-template-columns: 1fr 8px;
			align-items: center;
			column-gap: 8px;
			min-width: min(100%, 260px);
			min-height: 56px;
			padding: 4px 24px;
			background: white;
			border: 1px solid #365383;
			border-radius: 28px;
			color: var(--color-theme);
			text-align: center;
			text-decoration: none;
			&:after{
				content: "";
				aspect-ratio: 1;
				width: 20px;
				background: var(--color-theme) url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" style="fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5px;"><line x1="4.87" y1="10" x2="11.87" y2="10"/><polyline points="11.87 6.46 15.4 10 11.87 13.54"/></svg>') no-repeat center / contain;
				border-radius: 100%;
			}
		}
	}
}

#topics{
	display: grid;
	grid-template-columns: min(var(--wrap-fit), 960px);
	justify-content: center;
	overflow: hidden;
	& section{
		display: grid;
		&:nth-child(n+2){
			.topicsTitle{
				margin-top: clamp(80px, calc(104 / 768 * 100dvw), 104px);
			}
		}
	}
	.topicsTitle,
	.topicsPhoto{
		order: -2;
	}
	.topicsMovie{
		order: -1;
	}
	.topicsTitle{
		margin-bottom: 24px;
	}
	.topicsDocument,
	.topicsLink{
		margin-top: clamp(32px, calc(48 / 768 * 100dvw), 48px);
	}
	.topicsPhoto,
	.topicsMovie{
		margin-bottom: clamp(24px, calc(32 / 768 * 100dvw), 32px);
	}
}

#related,
#recommend{
	display: grid;
	grid-template-columns: min(var(--wrap-fit), 960px);
	justify-content: center;
	overflow: hidden;
	&:not(:has(section)){
		display: none;
	}
	&:last-child{
		margin-bottom: clamp(80px, calc(104 / 768 * 100dvw), 104px);
	}
	& h2{
		display: none;
	}
	& section{
		margin-top: clamp(32px, calc(48 / 768 * 100dvw), 48px);
	}
	& h3{
		display: grid;
		align-items: center;
		min-height: 56px;
		padding: 8px 24px;
		font-weight: 700;
		font-size: clamp(18px, calc(20 / 768 * 100dvw), 20px);
		font-family: "Zen Kaku Gothic New", var(--font);
		letter-spacing: 0.05em;
		word-break: keep-all;
		overflow-wrap: anywhere;
		background: #e3effa url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none" viewBox="0 0 15 52"><polygon points="15 0 0 0 7.5 26 15 0" style="fill: %23a1cbed;"/><polygon points="0 52 15 52 7.5 26 0 52" style="fill: %23a1cbed;"/><polygon points="0 0 0 52 7.5 26 0 0" style="fill: %23003775;"/></svg>') no-repeat left / 15px 100%;
	}
	& h3+div{
		margin-top: 24px;
	}
	& dl{
		position: relative;
		display: grid;
		grid-row-gap: 8px;
		&:not(:has(img)):before{
			content: "";
			aspect-ratio: 3 / 2;
			background: var(--dummy);
			border-radius: 0 0 clamp(24px, calc(32 / 768 * 100dvw), 32px) 0;
		}
	}
	& dt{
		order: 1;
		font-weight: 600;
		letter-spacing: 0.05em;
		&:empty{
			display: none;
		}
	}
	& dd{
		display: contents;
		& img{
			aspect-ratio: 4 / 3;
			object-fit: cover;
			border-radius: 0 0 clamp(24px, calc(32 / 768 * 100dvw), 32px) 0;
		}
		& a{
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
			font-size: 0;
		}
	}
}

.topicsTitle{
	grid-row: 1;
	position: relative;
	padding-bottom: 8px;
	font-weight: 700;
	font-size: clamp(20px, calc(28 / 768 * 100dvw), 28px);
	letter-spacing: 0.05em;
	&:after{
		content: "";
		width: 100%;
		position: absolute;
		left: 0;
		bottom: 0;
		width: 100%;
		height: 2px;
		background: linear-gradient(90deg, #a1cbed 50%, currentColor 50%);
	}
}

.topicsText{
	letter-spacing: 0.03em;
}

.topicsDocument,
.topicsLink{
	display: grid;
	& h4{
		display: grid;
		grid-template-columns: auto 1fr;
		align-items: baseline;
		column-gap: 8px;
		color: var(--color-theme);
		font-weight: 700;
		font-size: clamp(16px, calc(18 / 768 * 100dvw), 18px);
		font-family: "Zen Kaku Gothic New", var(--font);
		letter-spacing: 0.05em;
		&:before{
			content: "";
			width: 4px;
			height: 1em;
			background: #a1cbed;
			transform: translateY(0.1em);
		}
	}
	& h4+div{
		justify-self: center;
		width: min(100%, 840px);
		margin-top: 16px;
	}
	& ul{
		display: flex;
		flex-wrap: wrap;
		grid-gap: 16px;
	}
	& li{
		display: contents;
	}
	& a{
		display: grid;
		grid-template-columns: 1fr 8px;
		align-items: center;
		column-gap: 8px;
		min-width: min(100%, 200px);
		min-height: 56px;
		padding: 4px 24px;
		background: white;
		border: 1px solid #365383;
		border-radius: 28px;
		color: var(--color-theme);
		font-weight: 600;
		text-align: center;
		text-decoration: none;
		&:after{
			content: "";
			aspect-ratio: 1;
			width: 20px;
		}
	}
}

.topicsDocument{
	& a{
		&:after{
			background: var(--color-theme);
			-webkit-mask: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" style="fill: none; stroke: black; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5px;"><line x1="10.23" y1="1.39" x2="10.23" y2="8.39"/><polyline points="13.76 9.39 10.23 12.92 6.69 9.39"/><line x1="3.23" y1="15.91" x2="17.23" y2="15.91"/></svg>') no-repeat center / contain;
		}
	}
}

.topicsLink{
	& a{
		&:after{
			background: var(--color-theme) url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" style="fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5px;"><line x1="4.87" y1="10" x2="11.87" y2="10"/><polyline points="11.87 6.46 15.4 10 11.87 13.54"/></svg>') no-repeat center / contain;
			border-radius: 100%;
		}
	}
}

.topicsPhoto{
	& dl{
		display: grid;
		grid-row-gap: 8px;
	}
	& dt{
		order: 1;
		font-weight: 500;
		font-size: clamp(14px, calc(18 / 768 * 100dvw), 18px);
		letter-spacing: 0.05em;
		text-align: center;
		&:empty{
			display: none;
		}
	}
	& img{
		aspect-ratio: 4 / 3;
		object-fit: contain;
	}
	&:not(.slick-slider){
		display: grid;
		& dl{
			grid-column: 1;
			grid-row: 1;
			&:nth-child(n+2){
				display: none;
			}
		}
	}
	&.slick-slider{
		display: grid;
		grid-template-columns: 0 auto 0;
		&:before{
			content: "";
			grid-column: 2;
			grid-row: 1;
			aspect-ratio: 4 / 3;
			background: red;
			opacity: 0.25;
			pointer-events: none;
			visibility: hidden;
			z-index: 1;
		}
		.slick-list{
			grid-column: 2;
			grid-row: 1 / 3;
		}
		.slick-arrow{
			justify-self: center;
			align-self: center;
			z-index: 1;
		}
		.slick-dots{
			grid-column: 2;
			margin-top: clamp(24px, calc(40 / 768 * 100dvw), 40px);
		}
	}
}

.topicsMovie{
	display: grid;
	grid-row-gap: clamp(24px, calc(32 / 768 * 100dvw), 32px);
	& iframe{
		aspect-ratio: 16 / 9;
		width: 100%;
		height: auto;
		&.short{
			aspect-ratio: 9 / 16;
			max-width: min(100%, 328px);
		}
	}
}

.slide{
	&:not(.slick-slider){
		display: grid;
		grid-template-columns: 1fr;
		justify-content: center;
		column-gap: clamp(16px, calc(24 / 768 * 100dvw), 24px);
		@media (min-width: 576px) {
			grid-template-columns: repeat(2, 1fr);
		}
		@media (min-width: 768px) {
			grid-template-columns: repeat(3, 1fr);
		}
		@media (min-width: 992px) {
			grid-template-columns: repeat(4, 1fr);
		}
		& dl{
			grid-column: 1;
			grid-row: 1;
			&:nth-child(n+2){
				display: none;
			}
		}
	}
	&.slick-slider{
		display: grid;
		grid-template-columns: 1fr auto 1fr;
		grid-gap: 24px;
		.slick-list{
			grid-column: 1 / 4;
			grid-row: 1;
			margin-inline: calc(0px - clamp(8px, calc(12 / 768 * 100dvw), 12px));
			@media (max-width: 575.98px) {
				overflow: visible;
			}
		}
		.slick-slide{
			margin-inline: clamp(8px, calc(12 / 768 * 100dvw), 12px);
		}
		.slick-arrow{
			align-self: center;
			width: 32px;
			&.slick-prev{
				justify-self: end;
			}
		}
		.slick-dots{
			grid-column: 2;
			grid-row: 2;
		}
	}
}

.slick-dots{
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	grid-gap: 16px;
	& li{
		aspect-ratio: 1;
		width: 10px;
		background: white;
		border: 1px solid var(--color-theme);
		border-radius: 100%;
		overflow: hidden;
		&.slick-active{
			background: var(--color-theme);
		}
	}
	& button{
		opacity: 0;
	}
}

.slick-arrow{
	all: unset;
	box-sizing: border-box;
	cursor: pointer;
	position: relative;
	aspect-ratio: 1;
	width: clamp(32px, calc(48 / 768 * 100dvw), 48px);
	background: color-mix(in srgb, transparent, var(--color-theme) 90%);
	border-radius: 100%;
	color: white;
	font-size: 0;
	&:before{
		content: "";
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background: currentColor;
		-webkit-mask: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" style="fill: none; stroke: black; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5px;"><polyline points="20.5 31.5 29.5 24 20.5 16.5" /></svg>') no-repeat center / cover;
	}
	&.slick-prev:before{
		transform: scale(-1, 1);
	}
}





