@charset "UTF-8";

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

/* ==== 配色 ==== */
:root {
    --theme-color1: #7293DC;
    --theme-color2: #6B76BA;
    --theme-color3: #bd68ee;
    --theme-color4: #000C16;
    --color-white: #fff;
    --color-link: #d1a162;
    --text-color: var(--color-white);
    --menu-bg: #7099ad85;
    --bg-color: #000c16ce;
    --bg-color2: #000c16;
}

/* ================================ */
/*     リセット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,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;
}

input,textarea,button,label:has(input){
    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 Old Mincho', 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,body::after{
    content: "";
    width: 100%;
    height: 100%;
    position: fixed;
}

body::before{
    background-image: url(../images/galaxy.jpg);
    background-repeat: no-repeat;
    background-position: center center;
    background-attachment: fixed;
    background-size: cover;
    z-index: -5;
}

body::after{
    background-image: linear-gradient(135deg,transparent 15%, var(--bg-color) 20%,var(--bg-color) 85%,transparent 100%);
    z-index: -3;
}

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

a:hover{
    opacity: 0.5;
}

a:not([href]){
    opacity: 0.5;
    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);
    color: var(--color-white);
    background-color: var(--theme-color1);
}

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

input,textarea{
    background: #9eb8f0;
    padding: 2px;
    color: var(--text-color);
}

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(--theme-color2);
}

input:hover,input:focus,textarea:hover,textarea:focus,
button:hover,label:has(input[type="checkbox"]),label:has(input[type="radio"]){
    border:2px solid var(--color-white);
}

label:has(input[type="checkbox"]),label:has(input[type="radio"]){
    border-color: transparent;
}

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

input[type="button"]:hover,input[type="submit"]:hover,
label:has(input:checked),
button:hover{
    opacity: 0.5;
}

label:has(input:checked){
    opacity: 0.5;
}

/* ==== hタグ ==== */
h1,h2,h3,h4,h5,h6{
    font-family: 'Playball', 'Yomogi', serif;
    font-weight: 400;
    margin: 20px 0;
}

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

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

h1 a,h2 a,h3 a{
    color: var(--theme-color3);
    position: relative;
}

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

h1 a span,h1 span span,
h2 a span,h2 span span,
h3 a span,h3 span span{
    height: 100%;
    white-space: nowrap;
    opacity: 0.2;
    position: absolute;
    top: 0;
    right: calc(1.6rem * -2.5);
}

h1 a:hover,h2 a:hover,h3 a:hover{
    opacity: 1;
}

h1 a:hover{
    text-shadow:5px 5px 5px var(--theme-color2);
}

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

h2 a:hover{
    text-shadow: 3px 3px 4px var(--theme-color2);
}

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

h3 a:hover{
    text-shadow: 2px 2px 3px var(--theme-color2);
}

h3::before{
    content: "";
    font-size: calc(1.6rem * 2);
    border-left: 5px solid var(--theme-color3);
    padding-right: 10px;
}

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

h3 span,h3 a{
    padding: 10px calc(1.6rem * 2) 5px 0;
}

h3 a span{
    border: none;
    bottom: -7px;
}

h3 span span,h4 span{
    border: none;
    bottom: 0px;
}

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

h4{
    font-weight: bold;
}

h5::before{
    content: "";
    font-size: 1.6rem;
    line-height: 1.6rem;
    border-left: 3px solid var(--text-color);
    padding-right: 10px;
}

/* ==== ヘッダー ==== */
header{
    padding-top: 50px;
    height: 200px;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
}

header h1{
    text-align: center;
}

header nav ul{
    padding: 0;
    list-style: none;
    display: flex;
	justify-content: center;
}

header nav ul li:not(:last-of-type)::after{
    content: "/";
    margin:0 5px;
}

header.scroll{
    position: fixed;
    padding-top: 0px;
    top: -350px;
    width: auto;
    left: 0;
    z-index: 5;
    transform: rotate(-20deg);
}

header.scroll::before{
    content: "";
    background-color: var(--theme-color4);
    display: inline-block;
    position: absolute;
    top: 0;
    left: -50px;
    width: 700px;
    height: 150px;
    filter: blur(20px);
}

.in{
    animation: smooth-in 0.5s ease-in-out forwards;
}

@keyframes smooth-in{
    0%{
        top: -350px;
    }
    100%{
        top: 0;
    }
}

.out{
    animation: smooth-out 0.5s ease-in-out forwards;
}

@keyframes smooth-out{
    0%{
        top: 0;
    }
    100%{
        top: -350px;
    }
}

header.scroll h1{
    text-align: left;
    margin-top: 40px;
    margin-left: 20px;
    margin-bottom: 0;
}

header.scroll nav{
    position: relative;
}

header.scroll nav ul{
    margin-left: 10px;
}

#sp-menu{ display: none; }

/* ==== メイン ==== */
main{
    width: 100%;
    max-width: 800px;
    margin: auto;
    text-align: center;
}

body:has(header) main{
    margin: 200px auto;
    text-align: left;
}

article{
    margin: 25px 0;
    padding: 25px;
}

section{
    margin: 25px 0 100px;
    padding: 25px;
    border: 2px solid var(--theme-color2);
    background-color: var(--bg-color2);
}

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

/* ==== フッター ==== */
footer{
    text-align: center;
    margin-top: 100px;
}

footer p{
    margin: 0;
    color: var(--color-white);
}

footer nav{
    position: fixed;
    bottom: 50px;
    width: 100%;
    z-index: 1;
    color: var(--color-white);
}

footer nav ul{
    list-style: none;
    display: flex;
    justify-content: center;
    padding: 0;
}

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(--theme-color1);
    color: var(--color-white);
    border: none;
}

footer nav ul li button:hover{
    border: none;
}

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

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:1024px){
    /* ==== ヘッダー ==== */
    header{
        position: static;
    }

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

    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-color2);
        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(--color-white);
    }

    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(--theme-color1);
        color: var(--color-link);
        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;
    }
}

/* ==== 装飾 ==== */
em{
    background: linear-gradient(180deg, transparent 70%, var(--theme-color2) 70%);
}

strong{
    background: var(--theme-color2);
}

hr{
    margin: 70px auto;
    height: 1.6rem;
	background: linear-gradient(-45deg,transparent 35%,var(--theme-color2) 45%, var(--theme-color2) 55%,transparent 65%);
	background-size: 1.6rem 1.6rem;
    width: calc(1.6rem*5);
	border: none;
}

span:has(span.back){
    display: inline-block;
    position: relative;
}

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

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

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(--theme-color2);
}

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

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

/* ==== 小説ページ ==== */
section#NOVEL-MAIN{
    border: none; /* 本文にも枠を付ける場合はこちら削除してください */
}

/* ==== その他 ==== */
.block{ display: block; }
.center{ text-align: center; }
.right{ text-align: right; }
.border{ 
    border: 1px solid var(--theme-color2);
    padding: 1.6rem;
}
.dotted{
    border: 1px dotted var(--theme-color2);
    padding: 1.6rem;
}
.dashed{
    border: 1px dashed var(--theme-color2);
    padding: 1.6rem;
}
.border-2{
    border-width: 2px;
}
.playball{ font-family: 'Playball', cursive; }
.kleeone{ font-family: 'Klee One', serif; }
.zenoldmincho{ font-family: 'Zen Old Mincho', serif; }
.zenkaku{ font-family: 'Zen Kaku Gothic New', sans-serif; }

/* ==== レスポンシブ ==== */
@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;
    }
}