@charset "utf-8";

/* ==========================================================
    リセット / 基本設定
========================================================== */
html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, p, blockquote, pre, code, form, fieldset, legend, table, th, td, caption, a, article, aside, nav, section, figure, figcaption, footer, header, main, audio, canvas, video, menu, details {
    margin: 0;
    padding: 0;
    background: transparent;
    font-size: 100%;
    vertical-align: baseline;
}
fieldset, legend, img { border: 0; }
article, aside, nav, section, figure, figcaption, footer, header, main, menu, details { display: block; }
video, audio, canvas {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}
audio:not([controls]) { display: none; }
[hidden] { display: none; }

html {
    overflow-y: scroll;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}
body {
    background: #fff;
    color: #222;
    font: 14px/1.4 Helvetica, Arial, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, "游ゴシック", YuGothic, sans-serif;
    -moz-font-feature-settings: "pkna";
    -webkit-font-feature-settings: "pkna";
    font-feature-settings: "pkna";
    letter-spacing: .01em;
    word-wrap: break-word;
    -webkit-text-size-adjust: 100%;
}

/* ==========================================================
    要素の基本スタイル
========================================================== */
h1, h2, h3, h4, h5, h6 {
    font-weight: normal;
    -moz-font-feature-settings: "palt";
    -webkit-font-feature-settings: "palt";
    font-feature-settings: "palt";
    line-height: 1.2;
    color: #222;
}
p { margin: 0 0 1em; }
ul, ol { list-style: none; }
dt { font-weight: bold; }
hr {
    display: block;
    height: 1px;
    margin: 1em 0;
    padding: 0;
    border: 0;
    border-top: 1px solid #ccc;
}
blockquote, q { quotes: none; }
pre {
    font-family: monospace, serif;
    white-space: pre-wrap;
    word-wrap: break-word;
}
figure { margin: 0 0 1em; }

