@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;
	background-attachment: fixed;
	background-position: center 35%;
	background-size: cover;
}

a { word-break: break-all; }
a:link { color: #005dad; }
a:visited { color: #005dad; }
a:hover { color: #c9cb48; }
a:active { color: #c9cb48; }

/* 背景 */
.hero-bg {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;

    background-color: #e0f2fc;
    background-image: url("../images/base-bg.jpg");
    background-position: center 35%;
    background-size: cover;
    background-repeat: no-repeat;
}

/* 背景画像のコンテナ */
.hero {
    position: relative;
}

/* レンズフレア全体 */
.lens-flare {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 1;

    --flare-x: 20%;
    --flare-y: 35%;
}

/* 大きな虹色の光輪 */
.flare-halo {
    position: absolute;
    width: 580px;
    height: 580px;
    left: var(--flare-x);
    top: var(--flare-y);

    border-radius: 50%;

    background: radial-gradient(
    circle,
    transparent 42%,
    rgba(255,255,255,0.06) 48%,
    rgba(255,170,190,0.30) 55%,
    rgba(255,230,150,0.28) 59%,
    rgba(150,240,220,0.27) 63%,
    rgba(150,205,255,0.32) 67%,
    rgba(190,155,255,0.22) 71%,
    transparent 76%
);

    transform: translate(-50%, -50%);
    filter: blur(5px);
    opacity: 0.95;

    animation: halo-breathe 8s ease-in-out infinite alternate;
}

/* 放射状の細い光線 */
.flare-rays {
    position: absolute;
    width: 520px;
    height: 520px;
    left: var(--flare-x);
    top: var(--flare-y);

    border-radius: 50%;

    background:
        repeating-conic-gradient(
            from 0deg,
            rgba(255,255,255,0.13) 0deg,
            rgba(255,255,255,0.03) 0.6deg,
            transparent 1.2deg,
            transparent 12deg
        );

    -webkit-mask-image: radial-gradient(
        circle,
        rgba(0,0,0,0.9) 0%,
        rgba(0,0,0,0.5) 30%,
        transparent 70%
    );

    mask-image: radial-gradient(
        circle,
        rgba(0,0,0,0.9) 0%,
        rgba(0,0,0,0.5) 30%,
        transparent 70%
    );

    transform: translate(-50%, -50%);
    animation: rays-breathe 6s ease-in-out infinite alternate;
}

/* 中心の白い発光 */
.flare-core {
    position: absolute;
    width: 220px;
    height: 220px;
    left: var(--flare-x);
    top: var(--flare-y);

    border-radius: 50%;

    background: radial-gradient(
        circle,
        rgba(255,255,255,1) 0%,
        rgba(255,255,255,0.98) 6%,
        rgba(255,255,255,0.75) 12%,
        rgba(235,250,255,0.40) 25%,
        rgba(210,240,255,0.15) 45%,
        transparent 70%
    );

    mix-blend-mode: screen;

    animation: core-pulse 4s ease-in-out infinite alternate;
}

/* 六角形の反射光 */
.flare-hex {
    position: absolute;

    width: 65px;
    height: 65px;

    clip-path: polygon(
        25% 0%,
        75% 0%,
        100% 50%,
        75% 100%,
        25% 100%,
        0% 50%
    );

    /* 白一色のグラデーション */
    background: linear-gradient(
        135deg,
        rgba(255,255,255,0.95) 0%,
        rgba(255,255,255,0.75) 45%,
        rgba(255,255,255,0.40) 100%
    );

    animation: hex-float 9s ease-in-out infinite alternate;
}

/* 六角形の配置 */
.flare-hex-1 {
    width: 75px;
    height: 75px;
    left: 8%;
    top: 10%;
}

.flare-hex-2 {
    width: 50px;
    height: 50px;
    left: 18%;
    top: 28%;
    animation-delay: -2s;
}

.flare-hex-3 {
    width: 35px;
    height: 35px;
    left: 30%;
    top: 40%;
    animation-delay: -4s;
}

.flare-hex-4 {
    width: 90px;
    height: 90px;
    right: 7%;
    top: 72%;
    animation-delay: -3s;
}

.flare-hex-5 {
    width: 55px;
    height: 55px;
    right: 17%;
    top: 82%;
    animation-delay: -5s;
}

/* 中央の発光アニメーション */
@keyframes core-pulse {
    0% {
        transform: translate(-50%, -50%) scale(0.85);
        opacity: 0.65;
    }

    25% {
        transform: translate(-50%, -50%) scale(1.1);
        opacity: 1;
    }

    100% {
        transform: translate(-50%, -50%) scale(1.2);
        opacity: 0.85;
    }
}

/* 虹色の光輪 */
@keyframes halo-breathe {
    from {
        transform: translate(-50%, -50%) scale(0.95);
        opacity: 0.65;
    }

    to {
        transform: translate(-50%, -50%) scale(1.08);
        opacity: 0.85;
    }
}

/* 放射光 */
@keyframes rays-breathe {
    from {
        transform: translate(-50%, -50%) rotate(0deg);
        opacity: 0.35;
    }

    to {
        transform: translate(-50%, -50%) rotate(8deg);
        opacity: 0.75;
    }
}

/* 六角形のゆっくりした移動 */
@keyframes hex-float {
    from {
        transform: translate(0, 0) rotate(40deg);
        opacity: 0.55;
    }

    to {
        transform: translate(20px, -15px) rotate(40deg);
        opacity: 0.90;
    }
}

/* モバイルでは非表示 */
@media screen and (max-width: 768px) {
    .lens-flare {
        display: none;
    }
}

/* 動きを減らす設定 */
@media (prefers-reduced-motion: reduce) {
    .lens-flare * {
        animation: none !important;
    }
}

/* === コンテナ（PC/スマホ共通）=== */
.container {
	width: 100%;
	max-width: 960px;
	margin: 0 auto;
	display: flex;
	justify-content: center; 
	align-items: stretch; 
	background-color: #fff; 
	box-shadow:
	-12px 0 35px rgba(70, 120, 160, 0.08),
	 12px 0 35px rgba(70, 120, 160, 0.08);
	position: relative;
	z-index: 1;
}

.sidebar, main {
	min-width: 0;
	display: flex;
	flex-direction: column;
	position: relative;
	z-index: 1;
}

.sidebar {
	width: 230px;
	background-color: #005dad;
	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-weight: 700;
}
.sidebar a:hover {
	background-color: white;
	color: #005dad;
	font-weight: 700;
}
.sidebar a.active {
	background-color: white;
	color: #005dad;
	font-weight: 700;
}
.sidebar a.active2 {
	background-color: white;
	color: #b30622;
	font-weight: 700;
}
.sidebar a.regist {
	background-color: #005dad;
	color: white;
	font-weight: 700;
}
.sidebar a.regist:hover {
	background-color: white;
	color: #005dad;
	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: 0px 20px 30px 20px;
	padding: 15px;
	opacity: 0.9;
}
#whatsnew h2 {
	font-weight: 700;
	line-height: 1.3;
	border-bottom: 3px solid;
	border-image: linear-gradient(
		to right,
		#facb66 0%,
		#fef666 25%,
		#bbda79 50%,
		#96daf5 75%,
		#ce6ab5 100%
	);
	border-image-slice: 1;
	color: #232323;
	text-align: left;
}
.info-icon {
	display: inline-block;
	color: #005dad;
}
#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: #005dad;
	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/top-bg.jpg") no-repeat;
	background-position: 0 -550px;
	background-color: #fff;
}

.other-text { max-width: 100%; }

#text_area {
	margin: 180px 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-weight: 700;
	text-shadow: 
		 2px  2px 5px #005dad,
		 2px  0px 5px #005dad,
		 0px  2px 5px #005dad,
		 2px -2px 5px #005dad,
		-2px  2px 5px #005dad,
		-2px -2px 5px #005dad,
		-2px -0px 5px #005dad,
		-0px -2px 5px #005dad;
	background: linear-gradient(
		to right,
		#fad586 0%,
		#fefa8e 25%,
		#cae298 50%,
		#afe3f8 75%,
		#db91c7 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 #005dad;
	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: #005dad;
}
#underconstruction h5 {
	margin-top: 0px;
	font-size: 15px;
	font-weight: 400;
	color: #005dad;
}
h3 {
	padding: .1em 0;
	border-bottom: solid 3px #b5d77d;
	position: relative;
}
h3:after {
	position: absolute;
	content: " ";
	display: block;
	border-bottom: solid 3px #005dad;
	bottom: -3px;
	width: 20%;
}
h4 {
	padding: .25em 0 .25em .5em;
	border-left: 6px solid #005dad;
}
.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 #005dad;
	color: #083388
}
table.outline td {
	padding: 10px;
	border-bottom: solid 1px #005dad;
}
.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: #005dad;
}
#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: #005dad !important;
	text-align: right;
}
#upper-btn a {
	color: #005dad !important;
}
html {
	scroll-behavior: smooth;
}
.go-top {
	opacity: 0.5;
	position: fixed;
	bottom: 20px;
	right: 20px;
	z-index: 10000;
	font-size: 1.3em;
	color: #005dad;
}
.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; }
}