@charset 'UTF-8';

/*

    Base

*/

/*  color  */
:root {
	--main-color: #0a3e8b;
	--light-color: rgba(10,62,139,0.05);
}

/*  webkit  */
body {
	-webkit-text-size-adjust: 100%;
}
a {
	-webkit-tap-highlight-color: rgba(255,255,255,0.4);
}
img {
	-webkit-touch-callout: none;
}
input[type=password], input[type=text], input[type=email], input[type=number], input[type=date], button, textarea {
	max-width: 100%;
	-webkit-appearance: none;
	border-radius: 0;
}

/*  font  */
html { font-size: 8px;}
@media screen and (min-width: 768px) { html { font-size: 10px;}}
body {
	font-family: "Noto Serif JP", serif;
	color: #333333;
}
a {
	color: var(--main-color);
	transition: all 0.1s linear;
}
a:hover   { opacity: 0.7;}

/*  size color  */
body { font-size: 1.5rem;}
h1 { font-size: 5.5rem;}
h2 { font-size: 3.5rem;}
h3 { font-size: 2.5rem;}
h4 { font-size: 1.8rem;}

/*  .global  */
.global ul,
.global li,
.global p {
	margin: 0;
	list-style: none;
}
.global a {
	text-decoration: none;
	color: inherit;
}

/*  p  */
p {
	line-height: 1.75;
}

/*  max width  */
body img,
body iframe {
	max-width: 100%;
}

/*  placeholder  */
::placeholder {
	font-size: 1.4rem;
	color: #999999;
}

/*  iframe  */
iframe {
	width: 100%;
	min-height: 370px;
}

/*  material icons  */
.material-icons {
	margin-right: 0.25em;
	font-size: 1.25em;
	vertical-align: middle;
}

/*  material-symbols-outlined  */
.material-symbols-outlined {
	margin: 0 0.25em 0 0;
	color: var(--quarter-color);
	vertical-align: middle;
}

/*  .sticky  */
@media screen and (min-width: 768px) {
	*:has(> .sticky) {
		display: flex;
		align-items: flex-start;
	}
	.sticky {
		position: -webkit-sticky;
		position: sticky;
		top: 65px;
	}
}

/*  smoothscroll  
html {
	scroll-padding-top: 65px;
	scroll-behavior: smooth;
}
*/

/*  container  */
div.container {
	position: relative;
	width: 100%;
	margin: 0;
	padding: 0 10px;
	box-sizing: border-box;
}
@media screen and (min-width: 768px) {
	div.container {
		margin: 0 auto;
		max-width: 1200px;
	}
}

/*  section  */
section {
	padding: 30px 0;
	overflow: hidden;
	box-sizing: border-box;
}
@media screen and (min-width: 768px) {
	section {
		padding: 60px 0;
	}
}






/*

    Header

*/
/*  layout  */
header .container {
	text-align: center;
}
header .container .wrap {
	text-align: center;
}
@media screen and (min-width: 768px) {
	header .container {
		display: flex;
		justify-content: space-between;
		align-items: center;
		text-align: left;
	}
}

/*  .lead  */
header .lead {
	font-size: 4.0rem;
}

/*  sitetop  */
header .sitetop {
	display: inline-block;
	width: fit-content;
}
header .sitetop h1 {
	display:inline-block;
	line-height: 0;
}
header .sitetop h1 img {
	display: block;
	width: auto;
	height: 35px;
}

/*  nav  */
header nav ul {
	display: flex;
	justify-content: center;
	align-items: center;
	list-style: none;
}
header nav ul li {
	margin: 0;
}
header nav ul li + li {
	margin: 0 0 0 1em;
}
header nav ul li a {
	font-size: 1.2rem;
	color: inherit;
}
@media screen and (min-width: 768px) {
	header nav ul {
		margin: 1em 0 0 0;
	}
}



/*

    Footer

*/
footer small {
	display: block;
	padding: 2em 0;
	text-align: center;
	box-sizing: border-box;
}




/*

    Common

*/

/*  headings  */
h2,
h3,
h4 {
	margin: 1em 0;
	font-family: "Noto Serif JP", serif;
	font-weight: 200;
}

