@charset "UTF-8";
/* CSS Document */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, dialog, figure, footer, header,
hgroup, menu, nav, section,
time, mark, audio, video {
		/*-webkit-transition: 0.25s ease-in-out;
		-moz-transition: 0.25s ease-in-out;
		transition: 0.25s ease-in-out;*/
}
img {
	max-width:100%;
	height:auto;
}

/* -----------------------------------------------------------------------
## Reset #################################################################
----------------------------------------------------------------------- */
html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,img,
pre,form,fieldset,input,textarea,p,blockquote,th,td {
  margin: 0px;
  padding: 0px;
}
html {overflow:auto; height:100%;}
body{
	color: #000;
	font-size: 14px;
	font-family: "Zen Kaku Gothic New", sans-serif;
  	font-weight: 400;
  	font-style: normal;
	overflow-x: hidden;
	-webkit-text-size-adjust: 100%;
	letter-spacing: 0.05em;
	background: #fff;
}
fieldset,img {
  border: 0;
  vertical-align: bottom;
}

address,caption,cite,code,dfn,em,var {
  font-style: normal;
  font-weight: normal;
}
ul {
  list-style: none;
}
ol li {
	list-style-position: outside;
	list-style: decimal;
	margin-left: 25px;
	margin-bottom:5px;
}

caption,th {
  text-align: left;
  font-weight: normal;
}
h1,h2,h3,h4,h5,h6 {
  font-size: 100%;
  font-weight: normal;
}

a{
	color: #333333;
	text-decoration:none;
}
sup,sub {
    height: 0;
    line-height: 1;
    vertical-align: baseline;
    position: relative;
     
}
sup {
    bottom: 0.6ex;
}
sub {
    top: .5ex;
}
.alpha{
	display:block;
	text-decoration:none;
	opacity: 1;
	-webkit-transition: all 0.3s ease;
	-moz-transition: all 0.3s ease;
	-o-transition: all 0.3s ease;
	transition: all  0.3s ease;
}
.alpha:hover{
	opacity: 0.7;
}


.clearfix:after {
    content:" ";
    display:block;
    clear:both;
}

.ma_b5 {margin-bottom: 5px;}
.ma_b10 {margin-bottom: 10px;}
.ma_b15 {margin-bottom: 15px;}
.ma_b20 {margin-bottom: 20px;}
.ma_b21 {margin-bottom: 21px;}
.ma_b25 {margin-bottom: 25px;}
.ma_b30 {margin-bottom: 30px;}
table, tr, th, td {
    border-collapse: collapse;
	text-align:left;
	font-weight:normal;
	vertical-align:top;
}
.lett {letter-spacing: -0.1em;}

.pc_only {display:block!important;}
.sp_only {display:none!important;}

/*---- FOR SP ----*/
@media only screen and (max-width: 768px){
body{
	color: #000;
	font: 12px/165% "Zen Kaku Gothic New", sans-serif;
	-webkit-text-size-adjust: 100%;
	letter-spacing:0.05em;
	line-height:160% !important;
	
}

.pc_only {display:none !important;}
.sp_only {display:block!important;}
.img100 {width:100%; height:auto;}
.img90 {width:90%; height:auto;}
.img80 {width:80%; height:auto;}
.img70 {width:70%; height:auto;}
}
.re { position:relative;}


a:hover {
	opacity: 0.6;
}
footer a:hover {
	opacity: 1.0;
}

/* ========================================
   ページ全体を走る赤い線
======================================== */

#scroll-line-svg{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    pointer-events: none;
    z-index: 1;
    overflow: visible;
}

#scroll-red-line{
    fill: none;
    stroke: #ab1e23;
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
}

header,
main,
footer{
    position: relative;
    z-index: 2;
}

/* ヘッダー右横の余白を確保 */
header .inner{
    position: relative;
}

/****************************************

HEADER

*****************************************/
header {
	margin: auto;
	padding: 0;
}
header h1 {
	width:100%;
	max-width: 900px;
	margin: auto;
	text-align: center;
}
header h1 img {
	width:100%;
	max-width: 560px;
	margin: auto;
	padding: 50px 0 100px;
	padding-right: 10%;
}

@media only screen and (max-width: 768px){
header h1 {
	width:85%;
	max-width: 100%;
	margin: auto;
	text-align: left;
}
header h1 img {
	width:80%;
	max-width: 100%;
	margin: auto;
	padding: 50px 0 20px;
}
}



