@charset 'utf-8';

@import url('https://fonts.googleapis.com/css?family=Montserrat:200,300,400,600,700,800,900');
@import url('https://fonts.googleapis.com/css?family=Inter:300,400,600,800');
@import url('https://fonts.googleapis.com/css?family=Noto+Sans+JP:100,400,700');


html {
	background: #0a0d0c;
	overflow-x: hidden;
	font-size: 62.5%;
	transition: 1s;
	-webkit-text-size-adjust: 100%;
		-ms-text-size-adjust: 100%
}
html.active {
	background: #e6e6e6
}

body {
	margin: auto;
	color: #333;
	font: 1.2rem 'Inter', Noto Sans JP, Arial, Meiryo, sans-serif;
	font-weight: 400;
	letter-spacing: .08em;
	-webkit-font-smoothing: antialiased
}

h1, h2, h3, h4, h5, h6 {
	font-family: 'Inter', sans-serif;
	font-weight: 700;
	margin: 6rem 0 0
}
h1 { font-size: 2.4rem }
h2 { font-size: 2.2rem }
h3 { font-size: 1.6rem }
h4 { font-size: 1.4rem }
h5 { font-size: 1.2rem }

p {
	line-height: 2;
	margin: 2em 0
}

img {
	border-width: 0;
	height: auto;
	max-width: 100%;
	object-fit: cover;
	vertical-align: middle;
	-ms-interpolation-mode: bicubic
}

a,
a:hover {
	color: #333;
	text-decoration: none
}

b {
	font-size: 1.2em;
	font-weight: 800
}

cite {
	display: block;
	text-align: right;
	font-size: .9em
}

input,
textarea {
	border: 0;
	background: #f1f1f1;
	box-sizing: border-box;
	color: #333;
	width: 100%;
	margin: 1em auto;
	padding: 1.4em;
	font-size: 1.4em
}
input[type='submit'] {
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none
}
input:focus,
textarea:focus {
	background: #e6e6e6
}

* ::selection {
    background: #333;
    color: #e6e6e6;
    -webkit-text-fill-color: #e6e6e6
}

article,
aside,
details,
figcaption,
picture,
footer,
header,
hgroup,
main,
menu,
nav,
section {
	display: block;
	margin: 0;
}

blockquote {
	background-color: #f7f7f7;
	border: 1px solid #e5e5e5;
	border-width: 1px 0;
	padding-top: 8% !important;
	padding-bottom: 8% !important;
	font-style: normal
}
blockquote > *{
	margin-top: 2em !important;
}

/* Universal Class
------------------------------ */
.tab {
	font-size: .8em;
	font-weight: 600;
	line-height: 2em;
	overflow: hidden;
	text-transform: uppercase;
	margin: 1em 13px 3em 0;
	padding: 0 0 0 10px;
	position: relative;
	z-index: 1
}

/* Text */
.headline {
	position: relative;
	z-index: 1;
	font-family: 'Montserrat', sans-serif;
	font-weight: 800;
	text-transform: uppercase
}
.headline i {
	background-image: url(/image/waterdrop_01.png);
	background-position: 0% 50%;
    background-repeat: no-repeat;
    background-size: contain;
    display: inline-block;
	height: 190px;
	left: 0;
	position: absolute;
	top: -240%;
	width: 140px;
	z-index: -1
}
.sub {
	opacity: .8
}
.thin {
	font-weight: 300
}
.uppercase {
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase
}
.spacing {
	letter-spacing: normal
}
p span.right {
	text-align: right;
}

.disclaimer {
	color: #666;
	font-size: .7em;
	margin: 0 0 2em
}
.disclaimer dt {
	font-weight: bold;
	margin: 2em 0 .5em
}
.disclaimer dd {
	padding: 0 0 0 1.2em;
	position: relative;
	margin: 0 0 .4em
}
.disclaimer dd::before {
	content: "※";
	left: 0;
	position: absolute
}