/*  text  */
p.lead {
	font-size: 1.5em;
}

/*  .columns  */
/* 通常（1:3） */
.columns {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: 100%;
	gap: 30px;
	margin: 30px 0;
}
@media screen and (min-width: 768px) {
	.columns {
		flex-direction: row;
		gap: 60px;
		margin: 60px 0;
	}
	.columns .column:nth-of-type(1) {
		flex: 0 0 calc((100% - 60px) * 1 / 4);
	}
	.columns .column:nth-of-type(2) {
		flex: 0 0 calc((100% - 60px) * 3 / 4);
	}
	.columns .column > *:first-child {
		margin-top: 0 !important;
	}
	.columns .column > *:last-child {
		margin-bottom: 0 !important;
	}
}
/* 均等（1:1） */
@media screen and (min-width: 768px) {
	.columns.justify .column,
	.columns.justify .column:nth-of-type(1),
	.columns.justify .column:nth-of-type(2) {
		flex: 1;
	}
}
/*  .reverse  */
.columns.reverse {
	flex-direction: column-reverse;
}
@media screen and (min-width: 768px) {
	.columns.reverse {
		flex-direction: row;
	}
}

/* gap無し */
.columns.no-gap {
	gap: 0;
}
.columns .column:nth-of-type(1) {
	flex: 0 0 calc(100% * 1 / 4);
}
.columns .column:nth-of-type(2) {
	flex: 0 0 calc(100% * 3 / 4);
}
.columns.no-gap .column img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
/* gap幅 */
.columns.narrow-gap {
	gap: 15px;
}
@media screen and (min-width: 768px) {
	.columns.wide-gap {
		gap: 60px;
	}
}
/* 高さstretch */
@media screen and (min-width: 768px) {
	.columns.stretch {
		align-items: stretch;
	}
	.columns.stretch .column {
		display: flex;
		flex-direction: column;
	}
	.columns.stretch .column > * {
		flex-grow: 1;
	}
}

/*  .img-txt  */
.img-txt .img img {
	width: 100%;
	height: auto;
}
@media screen and (min-width: 768px) {
	.img-txt {
		display: flex;
		flex-wrap: wrap;
		justify-content: space-between;
		gap: 30px;
	}
	.img-txt .img {
		flex: 3;
	}
	.img-txt .txt {
		flex: 7;
	}
	.img-txt .txt > *:first-child {
		margin-top: 0;
	}
}
@media screen and (min-width: 768px) {
	.img-txt.reverse {
		flex-direction: row-reverse;
	}
}
@media screen and (min-width: 768px) {
	.img-txt.vertical {
		display: block;
	}
}

/*  button  */
button,
a.button,
div.be-item.button a,
div.be-item.buttons a {
	display: inline-block;
	margin: 1em 0.5em 1em 0;
	padding: 0.5em 2em;
	border: 1px var(--main-color) solid;
	background-color: var(--main-color);
	color: #ffffff;
	font-size: 1.5rem;
	font-weight: 200;
	text-align: center;
	line-height: 1.5;
	opacity: 1;
	cursor: pointer;
	box-sizing: border-box;
}
button.ghost,
a.button.ghost,
div.be-item.button.ghost a,
div.be-item.buttons.ghost a {
	background-color: transparent;
	color: var(--main-color);
}
button.xsmall,
a.button.xsmall,
div.be-item.buttons.xsmall a,
div.be-item.button.xsmall a {
	padding: 0 0.5em;
	font-size: 1.1rem;
}
button.small,
a.button.small,
div.be-item.button.small a {
	padding: 0.125em 1.5em;
	font-size: 1.3rem;
}
button.large,
a.button.large,
div.be-item.buttons.large a,
div.be-item.button.large a {
	padding: 0.75em 5em;
	font-size: 1.7rem;
}
button.xlarge,
a.button.xlarge,
div.be-item.buttons.xlarge a,
div.be-item.button.xlarge a {
	display: block;
	padding: 0.75em 5em;
	font-size: 1.9rem;
}
@media screen and (min-width: 768px) {
	button.xlarge,
	a.button.xlarge,
	div.be-item.buttons.xlarge a,
	div.be-item.button.xlarge a {
		display: inline-block;
		padding: 0.75em 15em;
		font-size: larger;
	}
}

