@charset "UTF-8";
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+JP:100,300|Raleway:100,300&display=swap");

/* リセットCSS */
/* リセットCSSのライセンス表記 */
/* 
Copyright (c) 2021 Elad Shechter - https://github.com/elad2412/the-new-css-reset
Released under the MIT license
https://opensource.org/license/mit/
*/
*:where(:not(html,iframe,canvas,img,svg,video,audio):not(svg *,symbol *)){all:unset;display:revert}*,*::before,*::after{box-sizing:border-box}a,button{cursor:revert}ol,ul,menu,summary{list-style:none}img{max-inline-size:100%;max-block-size:100%}table{border-collapse:collapse}input,textarea{-webkit-user-select:auto}textarea{white-space:revert}meter{-webkit-appearance:revert;appearance:revert}:where(pre){all:revert;box-sizing:border-box}::placeholder{color:unset}:where([hidden]){display:none}:where([contenteditable]:not([contenteditable="false"])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}:where([draggable="true"]){-webkit-user-drag:element}:where(dialog:modal){all:revert;box-sizing:border-box}
/* リセットCSSここまで */


/* キーボード操作時にフォーカスリング表示 */
:where(:focus-visible) {
    outline: revert;
}

/* imgタグの隙間発生を防止 */
:where(img) {
    vertical-align: bottom;
}

/* 変数管理 */
:root {
    --white: #fff;
    --gray: rgba(0, 0, 0, 0.05);
    --red: #e81a35;
    --text-color: #222;    /* フォントの色 */
    --background-color: rgba(255, 255, 255, 0.94);    /* 背景色 */
    --link-color: rgb(80, 116, 198);    /* リンクの色 */
    --link-visited-color: rgb(154, 120, 218);    /* 訪問済みリンクの色 */
    --hr-border-color: #ccc;    /* hr の枠線の色 */
    --button-border-color: #666;    /* 入力欄の枠線の色 */
    --main-color: rgb(31, 36, 54);    /* メインカラー */
    --main-color-t: rgba(31, 36, 54, 0.2);    /* メインカラーの透過 */
    --nav-shadow-color: rgba(0, 0, 0, 0.1);    /* navの影の色 */

    --height: 2.5em;    /* input、select等の高さ */
    --width-set: 11.5em;    /* input、select等の長さ */
    --margin-right: 6px;    /* input、select等の右側のmargin */
}

body {
    font-family: 'Avenir','Helvetica Neue','Helvetica','Arial','Hiragino Sans','ヒラギノ角ゴシック',YuGothic,'Yu Gothic','メイリオ', Meiryo,'ＭＳ Ｐゴシック','MS PGothic',sans-serif;    /* フォントの種類 */
    font-size: clamp(12px, 3.75vw, 16px);    /* フォントサイズを「12px以上16px以下の3.75vw」にしています。お好みで変更してください。「font-size: 12px;」や「font-size: 16px;」など、clamp()や vw を使わなくでもOKです。 */
    line-height: 1.8;    /* 行の高さ */
    letter-spacing: 0.05em;    /* 文字と文字の間隔 */
    text-align: left;    /* 左寄せ */
    line-break: strict;    /* 強い禁則処理(通常はnormal) */
    overflow-wrap: break-word;    /* 長い英単語がはみ出さないように改行 */
    -moz-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;    /* 文字サイズの自動調整を制御 */
    color: var(--text-color);    /* 文字色 */
    background-color: var(--main-color);    /* 背景色 */
}

/* スクロールするとbodyの背景色が変わる */
:where(body) {
    transition: background-color 0.3s;
}

.fix-body {
    background-color: var(--gray);
}

a,[type="checkbox"],[type="radio"],[type="submit"],[type="reset"],[type="button"],button,select,optgroup,option,label:not([for]),summary {
    cursor: pointer;
}

/* リンク */
:where(a) {
	text-decoration: underline;
	color: var(--link-color);
}

/* 訪問済みリンク */
:where(a:visited) {
	color: var(--link-visited-color);
}

/* ホバー・アクティブのときのリンク */
:where(a:is(:hover, :active)) {
	opacity: 0.5;
}

/* 画像リンクのとき、text-decoration: underline;を消す */
:where(a:has(img)) {
    text-decoration: none;
}