/* Link */
[class^="link-"] {
	color: #36c;
	display: inline-block;
	padding: 0 22px 0 0;
	position: relative;
	text-decoration: none;
	-webkit-text-fill-color: #36c
}
[class^="link-"]:hover {
	text-decoration: underline
}
[class^="link-"]::before,
[class^="link-"]::after {
	border: solid 1px #36c;
	content: '';
	position: absolute;
	top: 50%;
	transform: translateX(-50%) translateY(-50%);
}
.link-arrow::before {
	border-radius: 100%;
	height: 18px;
	right: -10px;
	width: 18px
}
.link-arrow::after {
	border-width: 1px 1px 0 0;
	height: 5px;
	margin: -3px 0 0;
	right: 8px;
	transform: rotate(45deg);
	width: 5px
}
.link-photo {
	padding-right: 28px
}
.link-photo::before {
	bottom: 0;
	border-radius: 2px;
	height: 18px;
	right: -12px;
	margin: 0 0 -6px;
	top: inherit;
	width: 24px
}
.link-photo::after {
	bottom: 0;
	content: '◎';
	font-size: 14px;
	height: 1px;
	line-height: 24px;
	margin: 0 0 22px;
	right: 15px;
	top: inherit;
	width: 3px
}

.movie {
	position: relative;
	height: 0;
	padding: 30px 0 56.25%;
	overflow: hidden;
}
.movie iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%
}

/* Layout */
[class^="grid-"] {
	display: grid
}
[class^="grid-col-"] {
	gap: 0 5%
}
[class^="grid-row-"] {
	gap: 5% 0
}
[class^="grid-"] figure + h2,
[class^="grid-"] figure + h3 {
	margin-top: 0;
}

/* Image */
picture {
	display: grid;
	overflow: hidden;
	position: relative;
	text-align: center
}
picture.left {
	margin: 0 0 0 -14%
}
picture.right {
	margin: 0 -14% 0 0
}
picture.bright::before,
picture.dark::before {
    background: rgba(230,230,230,.1);
    content: "";
	left: 0;
	height: 100%;
    position: absolute;
	top: 0;
	width: 100%;
	z-index: 1
}
picture.dark::before {
	background: rgba(0,0,0,.2)
}

figure {
	margin: 0;
	text-align: center;
	transition: 4s
}
figure.merge {
	position: relative;
	text-align: left
}
figure.merge img:nth-child(n+2) {
	position: absolute;
	left: 0;
	top: 0
}
figure.right {
	margin-bottom: 2em;
	transform: translateX(16%)
}
figure.left {
	margin-bottom: 2em;
	transform: translateX(-16%)
}
figure.fade {
	opacity: 0
}
figure.scale {
	transform: scale(1.1)
}
figure.up {
	transform: translateY(16%)
}
figure.down {
	transform: translateY(-16%)
}
figure.active {
	opacity: 1;
	transform: scale(1) translateX(0) translateY(0)
}
figure.gallery {
	display: grid;
	gap: 2px;
	margin: 2em -10%
}
figure.gallery .grid-col-2 {
	display: grid;
	gap: 2px;
	grid-template-columns: repeat(2, 1fr)
}
figure.gallery .grid-col-2 img {
	box-sizing: border-box;
	display: block;
	height: auto;
	width: 100%
}
figure.gallery .grid-col-2.tiled {
	grid-template-areas:
		"large large small-1"
		"large large small-2";
	grid-template-columns: repeat(3, 1fr)
}
figure.gallery .grid-col-2.tiled a:nth-child(1) {
	grid-area: large
}
figure.gallery .grid-col-2.tiled a:nth-child(2) {
	grid-area: small-1
}
figure.gallery .grid-col-2.tiled a:nth-child(3) {
	grid-area: small-2
}

