@charset "UTF-8";

/* ============================================= */
/*      Template name : hotaru                   */
/*      Copyright : 2023 Serenity                */
/*      利用規約を遵守の上、ご利用ください。     */
/*      二次配布・販売は禁止しております。       */
/*      https://serenity.talemaze.xyz/           */
/* ============================================= */

/* ==== 配色 ==== */
:root {

    /* フォーム */
    --form-text-color: var(--bg-color);
    --form-bg-color: #a9f0a9;
    --form-bg-color2: #c7f1c7;
    --form-hover-text-color: var(--form-bg-color);
    --form-hover-bg-color: #658f65;
    --form-hover-border-color: #3eaf3e;
}

/* ================================ */
/*     リセットCSS                  */
/*     基本触らない方がいいもの     */
/* ================================ */
* {
    box-sizing: border-box;
}

html {
    font-size: 62.5%;
}

:focus {
    border: none;
}

a {
    text-decoration: none;
}

a,a::after,a::before,
button,button::after,button::before,
input,textarea,select,label:has(input) {
    transition: all 0.3s;
}

a,a::after,a::before,
button,button::after,button::before,
input,select,label:has(input[type="checkbox"]),label:has(input[type="radio"])
{
    cursor: pointer;
}

button,input {
    border: none;
    border: 0;
}

button {
    background: transparent;
}

input,textarea {
    box-shadow: none;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
    border:2px solid transparent;
}

input[type="text"],textarea {
    cursor: auto;
}

dl,ul,ol,form {
    margin: 0;
    word-break: break-all;
}

p {
    margin: 25px 0;
    word-break: break-all;
}

p:first-child {
    margin-top: 0;
}

p:last-child {
    margin-bottom: 0;
}

@media only screen and (max-width: 1024px) {
    p:last-child {
        margin-bottom: 0;
    }
}

/* ============================================== */
/*     レイアウト                                 */
/*     変更する際はここから下をおすすめします     */
/* ============================================== */
/* ==== 全体 ==== */
body,button,input,textarea{
    font: 400 1.6rem/calc(1.6rem + 1.05rem) 'Zen Kaku Gothic New', sans-serif;
    background-color: var(--bg-color);
    color: var(--text-color);
}

body{
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    width: 100%;
    position: relative;
}

body::before{
    content: "";
    background-image: url(../images/forest.jpg);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    -webkit-mask-image: linear-gradient(90deg,transparent, black 50%,transparent 100%);
    mask-image: linear-gradient(90deg,transparent, black 50%,transparent 100%);
    width: 100%;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    opacity: 0.5;
}

body:has(header)::before{
    left: -40%;
}

/* 蛍パーティクル */
#particles-js{ 
	position: fixed;
	z-index: 0;
	width: 100%;
	height: 100%;
}

/* ==== リンク ==== */
a{
    color: var(--color-link);
}

a:hover{
    color:#af7dff;
}

a:not([href]),a:not([href])::before{
    opacity: 0.5;
    color:#af7dff;
    cursor: default;
}

a[target="_blank"]{
    position: relative;
}

a[target="_blank"]::before{
    content: "\e157";
    font-family: "Material Icons";
    display: inline-block;
    transform: rotate(-45deg);
}

a.btn{
    text-align: center;
    padding: 2px 2.5px;
    line-height: calc(1.6rem * 2);
    background-color: var(--form-bg-color);
    color: var(--form-text-color)
}

a.btn:hover{
    background-color: var(--form-hover-bg-color);
    color: var(--form-hover-text-color);
}

a.btn:not([href]):hover{
    background-color: var(--form-bg-color);
    opacity: 0.5;
    color:#5958c4;
}

/* ==== フォーム ==== */
.required{ position: relative; }
.required::after{
    content: "*";
    color: red;
    position: absolute;
    top: -5px;
}

input,textarea{
    background: var(--form-bg-color);
    padding: 2px;
    color: var(--form-text-color);
}

