@charset "UTF-8";

/* キーボード操作時にフォーカスリング表示 */
:where(:focus-visible) {
    outline: revert;
}

/* imgタグの隙間発生を防止 */
:where(img) {
    vertical-align: bottom;
}

/* 画像のサイズを自動的に調整 */
img {
    display: block;
    max-width: 90%;
    height: auto;
}

/* 変数管理 */
:root {
    --white: #fff;
    --gray: #e3e3e3;
    --red: #e81a35;
    --text-color: #202027;    /* フォントの色 */
    --background-color: #fffffe;    /* 背景色 */
    --link-color: rgb(93, 131, 246);    /* リンクの色 */
    --link-visited-color: rgb(127, 94, 188);    /* 訪問済みリンクの色 */
    --hr-border-color: #ccc;    /* hr の枠線の色 */
    --button-border-color: #666;    /* 入力欄の枠線の色 */
    --main-color: rgb(105, 165, 250);    /* メインカラー */
    --main-color-t: rgba(105, 165, 250, 0.2);    /* メインカラーの透過 */
    --nav-background-color: rgba(254, 253, 252, 0.65);    /* nav の背景色 */
    --nav-shadow-color: rgba(0, 0, 0, 0.1);    /* nav の影の色 */
    --bar-col:#313137;

    --height: 2.5em;    /* input、select等の高さ */
    --width-set: 11.5em;    /* input、select等の長さ */
    --margin-right: 6px;    /* input、select等の右側のmargin */
}

/* ダークモード対応はここ */
@media (prefers-color-scheme:dark) {
    :root {
        --white: #000;
        --gray: #666;
        --red: #ff4c50;
        --text-color: #eee; /* フォントの色 */
        --background-color: rgb(17, 18, 25);    /* 背景色 */
        --link-color: rgb(139, 192, 255);   /* リンクの色 */
        --link-visited-color: rgb(187, 153, 255);   /* 訪問済みリンクの色 */
        --hr-border-color: #888;    /* hr の枠線の色 */
        --button-border-color: #ccc;    /* 入力欄の枠線の色 */
        --main-color: rgb(139, 192, 255);   /* メインカラー */
        --main-color-t: rgba(139, 192, 255, 0.4);   /* メインカラーの透過 */
        --nav-background-color: rgba(17, 18, 25, 0.65); /* nav の背景色 */
        --nav-shadow-color: rgba(255, 255, 255, 0.1);   /* nav の影の色 */
        --bar-col: #d5d5ebe4;
    }
}

body {
    font-family: 'Roboto', sans-serif;    /* フォントの種類 */
    font-size: clamp(14px, 3.75vw, 16.5px);    /* フォントサイズを「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(--background-color);    /* 背景色 */
}

/* マウスカーソルの形をポインターにする */
a,button,:where([type="checkbox"],[type="radio"],[type="submit"],[type="reset"],[type="button"],select,optgroup,option,label:has([type="checkbox"],[type="radio"]),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;
}

/* ヘッダー */
header {
    letter-spacing: 0.1em;
    padding: 5em 0 4em;
    overflow-x: hidden;
}

h1 {
    display: inline-block;
    font-size: 3em;
    color: var(--background-color);
    position: relative;

}

/* h1タグの背景にスライドインするもの */
h1::before {
    display: inline-block;
    content: '';
    position: absolute;
    top: 0;
    left: -15%;
    width: calc(100% + calc(15% * 2));
    height: 100%;
    transform-origin: left center;
    background-color: var(--main-color);
    z-index: -1;
    animation: slidein 3s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@keyframes slidein {
    0% {
        opacity: 0;
        transform: scaleX(0) translateX(-5%);
    }

    75% {
        transform: scaleX(1) translateX(0);
    }

    100% {
        transform: scaleX(1) translateX(0);
    }

    75%,
    100% {
        opacity: 1;
    }
}

header span {
    display: block;
    margin-top: 1em;
}

.wrap,nav p {
    max-width: 716px;
    margin: 0 auto;
}

.wrap {
    padding: 4em 2em;
}

nav {
    border-top: solid 1px var(--main-color);
    border-bottom: solid 1px var(--main-color);
    background-color: var(--nav-background-color);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    position: -webkit-sticky;
    position: sticky;    /* スクロールしたら上部に固定 */
    z-index: 99;
    top: 0;
}

nav p {
    display: flex;
    justify-content: space-between;
}

nav p a {
    display: block;
    padding: 0.7em 0;
    text-decoration: none;
    color: var(--text-color);
    letter-spacing: 0.1em;
    width: 100%;
}

/* スクロールしたら nav の下線を消して影をつけるクラスを付与 */
.fix-nav {
    border: 0;
    box-shadow: 0px 3px 10px 0px var(--nav-shadow-color);
    transition: 0.3s;
}

/* トップへ戻るボタンのデザインここから */
#top {
    z-index: 99;
}

