@charset "utf-8";

/* === 基本リセット === */
* { box-sizing: border-box; margin: 0; padding: 0; }

body {
	font-family: "Noto Sans JP", Arial, sans-serif;
	font-size: 15px;
	line-height: 1.75;
	color: #232323;
	position: relative;
}

.noto-sans-jp-<uniquifier> {
	font-family: "Noto Sans JP", sans-serif;
	font-optical-sizing: auto;
	font-weight: <weight>;
	font-style: normal;
}

a { word-break: break-all; }
a:link { color: #07913b; }
a:visited { color: #07913b; }
a:hover { color: #c9cb48; }
a:active { color: #c9cb48; }

/* 背景 */
.hero-bg {
	position: fixed;
	inset: 0;
	background: linear-gradient(
    to bottom,
    #e0f2fc 0%,
    #e6f5fd 20%,
    #ecf7fd 40%,
    #f2fafd 60%,
    #f9fcfe 80%,
    #ffffff 100%
);
	overflow: hidden;
	z-index: -1;
}

/* ========================================
   Falling Circles
======================================== */

.falling-circles {
    position: fixed;

    top: -100px;
    left: 0;

    width: 100%;
    height: calc(100% + 200px);

    overflow: hidden;
    pointer-events: none;
    z-index: 0;

    transform: translate3d(0, var(--parallax-y, 0px), 0);
    will-change: transform;
}

/* スマートフォンでは背景の円アニメーションを非表示 */
@media screen and (max-width: 768px) {
    .falling-circles {
        display: none;
    }
}

/* 円本体 */
.falling-circles .circle {
    position: absolute;
    top: -300px;

    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%236bc99a' fill-opacity='0.16'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;

    animation-name: circle-fall;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}


/* ------------------------
   個別設定
------------------------ */

.c1 {
    left: 3%;
    width: 180px;
    height: 180px;
    animation-duration: 34s;
    animation-delay: -8s;
}

.c2 {
    left: 14%;
    width: 90px;
    height: 90px;
    animation-duration: 27s;
    animation-delay: -19s;
}

.c3 {
    left: 25%;
    width: 260px;
    height: 260px;
    animation-duration: 42s;
    animation-delay: -25s;
}

.c4 {
    left: 38%;
    width: 120px;
    height: 120px;
    animation-duration: 30s;
    animation-delay: -12s;
}

.c5 {
    left: 48%;
    width: 210px;
    height: 210px;
    animation-duration: 38s;
    animation-delay: -31s;
}

.c6 {
    left: 59%;
    width: 75px;
    height: 75px;
    animation-duration: 25s;
    animation-delay: -7s;
}

.c7 {
    left: 67%;
    width: 300px;
    height: 300px;
    animation-duration: 46s;
    animation-delay: -35s;
}

.c8 {
    left: 78%;
    width: 140px;
    height: 140px;
    animation-duration: 32s;
    animation-delay: -16s;
}

.c9 {
    left: 88%;
    width: 230px;
    height: 230px;
    animation-duration: 40s;
    animation-delay: -28s;
}

.c10 {
    left: 7%;
    width: 110px;
    height: 110px;
    animation-duration: 29s;
    animation-delay: -23s;
}

.c11 {
    left: 53%;
    width: 160px;
    height: 160px;
    animation-duration: 36s;
    animation-delay: -4s;
}

.c12 {
    left: 82%;
    width: 65px;
    height: 65px;
    animation-duration: 24s;
    animation-delay: -14s;
}


/* ------------------------
   落下アニメーション
------------------------ */

@keyframes circle-fall {

    0% {
        transform: translate3d(0, -300px, 0);
    }

    25% {
        transform: translate3d(35px, 25vh, 0);
    }

    50% {
        transform: translate3d(-25px, 55vh, 0);
    }

    75% {
        transform: translate3d(30px, 85vh, 0);
    }

    100% {
        transform: translate3d(-15px, calc(100vh + 600px), 0);
    }
}

/* === コンテナ（PC/スマホ共通）=== */
.container {
	width: 100%;
	max-width: 960px;
	margin: 0 auto;
	display: flex;
	justify-content: center; 
	align-items: stretch; 
	background-color: #fff; 
	box-shadow: -moz-box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.6);
	-webkit-box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.6);
	-ms-box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.6);
	box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, 0.6);
	position: relative;
	min-height: 150vh; /* スクロール確認用 */
}

.sidebar, main {
	min-width: 0;
	display: flex;
	flex-direction: column;
	position: relative;
	z-index: 1;
}

.sidebar {
	width: 230px;
	background-color: #07913b;
	color: #fff;
	font-weight: 700;
	position: relative;
	padding-top: 30px;
	z-index: 10;
}

.sidebar ul { list-style: none; }