input[type="text"],textarea{
    background: var(--form-bg-color2);
}

input{
    width: calc(1.6rem * 15);
    max-width: 100%;
}

textarea{
    width: 100%;
}

label:has(input){
    display: inline-block;
}

input[type="checkbox"],input[type="radio"]{
    display: none;
}

textarea{
    height: calc((1.6rem + 1.25rem) * 4);
}

input::placeholder,textarea::placeholder{
    color: var(--form-text-color);
}

input:hover,input:focus,textarea:hover,textarea:focus{
    border:2px solid var(--form-hover-border-color);
}

input[type="button"],input[type="submit"],
label:has(input[type="checkbox"]),label:has(input[type="radio"]),
button{
    width: auto;
    margin: 2px;
    padding: 0 5px;
    color: var(--form-text-color);
    background-color: var(--form-bg-color);
    border: none;
}

input[type="button"]:hover,input[type="submit"]:hover,
label:has(input:checked),
button:hover{
    background-color: var(--form-hover-bg-color);
    border-color:var(--form-hover-border-color);
    color: var(--form-hover-text-color);
}

label:has(input:checked){
    background-color: var(--form-hover-bg-color);
}

/* ==== hタグ ==== */
h1,h2,h3,h4,h5,h6{
    font-weight: 400;
    text-align: center;
}

h1{
    font-family: 'Noto Serif JP', serif;
}

h2,h3,h4,h5,h6{
    font-family: 'Roboto','Stick', sans-serif;
}

h1,h1 a,
h2,h2 a,
h3,h3 a{
    color: var(--theme-color1);
}

h1{
    font-size: calc(1.6rem * 3);
    line-height: calc(1.6rem * 3);
}

h1 a:hover{
    color: var(--theme-color1-dark);
}

h2{
    font-size: calc(1.6rem * 3);
    line-height: calc(1.6rem * 3);
    margin: 50px 0;
}

h3{
    font-size: calc(1.6rem * 2);
    line-height: calc(1.6rem * 2);
    margin: 50px 0;
}

h3 span{
    display: inline-block;
    position: relative;
}

h3 span::before{
    content: '';
    position: absolute;
    left: 50%;
    bottom: -10px;
    display: inline-block;
    width: calc(1.6rem * 5);
    height: 2px;
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    transform: translate(-50%);
    background-color: var(--theme-color1);
}

h2:first-child,h3:first-child{
    margin-top: 0;
}

h4,h5{
    font-size: calc(1.6rem * 1.3);
    line-height: calc(1.6rem * 1.3);
    margin: 25px 0;
    text-align: start;
}

h4{
    font-weight: 500;
}

h4 span{
    display: inline-block;
    padding-bottom: 5px;
    border-bottom: 2px solid var(--text-color);
}

/* ==== ヘッダー ==== */
header{
    position: fixed;
    width: 200px;
    height: 100vh;
    top: 100px;
    left: 50px;
    z-index: 1;
}

header h1{
    text-align: center;
    text-shadow: 1px 1px 2px black,
    0 0 1em black,
    0 0 0.2em black;
}

header nav{
    background-image: linear-gradient(90deg,transparent 20%, rgba(117, 124, 53, 0.685) 50%);
    padding: 25px;
    text-align: end;
}

header nav ul{
    list-style: none;
    padding: 0;
}

header nav ul a{
    color: var(--theme-color1-light);
}

#sp-menu{ display: none; }

/* ==== メイン ==== */
main{
    text-align: start;
    width: 100%;
    margin: auto;
    z-index: 1;
}

body:has(header) main{
    position: relative;
    margin: 100px auto;
}

article{
    width: 100%;
    margin: 25px 0;
    padding: 25px;
}

section{

}

body#INDEX section{
    margin: 0;
}

section:last-child{
    margin-bottom: 0;
}

/* ==== フッター ==== */
footer{
    text-align: center;
    margin-top: 100px;
    z-index: 1;
    color: var(--color-white);
}

