/* common_styles.css (最終修正版) */
*,
*::before,
*::after {
    box-sizing: border-box;
}

:root {
    /* --- ライトモードの配色 (デフォルト) --- */
    --c-bg: #f8f9fa;
    --c-surface: #ffffff;
    --c-text-primary: #333333;
    --c-text-secondary: #555555;
    --c-border: #dee2e6;
    --c-accent: #007bff;
    --c-link-hover: #0056b3;
    --c-button-text-on-accent: #ffffff;
    --c-danger: #dc3545;
    --c-danger-hover: #c82333;
}

body.dark-mode {
    /* --- ダークモードの配色 --- */
    --c-bg: #1a1a1a;
    --c-surface: #2c2c2c;
    --c-text-primary: #e0e0e0;
    --c-text-secondary: #a0a0a0;
    --c-border: #444444;
    --c-accent: #00bcd4;
    --c-link-hover: #00ffff;
    --c-button-text-on-accent: #1a1a1a;
    --c-danger: #e64a19;
    --c-danger-hover: #ff5722;
}

body {
    font-family: 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
    margin: 0;
    padding: 0;
    background-color: var(--c-bg);
    color: var(--c-text-primary);
    line-height: 1.75;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.page-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
    width: 100%;
    padding: 20px;
    box-sizing: border-box;
    min-width: 320px;
}

.container {
    background-color: var(--c-surface);
    color: var(--c-text-primary);
    padding: 25px 30px;
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    width: 95%;
    max-width: 900px;
    min-width: 320px;
    box-sizing: border-box;
    margin-bottom: 40px;
    border: 1px solid var(--c-border);
    transition: background-color 0.3s ease, border-color 0.3s ease;
    text-align: center;
    margin-left: auto;
    margin-right: auto;
}

.back-button-container {
    width: 95%;
    max-width: 900px;
    min-width: 320px;
    margin: 20px auto;
    text-align: left;
    position: relative;
}

.header {
    background-color: var(--c-surface);
    padding: 20px 30px;
    text-align: center;
    width: 100%;
    box-sizing: border-box;
    border-bottom: 1px solid var(--c-border);
    position: relative;
}
.header h1 { margin: 0; padding: 0; font-size: 2em; font-weight: 600; color: var(--c-text-primary); border: none; }
.footer { background-color: color-mix(in srgb, var(--c-bg) 90%, black); color: var(--c-text-secondary); text-align: center; padding: 30px 20px; margin-top: auto; width: 100%; font-size: 0.9em; border-top: 1px solid var(--c-border); }
.footer p { margin: 8px 0; color: var(--c-text-secondary); }
.footer a { color: var(--c-accent); }

main {
    width: 95%;
    max-width: 1200px;
    min-width: 320px;
    margin: 40px auto;
}
h2 { font-size: 1.8em; font-weight: 600; text-align: center; margin-bottom: 30px; position: relative; padding-bottom: 15px; border-bottom: 1px solid var(--c-border); }
h2::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 60px; height: 3px; background-color: var(--c-accent); }
h3 { font-size: 1.3em; font-weight: 600; color: var(--c-text-primary); margin: 0 0 0.75em 0; }
p { margin: 0 0 1em 0; color: var(--c-text-secondary); }
a { color: var(--c-accent); text-decoration: none; transition: color 0.2s ease; }
a:hover { color: var(--c-link-hover); text-decoration: underline; }

.button { display: inline-block; padding: 10px 20px; font-size: 1em; font-weight: 600; text-align: center; text-decoration: none; border: 1px solid var(--c-border); border-radius: 6px; cursor: pointer; transition: all 0.2s ease; user-select: none; margin: 5px; }
.button:hover { text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.2); }
.button:disabled { opacity: 0.6; cursor: not-allowed; transform: none; box-shadow: none; }
.button-secondary { background-color: var(--c-accent); color: var(--c-button-text-on-accent); border-color: var(--c-accent); }
.button-secondary:hover:not(:disabled) { background-color: var(--c-link-hover); border-color: var(--c-link-hover); }
.button-secondary { background-color: var(--c-surface); color: var(--c-text-primary); border-color: var(--c-border); }
.button-secondary:hover:not(:disabled) { background-color: color-mix(in srgb, var(--c-bg) 90%, black); color: var(--c-text-primary); border-color: var(--c-text-secondary); }
body.dark-mode .button-secondary:hover:not(:disabled) { background-color: var(--c-accent); color: var(--c-button-text-on-accent); border-color: var(--c-accent); }
.button-danger { background-color: var(--c-danger); color: white; border-color: var(--c-danger); }
.button-danger:hover:not(:disabled) { background-color: var(--c-danger-hover); border-color: var(--c-danger-hover); }