main #main {
	width:100%;
	max-width: 100%;
	margin: auto;
}

main #main{
    position: relative;
}


main #main h2 {
	width:100%;
	max-width: 900px;
	margin: auto;
	padding: 20px 0;
}
main #main h2 img {
	width:100%;
	max-width: 700px;
	margin: auto;
	padding-right: 10%;
}


main #main h3.restart-title {
    width: 100%;
    max-width: 900px;
    margin: 40px auto;        /* 上下余白調整 */
    padding: 20px 0;
    display: flex;
    justify-content: flex-start;   /* 中央寄せ（左寄せにしたい場合は flex-start） */
    align-items: center;
    gap: 50px;                 /* 文字間の間隔 */
    flex-wrap: wrap;
}

/* 各画像 */
.restart-title .char {
    max-width: 200px;          /* ← ここを調整してください（150?280pxくらいがおすすめ） */
    height: auto;
    width: auto;               /* 比率を維持 */
    opacity: 0;
    transform: translateY(30px);
    display: block;
}

/* スマホで少し小さくする */
@media (max-width: 768px) {
    .restart-title .char {
        max-width: 60px;
        gap: 8px;
    }
}

/* 表示アニメーション */
.restart-title .char.show {
    animation: charIn .8s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

@keyframes charIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* PC時のみ表示する横ロゴ */
.logo-yoko{
    position: absolute;
    top: 0px; /* h2・h3の高さに合わせて調整 */
    left: calc(82% + 120px); /* 赤い線の位置 + 40px */
    z-index: 3;
}

.logo-yoko img{
    display: block;
    width: 64px; /* ロゴを見やすく拡大 */
    height: auto;
	padding: 20px;
}

/* スマホでは非表示 */
@media only screen and (max-width: 768px){
	main #main {
	width:100%;
	max-width: 100%;
	margin: auto;
	padding: 0 0 120px;
}


	main #main h2 {
	width:85%;
	max-width: 100%;
	margin: auto;
	padding: 20px 0;
	text-align: left;
	}
	main #main h2 img {
		width:80%;
		max-width: 100%;
		margin: auto;
	}

	main #main h3 {
		width:85%;
		max-width: 100%;
		margin: auto;
		padding: 20px 0;
	}
	main #main h3 img {
		width:30%;
		max-width: 100%;
		margin: auto;
		padding-right: 20%;
	}
	main #main h3.restart-title {
    width: 100%;
    max-width: 900px;
    margin: 0px auto;        /* 上下余白調整 */
    padding: 20px 0;
    display: flex;
    justify-content: flex-start;   /* 中央寄せ（左寄せにしたい場合は flex-start） */
    align-items: center;
    gap: 30px;                 /* 文字間の間隔 */
    flex-wrap: wrap;
}

    .logo-yoko{
        display: none;
    }
}



/* ========================================
   プロジェクトエリア
======================================== */
#project{
    position: relative;
    max-width: 900px;
    margin: 0 auto;
    padding: 80px 0px;
    overflow: visible; /* hidden を visible に変更 */
}

/* SVGの赤い線 */
.line-svg{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

#line-svg path,
#red-line{
    fill: none;
    stroke: #ab1e23;
    stroke-width: 2;
    stroke-linecap: square;
    stroke-linejoin: miter;
}

/* テキストブロック */
.project-block{
    position: relative;
    width: 48%;
    margin-bottom: 240px; /* 線が通る余白を増やす */
    z-index: 2;
}

.project-block.left{
    margin-right: auto;
}

.project-block.right{
    margin-left: auto;
}

.project-block p{
    font-size: 1.02rem;
    line-height: 2.4;
    color: #ab1e23;
}



/* スマホ対応 */
@media (max-width: 768px){

    #project{
    position: relative;
    max-width: 85%;
    margin: 0 auto;
    padding: 60px 20px;
}


    .project-block {
        width: 100%;
        margin-bottom: 180px;
    }

	.project-block:nth-child(2) {
        padding-left: 32%;
    }
	.project-block:nth-child(3) {
        padding-left: 0%;
    }
	.project-block:nth-child(4) {
        padding-left: 10%;
    }


    .project-block p {
        font-size: 4.1vw;
        line-height: 2.4;
    }

    /* スマホではSVGの高さを長めに */
    .line-svg{
        height: 120%;
    }
}


#main .column {
	width: 100%;
	max-width: 1080px;
	margin: auto;
	margin-left: 60%;
}