footer p{
    text-align: end;
    padding-right: 20px;
    margin: 0;
}

footer nav{
    position: fixed;
    bottom: 50px;
    width: 100%;
}

footer nav ul{
    list-style: none;
    display: flex;
    justify-content: end;
    padding: 0;
    margin-right: 10px;
}

footer nav ul li{
    display: inline-block;
    width: 30px;
    height: 30px;
    margin: 0 2px;
}

footer nav ul li button,footer nav ul li a{
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: none;
    background-color: var(--form-bg-color);
    color: var(--bg-color);
}

footer nav ul li a{
    display: inline-block;
    text-align: center;
    font-size: 20px;
    line-height: 30px;
}

footer nav ul li a:hover{
    background-color: var(--form-hover-bg-color);
    color: var(--form-hover-text-color);
}

footer nav ul li button::after,footer nav ul li a::after{
    font-family: "Material Icons";
}

footer nav ul li#pagetop button::after{
    content: "\eacf";
}

footer nav ul li#home a::after{
    content: "\e88a";
}

footer nav ul li#prev a::after{
    content: "\e5cb";
}

footer nav ul li#next a::after{
    content: "\e5cc";
}

footer nav ul li#toc a::after{
    content: "\e8de";
}

@media only screen and (max-width: 1536px) {
    body:has(header) main{
        margin-left: 350px;
        width: calc(100% - 350px);
    }
}

/* ==== レスポンシブ ==== */
@media only screen and (max-width:1024px){
    body:has(header)::before{
        left: 0;
        background-position: center;
    }

    /* ==== ヘッダー ==== */
    header{
        position: static;
        width: 100%;
        height: 100px;
        z-index: 5;
    }

    header nav{
        display: none;
        position: fixed;
        top: 0;
        right: 0;
        width: 100%;
        height: 100%;
        background-color: transparent;
        background-image: none;
        padding: 0;
    }

    header.open nav{
        animation: smooth-show 0.5s ease-in forwards;
    }

    @keyframes smooth-show {
        0%{
            background-color: transparent;
        }
        100%{
            background-color: var(--menu-bg);
        }
    }

    header.close nav{
        animation: smooth-hide 0.5s ease-in forwards;
    }

    @keyframes smooth-hide {
        0%{
            background-color: var(--menu-bg);
        }
        100%{
            background-color: transparent;
        }
    }

    header.open nav,header.close nav{
        display: block;
    }
    
    header.open nav ul,header.close nav ul{
        position: fixed;
        display: flex;
        flex-direction: column;
        justify-content: center;
        right: -50%;
        width: 40%;
        height: 100%;
        margin-left: 50%;
        background-color: var(--theme-color1-light);
        animation: smooth-in 0.5s ease-in-out forwards;
        z-index: 10;
    }

    header.close nav ul{
        right: 0;
        animation: smooth-out 0.5s ease-in-out forwards;
    }

    @keyframes smooth-in{
        0%{
            right: -50%;
        }
        100%{
            right: 0;
        }
    }

    @keyframes smooth-out{
        0%{
            right: 0;
        }
        100%{
            right: -50%;
        }
    }

    header.open nav ul li,header.close nav ul li{
        margin: 10px auto;
        margin-left: 20px;
    }

    header.open nav a,header.close nav a{
        color: var(--bg-color);
    }

    header.open nav ul li:not(:last-of-type)::after,
    header.close nav ul li:not(:last-of-type)::after{
        content: "";
    }

    #sp-menu{
        display: block;
        position: fixed;
        top: 20px;
        right: 20px;
        width: 50px;
        height: 50px;
        background-color: var(--form-bg-color);
        color: var(--form-text-color);
        z-index: 10;
    }

    button#sp-menu:hover{
        opacity: 1;
    }

    #sp-menu::after{
        content: "\e5d2";
        font-family: "Material Icons";
        font-size: 30px;
        line-height: 50px;
    }

    #sp-menu.open:after{
        content: "\e5cd";
        font-size: 40px;
    }

    /* ==== メイン ==== */
    body:has(header) main{
        margin: auto;
        width: 100%;
    }

    /* ==== footer ==== */
    body:has(header) footer{
        width: 100%;
        margin-left: auto;
    }

    footer p{
        text-align: center;
        padding-right: 0;
    }

    footer nav{
        width: 100%;
    }
}