input[type="text"], input[type="number"], input[type="email"], textarea, select { width: 100%; padding: 12px 15px; margin-bottom: 15px; border-radius: 6px; border: 1px solid var(--c-border); background-color: var(--c-bg); color: var(--c-text-primary); font-size: 1em; box-sizing: border-box; transition: border-color 0.2s, box-shadow 0.2s; }
input[type="text"]:focus, input[type="number"]:focus, input[type="email"]:focus, textarea:focus, select:focus { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 20%, transparent); }
textarea { min-height: 100px; resize: vertical; }

.back-button { display: inline-block; background-color: var(--c-surface); color: var(--c-text-primary); border: 1px solid var(--c-border); padding: 10px 20px; border-radius: 6px; font-size: 0.95em; font-weight: 500; transition: background-color 0.2s, color 0.2s; }
.back-button:hover { background-color: var(--c-accent); color: var(--c-button-text-on-accent); text-decoration: none; }

/* テーマ切り替えスイッチ */
.theme-switcher-container { position: absolute; top: 50%; right: 30px; transform: translateY(-50%); transition: right 0.3s ease; }
.back-button-container .theme-switcher-container {right: 0;}
.theme-toggle-button { background: none; border: 1px solid var(--c-border); color: var(--c-text-secondary); width: 40px; height: 40px; border-radius: 50%; cursor: pointer; font-size: 1.2em; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; overflow: hidden; position: relative; padding: 0; margin: 0; }
.theme-toggle-button:hover { color: var(--c-accent); transform: rotate(15deg); }
.theme-toggle-button i { position: absolute; transition: transform 0.3s ease, opacity 0.3s ease; }
.theme-toggle-button .fa-sun { transform: translateY(100%); opacity: 0; }
.theme-toggle-button .fa-moon { transform: translateY(0); opacity: 1; }
body.dark-mode .theme-toggle-button .fa-sun { transform: translateY(0); opacity: 1; }
body.dark-mode .theme-toggle-button .fa-moon { transform: translateY(-100%); opacity: 0; }