.sidebar a {
	color: #fff;
	display: block;
	padding: 10px 5px;
	text-decoration: none;
	font-size: 1rem;
	font-family: 'Midashi Go MB31';
	font-weight: 700;
}
.sidebar a:hover {
	background-color: white;
	color: #07913b;
	font-weight: 700;
}
.sidebar a.active {
	background-color: white;
	color: #07913b;
	font-weight: 700;
}
.sidebar a.active2 {
	background-color: white;
	color: #b30622;
	font-weight: 700;
}
.sidebar a.regist {
	background-color: #07913b;
	color: white;
	font-weight: 700;
}
.sidebar a.regist:hover {
	background-color: white;
	color: #07913b;
	font-weight: 700;
}
.sidebar a.deactive {
	background-color: transparent;
}

main {
	width: 730px;
	background: url("../images/top-bg.jpg") no-repeat;
	background-size: contain;
	background-color: #fff;
	position: relative;
}

.top-text { max-width: 730px; }

/* === ロゴ & メニューボタン === */
.logo {
	max-width: 100%;
	height: auto;
	display: block;
	object-fit: contain;
	flex-shrink: 1;
	margin: 0 auto 15px;
}

.menu-btn {
	font-size: 36px;
	line-height: 1;
	cursor: pointer;
	background: none;
	border: none;
	color: #232323;
	position: fixed;
	top: 15px;
	right: 15px;
	z-index: 9998;
	display: block;
}

/* 【PC表示時のみロゴ最大幅を制限】 */
@media screen and (min-width: 769px) {
	.logo { max-width: 200px; }
	.menu-btn { display: none; }
}

#top_bottom_area {
	margin: 270px 20px 30px 20px;
	padding: 15px;
	opacity: 0.9;
}
#whatsnew h2 {
	font-family: 'Midashi Go MB31';
	font-weight: 700;
	line-height: 1.3;
	border-bottom: 3px solid;
	border-image: linear-gradient(270deg, rgba(57, 164, 219, 1) 0%, rgba(175, 212, 112, 1) 100%);
	border-image-slice: 1;
	color: #232323;
	text-align: left;
}
.info-icon {
	display: inline-block;
	color: #07913b;
}
#whatsnew_list li {
	margin: 10px 0 0 0;
	list-style: none;
	list-style-position: inside;
	color: #232323;
	padding-left: 5.4em;
	text-indent: -5.3em;
}
.whatsnew_day {
	color: #07913b;
	font-weight: 700;
}
#whatsnew_a:link { color: #1d3152; }
#whatsnew_a:visited { color: #1d3152; }
#whatsnew_a:hover { color: #fff; }
#whatsnew_a:active { color: #fff; }

main.other {
	background: url("../images/other-bg.jpg") no-repeat;
	background-color: #fff;
}

.other-text { max-width: 100%; }

