/* @font-face {
    font-family: 'garasueji';
    src: url('./assets/fonts/KAISOTAI-NEXT-UP-B.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
} */

body {
    background-color: #dbe4ee;
    margin: 0;
    min-width: 560px;
    width: auto;
    /* Google Fontsを最優先で適用する */
    font-family: 'Zen Kaku Gothic New', 'M PLUS Rounded 1c', sans-serif;
    overflow: visible;
}

/* HEADER */
header {
    margin-top: 0;
    background-color: #fff;
    font-family: 'M PLUS Rounded 1c', sans-serif;
    position: sticky;
    top: 0;
    z-index: 429;
}

.head-belt {
    height: 3rem;
    justify-content: center;
    display: flex;
}

@media screen and (max-width: 800px) {
    .head-band {
        width: 100%;
        display: flex;
        font-size: 0.6em;
    }
}

@media screen and (max-width: 560px) {
    .iframe-band {
        width: calc(1.3rem *16);
        height: calc(1.3rem *9);
    }
}

@media screen and (min-width: 800px) {
    .head-band {
        width: 800px;
        display: flex;
    }

    .iframe-band {
        width: 560px;
    }
}

@media screen and (min-width: 560px) and (max-width: 800px) {
    .iframe-band {
        width: calc(2rem *16);
        height: calc(2rem *9);
    }
    .head-band {
        font-size: 0.9em;
    }
}

.tabs {
    display: inline-block;
    margin: auto;
    text-align: center;
    text-decoration: none;
    color: #3e5f76;
    height: 100%;
    width: 17%;
    user-select: none;
    cursor: pointer;
}

.tabs div {
    height: inherit;
    vertical-align: middle;
    display: flex;
    align-items: center;
    justify-content: center;
}

.select-tab {
    font-weight: bold;
}

.pf-head_filter {
    text-align: center;
}

.pf-head_filter p {
    margin: 0;
}

.pf-head_filter-group {
    /* margin: auto; */
    /* display: flex; */
    gap: 6px;
    /* チップとチップの間のすきま */
    height: 35px;
}

.pf-head_filter-group a {
    font-size: 0.75rem;
    font-weight: bold;
    padding: 0.25em 0.75em;
    border-radius: 12px;
    letter-spacing: 0.05em;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
    display: inline-block;
    user-select: none;
    cursor: pointer;
}

/* MAIN */
main {
    text-align: center;
}

/* ==========================================
   Portfolio / Root (一覧画面)
   ========================================== */

/* 楽曲を並べる外枠（Gridレイアウトで綺麗に整列） */
.pf-root {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(26em, 1fr));
    gap: 1.5rem;
    /* アイテム同士の隙間 */
    max-width: 1680px;
    margin: 2rem auto;
    padding: 0 1rem;
    justify-content: center;
}

/* 各楽曲のカード（aタグ） */
.pf-root-p {
    position: relative;
    /* 子要素の絶対配置の基準にする */
    display: block;
    overflow: hidden;
    /* 画像のハミ出し防止 */
    text-decoration: none;
    aspect-ratio: 16 / 9;
    /* 32em x 18em は 16:9 */
    border-radius: 8px;
    /* 角を少し丸くすると今風になります（お好みで） */
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

/* 画像のスタイル */
.pf-root-p img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.3s ease;
    /* ホバー時のズームアニメーション */
}

/* マウスホバー時に画像を少し大きくする演出 */
.pf-root-p:hover img {
    transform: scale(1.05);
}

/* 親であるオーバーレイを基準にする */
.pf-info-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(25, 41, 52, 0.75);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    opacity: 0;
    transition: opacity 0.3s ease;
    padding: 1rem;
    box-sizing: border-box;
}

/* チップをまとめるグループを右下に固定 */
.pf-chip-group {
    position: absolute;
    bottom: 12px;
    /* 右下からの距離 */
    right: 12px;
    /* 右下からの距離 */
    display: flex;
    gap: 6px;
    /* チップとチップの間のすきま */
}

.pf-chip-group span {
    font-size: 0.75rem;
    font-weight: bold;
    padding: 0.25em 0.75em;
    border-radius: 12px;
    letter-spacing: 0.05em;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
    display: inline-block;
}

/* Clear */
.pf-chip-clear {
    /* 色設定 */
    background-color: #c8c8c8;
    color: #3c3c3c;
    border: 0px solid;
}

/* MusicVideo */
.pf-chip-musicvideo {
    /* 色設定 */
    background-color: #b6ecff;
    color: #32689a;
    border: 0px solid;
}

/* YoutubeShorts */
.pf-chip-youtube_shorts {
    /* 色設定 */
    background-color: #ffb6b6;
    color: #9a3232;
    border: 0px solid;
}

/* MinecraftDatapack */
.pf-chip-minecraft_datapack {
    /* 色設定 */
    background-color: #b7ffb6;
    color: #379a32;
    border: 0px solid;
}

/* マウスホバー時にテキストを表示 */
.pf-root-p:hover .pf-info-overlay {
    opacity: 1;
}