/*  .slider  */
#contents .slider {
	position: relative;
}
#contents .slider .frame {
	overflow: hidden;
}
#contents .slider .frame ul {
	list-style: none;
	margin: 0;
	letter-spacing: 0;
	overflow: auto; /* auto以外はsliderが止まる */
	white-space: nowrap;
	scrollbar-width: none;
}
#contents .slider .frame ul::-webkit-scrollbar {
	display: none;
}
#contents .slider .frame ul li {
	display: inline-block !important;
	width: 320px;
	margin: 0;
	padding: 0 30px 0 0;
	letter-spacing: 0;
	white-space: normal;
	vertical-align: top;
	box-sizing: border-box;
}
#contents .slider nav {
	display: flex;
	align-items: center;
	margin: 30px 0 0;
}
#contents .slider nav a {
	display: block;
	cursor: pointer !important;
}
#contents .slider nav a span {
	display: block;
	margin: 0;
	font-size: 6.0rem;
	color: var(--main-color);
}
#contents .slider nav a.prev span { transform: rotate(90deg); }
#contents .slider nav a.next span { transform: rotate(-90deg); }
@media screen and (min-width: 768px) {
	#contents .slider nav {
		position: absolute;
		top: -90px;
		right: 100px;
		margin: 0;
	}
}

/*  .centering-slider  */
#contents .centering-slider {
	position: relative;
	width: 100%;
	margin: 30px auto;
}
#contents .centering-slider .frame {
	width: 100%;
	overflow: hidden;
}
#contents .centering-slider .frame ul {
	position: relative;
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}
#contents .centering-slider .frame ul li {
	flex: 0 0 70%;
	width: 70%;
	margin: 0;
	box-sizing: border-box;
}
#contents .centering-slider .frame ul li img {
	display: block;
	width: 100%;
	height: auto;
}
#contents .centering-slider nav {
	position: absolute;
	top: 0;
	left: 0;
	display: flex;
	justify-content: space-between;
	width: 100%;
	height: 100%;
	pointer-events: none;
}
#contents .centering-slider nav a {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 15%;
	height: 100%;
	background-color: rgba(255,255,255,0.75);
	cursor: pointer !important;
	pointer-events: auto;
	z-index: 10;
}
#contents .centering-slider nav a span {
	display: block;
	margin: 0;
	font-size: 6.0rem;
	color: var(--main-color);
}
#contents .centering-slider nav a.prev span { transform: rotate(90deg); }
#contents .centering-slider nav a.next span { transform: rotate(-90deg); }

/*  .telop  */
#contents .telop {
	width: 100%;
	overflow: hidden;
}
#contents .telop ul {
	list-style: none;
	display: flex;
	width: 100%;
	margin: 0;
	padding: 0;
}
#contents .telop ul li.img {
	flex: 0 0 50%;
	width: 50%;
	margin: 0;
	aspect-ratio: 3 / 2;
	overflow: hidden;
}
#contents .telop ul li.img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
#contents .telop ul.is-animating {
	animation: loop-slide 25s infinite linear;
}
@keyframes loop-slide {
	from {
		transform: translateX(0);
	}
	to {
		transform: translateX(-50%);
	}
}
@media screen and (min-width: 768px) {
	#contents .telop ul li.img {
		flex: 0 0 33.33%;
		width: 33.33%;
	}
}





/*

    #mv

*/
#mv {
	position: relative;
	width: 100%;
	height: 100vh;
	background: linear-gradient(rgba(10,62,139,0.5),rgba(10,62,139,0.5)), url('./images/bg_00.jpg');
	overflow: hidden;
}
#mv img {
	position: absolute;
	top: 0;
	left: 0;
	display: none;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}





/*

    #greeting

*/
#greeting {
	position: relative;
}
#greeting:before {
	position: absolute;
	top: 0;
	right: 0;
	content: "";
	display: block;
	width: 75%;
	height: 100%;
	background-color: var(--light-color);
}
#greeting:after {
	position: absolute;
	left: 0;
	bottom: -11.0rem;
	display: block;
	content: "Greeting";
	font-family: "Bodoni Moda", serif;
	font-style: italic;
	font-weight: 400;
	font-size: 30.0rem;
	letter-spacing: -0.05em;
	color: rgba(10,62,139,0.1);
}