#a {
    position: fixed;
    display: block;
    width: 3em;
    height: 3em;
    right: 3%;
    bottom: 3%;
    border-radius: 50%;
    background-color: var(--main-color);
    text-decoration: none;
}

#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);
}



#pagetop{
    position:fixed;
    right:15px;
    bottom:0px;
    cursor:pointer;
    z-index: 30;
}



/* トップへ戻るボタンのデザインここまで */

h1,h2,h3,h4,h5,h6 {
    letter-spacing: 0.1em;
}

/* 見出しタグ */
h2 {
    font-size: calc(1.35em + 4px);
}

h3 {
    font-size: calc(1.2em + 1px);
}

h4 {
    font-size: calc(1.15em + 1px);
}

h5 {
    font-size: calc(0.9em);
}

h2 {
    font-weight: bold;
    margin: 2.4em 0 1.5em;
    padding: 0.1em 0;
    border-bottom-style: solid;
    border-bottom-width: 3px;
    border-bottom-color:var(--bar-col);
    position: relative;
}

.h2__border-style-dashed {
    border-bottom-style: dashed;
}

.h2__border-style-double {
    border-bottom-style: double;
    border-bottom-width: 3px;
}

h2::before {
    margin-right: 1em;
}

h2::after {
    position: absolute;
    margin-left: 1em;  
    bottom: 0;
}

.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: 2.2em 0 1.0em;
    padding: 0.1em 0.6em;
    border-left-style: double;
    border-left-width: 8px;
    border-left-color: var(--text-color);
}

.h3__border-style-solid {
    border-left-style: solid;
    border-left-width: 4px;
}

h4 {
    font-weight: bold;
    margin: 1.5em 0 0.2em;
    padding: 0.1em 0em;
    display: inline-block; /* インラインブロックにして、文字幅に合わせる */  
    position: relative;
}

h4::after {  
    content: ''; /* 擬似要素の内容を空に */  
    position: absolute; /* 絶対位置に設定 */  
    left: 0; /* 左端に配置 */  
    bottom: 0; /* 下に配置 */  
    height: 2px; /* 下線の高さ */  
    background-color: var(--main-color); /* 下線の色 */  
    width: calc(100% + 100px); /* 見出しの幅に30px追加 */
    margin-left: -3px;  
}


h5 {
    width: fit-content;
    margin: 2em 0 0.2em;
    padding: 0.1em 0.4em;
    color: var(--white);
    background-color: var(--main-color);
}

.h5__border-style-solid {
    border-style: solid;
    border-width: 1px;
}

.h5__border-style-double {
    border-style: double;
    border-width: 4px;
}

.h5__2 {
	color: var(--text-color);
	background-color: unset;
	border-color: var(--text-color);
}

.h5__3 {
	color: var(--text-color);
	background-color: unset;
	border-color: var(--text-color);
	border-width: 3px;
}

h6 {
    width: fit-content;
    margin: 2em 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);
}

/* コトブキの画像 */
#responsive-image {
    width: min(220px, calc(8vw + 190px));
}

/* 画面幅が768px以上の場合に適用するスタイル */
@media screen and (min-width: 768px) {
    #responsive-image {
        width: max(calc(13vw + 50px), 245px);
        margin-right: 1vw;
    }
}

/* フッター */
footer {
    color: var(--white);
    background-color: var(--main-color);
    padding: 2em;
}

footer p {
    font-size: 2em;
    padding: 2em 0;
}

footer a {
    color: var(--white);
}


/*  highlight.js　カスタマイズ  */
pre{
    position: relative;
    margin: 2em 0;
    padding: 0;
    line-height: 1;
    background: #ddd;
  }
  pre code{
    display: block;
    margin: 0;
    padding: 2em 1em 1em;
    max-height: 1000px;
    line-height: 1.4;
    overflow: auto;
  }
  .copy-button{
    position: absolute;
    top: 0;
    right: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    appearance: none;
    -moz-appearance: none;
    -webkit-appearance: none;
    margin: 0 auto;
    padding: 0 1em;
    height: 24px;
    border: none;
    line-height: 1;
    font-weight: bold;
    background: #c3e8ff;
    color: #000;
    cursor: pointer;
  }
  .copy-button:hover{
    background: #ddd
  }