/* 重ねるテキストのスタイル */
.pf-info-overlay .pf-title-main {
    font-size: 1.5rem;
    font-weight: bold;
    color: #91aeba;
    /* ダーク背景なので文字は白 */
    margin-bottom: 0.5rem;
}

.pf-info-overlay .pf-author {
    font-size: 1rem;
    color: #dbe4ee;
}

/* Portfolio / Content */
.pf-title {
    font-size: 45px;
    color: #192934;
}

.pf-title p {
    font-size: 25px;
    color: #192934;
    margin: 0;
}

.pf-credit {
    font-size: 20px;
    color: #91aeba;
    margin: 0.9em 0;
}

.pf-credit span {
    display: inline-block;
    margin-bottom: 0;
    color: #3e5f76;
}

.pf-credit a {
    color: #3e5f76;
    margin-left: 0.8em;
}

.pf-content {
    margin-top: 5rem;
    margin-bottom: 5rem;
}

.pf-content iframe {
    margin: 4em 0 1em;
}

/* HISTORY */
.hs-contents {
    display: block;
    min-height: 75vh;
    /* min-width: 800px; */
    width: 30vw;
    margin: 60px auto;
    text-align: left;
    color: #3e5f76;
}

.hs-contents h1 {
    margin: 0 5%;
}