/* Loupe */
#loupe {
	background: rgba(255,255,255,0.85);
	cursor: pointer;
	height: 100%;
	left: 0;
	text-align: center;
	position: fixed;
	top: 0;
	width: 100%;
	z-index: 10000
}
#loupe::after,
#loupe::before {
	background-color: #000;
	content: '';
	height: 1px;
	position: absolute;
	right: 20px;
	top: 40px;
	transform: rotate(45deg);
	width: 34px;
	z-index: 1
}
#loupe::after {
	transform: rotate(-45deg);
}
#loupe img {
	display: none; /* ここを明示的に追加 */
	left: 50%;
	max-height: 90%;
	max-width: 90%;
	position: absolute;
	top: 50%;
	transform: translate(-50%, -50%);
}
#loupe p {
	color: #333;
	font-size: 14px;
	left: 50%;
	position: absolute;
	top: 50%;
	transform: translateX(-50%)
}

/* Animation */
@keyframes fede {
	0% { opacity: 0 }
   50% { opacity: 0 }
  100% { opacity: 1 }
}
@keyframes fedeUp {
	0% { opacity: 0; transform: translateY(10px) }
   50% { opacity: 0; transform: translateY(10px) }
  100% { opacity: 1; transform: translateY(0) }
}

/* Parallax */
[data-parallax] {
	transition: transform 0.1s ease-out;
	will-change: transform
}

/* Carousel */
.carousel {
	backface-visibility: hidden;
	margin: 0 -10%;
	overflow-x: scroll;
	scrollbar-width: none;
	position: relative;
	transform: translateZ(0);
	white-space: nowrap;
	will-change: scroll-position;
	-webkit-overflow-scrolling: touch
}
.carousel::-webkit-scrollbar {
	display: none
}
.carousel ul {
	display: flex;
	list-style: none;
	margin: 0;
	padding: 0;
	width: max-content
}
.carousel li {
	flex: 0 0 auto;
	margin: 0 .1%;
	text-align: center;
	width: 100px
}

/* Slider */
.slider {
	overflow: hidden;
	text-align: center
}
.view div {
	float: left;
}
.thumbnail {
	clear: both;
	max-width: 600px;
	margin: auto;
	padding-left: 0;
	list-style-type: none
}
.thumbnail li {
	cursor: pointer;
	display: table-cell;
	opacity: .5
}
.thumbnail .active {
	opacity: 1
}

/* Accordion */
@media only screen and (max-width: 1024px) {
	.accordion {
		border: 1px solid #333;
		border-width: 1px 0;
	}
	.accordion h4 {
		cursor: pointer;
		font-family: 'Inter', sans-serif;
		font-size: 0.8em;
		font-weight: 800;
		margin: 0;
		padding: 2rem 0;
		position: relative;
	}
	.accordion h4::after {
		content: "+";
		font-weight: bold;
		position: absolute;
		right: 0;
		transition: transform 0.3s ease;
	}
	.accordion.open h4::after {
		content: "−";
	}
	.accordion > div {
		overflow: hidden;
		max-height: 0;
		transition: max-height 0.6s ease;
	}
	.accordion > div p {
		margin: 2rem 0;
	}
}

/* Header Spine
------------------------------ */
#logo {
	animation: fede 3s;
	left: 2%;
	position: fixed;
	top: 3rem;
	transition: 1s;
	width: 16px;
	z-index: 3
}

#menu {
	animation: fede 3s;
	cursor: pointer;
	height: 56px;
	position: fixed;
	right: 0;
	top: 1rem;
	transition: 1s;
	width: 68px;
	z-index: 3
}
#menu span,
#menu span::before,
#menu span::after {
	content: "";
	background: #e6e6e6;
	display: block;
	height: 1px;
    position: relative;
	top: 28px;
	transition: .3s .3s, transform .3s;
    width: 68px
}
#menu span::before {
	top: -6px
}
#menu span::after {
	top: 5px
}
.open #menu span {
	transition: .1s;
	background-color: transparent
}
.open #menu span::before {
	top: 0;
	transform: rotate(12deg)
}
.open #menu span::after {
	top: -1px;
	transform: rotate(-12deg)
}