/* ヘッダー */
/*
Copyright (c) 2023 Asteroid - https://asteroid19.netlify.app/
Released under the MIT license
https://opensource.org/license/mit/

Copyright (c) 2023 by Alex (https://codepen.io/AlexWarnes/pen/jXYYKL)
Released under the MIT license
https://opensource.org/license/mit/
*/
header {
    color: var(--white);
    max-width: 716px;
    margin: 0 auto;
    padding-top: 2em;
    height: 90vh;
    height: 90svh;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr;
    justify-content: center;
    align-items: center;
    overflow-x: hidden;
}

.css-animation {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    align-items: flex-start;
}

/* headerのsection */
.section-header {}

.section-header span {
    display: block;
    margin-top: 0.5em;
}

@media screen and (min-width: 700px) {
    header {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1fr;
        gap: 2em;
        padding-top: 0;
    }

    .section-header {
        text-align: left;
    }
}

.spinner-box {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: transparent;
}

.leo {
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 50%;
}


@keyframes spin3D {
    from {
        transform: rotate3d(.5, .5, .5, 360deg);
    }

    to {
        transform: rotate3d(0deg);
    }
}

.blue-orbit {
    width: 12em;
    height: 12em;
    border: 1px solid rgba(145, 218, 255, 0.65);
    animation: spin3D 3s linear .2s infinite;
}

.green-orbit {
    width: 7.5em;
    height: 7.5em;
    border: 1px solid rgba(145, 255, 191, 0.65);
    animation: spin3D 2s linear 0s infinite;
}

.red-orbit {
    width: 5.625em;
    height: 5.625em;
    border: 1px solid rgba(255, 202, 145, 0.65);
    animation: spin3D 1.5s linear 0s infinite;
}

.white-orbit {
    width: 3.75em;
    height: 3.75em;
    border: 2px solid #ffffff;
    animation: spin3D 10s linear 0s infinite;
}

.w1 {
    transform: rotate3D(1, 1, 1, 90deg);
}

.w2 {
    transform: rotate3D(1, 2, .5, 90deg);
}

.w3 {
    transform: rotate3D(.5, 1, 2, 90deg);
}

h1 {
    font-size: 2em;
}


main,
nav,
nav p {
    margin: 0 auto;
}


main {
    padding: 12em 0 0;
}

article,
footer {
    background-color: var(--background-color);
    margin: 0 auto 12em;
    padding: 4em 2em;
}

article > div,
footer > div {
    margin: 0 auto;
    max-width: 652px;
}

nav {
    width: 100%;
    transition: 0.5s;
    position: -webkit-sticky;
    position: sticky;    /* スクロールしたら上部に固定 */
    z-index: 99;
    top: 0;
    border: 0;
}

nav p {
    display: flex;
    justify-content: space-between;
    max-width: 716px;
}

nav p a {
    display: block;
    padding: 0.7em 0;
    text-decoration: none;
    color: var(--white);
    letter-spacing: 0.1em;
    width: 100%;
}

/* スクロールしたら nav の下線を消して影をつけるクラスを付与 */
.fix-nav {
    background-color: var(--main-color);
    box-shadow: 0px 3px 10px 0px var(--nav-shadow-color);
}

/* トップへ戻るボタンのデザインここから */
#top {
    z-index: 99;
}

#top a {
    position: fixed;
    display: block;
    width: 3em;
    height: 3em;
    right: 3%;
    bottom: 3%;
    border-radius: 50%;
    background-color: var(--main-color);
    text-decoration: none;
}

#top a::before {
    position: absolute;
    content: '';
    width: 1em;
    height: 1em;
    border-top: 3px solid var(--white);
    border-right: 3px solid var(--white);
    top: 50%;
    left: 50%;
    transform: translate(-50%, -25%) rotate(-45deg);
}

/* トップへ戻るボタンのデザインここまで */

h1,h2,h3,h4,h5,h6 {
    letter-spacing: 0.1em;
}

/* 見出しタグ */
h2 {
    font-size: calc(1em + 2px);
}

h3 {
    font-size: calc(1em + 2px);
}

h4 {
    font-size: calc(1em + 1px);
}

h5 {
    font-size: calc(1em + 1px);
}

h2 {
    display: flex;
    font-weight: bold;
    align-items: center;
    margin: 8em 0 2em;
}