.hs-contents a {
    display: block;
    text-decoration: none;
    color: #3e5f76;
    margin: 0 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.hs-contents b {
    margin: 0 0;
}

/* CONTACT */
.c-contents h1 {
    color: #192934;
    margin-bottom: 0;
}

.c-contents h4 {
    color: #3e5f76;
    margin: -1.6rem 0 -1rem 0;
}

.c-contents button h5 {
    color: #192934;
}

.c-contents button p {
    color: #3e5f76;
}

.c-sns {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    margin: 5rem auto;
    max-width: 600px;
    padding: 0 1rem
}

.c-sns button {
    display: inline-flex;
    border-radius: 10px;
    background-color: #e2f4fc;
    cursor: pointer;
}

.c-sns span {
    display: block;
    text-align: left;
}

.c-sns h5 {
    margin: 1.8em 0 0.25em 0.3em;
}

.c-sns p {
    margin: 0 0 auto;
}

.c-sns svg {
    margin: 0.4em;
    margin-right: 14%;
}

.c-fm {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    margin: 5rem auto;
    max-width: 600px;
    padding: 0 1rem
}

/* テキストエリアの親囲みを100%幅にし、絶対配置の基準にする */
.c-tx-wrap {
    position: relative;
    width: 100%;
}

/* テンプレートボタンをテキストエリアの右上に配置 */
.c-tp-btn {
    position: absolute;
    top: -1.75rem;
    right: 0;
    font-size: 0.8rem;
    font-weight: bold;
    color: #3e5f76;
    text-decoration: none;
    cursor: pointer;
    user-select: none;
}

.c-tp-btn:hover {
    color: #192934;
    text-decoration: underline;
}

.c-tx {
    width: 100%;
    height: 250px;
    padding: 1rem;
    border: 1px solid #91aeba;
    border-radius: 8px;
    background: #fff;
    color: #192934;
    font-family: inherit;
    font-size: 1rem;
    resize: vertical;
    box-sizing: border-box
}

.c-tx:focus {
    outline: none;
    border-color: #3e5f76
}

.c-btn {
    padding: .75rem 5rem;
    border: none;
    border-radius: 12px;
    background: #3e5f76;
    color: #b1d4e3;
    font-size: 1rem;
    letter-spacing: .05em;
    box-shadow: 0 2px 4px rgba(0, 0, 0, .15);
    cursor: pointer;
    user-select: none;
}

.c-btn:hover {
    background: #2a4659
}

/* ==========================================
   画面幅に関係なく、SNSボタンを常に横2列で積み重ねる修正
   ========================================== */

/* 1. 全画面共通（PC・スマホどちらも2列にする） */
.c-sns>div {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    /* 常に横に2個並べる */
    gap: 1rem !important;
    /* ボタン同士の上下左右のすきま */
    width: 100% !important;
    max-width: 600px;
    /* ボタンエリアが広がりすぎないように制限 */
    margin: 0 auto;
    box-sizing: border-box;
}

/* ボタン自体の基本サイズ調整 */
.c-sns button {
    width: 100% !important;
    /* グリッドの枠いっぱいに広げる */
    height: 70px !important;
    /* 押しやすく、2行のテキストが綺麗に収まる高さ */
    box-sizing: border-box;
    padding: 0.5rem 1rem !important;
    align-items: center !important;
    /* アイコンとテキストの縦中央揃え */
    justify-content: flex-start !important;
    /* 左詰めに配置 */
}

/* SVGアイコンのサイズ固定 */
.c-sns svg {
    width: 32px !important;
    height: 32px !important;
    margin: 0 1rem 0 0.2rem !important;
    /* 右側に適切な余白を作る */
    flex-shrink: 0 !important;
    /* 絶対にアイコンを潰さない */
}

/* ボタン内のテキスト位置微調整 */
.c-sns span {
    text-align: left !important;
    overflow: hidden;
    /* 文字のはみ出し防止 */
}

.c-sns h5 {
    font-size: 0.95rem !important;
    margin: 0 0 0.1rem 0 !important;
}

.c-sns p {
    font-size: 0.75rem !important;
    margin: 0 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* アカウント名が長すぎたら自動で「...」にする */
}


/* 2. スマホ（画面幅800px以下）の時だけbodyのバグを防ぐ設定 */
@media screen and (max-width: 800px) {
    body {
        min-width: 100% !important;
        width: 100% !important;
        overflow-x: hidden;
        /* 横スクロールの発生を防ぐ */
    }

    .hs-contents {
        min-width: 90% !important;
        width: 90% !important;
        font-size: 0.7em;
        margin: 40px 2em;
    }

    /* スマホの時はボタンの文字サイズを少しだけコンパクトに */
    .c-sns h5 {
        font-size: 0.85rem !important;
    }

    .c-sns p {
        font-size: 0.7rem !important;
    }

    .c-sns button {
        height: 65px !important;
    }

    .c-sns svg {
        width: 28px !important;
        height: 28px !important;
    }
}

/* スマホだとテンプレートを反映ボタンが被るので消す */
@media screen and (max-width: 560px) {
    .c-tp-btn {
        display: none;
    }
}

/* ↑ここにだけ追記して↑ */

/* ==========================================
   DEVICE (CONTACTのSNSボタンと共通のデザイン・色振り)
   ========================================== */

/* 1. デバイスエリア全体の文字色を設定 */
.d-contents {
    display: block;
    min-height: 75vh;
    color: #3e5f76;
}

/* タイトル（h1）をグリッドから除外し、セクション全体を2列にする設定 */
.d-section {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    /* 常に1:1（50%ずつ）の均等幅で2列に分ける */
    gap: 1rem !important;
    margin: 5rem auto;
    max-width: 600px;
    padding: 0 1rem;
    box-sizing: border-box;
}

/* 各セクションのタイトル（h1）を横いっぱいに広げて独立させる（保守性を高めるコア設定） */
.d-title {
    grid-column: 1 / -1 !important;
    /* 今後ボタンが何個増えても、タイトルは常に2列をぶち抜いて最上部に固定される */
    color: #192934;
    /* contact.htmlのh1と同じ色 */
    font-size: 2rem;
    margin: 0 0 0.5rem 0;
    text-align: center;
}

/* ボタン自体の基本構造（SNSボタンと完全同期 ＆ 横幅均等キープ設定） */
.d-button {
    background-color: #e2f4fc;
    /* contact.htmlと同じ背景色 */
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    border-radius: 10px;
    height: 70px;
    padding: 0.5rem 1rem;
    box-sizing: border-box;
    text-align: left;
    border: none;
    cursor: pointer;

    /* ▼ 横幅を完全に均等（100%割り当て）にし、長いテキストに潰されないようにする設定 ▼ */
    width: 100% !important;
    /* 親要素であるGridの50%の枠にぴったり合わせる */
    min-width: 0 !important;
    /* これがないと、中の長いpタグに引っ張られてボタン自体が広がろうとしてしまいます */
}

/* h5タグとsmallタグを横並びにするための包み要素（自動適用） */
.d-button h5 {
    color: #192934;
    /* contact.htmlのh5と同じ色 */
    font-size: 0.95rem;
    margin: 0.1rem 0 0 0;
    display: flex;
    align-items: baseline;
    /* 文字の底辺を揃える */
    gap: 0.5rem;
    /* 見出しとsmallのすきま */
}

/* smallタグ（補足）をかなり控えめに表示する設定 */
.d-button small {
    font-size: 0.65rem;
    /* かなり控えめなサイズ */
    color: #6397bd;
    /* 主張の激しくない薄いブルー */
    font-weight: normal;
}

/* pタグ（スペック・アカウント名部分）の文字数過多・均等幅対策 */
.d-button p {
    color: #3e5f76;
    /* contact.htmlのpと同じ色 */
    font-size: 0.75rem;
    margin: 0;

    /* ▼ ボタンの均等幅を絶対に壊さないための安全策 ▼ */
    width: 100%;
    white-space: nowrap;
    /* 改行を絶対に禁止する */
    overflow: hidden;
    /* はみ出した文字を隠す */
    text-overflow: ellipsis;
    /* 長すぎる文字の末尾を自動で「...」にする */
}

/* 2. スマホ（画面幅800px以下）の時だけ微調整 */
@media screen and (max-width: 800px) {
    .d-button {
        height: 65px;
    }

    .d-button h5 {
        font-size: 0.85rem;
    }

    .d-button p {
        font-size: 0.7rem;
    }

    .d-button small {
        font-size: 0.6rem;
    }
}

/* FOOTER */
footer {
    background-color: #fff;
    margin-bottom: 0;
    height: 20rem;
}

.footer-bar {
    height: 0.1em;
    background-color: #91aeba;
}

.footer-text {
    text-align: center;
    color: #91aeba;
    margin-top: 5em;
}