#scroller {
	animation: fedeUp 3s;
	bottom: 0;
	color: #e6e6e6;
	cursor: pointer;
	display: flex;
	font-size: .67em;
	font-weight: 700;
	left: 2%;
	letter-spacing: .2em;
	line-height: 4px;
	margin: 0 -9px;
	padding: 0 20px 210px 10px;
	position: fixed;
	text-decoration: none;
	text-transform: uppercase;
	transition: 1s;
	writing-mode: vertical-lr;
	z-index: 10
}
#scroller:hover {
	color: #e6e6e6;
}
#scroller::before,
#scroller::after {
	bottom: 0;
	content: "";
	height: 205px;
	left: 9px;
	position: absolute;
	width: 1px
}
#scroller::before {
	background: #fff2
}
#scroller::after {
	animation: scrollDown 4s cubic-bezier(1, 0, 0, 1) infinite;
	background: #fff6
}
	
@keyframes scrollDown {
	  0% { transform: scale(1, 0); transform-origin: 0 0 }
	 49% { transform: scale(1, 1); transform-origin: 0 0 }
	 50% { transform: scale(1, 1); transform-origin: 0 100% }
	100% { transform: scale(1, 0); transform-origin: 0 100% }
}
.scroll #scroller {
	bottom: 1em;
	padding: 210px 20px 0 10px
}
.scroll #scroller::before,
.scroll #scroller::after {
	bottom: 50px
}
.scroll #scroller::after {
	animation: scrollTop 4s cubic-bezier(1, 0, 0, 1) infinite
}
@keyframes scrollTop {
	  0% { transform: scale(1, 0); transform-origin: 0 100% }
	 49% { transform: scale(1, 1); transform-origin: 0 100% }
	 50% { transform: scale(1, 1); transform-origin: 0 0 }
	100% { transform: scale(1, 0); transform-origin: 0 0 }
}

#symbol {
	animation: fede 3s;
	bottom: 1rem;
	opacity: .8;
	position: fixed;
	right: 2%;
	transition: 1s;
	width: 50px;
	z-index: 3
}

header nav {
	box-sizing: border-box;
	color: #e6e6e6;
	height: 100%;
	padding: 12em 6%;
	position: fixed;
	right: -100%;
	top: 0;
	transition: 1s;
	width: 100%;
	z-index: 2
}
header nav::before {
	background: #2a3b4d;
	content: "";
	height: 100%;
	opacity: .8;
	position: fixed;
	right: -100%;
	top: 0;
	transition: 1s;
	width: 100%;
	z-index: -1;
}
.open header nav,
.open header nav::before {
	right: 0;
}
header nav ul {
	animation: fede 3s;
	bottom: 3em;
	box-sizing: border-box;
	height: auto;
    list-style: none;
	margin: 8em 0 0;
	mix-blend-mode: difference;
	padding: 3em 0;
	position: absolute;
	right: 4%;
	top: 3em;
	text-align: right;
    text-transform: uppercase
}
header nav li a {
	color: #e6e6e6;
	cursor: pointer;
	display: inline-block;
	padding: .7em 0;
	position: relative
}
header nav li a:hover {
	color: #e6e6e6
}
header nav li a::after {
	background: #e6e6e6;
	bottom: 8px;
	content: '';
	height: 1px;
	left: 0;
	position: absolute;
	transform: scale(0, 1);
	transform-origin: right top;
	transition: transform .3s;
	width: 100%
}
header nav li a:hover::after {
	transform: scale(1, 1);
	transform-origin: left top
}

.scroll #logo,
.scroll #menu,
.scroll #scroller,
.scroll #symbol,
.scroll header nav {
	mix-blend-mode: difference
}