.feature-section { margin-bottom: 50px; }
.card-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 25px; }
.feature-card { display: flex; flex-direction: column; background-color: var(--c-surface); border-radius: 8px; border: 1px solid var(--c-border); box-shadow: 0 2px 5px rgba(0,0,0,0.05); text-decoration: none; color: var(--c-text-primary); transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease, border-color 0.3s ease; }
.feature-card:hover { transform: translateY(-5px); box-shadow: 0 4px 15px rgba(0,0,0,0.1); }
.card-icon { text-align: center; padding: 25px 20px; font-size: 2.5em; }
.site-info .card-icon { color: #17a2b8; }
.tools .card-icon { color: #28a745; }
.games .card-icon { color: #6f42c1; }
.others .card-icon { color: #fd7e14; }
.card-content { padding: 0 25px 25px; text-align: center; }
.card-content h3 { font-size: 1.3em; margin-bottom: 10px; color: var(--c-text-primary); }
.card-content p { font-size: 0.9em; color: var(--c-text-secondary); margin: 0; }

/* ゲーム用コンポーネントの共通化 */
.game-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(238, 228, 218, 0.7); display: none; flex-direction: column; justify-content: center; align-items: center; text-align: center; animation: fade-in 0.5s ease; border-radius: 6px; z-index: 10; }
body.dark-mode .game-overlay { background-color: rgba(0, 0, 0, 0.7); }
.game-overlay.active { display: flex; }
.game-overlay h2 { font-size: 3em; font-weight: bold; margin-bottom: 10px; border: none; color: #776e65; }
body.dark-mode .game-overlay h2 { color: var(--c-text-primary); }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
.scroll-lock-container { position: fixed; bottom: 20px; left: 20px; z-index: 1000; }
#scroll-lock-button { width: 50px; height: 50px; border-radius: 50%; background-color: var(--c-surface); color: var(--c-text-secondary); border: 1px solid var(--c-border); box-shadow: 0 4px 8px rgba(0,0,0,0.2); font-size: 1.2em; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: all 0.3s ease; }
#scroll-lock-button:hover { color: var(--c-accent); transform: scale(1.1); }
#scroll-lock-button.active { background-color: var(--c-accent); color: var(--c-button-text-on-accent); }
#scroll-lock-button.active .fa-thumbtack { transform: rotate(45deg); }
#scroll-lock-button .fa-thumbtack { transition: transform 0.3s ease; }
body.scroll-locked { overflow: hidden; }

/* =============================================== */
/* スマートフォン・タブレット縦向き向け (max-width: 767px) */
/* =============================================== */
@media (max-width: 767px) {
    /* Header, main, h2 font sizes */
    .header h1 { font-size: 1.8em; }
    main { margin: 30px auto; padding: 0 15px; }
    h2 { font-size: 1.5em; }

    /* 表面の[？]ボタンと裏面のアイコンボタン共通スタイル */
    .help-button, .help-button-close {
        position: absolute;
        top: 5px;   /* 位置を微調整 */
        right: 5px;
        width: 32px;
        height: 32px;
        border-radius: 50%;
        cursor: pointer;
        z-index: 5;
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 0;
        transition: background-color 0.2s, color 0.2s;
    }

    /* 表面の[？]ボタン */
    .help-button {
        border: 1px solid var(--c-text-secondary);
        background-color: var(--c-surface);
        color: var(--c-text-secondary);
        font-size: 16px; /* サイズも少し調整 */
        font-weight: bold;
        line-height: 1;
    }

    /* 裏面のアイコン付き閉じるボタン */
    .help-button-close {
        border: none;
        background-color: transparent;
        color: var(--c-text-secondary);
        font-size: 18px; /* アイコンサイズ */
    }
    .help-button-close:hover {
        color: var(--c-accent);
    }

    /* Flexboxを使ったカルーセルの実装 */
    .card-container {
        display: flex;
        overflow-x: auto;
        gap: 15px;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        padding: 0 20px;
        -ms-overflow-style: none;
        scrollbar-width: none;
    }
    .card-container::-webkit-scrollbar {
        display: none;
    }

    .feature-card-wrapper {
        scroll-snap-align: start;
        flex: 0 0 65%;
        aspect-ratio: 1 / 1;
        justify-content: center;
    }

    .feature-card .card-content h3 {
        font-size: 1.1em;
    }
    .feature-card .card-content p {
        font-size: 0.85em;
        line-height: 1.5;
    }
    .feature-card .card-icon {
        padding: 20px;
        font-size: 2.2em;
    }

    /* index.html: モバイル/タブレットではヘルプボタンを表示 */
    .help-button, .help-button-close {
        display: flex;
    }

    /* ▼▼▼ カルーセル用ドットインジケーターのスタイルを追加 ▼▼▼ */
    .carousel-dots {
        text-align: center;
        margin-top: 15px;
        padding: 5px 0;
    }

    .carousel-dots .dot {
        display: inline-block;
        width: 10px;
        height: 10px;
        margin: 0 5px;
        background-color: var(--c-border);
        border-radius: 50%;
        cursor: pointer;
        transition: background-color 0.3s ease, transform 0.3s ease;
    }

    .carousel-dots .dot.active {
        background-color: var(--c-accent);
        transform: scale(1.2);
    }

}

/* =============================================== */
/* タブレット横向き・小型PC向け (min-width: 768px and max-width: 991px) */
/* =============================================== */
@media (min-width: 768px) and (max-width: 991px) {
    /* コンテナの幅は共通の95%が適用され、max-widthもデフォルトの900pxが適用される */
    /* back-button-containerも同様 */

    /* Card container will revert to grid layout for tablets */
    .card-container {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
        gap: 20px;
        overflow-x: visible;
        padding: 0;
    }
    .feature-card-wrapper {
        flex: auto;
        aspect-ratio: auto;
        height: 300px;
    }

    /* index.html: ホバーが可能なタブレット/小型PCではヘルプボタンを非表示 */
    .help-button, .help-button-close {
        display: none;
    }

    .carousel-dots {
        display: none;
    }

}

/* =============================================== */
/* PC向けレイアウト調整 (min-width: 992px) */
/* =============================================== */
@media (min-width: 992px) {
    /* コンテナの幅は共通の95%が適用され、max-widthもデフォルトの900pxが適用される */
    /* mainとback-button-containerのmax-widthは個別に設定済み */

    /* PCではグリッドレイアウト */
    .card-container {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
        gap: 25px;
        overflow-x: visible;
        padding: 0;
    }
    .feature-card-wrapper {
        aspect-ratio: auto;
        height: 300px;
        flex: auto;
    }

    /* index.html: PCではヘルプボタンを非表示 */
    .help-button, .help-button-close {
        display: none;
    }

    .carousel-dots {
        display: none;
    }

}