h2::before,h2::after {
    content: '';
    height: 1px;
    border-top-style: solid;
    border-top-width: 1px;
    border-top-color: var(--button-border-color);
    flex-grow: 1;
}

h2::before {
    margin-right: 1em;
}

h2::after {
    margin-left: 1em;
}

.h2__2::before,.h2__2::after {
    border-top-color: var(--hr-border-color);
}

.h2__border-style-none::before,.h2__border-style-none::after {
    border-top-style: none;
}

/****************************************/
/* hタグなどでmargin-topをゼロにしたいときに使用 */
.margin-top-zero {
    margin-top: 0 !important;
}

/****************************************/
/* h3,h4,h5,h6 タグの border-color */
.h__border-c--main-color {
    border-color: var(--main-color);
}

.h__border-c--main-color-t {
    border-color: var(--main-color-t);
}

.h__border-c--text-color {
    border-color: var(--text-color);
}

.h__border-c--hr-border-color {
    border-color: var(--hr-border-color);
}

.h__border-c--white {
    border-color: var(--white);
}

/****************************************/
/* h3,h4,h5,h6 タグの background-color */
.h__bg-c--main-color {
    background-color: var(--main-color);
    color: var(--white);
}

.h__bg-c--main-color-t {
    background-color: var(--main-color-t);
    color: var(--text-color);
}

.h__bg-c--text-color {
    background-color: var(--text-color);
    color: var(--white);
}

.h__bg-c--hr-border-color {
    background-color: var(--hr-border-color);
    color: var(--white);
}

.h__bg-c--gray {
    background-color: var(--gray);
    color: var(--text-color);
}


/****************************************/
h3 {
    font-weight: bold;
    margin: 5em 0 1.5em;
    padding: 0.1em 0;
    border-bottom-style: solid;
    border-bottom-width: 2px;
}

.h3__border-style-dashed {
    border-bottom-style: dashed;
}

.h3__border-style-double {
    border-bottom-style: double;
    border-bottom-width: 3px;
}

h4 {
    font-weight: bold;
    margin: 5em 0 1.5em;
    padding: 0.1em 0.8em;
    border-left-style: double;
    border-left-width: 8px;
    border-left-color: var(--text-color);
}

.h4__border-style-solid {
    border-left-style: solid;
    border-left-width: 5px;
}

h5 {
    font-weight: bold;
    background-color: var(--gray);
    margin: 5em 0 1.5em;
    padding: 0.4em 0.8em;
    border-left-style: solid;
    border-left-width: 5px;
    border-left-color: var(--main-color);
}

.h5__border-style-none {
    border-left-style: none;
}

h6 {
    width: fit-content;
    margin: 4em 0 0.5em;
    padding: 0.1em 0.75em;
    color: var(--white);
    background-color: var(--main-color);
}

.h6__border-style-solid {
    border-style: solid;
    border-width: 1px;
}

.h6__border-style-double {
    border-style: double;
    border-width: 4px;
}

.h6__2 {
	color: var(--text-color);
	background-color: unset;
	border-color: var(--text-color);
}

.h6__3 {
	color: var(--text-color);
	background-color: unset;
	border-color: var(--text-color);
	border-width: 3px;
}

/****************************************/

:where(em, strong, small, s, cite, q, dfn, abbr, data, time, code, var, samp, kbd, sub, sup, i, b, u, mark, ruby, rb, rt, rtc, rp, bdi, bdo, span, br, wbr, ins, del) {
    all: revert;
    box-sizing: border-box;
}

/* :where(center){ text-align: revert;}は
nanoやalice+で center タグを使っている場合は必要。不要なら削除 */
:where(center) {
    text-align: revert;
}

em {
    text-decoration-line: underline;
    text-decoration-style: wavy;
}

strong {
    color: var(--red);
}

mark {
    color: unset;
    background: linear-gradient(transparent 40%, var(--main-color-t) 0%);
}

.mark-2 {
    background: linear-gradient(transparent 40%, var(--gray) 0%);
}

.span-left-border {
    margin-right: 0.75em;
    padding-right: 0.75em;
    border-right: solid 4px var(--main-color-t);
}

.span-left-border-2 {
    border-right-color: var(--main-color);
}

.span-left-border-3 {
    border-right-color: var(--text-color);
}

.span-left-border-4 {
    border-right-color: var(--hr-border-color);
}