/* Cover
------------------------------ */
#cover,
#cover::before,
#cover::after {
	content: "";
	font-size: 2.4em;
	height: 100%;
	left: 0;
	overflow: hidden;
	position: fixed;
	top: 0;
	width: 100%
}
#cover::before {
	animation: coverBefore 6s;
	background: rgba(0,0,0,.6);
	position: absolute;
	transition: .5s;
	z-index: -2
}
@keyframes coverBefore {
	  0% { background: rgba(0,0,0, 1) }
	100% { background: rgba(0,0,0,.6) }
}
#cover::after {
	animation: coverAfter 8s;
	background: url(/image/green.jpg) no-repeat 50%;
	background-size: cover;
	position: absolute;
	transition: .5s;
	z-index: -3
}
@keyframes coverAfter {
	  0% { transform: scale(1.2) rotate(4deg) }
	100% { transform: scale(1) rotate(0) }
}
#cover .headline {
	animation: fedeUp 6s;
	box-sizing: border-box;
	color: #e6e6e6;
	font-family: 'Montserrat', sans-serif;
	letter-spacing: normal;
	margin: 0;
	padding: 0;
	position: relative;
	text-align: center;
	text-transform: uppercase;
	top: 28%;
	width: 100%
}
#cover .headline h1,
#cover .headline h2 {
	font-family: 'Montserrat', sans-serif;
	font-size: .94em;
	margin: 0;
}
#cover .headline p {
	font-size: .4em;
	font-weight: 200;
	margin: 0;
}
#cover .thin {
	font-weight: 200
}

/* Main
------------------------------ */
main {
	background: #e6e6e6;
	margin: 100dvh 0 0;
	padding: 16% 0 0;
	overflow: hidden;
	position: relative
}
main h2,
main h3,
main h4,
main h5,
main h6,
main li,
main p {
	background-clip: text;
    background-image: linear-gradient (
		0deg,
		rgb(51, 51, 51),
		rgb(51, 51, 51),
		rgba(255, 255, 255, 0),
		rgba(255, 255, 255, 0)
  	);
    background-position: right 0% center;
    background-size: 300% 100%;
    transition: 1.8s;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent
}
main h2.active,
main h3.active,
main h4.active,
main h5.active,
main h6.active,
main li.active,
main p.active {
    background-position: right 100% center;
    -webkit-text-fill-color: rgb(51, 51, 51)
}
main section {
	padding: 8% 0
}
main section > *,
section > .wrap {
	margin-right: auto;
	margin-left: auto;
	padding: 0 8%
}
main > :first-child {
	padding-top: 0
}
main > section:nth-child(2) .headline i {
	background-image: url(/image/waterdrop_02.png)
}
main > section:nth-child(3) .headline i {
	background-image: url(/image/waterdrop_03.png)
}
main > section:nth-child(4) .headline i {
	background-image: url(/image/waterdrop_04.png)
}
main > section:nth-child(5) .headline i {
	background-image: url(/image/waterdrop_05.png)
}

/* Favorite
------------------------------ */
aside {
	background: #e6e6e6;
	overflow: hidden;
	position: relative
}
#favorite {
	padding-top: 0
}
#favorite .light {
	margin: 0;
	padding: 0;
	width: 120px
}
#favorite .carousel {
	margin-top: 2em
}
#favorite .carousel.right li {
	width: 220px
}


#profile {
	background: #fff;
	min-height: 100px;
	padding: 6em 0 8em !important;
	position: relative;
	z-index: 1
}
#profile::before,
#profile::after {
	background: url(/image/sky.png) repeat-x 0 0;
	background-size: 900px 250px;
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 500px;
	z-index: -1
}
#profile::after {
	background-image: url(/image/cloud.png)
}
.active#profile::before,
.active#profile::after {
	animation: roop 300s infinite linear;
}
.active#profile::after {
	animation-duration: 40s
}
@keyframes roop{
	  0% { background-position: 0 0 }
	100% { background-position: -900px 0 }
}

.yacht {
	display: block;
	text-align: center;
}