/*

    #case

*/
#case {
	padding: 0;
}





/*

    #project

*/

/*  layout  */
#project {
	position: relative;
}
#project:before {
	position: absolute;
	top: 0;
	left: 0;
	content: "";
	display: block;
	width: 75%;
	height: 100%;
	background-color: var(--light-color);
}
#project:after {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	content: "Projects";
	font-family: "Bodoni Moda", serif;
	font-style: italic;
	font-weight: 400;
	font-size: 30.0rem;
	letter-spacing: -0.05em;
	color: rgba(10,62,139,0.1);
}
@media screen and (min-width: 768px) {
	#project:after {
		left: auto;
		right: 0;
	}
}

/*  .content  */
#project .container .columns .column .content {
	display: flex;
	flex-direction: column;
	width: 100%;
	padding: 30px;
	box-sizing: border-box;
}
@media screen and (min-width: 768px) {
	#project .container .columns {
		display: flex;
		align-items: stretch;
	}
	#project .container .columns .column.flex-end {
		align-self: flex-end;
	}
	#project .container .columns .column .content {
		padding: 0;
	}
}
#project .container .columns .column .content p.comment {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	line-height: 1.5;
	min-height: 4.5em; 
	overflow: hidden;
}
#project .container .columns .column .content .number {
	font-family: "Bodoni Moda", serif;
	font-style: italic;
	font-weight: 400;
	font-size: 3.0rem;
	color: var(--main-color);
	line-height: 1;
	vertical-align: bottom;
}
#project .container .columns .column .content .header {
	padding: 15px;
	border-top: 1px solid var(--main-color);
	border-bottom: 1px solid var(--main-color);
	box-sizing: border-box;
}
@media screen and (min-width: 768px) {
	#project .container .columns .column .content .header {
		padding: 30px;
	}
}
#project .container .columns .column .content ul.dl {
	align-self: flex-end;
	list-style: none;
	margin: 0;
	padding: 15px;
	box-sizing: border-box;
}
#project .container .columns .column .content ul.dl li {
	position: relative;
	margin: 0;
	padding: 0 0 0 5em;
	box-sizing: border-box;
}
#project .container .columns .column .content ul.dl li span.dt {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 5em;
}
@media screen and (min-width: 768px) {
	#project .container .columns .column .content ul.dl {
		padding: 30px;
	}
}

/*  .case  */
@media screen and (min-width: 768px) {
	#project .container .case {
		display: flex;
		flex-direction: column;
		width: 100%;
	}
	#project .container .case .img {
		width: 75%;
		align-self: flex-end;
	}
	#project .container .case .img img {
		vertical-align: bottom;
	}
	#project .container .case .content {
		margin-top: -3.0rem;
	}
}

/*  ul.images  */
#project .container ul.images {
	position: relative;
	list-style: none;
	margin: 0;
	aspect-ratio: 3 / 2;
}
#project .container ul.images li.image {
	position: absolute;
	top: 0;
	left: 0;
	margin: 0;
	width: 100%;
	height: 100%;
}
#project .container ul.images li.image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
#project .container ul.images li.image.before {
	 width: 100%;
	 height: 100%;
	 z-index: 1;
}
#project .container ul.images li.image.after {
	 width: 0;
	 height: 100%;
	 z-index: 2;
}





/*

    #future

*/
#future {
	position: relative;
	background: linear-gradient(rgba(10,62,139,0.5),rgba(10,62,139,0.5)), url('./images/future.jpg');
	background-position: center;
	background-size: cover;
	background-blend-mode: multiply;
}
#future:after {
	position: absolute;
	left: 0;
	bottom: -11.0rem;
	display: block;
	content: "Future";
	font-family: "Bodoni Moda", serif;
	font-style: italic;
	font-weight: 400;
	font-size: 30.0rem;
	color: rgba(255,255,255,0.1);
	letter-spacing: -0.05em;
}
#future .container {
	text-align: center;
	color: #ffffff;
}