.kenten-1 {
    text-emphasis-style: dot filled;
}

.kenten-2 {
    text-emphasis-style: dot open;
}

.kenten-3 {
    text-emphasis-style: sesame filled;
}

.kenten-4 {
    text-emphasis-style: sesame open;
}


/* 区切り線 */
hr {
    height: 1px;
    border-top: solid 1px var(--hr-border-color);
    margin: 1.5em 0;
}

.hr-2 {
    border-top-color: var(--button-border-color);
}

/* dl, dt, dd */
/* dl 基本的にはdt・ddが縦並び */

/* dlでdt・ddが横並び */
.dl-yoko {
    display: grid;
    grid-template-columns: auto 1fr;
}

.dl-yoko dt {
    margin-top: 0;
    padding-right: 1.25em;
}

/* dlでdt・ddが横並び・区切り線あり */
.dl-yoko-line :is(dt, dd) {
    margin-top: 1.5em;
    padding-bottom: 1.5em;
    border-bottom: solid 1px var(--hr-border-color);
}

.dl-yoko-line :is(dt, dd):first-of-type {
    padding-top: 1.5em;
    border-top: solid 1px var(--hr-border-color);
}

/* dlでdt・ddが縦並び・区切り線あり */
.dl-tate-line dt {
    padding-top: 1.5em;
}

.dl-tate-line dt:first-child {
    margin-top: 1.5em;
    border-top: solid 1px var(--hr-border-color);
}

.dl-tate-line dd {
    padding-bottom: 1.5em;
    border-bottom: solid 1px var(--hr-border-color);
}

/* テキストの寄せ方 */
.left {
    text-align: left;
}

.center {
    text-align: center;
}

.right {
    text-align: right;
}

.justify {
    text-align: justify;
}

ul {
    padding-left: 1.5em;
}

ol {
    padding-left: 2em;
}

.list-style-position-inside {
    list-style-position: inside;
}

.disc {
    list-style-type: disc;
}

.circle {
    list-style-type: circle;
}

.square {
    list-style-type: square;
}

.disclosure-closed {
    list-style-type: disclosure-closed;
}

.disclosure-open {
    list-style-type: disclosure-open;
}

.moji-ninni-1 {
    list-style-type: "★ ";
}

.list-style-type-none {
    padding-left: 0;
}

.decimal {
    list-style-type: decimal;
}

.decimal-leading-zero {
    list-style-type: decimal-leading-zero;
}

.lower-latin {
    list-style-type: lower-latin;
}

.upper-latin {
    list-style-type: upper-latin;
}

.lower-roman {
    list-style-type: lower-roman;
}

.upper-roman {
    list-style-type: upper-roman;
}

.lower-greek {
    list-style-type: lower-greek;
}

.hiragana {
    list-style-type: hiragana;
}

.katakana {
    list-style-type: katakana;
}

.hiragana-iroha {
    list-style-type: hiragana-iroha;
}

.katakana-iroha {
    list-style-type: katakana-iroha;
}

.japanese-informal {
    list-style-type: japanese-informal;
}

.japanese-formal {
    list-style-type: japanese-formal;
}

/* 表 */
th,td {
	padding: 0.25em 1.25em;
	border: solid 1px var(--text-color);
}

/* 色付きの表 */
.table-color th {
    background-color: var(--main-color-t);
}

/* スクロールする表 */
.table-scroll {
    display: block;
    overflow-x: scroll;
    white-space: nowrap;
}

/* ボックス */
.box {
    border: solid 1px var(--hr-border-color);
    margin: 4em auto;
    padding: 1em;
}

.box-2 {
    border: solid 1px var(--button-border-color);
}

.copy-box {
    margin: 0.5em auto;
    width: 100%;
}

summary {
    list-style: revert;
    text-decoration: underline;
}

details[open] summary {
    text-decoration: none;
}

/* 簡易的な画像表示 */
.list-img {
    display: grid;
    gap: 2em;
}

.list-img figure {
    background-color: var(--white);
    box-shadow: 5px 5px 10px 0px var(--nav-shadow-color);
    width: 100%;    /* グリッドアイテムの幅を100%に設定 */
}

.list-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;    /* 画像を切り抜く */
}

/* スマホなど画面幅が小さいとき */
/* キャプションありのとき */
.figure-caption {
    grid-template-columns: repeat(1, 1fr);    /* 画面幅が小さいときは1列 */
}

