@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;
	padding-bottom: 20px;
}

.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: #223190; }
a:visited { color: #223190; }
a:hover { color: #c9cb48; }
a:active { color: #c9cb48; }

/* 背景 */
.hero-bg {
    position: fixed;
    inset: 0;

    background:
        radial-gradient(
            ellipse 75% 48% at 50% 8%,
            rgba(255,255,255,0.95) 0%,
            rgba(231,244,255,0.48) 45%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            #dce9fa 0%,
            #e5effb 20%,
            #edf4fc 40%,
            #f4f8fd 60%,
            #fafcff 80%,
            #ffffff 100%
        );

    overflow: hidden;
    z-index: -1;
}

/* 3枚の画像を重ねるエリア */
.top-visual {
    position: relative;
    width: 100%;
    aspect-ratio: 730 / 926;
    overflow: hidden;
}

/* 3枚共通 */
.top-layer {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
}

/* 1枚目：ゆっくりズームアウト */
.top-bottom {
    z-index: 1;
    background: url("../images/bg-top-bottom.jpg")
                center / 100% 100% no-repeat;
    animation: bgAppear 2.5s ease-out forwards;
}

/* 2枚目：ぼかしが徐々に消える */
.top-high {
    z-index: 2;
    background: url("../images/bg-top-high.jpg")
                center / 100% 100% no-repeat;
    animation: highAppear 2.5s ease-out 1.5s forwards;
}

/* 3枚目：文字が下から浮かび上がる */
.top-text {
    z-index: 3;
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: contain;
    animation: elegantText 2.8s
               cubic-bezier(0.22, 1, 0.36, 1)
               3s forwards;
}

/* 背景 */
@keyframes bgAppear {
    from {
        opacity: 0;
        transform: scale(1.06);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* 中間画像 */
@keyframes highAppear { 0% { opacity: 0; filter: brightness(1.4) blur(8px); } 65% { opacity: .85; filter: brightness(1.2) blur(2px); } 100% { opacity: 1; filter: brightness(1) blur(0); } }

/* 文字 */
@keyframes elegantText {
    0% {
        opacity: 0;
        transform: translateY(25px) scale(0.98);
        filter: blur(5px);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

/* === コンテナ（PC/スマホ共通）=== */
.container {
    width: 100%;
    max-width: 960px;
    margin: 0 auto;

    display: flex;
    justify-content: center;
    align-items: stretch;

    background-color: #fff;

    box-shadow:
        0 2px 8px rgba(0, 0, 0, 0.12),
        0 8px 20px rgba(0, 0, 0, 0.08);

    position: relative;
}

.sidebar, main {
	min-width: 0;
	display: flex;
	flex-direction: column;
	position: relative;
	z-index: 1;
}

.sidebar {
	width: 230px;
	background-color: #223190;
	color: #fff;
	font-weight: 700;
	position: relative;
	padding-top: 50px;
	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: #223190;
	font-weight: 700;
}
.sidebar a.active {
	background-color: white;
	color: #223190;
	font-weight: 700;
}
.sidebar a.active2 {
	background-color: white;
	color: #b30622;
	font-weight: 700;
}
.sidebar a.regist {
	background-color: #223190;
	color: white;
	font-weight: 700;
}
.sidebar a.regist:hover {
	background-color: white;
	color: #223190;
	font-weight: 700;
}
.sidebar a.deactive {
	background-color: transparent;
}

main {
	width: 730px;
	background-color: #eff4fa;
	position: relative;
}

/* === ロゴ & メニューボタン === */
.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: #fff;
	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: 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(
	to right,
	#04135f 0%,
	#0a2574 10%,
	#0d3786 20%,
	#114696 30%,
	#1857a5 40%,
	#1a5dab 50%,
	#1c64b0 60%,
	#1d6db6 70%,
	#267cc1 80%,
	#3092d0 90%,
	#6baedf 100%
	);
	border-image-slice: 1;
	color: #232323;
	text-align: left;
}
.info-icon {
	display: inline-block;
	color: #223190;
}
#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: #223190;
	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/bg-top-high.jpg") no-repeat;
	background-color: #eff4fa;
	background-position-y: -180px;
}

.other-text { max-width: 100%; }

#text_area {
	margin: 250px 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;
	background-color: #223190;
}
#text_area h2 {
	margin-top: 1.5em;
	padding: .5em .75em;
	background: #c2dff1;
	background: linear-gradient(90deg,rgba(194, 223, 241, 1) 0%, rgba(194, 223, 241, 0) 100%);
	border-left: 6px solid #223190;
	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: #223190;
}
#underconstruction h5 {
	margin-top: 0px;
	font-size: 15px;
	font-weight: 400;
	color: #223190;
}
h3 {
	padding: .1em 0;
	border-bottom: solid 3px #c2dff1;
	position: relative;
}
h3:after {
	position: absolute;
	content: " ";
	display: block;
	border-bottom: solid 3px #223190;
	bottom: -3px;
	width: 20%;
}
h4 {
	padding: .25em 0 .25em .5em;
	border-left: 6px solid #223190;
}
.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 #223190;
	color: #083388
}
table.outline td {
	padding: 10px;
	border-bottom: solid 1px #223190;
}
.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: #223190;
}
#footer_office a:hover {
	color: #c9cb48;
}
#footer_office a:active {
	color: #c9cb48;
}
#footer_copy {
	padding: 0 0 15px 0;
	background: #fff;
	font-size: .8em;
	text-align: center;
	font-family: "Helvetica", "Arial";
}

#upper-btn {
	font-size: 38px;
	color: #223190 !important;
	text-align: right;
}
#upper-btn a {
	color: #223190 !important;
}
html {
	scroll-behavior: smooth;
}
.go-top {
	opacity: 0.5;
	position: fixed;
	bottom: 20px;
	right: 20px;
	z-index: 10000;
	font-size: 1.3em;
	color: #223190;
}
.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; }
}