a { color: #04c; }
a:link, a.visited { text-decoration: underline; }
a:hover, a.active { text-decoration: none; }
img { vertical-align: middle; }
em, strong, b { font-weight: bold; }
address, cite, dfn, i, var { font-style: normal; }

/* ==========================================================
    テーブル基本設定（リセット含む）
========================================================== */
table {
    border-collapse: collapse;
    border-spacing: 0;
    width: 100%;
}
th, td {
    font-weight: normal;
    text-align: left;
    box-sizing: border-box; /* パディングを含めて幅計算 */
    word-wrap: break-word;
    overflow-wrap: break-word;
}
th { font-weight: bold; }
caption { text-align: left; }

/* ==========================================================
    フォーム系
========================================================== */
input, textarea, select {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
}
input, button {
    line-height: normal;
    vertical-align: middle;
}
input[type=text],
input[type=password],
textarea {
    width : 100% ;
    padding: 5px;
    background: #fff;
    border: 1px solid #ddd;
    box-sizing: border-box; /* 追加: はみ出し防止 */
    box-shadow: inset 3px 3px 0 0 rgba(0,0,0,0.03);
}
input[type=text]:focus,
input[type=password]:focus,
textarea:focus { border: 1px solid #209dd9; }
input[type=button], input[type=submit], input[type=checkbox] { cursor: pointer; }
textarea { overflow: auto; vertical-align: top; }

/* ==========================================================
    汎用クラス（マージン・パディング・幅など）
========================================================== */
.m0 { margin: 0 !important; } .m5 { margin: 5px !important; } .m10 { margin: 10px !important; } .m15 { margin: 15px !important; } .m20 { margin: 20px !important; } .m25 { margin: 25px !important; } .m30 { margin: 30px !important; } .m35 { margin: 35px !important; } .m40 { margin: 40px !important; } .mt0 { margin-top: 0 !important; } .mt5 { margin-top: 5px !important; } .mt10 { margin-top: 10px !important; } .mt15 { margin-top: 15px !important; } .mt20 { margin-top: 20px !important; } .mt25 { margin-top: 25px !important; } .mt30 { margin-top: 30px !important; } .mt35 { margin-top: 35px !important; } .mt40 { margin-top: 40px !important; } .mt45 { margin-top: 45px !important; } .mt50 { margin-top: 50px !important; } .mb0 { margin-bottom: 0 !important; } .mb5 { margin-bottom: 5px !important; } .mb10 { margin-bottom: 10px !important; } .mb15 { margin-bottom: 15px !important; } .mb20 { margin-bottom: 20px !important; } .mb25 { margin-bottom: 25px !important; } .mb30 { margin-bottom: 30px !important; } .mb35 { margin-bottom: 35px !important; } .mb40 { margin-bottom: 40px !important; } .mb45 { margin-bottom: 45px !important; } .mb50 { margin-bottom: 50px !important; } .ml0 { margin-left: 0 !important; } .ml10 { margin-left: 10px !important; } .mr0 { margin-right: 0 !important; } .mr10 { margin-right: 10px !important; }

.p0 { padding: 0 !important; } .p5 { padding: 5px !important; } .p10 { padding: 10px !important; } .p15 { padding: 15px !important; } .p20 { padding: 20px !important; } .p25 { padding: 25px !important; } .p30 { padding: 30px !important; } .p35 { padding: 35px !important; } .p40 { padding: 40px !important; } .pt0 { padding-top: 0 !important; } .pt10 { padding-top: 10px !important; } .pb0 { padding-bottom: 0 !important; } .pb10 { padding-bottom: 10px !important; } .pl0 { padding-left: 0 !important; } .pl10 { padding-left: 10px !important; } .pr0 { padding-right: 0 !important; } .pr10 { padding-right: 10px !important; }

.w100per { width: 100% !important; }
.fl { float: left !important; } .fr { float: right !important; }
.tal { text-align: left !important; } .tar { text-align: right !important; } .tac { text-align: center !important; }
.breakAll { word-break: break-all !important; }
.dispN { display: none !important; } .dispB { display: block !important; }
.fontBold { font-weight: bold !important; }
.colorBlack { color: #000; }

.clearfix:after { content: " "; display: table; clear: both; }
.clearfix { *zoom: 1; }

.button_box { clear: both; padding: 8px; text-align: center; }
.left_txt { text-align: left; }
.red_txt { color: #ff3333; }
#txt_explain { color: #000000; }

/* ==========================================================
    メインレイアウト
========================================================== */
#wrapper {
    width: auto;
    margin: 20px auto 0;
    box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.2);
    background: #ffffff;
    border: 1px solid #b3b3b3;
    max-width: 100%; /* 追加: はみ出し防止 */
}

#header { padding: 40px 25px; }
#main { padding: 25px; }
#footer {
    margin-top: 40px;
    padding: 15px 0;
    background: #222;
    color: #fff;
    text-align: center;
    font-size: 12px;
}

.section { margin-bottom: 40px; }
.section:last-child { margin-bottom: 0; }
.section__ttl {
    padding: 10px;
    margin-bottom: 20px;
    font-weight: bold;
    color: #fff;
    background: #ff6600;
    font-size: 18px;
}
.section__body { padding: 0 30px; }
/* スマホで余白がきつい場合の調整 */
@media screen and (max-width: 767px) {
    .section__body { padding: 0 10px; }
}

.block { margin-bottom: 15px; }
.block:last-child { margin-bottom: 0; }
.block__ttl {
    margin-bottom: 10px;
    font-size: 16px;
    font-weight: bold;
}

/* ==========================================================
    レスポンシブテーブル設定 (.table)
    ※既存のデザインを維持しつつスマホ対応化
========================================================== */

/* 1. 共通の見た目設定 */
.table {
    width: 100%;
    margin-bottom: 15px;
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
}
.table th,
.table td {
    padding: 15px;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    font-size: 13px;
}
.table th {
    background: #444444;
    color: #ffffff;
    font-weight: bold;
}
.table td {
    background: #fff;
    color: #222;
}

/* 2. スマホ向け（デフォルト、または767px以下） */
/* ここで縦積みの挙動を指定します */
.table,
.table tbody,
.table tr,
.table th,
.table td {
    display: block; /* ブロック要素にして縦に積む */
}

.table tr {
    margin-bottom: 15px; /* 行ごとの間隔 */
    border-top: 1px solid #ccc; /* 行の区切り線 */
}
.table tr:last-child {
    margin-bottom: 0;
}

.table th,
.table td {
    width: 100%; /* 幅いっぱい */
    border-top: none; 
    border-left: none;
    border-right: 1px solid #ccc; /* 右線 */
    /* 縦積み時、ヘッダーとデータの境界がわかりやすいように調整 */
}

/* 3. PC向け（768px以上） */
@media screen and (min-width: 768px) {
    .table {
        display: table;
        /* ▼▼▼ ここで全体のサイズを指定 ▼▼▼ */
        width: 800px; /* ★テーブル全体の幅を800pxに固定 */
        margin: 0 auto 15px; /* 中央寄せにする場合の設定 */
        
        table-layout: fixed;
        border-collapse: collapse;
    }
    
    /* 以下はパターン1と同じでOK */
    .table tbody { display: table-row-group; }
    .table tr    { display: table-row; margin-bottom: 0; }
    
    .table th,
    .table td {
        display: table-cell;
        width: auto; /* 全体幅に合わせて自動配分（必要ならthに幅を指定してもOK） */
        border: 1px solid #ccc;
        border-top: none;
        border-left: none;
        border-right: 1px solid #ccc;
        border-bottom: 1px solid #ccc;
    }
}