.figure-caption figure {
    padding: 2em;
}

.figure-caption figure p {
    aspect-ratio: 4 / 3;    /* 画像を表示する際の比率。4:3にしている */
}

.figure-caption figcaption {
    /* キャプション */
    font-size: 0.9em;
    line-height: 1.5;
    margin: 1.5em auto 0;
}

/* キャプションなしのとき */
.figure-no-caption {
    grid-template-columns: repeat(2, 1fr);    /* 画面幅が小さいときは2列 */
}

.figure-no-caption figure {
    padding: 0;
    aspect-ratio: 1 / 1;    /* 画像を表示する際の比率。1:1の正方形にしている */
}

/* パソコンなど画面幅が大きいときの設定 */
@media screen and (min-width: 700px) {

    /* キャプションありのとき */
    .figure-caption {
        grid-template-columns: repeat(3, 1fr);  /* 画面幅が大きいときは3列 */
    }

    .figure-caption figure {
        padding: 1em;
    }

    .figure-caption figcaption {
        margin-top: 1em;
    }

    /* キャプションなしのとき */
    .figure-no-caption {
        grid-template-columns: repeat(4, 1fr);  /* 画面幅が大きいときは4列 */
    }
}



/* フォーム系 */
/* プレースホルダー */
::placeholder {
    opacity: 0.3;
}

form {
    margin: 1em auto
}

input,button,select {
    margin-right: var(--margin-right);
    padding-left: 0.5em;
    padding-right: 0.5em;
    vertical-align: middle;
    height: var(--height);
    width: var(--width-set);
    align-items: revert;
}

input,button,select,textarea {
    background-color: var(--white);
    border: solid 1px var(--button-border-color);
    border-radius: 4px;
}


:where(:is(input, button, select, textarea):focus) {
    outline: solid 1px var(--button-border-color);
}

textarea {
    resize: both;
    line-height: 1.5;
    width: 100%;
    padding: 0.5em;
}

select {
    -webkit-appearance: revert;
    appearance: revert;
    width: revert;
    min-width: var(--width-set);
}

:where(input, button):last-child {
    margin-right: 0;
}

/* ボタン系 */
[type="submit"],[type="reset"],[type="button"],button {
    text-align: center;
    padding-left: 1em;
    padding-right: 1em;
    color: var(--white);
    background-color: var(--main-color);
    border: 0;
    border-radius: 4px;
    width: unset;
}

:where(:is([type="submit"], [type="reset"], [type="button"], button):is(:hover, :active, :focus)) {
    outline: unset;
    opacity: 0.5;
}

/* その他の特別なinput要素 */
[type="checkbox"],[type="radio"],[type="range"],[type="color"],[type="file"],[type="image"] {
    all: revert;
    font: unset;
    margin: unset;
    padding: unset;
    vertical-align: middle;
    accent-color: var(--main-color);
    box-sizing: border-box;
    cursor: pointer;
}

:where(:is([type="checkbox"], [type="radio"], [type="range"], [type="color"], [type="file"], [type="image"]):is(:hover, :active, :focus)) {
    outline: revert;
}

/* チェックボックスとラジオボタン */
[type="checkbox"],[type="radio"] {
    height: 1.25em;
    width: 1.25em;
    margin-right: var(--margin-right);
}

.checkbox-tate label,.radio-tate label {
    display: block;
    margin-bottom: var(--margin-right);
}

.checkbox-yoko label,.radio-yoko label {
    margin-right: 3em;
}

[type="color"] {
    padding: revert;
}

[type="file"] {
    width: revert;
}

[type="image"] {
    max-width: var(--width-set);
}

.ninni,.hissu {
    font-size: 0.85em;
    margin-left: 0.85em;
    padding: 0.1em 0.4em;
    border-radius: 3px;
}

.ninni {
    background-color: var(--gray);
}

.hissu {
    color: var(--red);
}

.hissu::before {
    content: '* ';
}

form p {
    margin-bottom: 2em;
}

/* 幅いっぱいに広げる */
.all-full {
    display: flex;
    flex-wrap: wrap;
}

.all-full input:not([type="checkbox"], [type="radio"]),.all-full button,.all-full select {
    flex: 1;    /* buttonにも適用 */
}