#text_area {
	margin: 20px 20px 0px 20px;
	padding: 25px 20px 20px 20px;
	color: #232323;
	background: rgba(255,255,255,0.95);
}
#text_area p {
	margin: 1em 0;
}
#text_header h1 {
	margin-top: -5px;
	padding: 10px 0;
	text-align: center;
	line-height: 1.3;
	color: #fff;
	font-family: 'Midashi Go MB31';
	font-weight: 700;
	text-shadow: 
		 2px  2px 5px #07913b,
		 2px  0px 5px #07913b,
		 0px  2px 5px #07913b,
		 2px -2px 5px #07913b,
		-2px  2px 5px #07913b,
		-2px -2px 5px #07913b,
		-2px -0px 5px #07913b,
		-0px -2px 5px #07913b;
	background: linear-gradient(90deg, rgba(100, 173, 134, 1) 0%, rgba(175, 212, 112, 1) 100%);
}
#text_area h2 {
	margin-top: 1.5em;
	padding: .5em .75em;
	background: #B6D87D;
	background: linear-gradient(90deg,rgba(182, 216, 125, 1) 0%, rgba(77, 173, 222, 0) 100%);
	border-left: 6px solid #07913b;
	font-family: 'Midashi Go MB31';
	font-weight: 700;
	font-size: x-large;
}
#underconstruction {
	margin: 170px 0px;
	text-align: center;
}
#underconstruction h2 {
	padding: 0;
	border: 0;
	background: none;
	background-color: none;
	font-size: x-large;
	font-size: 27px;
	color: #07913b;
}
#underconstruction h5 {
	margin-top: 0px;
	font-size: 15px;
	font-weight: 400;
	color: #07913b;
}
h3 {
	padding: .1em 0;
	border-bottom: solid 3px #b5d77d;
	position: relative;
}
h3:after {
	position: absolute;
	content: " ";
	display: block;
	border-bottom: solid 3px #07913b;
	bottom: -3px;
	width: 20%;
}
h4 {
	padding: .25em 0 .25em .5em;
	border-left: 6px solid #07913b;
}
.kome {
	list-style: none;
	padding-left: 0.1em;
	margin-left: 1em;
}
.kome li {
	text-indent: -1.2em;
}
table.standard {
	width: 100%;
	background-color: #d4eed1;
	text-align: left;
	border-collapse: collapse;
	border-spacing: 0;
	margin-top: 30px;
	margin-left: auto;
	margin-right: auto;
}
table.standard td, table.standard th {
	border: 1px solid #bcbcbc;
	padding: 10px;
}
table.standard td:nth-child(even) {
	background: #fff;
}
table.standard thead {
	background: #ff87b1;
}
table.standard thead th {
	font-weight: bold;
	color: #fff;
	text-align: center;
}
.greeting_header {
	display: flex;
	align-items: flex-end;
	font-weight: 700;
	text-align: right;
}
.chairman_text {
	margin: 0 0 0 auto;
}
.chairman_pic_area {
	margin-left: 15px;
}
.chairman_pic {
	max-width: 170px;
	height: auto;
	margin: 0 0 0 auto;
}
table.outline {
	width: 100%;
	text-align: left;
	border-collapse: collapse;
	border-spacing: 0;
}
table.outline th {
	padding: 10px;
	border-bottom: solid 4px #07913b;
	color: #083388
}
table.outline td {
	padding: 10px;
	border-bottom: solid 1px #07913b;
}
.btn, a.btn, button.btn {
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.5;
	position: relative;
	display: inline-block;
	padding: 1rem 4rem;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	-webkit-transition: all 0.3s;
	transition: all 0.3s;
	text-align: center;
	vertical-align: middle;
	text-decoration: none;
	letter-spacing: 0.1em;
	color: #212529;
	border-radius: 0.5rem;
	margin: 10px;
	width: 80%;
}
a.btn-border1 {
	color: #fff;
	border: 2px solid #ff0000;
	border-radius: 0;
	background: #ff0000;
	padding: 1rem 4rem;
}
a.btn-border1:hover {
	color: #ff0000;
	background: #fff;
	padding: 1rem 4rem;
}
a.btn-border2 {
	color: #fff;
	border: 2px solid #0000ff;
	border-radius: 0;
	background: #0000ff;
	padding: 1rem 4rem;
}
a.btn-border2:hover {
	color: #0000ff;
	background: #fff;
	padding: 1rem 4rem;
}
a.btn-border3 {
	color: #fff;
	border: 2px solid #ff87b1;
	border-radius: 0;
	background: #ff87b1;
	padding: 1rem 4rem;
}
a.btn-border3:hover {
	color: #ff87b1;
	background: #fff;
	padding: 1rem 4rem;
}
a.btn-border4 {
	color: #fff;
	border: 2px solid #de9c00;
	border-radius: 0;
	background: #de9c00;
	padding: 1rem 4rem;
}
a.btn-border4:hover {
	color: #de9c00;
	background: #fff;
	padding: 1rem 4rem;
}
.footer {
	grid-area: footer;
	padding: 20px;
	background: #fff;
}
#footer_office {
	display: -webkit-flex;
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	text-align: left;
	margin: 1vw;
	margin-left: auto;
	margin-right: auto;
}
#footer_office-left, #footer_office-right {
	padding: 0 15px;
	flex: 1;
}
.office_1st-line {
	font-weight: bold;
	color: #07913b;
}
#footer_office a:hover {
	color: #c9cb48;
}
#footer_office a:active {
	color: #c9cb48;
}
#footer_copy {
	margin: 0 0 15px 0;
	font-size: .8em;
	text-align: center;
	font-family: "Helvetica", "Arial";
}

#upper-btn {
	font-size: 38px;
	color: #07913b !important;
	text-align: right;
}
#upper-btn a {
	color: #07913b !important;
}
html {
	scroll-behavior: smooth;
}
.go-top {
	opacity: 0.5;
	position: fixed;
	bottom: 20px;
	right: 20px;
	z-index: 10000;
	font-size: 1.3em;
	color: #07913b;
}
.go-top:hover{
	opacity: 1;
}

/* === レスポンシブ対応（スマホ表示時）=== */
@media screen and (max-width: 768px) {
	.container { 
		flex-direction: row-reverse; 
		padding-left: 0;
		width: 100%;
	}

	main { 
		width: 100%; 
		margin: 0 auto; 
		box-shadow: none;
	}

	.logo {
		max-height: 40px;
		margin-right: auto;
	}

	.menu-btn { z-index: 9998; }

	.sidebar {
		position: fixed;
		top: 0;
		right: -230px; 
		width: 230px;
		bottom: 0;
		z-index: 9997;
		transition: right 0.3s ease-in-out;
		display: flex;
		flex-direction: column;
	}

	body.menu-open .sidebar { right: 0; }

	/* オーバーレイは全画面を確実に覆うように設定 */
	body.menu-open::after {
		content: '';
		position: fixed;
		inset: 0;
		background: rgba(0,0,0,0.5);
		z-index: 9996;
    }
	
	#footer_office {
		justify-content: left;
		text-align: left;
	}
	#footer_office-left, #footer_office-right {
		flex: none;
	}
	#footer_office-right {
		margin-top: 0;
	}
	#footer_copy {
		text-align: left;
		padding: 0 2rem 1rem 2rem;
	}
	.greeting_header {
		text-align: left;
	}
	.btn, a.btn, button.btn {
		padding: 1rem 1rem;
	}
	#leaves {
		display: none;
	}
}

/* 【PC/タブレット】幅が 769px 以上の場合 */
@media screen and (min-width: 769px) {
	.container { 
		flex-direction: row; 
		justify-content: center; 
	}
	main { margin-left: 0; margin-right: 0; }
}