#note {
	background: #fff;
	overflow: hidden;
	padding-top: 0 !important;
	position: relative;
	z-index: 1
}
#note::before,
#note::after {
	content: '';
	position: absolute;
	top: 70px;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: -1
}
#note::before {
	background: #e6e6e6;
	margin-top: 4px
}
#note::after {
	background: url(/image/ocean.png) repeat-x 0 0;
	background-size: 300px 200px
}
.active#note::after {
	animation: roop 600s infinite linear
}
#note > h4 {
	margin: 1em auto
}
#note > a img {
	display: block;
	margin: -10px auto
}

#flyleaf .grid-col-4 {
	align-items: start;
	display: grid;
	gap: 2%;
	grid-template-columns: repeat(2, 1fr)
}
#flyleaf .grid-col-4 h5 {
	font-size: 1em;
	font-weight: 400;
	margin: 1em 0 0
}
#flyleaf .grid-col-4 p {
	font-size: .7em;
	line-height: 1.6em;
	margin: .7em 0
}

/* Footer
------------------------------ */
footer {
	box-sizing: border-box;
	color: #e6e6e6;
	height: 100dvh;
	min-height: 600px;
	position: relative;
	padding-top: 10%;
	width: 100%
}
footer > * {
	margin-right: auto;
	margin-left: auto;
	padding: 0 8%
}
footer a,
footer a:hover {
	color: #e6e6e6
}
footer h3 {
	font-size: 3em;
	margin: 0
}
footer h3 .thin {
	display: block;
	font-size: .425em;
	font-weight: 100;
	margin: 0 0 3rem .2rem;
}
footer p {
	font-weight: 100;
	line-height: 1.4;
	margin: 1.6rem 0
}
footer .grid-col-2 {
	gap: 0 !important;
	grid-template-columns: 1fr !important;
	position: absolute;
	top: 30%;
}

#copyright {
	position: absolute;
	bottom: 1rem;
	font-size: .8em;
}

/* Device Width
------------------------------ */
@media only screen and (min-width: 428px) {
	#cover {
		font-size: 2.8em
	}
}
@media only screen and (min-width: 568px) {
	#cover {
		font-size: 3.6em
	}
}
@media only screen and (min-width: 640px) {
	#logo {
		top: 5em;
		width: 28px
	}
	#menu {
		right: 4%;
		top: 4em
	}
	#cover {
		font-size: 4.2em
	}
	footer .grid-col-2 {
		top: 35%;
	}
	footer h3 .thin {
		display: inline;
		font-size: .9em
	}
}
@media only screen and (min-width: 1024px) {
	body {
		font-size: 1.3rem
	}
	.grid-col-2 {
		align-items: center;
		grid-template-columns: repeat(2, 1fr)
	}
	.grid-col-3 {
		grid-template-columns: repeat(3, 1fr)
	}
	.grid-col-4 {
		grid-template-columns: repeat(4, 1fr)
	}
	[class^="grid-"].flip > :nth-child(odd) {
		order: 2
	}
	[class^="grid-"].flip > :nth-child(even) {
		order: 1
	}
	picture.left {
		margin-left: -28%
	}
	picture.right {
		margin-right: -28%
	}
	#symbol {
		position: fixed; 
		right: 3%;
		width: 70px
	}
	#logo,
	#scroller {
		left: 4%
	}
	#cover {
		font-size: 5.4em
	}
	#cover .headline {
		top: 30%;
	}
	main {
		padding: 8% 0 0;
	}
	main section {
		padding: 4% 0
	}
	#flyleaf .grid-col-4 {
		grid-template-columns: repeat(4, 1fr)
	}
}
@media only screen and (min-width: 1240px) {
	body {
		font-size: 1.4rem
	}
	#cover {
		font-size: 5.8em
	}
	header nav ul {
		position: fixed
	}
	#symbol {
		width: 100px
	}
	section > *,
	section > .wrap,
	footer > * {
		padding: 0 14% 0 8%
	}
	.carousel,
	figure.gallery {
		margin-right: -18%;
		margin-left: -11%
	}
}
@media only screen and (min-width: 1440px) {

}