.all-full input:last-child,.all-full button:last-child,.all-full select:last-child {
    margin-right: 0;
}

/* 入力欄だけ伸びる・ボタン系は伸びない([type="submit"],[type="reset"],[type="button"],buttonは伸びない) */
.flex-grow {
    display: flex;
    flex-wrap: wrap;
}

.flex-grow input:not([type="checkbox"], [type="radio"], [type="submit"], [type="reset"], [type="button"]),.flex-grow select {
    flex-grow: 1;    /* ボタン系は伸びない */
}

/* センター寄せ */
.justify-content-center {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
}

/* 2段にしたいとき */
.stack {
    margin-bottom: var(--margin-right);
}

/* inputのテキスト入力の入力欄の長さ調整 */
@media screen and (max-width: 700px) {
    .input-short input:not([type="checkbox"], [type="radio"], [type="submit"], [type="reset"], [type="button"]) {
        width: calc(var(--width-set) * 0.7);
    }
}

.input-very-short input:not([type="checkbox"], [type="radio"], [type="submit"], [type="reset"], [type="button"]) {
    width: var(--height);
}


/* フッター */
footer {
    color: var(--white);
    background-color: var(--main-color);
    margin-bottom: 0;
    padding: 2em;
}

footer p {
    font-size: 2em;
    padding: 2em 0;
}

footer a {
    color: var(--white);
}

/*
Copyright (c) 2024 Asteroid - https://asteroid19.netlify.app/
Released under the MIT license
https://opensource.org/license/mit/

Copyright (c) 2024 by hisa (https://codepen.io/hisaaashi/pen/eYbqbLZ)
Released under the MIT license
https://opensource.org/license/mit/
*/

/* ハンバーガーメニューに関するパーツのスタイルを、一度全てリセットする */
/* リセットここから */

button#menu__button,
span#menu__bar,
span#menu__label,
div#menu__overlay,
nav#menu__nav,
nav#menu__nav *, nav#menu__nav *::before, nav#menu__nav *::after {
    all: unset;
    display: revert;
    box-sizing: border-box;
}

nav#menu__nav a,
button#menu__button {
    cursor: pointer;
}

nav#menu__nav a:focus-visible,
button#menu__button:focus-visible {
    outline: revert;
}

nav#menu__nav ul {
    list-style: none;
}

/* リセットここまで */


/* 変数管理 */
:root {
    --hamburger-background-color: rgb(255 255 255 / 1);    /* 基本の背景色 */
    --hamburger-button-color: rgb(255 255 255 / 0.9);    /* ボタンの背景色 */
    --hamburger-nav-background-color: rgb(31, 36, 54);    /* 上部固定メニューのときの nav の背景色 */
    --hamburger-overlay-color: rgb(0 0 0 / 0.5);  /* オーバーレイの色 */
    --hamburger-span-bar-color: #222;   /* ボタンの三本バーの色 */
    --Hamburger-link-color: #222;   /* ハンバーガーメニューのリンクの色 */
    --hamburger-nav-link-color: rgb(31, 36, 54);    /* 上部固定メニューのときの nav の背景色 */
    --hamburger-gray: rgb(0 0 0 / 0.075);  /* ハンバーガーメニュー内のリンクをホバーしたときの背景色 */
    --hamburger-hover-underline-color: rgb(30 44 201);   /* 上部固定メニューのとき、リンクをホバーしたときの下線の色 */
    --hamburger-button-size: 55px;  /* ボタンのサイズ(正方形) */
}


/* ハンバーガーメニューのCSSはここから */