/* ==== スマホサイズ ==== */
@media only screen and (max-width:799px){
    section{
        padding: 25px;
    }
}

/* ==== 装飾 ==== */
b{
    font-weight: 500;
}

em{
    background: linear-gradient(180deg, transparent 70%, var(--theme-color3) 70%);
}

strong{
    background: var(--theme-color3);
    font-weight: 500;
}

hr {
    border: none;
    text-align: center;
    overflow: visible;
    margin: 70px auto;
}

hr::after{
    content: "";
    background-image: url(../images/horaru.png);
    background-repeat: space;
    display: inline-block;
    height: 16px;
    width: 60px;
    line-height: 30px;
    position: relative;
}

/* ==== 背景文字 ==== */
span:has(span.back),a:has(span.back){
    display: inline-block;
    position: relative;
}

span.back{
    height: 100%;
    white-space: nowrap;
    opacity: 0.3;
    position: absolute;
    left: calc(1.6rem * -0.5);
}

span.right{
    left: auto;
    right: calc(1.6rem * -1);
}

span span.right{
    right: calc(1.6rem * -0.5);
}

span.up{
    top: calc(1.6rem / -2);
}

/* ==== リスト ==== */
ul.row{
    list-style: none;
    padding: 0;
    font-size: 0;
}

ul.row li{
    display: inline;
    font-size: 1.6rem;
}

ul.row li::after{
    margin: 0 5px;
}

ul.row.slash li::after{
    content: "/";
}

ul.row.disc li::after{
    content: "・";
    margin: 0;
}

ul.row li:last-child:after{
    content:"";
}

dl dt,dl dd,
dl.row dt,dl.row dd{
    margin: 0 0 0.8rem;
}

dl dd,dl.row dd{
    padding: 0 0 0.8rem calc(1.6rem * 3);
}

dl.row{
    display: flex;
    flex-wrap: wrap;
    box-sizing: border-box;
    width: 100%;
}

dl.row dt{
    width: calc(1.6rem * 10);
}

dl.row dd{
    width: calc(100% - calc(1.6rem * 10));
}

dl.row.disc dd{
    padding: 0 0 0.8rem;
}

dl.row.disc dd::before{
    content:"・・・";
}

dl.underline dd,dl.underline dd,
dl.row.underline dt{
    border-bottom: 1px solid var(--border-color);
}

dl.border{
    border: 1px solid var(--border-color);
    padding: 1.6rem;
}

dl.border dt:last-of-type,dl.border dd:last-of-type{
    border: none;
    padding-bottom: 0;
    margin-bottom: 0;
}

/* ==== その他 ==== */
.block{ display: block; }
.center{ text-align: center; }
.right{ text-align: right; }
.border{ 
    border: 1px solid var(--border-color);
    padding: 1.6rem;
}
.dotted{
    border: 1px dotted var(--border-color);
    padding: 1.6rem;
}
.dashed{
    border: 1px dashed var(--border-color);
    padding: 1.6rem;
}
.border-2{
    border-width: 2px;
}

.noto{font-family: 'Noto Serif JP', serif;}
.roboto{font-family: 'Roboto', sans-serif;}
.stick{font-family: 'Stick', sans-serif;}
.zenkaku{font-family: 'Zen Kaku Gothic New', sans-serif;}




.fixed-box { position: fixed; bottom: 0; right: 0; }



/* ==== レスポンシブ ==== */
@media only screen and (max-width:1024px){
    /* 1列解除 */
    dl.row{
        display: block;
    }

    dl.row dt,dl.row dd{
        width: 100%;
    }
    
    dl.row.underline dt{
        border: none;
    }
}