#main .column img {
	width: 100%;
	max-width: 114px;
}

@media only screen and (max-width: 768px){
	#main .column {
	width: 90%;
	max-width: 100%;
	margin: auto;
	margin-left: 20%;
	margin-bottom: 20%;
}

	#main .column img {
	width: 100%;
	max-width: 36%;
}
}


#main .column_number {
	width: 100%;
	max-width: 54px;
}

main dl {
	color: #ab1e23;
	width: 100%;
	max-width: 980px;
	margin: auto;
	font-size: 1.08rem;
	line-height: 2.4;
	padding: 5% 0 12%;
	font-feature-settings: "palt";
}

main dl dt.nth01, main dl dd.nth01 {
	margin-left: 0;
}
main dl dt.nth02, main dl dd.nth02 {
	margin-left: 170px;
}
main dl dt.nth03, main dl dd.nth03 {
	margin-left: 340px;
}

main dl dd {
	padding-bottom: 40px;
}

main dl dd p {
	padding-bottom: 10px;
	text-align: justify;
	font-feature-settings: "palt";
	letter-spacing: -0.05em;
}

@media only screen and (max-width: 768px){
	main dl {
	color: #ab1e23;
	width: 80%;
	max-width: 100%;
	margin: auto;
	font-size: 1.08rem;
	line-height: 2.4;
	padding: 5% 0 2%;
	
}

main dl dd {
	padding-bottom: 40px;
}


main dl dt.nth01, main dl dd.nth01 {
	margin-left: 0;
	font-feature-settings: "palt";
}
main dl dt.nth02, main dl dd.nth02 {
	margin-left: 0;
	font-feature-settings: "palt";
}
main dl dt.nth03, main dl dd.nth03 {
	margin-left: 0;
	font-feature-settings: "palt";
}

}



/****************************************

footer

*****************************************/
footer {
	width: 100%;
	max-width: 100%;
	margin: auto;
}

footer .inner {
	width: 100%;
	max-width: 1080px;
	margin: auto;
	text-align: right;
}

footer .ft-tobe {
	margin: auto;
	padding: 0; 
}
footer .ft-tobe img {
	width: 100%;
	max-width: 530px;	
	padding: 0; 
}
	


/* ========================================
   To be continued 下のリンクバナー
======================================== */
.footer-banners {
    width: calc(100% - 40px);
    max-width: 980px;
    margin: 55px auto 10px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px;
    text-align: left;
}

.footer-banner {
    display: block;
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(171, 30, 35, 0.25);
    transition: transform 0.25s ease, opacity 0.25s ease, box-shadow 0.25s ease;
}

.footer-banner:hover {
    opacity: 1;
    transform: translateY(-4px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
}

.footer-banner img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1200 / 630;
    object-fit: cover;
}

@media only screen and (max-width: 768px) {
    .footer-banners {
        width: 85%;
        margin: 40px auto 25px;
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .footer-banner img {
        aspect-ratio: 1200 / 630;
    }
}

footer .ft-logo {
	margin: auto;
	padding: 50px 0 5px;
}
footer .ft-logo img {
	margin: 0px auto;
	max-width: 560px;
	padding: 20px 0 30px;
	padding-right: 128px;
}

@media only screen and (max-width: 768px){
	footer .ft-tobe {
	width: 90%;
	margin: auto;
	padding: 0; 
	text-align: right;
}
footer .ft-tobe img {
	width: 72%;
	max-width: 100%;	
	padding: 0; 
}
footer .ft-logo {
	width: 90%;
	margin: auto;
	padding: 0; 
	text-align: right;
}
footer .ft-logo img {
	width: 70%;
	max-width: 100%;	
	padding: 30px 0 5px;
}
}

footer .copyright {
	max-width: 100%;
	margin: auto;
	padding: 40px 0 20px;
	text-align: center;
	font-size: 0.90rem;
}
@media only screen and (max-width: 768px){
	footer .copyright {
	margin: auto;
	max-width: 95%;
	padding: 40px 0 10px;
	font-size: 3.0vw;
	line-height: 1.7;
	}
}


/* ========================================
   フェードアップアニメーション
======================================== */
.fadeup{
    opacity: 0;
    transform: translateY(40px);
    transition:
        opacity 1.6s ease-out,
        transform 1.6s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
}

.fadeup.show{
    opacity: 1;
    transform: translateY(0);
}