/* 700px未満のときに ハンバーガーメニューにする */
@media screen and not (min-width: 700px) {

    /* ハンバーガーメニューを開閉するためのボタン */
    button#menu__button {
        position: fixed;
        top: 5px;
        right: 5px;
        display: grid;
        place-items: center;
        place-content: center;
        width: var(--hamburger-button-size);
        height: var(--hamburger-button-size);
        background-color: var(--hamburger-button-color);
        z-index: 999;
    }

    /* 三本のバー */
    span#menu__bar,
    span#menu__bar::before,
    span#menu__bar::after {
        box-sizing: border-box;
        width: 26px;
        height: 3px;
        background-color: var(--hamburger-span-bar-color);
        transition: transform 0.3s;
    }

    span#menu__bar {
        display: grid;
    }

    span#menu__bar::before,
    span#menu__bar::after {
        content: '';
        grid-area: 1 / 1;
    }

    span#menu__bar::before {
        transform: translateY(-8px);
    }

    span#menu__bar::after {
        transform: translateY(8px);
    }


    /* メニューがオープンしているときのバー */
    .js__open span#menu__bar {
        background-color: transparent;
    }

    .js__open span#menu__bar::before {
        transform: rotate(45deg);
    }

    .js__open span#menu__bar::after {
        transform: rotate(-45deg);
    }

    /* バーの下にあるラベル文字 */
    span#menu__label {
        transform: translateY(10px);
        font-size: 10px;
        line-height: 1;
        margin-top: 4px;
        color: var(--hamburger-span-bar-color);
    }

    /* ハンバーガーメニューのナビゲーション部分 */
    nav#menu__nav {
        position: fixed;
        right: 0;
        top: 0;
        height: 100%;
        width: 70%;
        min-width: 250px;
        max-width: 300px;
        background-color: var(--hamburger-background-color);
        z-index: 998;
        overflow-y: auto;
        text-align: left;
        transform: translateX(100%);
    }

    /* メニューがオープンしているときのナビゲーション部分 */
    .js__open nav#menu__nav {
        transform: translateX(0);
    }

    /* ハンバーガーメニューがクローズしているときはナビゲーション部分を消す */
    body:not(.js__open) nav#menu__nav {
        display: none;
    }

    nav#menu__nav ul {
        padding-left: 2.5em;
    }

    nav#menu__nav > ul {
        padding: 0; /* nav 直下の ul のみ別指定 */
        margin-top: 5em;
    }

    nav#menu__nav a {
        display: block;
        text-decoration: none;
        color: var(--Hamburger-link-color);
        padding: 1em 0 1em 2em;
    }

    nav#menu__nav a:is(:hover, :active) {
        opacity: 1;
        background-color: var(--hamburger-gray);
    }

    /* オーバーレイの設定 */
    /* メニューがクローズしているときはオーバーレイは非表示にする */
    div#menu__overlay {
        visibility: hidden;
        opacity: 0;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: var(--hamburger-overlay-color);
        z-index: 997;
        transition: opacity 0.3s;
    }

    /* メニューがオープンしているときはオーバーレイを表示する */
    .js__open div#menu__overlay {
        visibility: visible;
        opacity: 1;
    }

    /* オープンときのbodyにoverflow: clip;を指定し、背後の要素をスクロールさせない */
    .js__open {
        overflow: clip;
    }
}

/* 700px以上のときに上部固定ナビゲーションにする */
@media screen and (min-width:700px) {

    /* ハンバーガーメニュー用のボタンとオーバーレイを消す */
    button#menu__button, div#menu__overlay {
        display: none;
    }

    nav#menu__nav {
        top: 0;
        z-index: 99;
        position: -webkit-sticky;
        position: sticky;
        background-color: var(--hamburger-nav-background-color);
        -webkit-backdrop-filter: blur(10px);
        backdrop-filter: blur(10px);
    }

    nav#menu__nav a {
        text-decoration: none;
        display: block;
        color: var(--white);
        padding: 0.7em 1em;
        position: relative;
    }

    nav#menu__nav > ul {
        list-style-type: none;
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 0;
        position: relative;
        padding: 0;
        margin: 0;
    }
    #sub a{
    color: var(--Hamburger-link-color);
    }

    /* 下の階層のリンクは、ホバー可能な環境でのみ、ホバーで表示されるようにする。それ以外の場合は消す */
    nav#menu__nav > ul ul {
        display: none;
    }

    @media (hover: hover) {

        nav#menu__nav a:hover {
            opacity: 0.5;
            background-color: var(--hamburger-gray);
        }

        nav#menu__nav a:hover::after {
            content: '';
            display: block;
            position: absolute;
            width: 100%;
            height: 2px;
            bottom: 0;
            left: 0;
        }

        nav#menu__nav > ul > li:hover ul {
            display: revert;
            position: absolute;
            padding-left: 0;
            background-color: var(--hamburger-background-color);
        }
        nav#menu__nav > ul > li:hover ul a {
            color: var(--hamburger-link-color);
        }
    }
}

/* ハンバーガーメニューのCSSはここまで */