﻿/* ======================================================================
    システム名  ：5Sパトロール運用管理システム
    機能ID      ：
    機能名      ：共通スタイルシート
    機能概要    ：
  
    更新履歴
   ----------------------------------------------------------------------
    日付         担当              内容
   ----------------------------------------------------------------------
    2026/06/24   宮下              新規作成
   ====================================================================== */

/* =================================================
  PC/スマートフォン/ipad表示設定
================================================= */
/* design_pc/design_sp/design_ipadはJavaScriptで設定される */
/* デフォルト非表示 */
.design_pc,
.design_sp,
.design_ipad {
    display: none;
}

/* PC */
.is-pc .design_pc {
    display: block;
}

/* スマホ */
.is-sp .design_sp {
    display: block;
}

/* iPad */
.is-tablet .design_pc {
    display: block;
}
.is-tablet .design_ipad {
    display: block;
}

/* =================================================
  全体設定
================================================= */

/* ===== ボディ全体 ===== */
body {
    background: #ffffff;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic", "Meiryo", sans-serif;
    font-size: 14px;
    margin: 0;
    padding-top: 0px;
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 80px;
    -webkit-overflow-scrolling: touch;
}

/* ===== 入出力コントロール ===== */
input, textarea, select {
    /* 入力コントロールの共通スタイル */
    font-size: 14px;
    margin: 0;
}

button, label {
    /* 入力コントロールの共通スタイル */
    font-size: 14px;
    margin: auto 4px;
}

select {
    /* DRL,LST */
    border: 1px solid #cccccc;
    box-sizing: border-box;
    margin: 1px 4px;
    padding: 8px;
}

    select:not([multiple]) {
        /* DRL */
    }

input[type=text], input[type=password], input[type=date] {
    /* TXT,TXR,PWD,DATE */
    border: 1px solid #cccccc;
    box-sizing: border-box;
    height: 36px;
    margin: 1px 4px;
    padding: 8px;
}

/* Text風ラベル(span) */
.input_label {
    padding: 6px 6px; /* ← text と同じ余白 */
}

textarea {
    /* TX2 */
    border: 1px solid #cccccc;
    box-sizing: border-box;
    margin: 1px 4px;
    padding: 2px;
    resize: none;
}

/* TextArea風ラベル(span) */
.textarea_label {
    display: block; /* 幅を持たせる */
    padding: 6px 6px; /* ← textarea と同じ余白 */
    white-space: pre-wrap; /* 改行保持 */
}

input[readonly], textarea[readonly] {
    /* TXRと無効状態のTXT,PWD,TX2  */
    background-color: transparent;
    border: none;
}

input[type=radio], input[type=checkbox] {
    /* RDO,CHK,CHL */
    border: none;
    height: 14px;
    margin: 7px 4px;
    padding: 0;
}

    input[type=checkbox] + label, input[type=radio] + label {
        /* RDO,CHK,CHLのラベル */
        margin: 7px 4px 7px 0;
    }

/* ===== フォント ===== */
/* 大きいサイズ */
.font_big {
    font-size: 18px !important;
    font-weight: bold !important;
}

/* 特大サイズ */
.font_extra {
    font-size: 36px !important;
    font-weight: bold !important;
}

/* 赤文字 */
.color_red {
    color: #ff0000 !important;
}

/* 青文字 */
.color_blue {
    color: #1f4fa3;
}

/* グレー */
.color_gray {
    color: #cccccc;
}

/* ===== ラジオボタン方式 ===== */
.radio_group {
    display: inline-flex; /* 横並び */
    flex-shrink: 0; /* 縮まない */
    border-radius: 6px;
    overflow: hidden;
    margin: 1px 4px;
}

    .radio_group input {
        display: none;
    }

    /* 未選択状態 */
    .radio_group .btn_type, .radio_group .btn_type_6 {
        align-items: center; /* 縦中央 */
        background: #eee;
        border: 1px solid #ccc;
        cursor: pointer;
        display: flex; /* テキストを中央に配置 */
        flex: 1 1 auto; /* 幅を均等に分配、必要以上に伸びない */
        font-size: 14px;
        justify-content: center; /* 横中央 */
        margin: 0;
        min-height: 40px; /* spに合わせる */
        padding: 0;
        transition: all 0.15s ease;
        user-select: none;
    }

    /* 通常（4文字まで） */
    .radio_group .btn_type {
        width: 70px;
    }

    /* 6文字ボタン */
    .radio_group .btn_type_6 {
        width: 100px;
    }


        /* 区切り線 */
        .radio_group .btn_type + .btn_type, .radio_group .btn_type_6 + .btn_type_6 {
            border-left: 1px solid #ccc;
        }

    /* 選択されたとき */
    .radio_group input:checked + .btn_type, .radio_group input:checked + .btn_type_6 {
        background: #2790A8;
        box-shadow: inset 0 2px 4px rgba(0,0,0,0.3), inset 0 -1px 2px rgba(255,255,255,0.2);
        color: #fff;
        /* transform: translateY(1px); */
    }

    /*
.radio_group input[value="0"]:checked + .btn_type, .radio_group input[value="0"]:checked + .btn_type_6 {
  background: #27ae60;
  color: #fff;
}

.radio_group input[value="1"]:checked + .btn_type, .radio_group input[value="1"]:checked + .btn_type_6 {
  background: #e74c3c;
  color: #fff;
}
*/

    /* ラジオ（YES） */
    .radio_group .btn.yes {
        border-radius: 6px 0 0 6px;
        color: #27ae60;
    }
    /* ラジオ（NO） */
    .radio_group .btn.no {
        border-radius: 0 6px 6px 0;
        color: #e74c3c;
        border-left: none;
    }

/* ===== チェックボックス ===== */
.check_group {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* ボタン見た目 */
.btn_check {
    display: inline-block;
    padding: 6px 12px;
    border: 1px solid #ccc;
    border-radius: 6px;
    background: #f5f5f5;
    cursor: pointer;
    font-size: 14px;
    user-select: none;
}

/* チェック時 */
input[type="checkbox"]:checked + .btn_check {
    background: #2563eb;
    color: #fff;
    border-color: #2563eb;
}

/* ホバー */
.btn_check:hover {
    background: #e5e5e5;
}

/* 入力幅（最大） */
.input_max {
    width: calc(100% - 8px); /* ← 左右4px分を引く */
}

/* 入力幅（5文字） */
.input_5 {
    width: 100px !important;
}

/* 入力幅（10文字） */
.input_10 {
    width: 200px !important;
}

/* 入力幅（15文字） */
.input_15 {
    width: 300px !important;
}

/* 入力幅（20文字） */
.input_20 {
    width: 400px !important;
}

/* 数値項目（右寄せ） */
.input_number {
    text-align: right;
}

/* 日付 */
.input_date {
    box-sizing: border-box !important;
    padding: 2px 8px !important;
    width: 140px !important;
}

/* 省略表示 */
.ellipsis_one_line {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    width: 100%;
}

/* リンクっぽいラベル */
.link_label {
    color: #1976d2;
    text-decoration: underline;
}


/* ===== ボタン ===== */
/* ボタン共通 */
.disp_btn, .btn, .btn_5 {
    background: #ffffff;
    border: 2px solid #1A47D4;
    border-radius: 8px; /* 角を丸く */
    color: #1A47D4;
    cursor: pointer;
    font-size: 16px;
    font-weight: 600;
    padding: 8px 0px;
    transition: all 0.2s ease;
}

    /* ボタンカーソルあり */
    .disp_btn:hover, .btn:hover, .btn_5:hover {
        background: #1A47D4;
        color: #fff;
    }

/* 明細用 */
.disp_btn {
    padding: 4px 0px;
    width: 80px;
}

/* 通常（4文字まで） */
.btn {
    width: 80px;
}

/* 5文字ボタン */
.btn_5 {
    width: 100px;
}

/* ファイル */
.file_btn {
    /*
  display: inline-block;
*/
    align-items: center;
    box-sizing: border-box;
    cursor: pointer;
    display: inline-flex;
    justify-content: center;
}

/* ===== 文字配置 ===== */
/* センタリング */
.center {
    text-align: center;
}
/* 左寄せ */
.left {
    text-align: left;
}
/* 右寄せ */
.right {
    text-align: right;
}




/* ===== テーブル ===== */
table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* ===== グループ ===== */
.group_area {
    align-items: center;
    display: flex;
}

/* ===== ヘッダ固定 ===== */
.header_wrapper {
    background: #FFFFFF;
    padding-top: 5px;
    position: sticky;
    top: 0;
    z-index: 100;
}

/* ===== ヘッダ ===== */
.header_area {
    align-items: center;
    background: linear-gradient(135deg, #1A47D4, #4c7cff);
    border-radius: 12px; /* 角を丸く */
    box-shadow: 0 6px 18px rgba(0,0,0,0.08);
    box-sizing: border-box;
    color: #fff;
    display: flex;
    margin: 0px auto 5px auto;
    padding: 7px 10px;
    top: 0px;
    width: 100%;
}

/* ヘッダエリア（左）*/
.header_area_left {
    flex: 1;
}

/* ヘッダエリア（右）*/
.header_area_right {
    margin-left: auto;
    text-align: right;
}

/* ヘッダエリア（タイトル） */
.header_title {
    display: table-cell;
    font-size: 20px;
    font-weight: bold;
    width: 100%;
}

/* ===== 検索エリア（アコーディオン） ===== */
.accordion_header {
    align-items: center;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
    color: #111827;
    cursor: pointer;
    display: flex;
    font-size: 16px;
    font-weight: bold;
    justify-content: space-between;
    padding: 7px 4px;
    transition: all 0.2s ease;
}

    .accordion_header:hover {
        background: #e7ebf3;
    }

    /* 開いたとき */
    .accordion_header.open {
        border-radius: 10px 10px 0 0;
    }

/* アコーディオンアイコン */
.accordion_icon {
    transition: transform 0.3s ease;
}

/* アコーディオン内部 */
.accordion_content {
    background: #FFFFFF;
    border-radius: 0 0 12px 12px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.06);
    margin-bottom: 8px;
    max-height: 0;
    /*  overflow: hidden; */
    padding: 0 14px;
    transition: max-height 0.3s ease;
    overflow-y: auto; /* ← 縦スクロール */
    overflow-x: hidden;
}

    /* 開いたとき */
    .accordion_content.open {
        border: 1px solid #e0e4ec;
        padding: 14px 14px 4px 14px;
        /* 画面下まで最大化 */
        max-height: calc(100vh - 260px);
    }


/* ===== セクションヘッダ ===== */
.disp_section_header {
    align-items: center;
    background-color: #6686EC;
    box-sizing: border-box;
    display: flex;
    justify-content: space-between;
    padding: 7px;
    width: 100%;
}

/* セクション（タイトル） */
.disp_section_title {
    color: #ffffff;
    font-size: 16px;
    font-weight: bold;
}

/* 表示項目 */
.disp_list_header .disp_list_info {
    color: #ffffff;
    font-size: 14px;
    white-space: nowrap;
}

/* ===== 検索エリア ===== */
/* 検索全体 */
.search_area {
    background: #fff;
    border: 1px solid #ccc;
    border-radius: 0 0 8px 8px;
    padding: 14px 14px 4px 14px;
    margin-bottom: 20px;
}

/* 検索行(div) */
.search_row {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: nowrap;
}

/* 検索項目(div) */
.search_item {
    display: flex;
    align-items: center;
    gap: 8px; /* ラベルと入力の間隔 */
}

/* 検索項目タイトル */
.search_item_title {
    width: 70px;
    font-weight: bold;
}

.search_item_title_wide {
    width: 100px;
    font-weight: bold;
}

/* 検索ボタンを右へ(div) */
.search_action {
    margin-top: 12px;
    text-align: right;
}

/* ===== カード部 ===== */
/* カード項目テーブル本体(table) */
.disp_card {
    background: #ffffff;
    border: 1px solid #bbbbbb;
    border-collapse: separate;
    table-layout: fixed;
    width: 100%;
}

    /* カード部（行全体） */
    .disp_card tr {
        font-size: 14px;
        height: 40px;
    }

        /* カード部（行の左端） */
        .disp_card tr > *:first-child {
            border-left: none;
        }

    /* カード項目テーブルのセルの共通スタイル */
    .disp_card > tbody > tr > th,
    .disp_card > tbody > tr > td {
        border-left: 1px solid #cccccc;
        border-top: 1px solid #cccccc;
        overflow: hidden;
        text-align: left;
        vertical-align: middle;
    }

    /* 標題セル */
    .disp_card > tbody > tr > th {
        padding: 3px 7px;
        text-align: center;
    }

    .disp_card > tbody > tr > th,
    th.disp_card,
    div.disp_card,
    td.disp_card {
        background-color: #F0F4FF;
    }

    /* 入出力コントロールセル */
    .disp_card > tbody > tr > td {
        box-sizing: border-box;
        padding: 4px;
        width: auto;
    }

/* カード部（入力あり） */
.disp_card_input > tbody > tr > td,
th.disp_card_input,
td.disp_card_input {
    background: #FFFFCC;
}

/* カード部（指摘） */
.disp_card_check > tbody > tr > th,
th.disp_card_check,
div.disp_card_check {
    background-color: #F8CBAD !important;
}

/* カード部（指摘） */
.disp_card_check > tbody > tr > td,
td.disp_card_check {
    background-color: #FFE3E1 !important;
}

/* 必須マーク */
th.required::after,
td.required::after,
label.required::after,
div.required::after,
h3.required::after {
    content: " *";
    color: #e74c3c;
    font-size: 14px;
    font-weight: bold;
}

/* 削除する表示 */
.label_deleted {
    color: #c0392b;
    font-weight: bold;
}

/* ===== 一覧テーブル ===== */
.disp_list {
    background: #ffffff;
    border: none;
    table-layout: fixed;
    width: 100%;
}

    /* 一覧ヘッダ */
    .disp_list thead th {
        background: #D2CDD9;
        border: none;
        font-size: 13px;
        font-weight: bold;
        line-height: 30px;
        padding: 0px;
    }

    /* 一覧明細（行） */
    .disp_list tbody tr {
        background: #ffffff;
        border-radius: 12px;
        /*  box-shadow: 0 4px 14px rgba(0,0,0,0.05); */
        font-size: 13px;
        height: 40px;
        margin-bottom: 12px;
    }

        /* 一覧明細（偶数行） */
        .disp_list tbody tr:nth-child(even) {
            background: #F5F5F5;
        }

        /* 一覧明細（偶数レコード） */
        .disp_list tbody tr.list_even {
            background: #F5F5F5;
        }
        /* 一覧明細（奇数レコード） */
        .disp_list tbody tr.list_odd {
            background: #ffffff;
        }


    /* 一覧明細（セル） */
    .disp_list tbody td {
        border-left: 1px solid #cccccc;
        overflow-wrap: anywhere; /* 長い文字列でも強制改行 */
        padding: 4px 4px;
        white-space: normal; /* 折り返しを許可 */
        word-break: break-word; /* 単語途中でも改行 */
    }

    /* 明細のラベルはフォントをtableに合わせる */
    .disp_list label {
        font-size: inherit !important;
    }

/* 一覧明細（合計） */
.sum_color {
    background-color: #C8DBF8 !important;
}

/* 一覧明細（期限超過） */
.limit_over_color {
    background-color: #F5C8FF !important;
}

/* 一覧明細（重要） */
.important_color {
    background-color: #FFD3FE !important;
}

/* 一覧明細（◎アイコン） */
.double_circle_color {
    background-color: #FFEEFF !important;
}

/* 一覧明細（○アイコン） */
.circle_color {
    background-color: #FFFFB3 !important;
}

/* 一覧明細（△アイコン） */
.triangle_color {
    background-color: #B3F4FB !important;
}

/* 一覧明細（×アイコン） */
.cross_color {
    background-color: #FD9DA6 !important;
}

/* ===== 内部テーブル ===== */
.inner_table {
    border-collapse: collapse;
    width: 100%;
}

    /* 内部テーブル（行） */
    .inner_table tbody tr {
        height: 20px;
    }

    /* 内部テーブル（セル） */
    .inner_table td {
        font-size: 11pt;
        line-height: 1.2;
        padding: 2px 4px;
    }

    /* 内部テーブル の背景色を解除 */
    .inner_table,
    .inner_table tr,
    .inner_table td {
        background-color: transparent !important;
    }

/* ===== チェックリスト（サブテーブル） ===== */
.checklist_table {
    background-color: #FFE3E1; /* 薄い赤背景 */
    border: 2px solid #d9534f; /* 赤枠 */
    margin: 6px 0;
}

    /* チェックリスト（ヘッダ行） */
    .checklist_table th {
        background-color: #f8cbad;
        border-bottom: 1px solid #d9534f;
        color: #000;
        font-weight: bold;
        text-align: center;
    }

    /* チェックリスト（明細セル） */
    .checklist_table td {
        background-color: transparent;
        border-bottom: 1px dashed #e0a0a0;
    }

        /* チェックリスト（チェックボックス中央寄せを安定） */
        .checklist_table td:first-child {
            text-align: center;
            vertical-align: middle;
        }

    /* チェックリスト（チェックボックスを × 表示にする） */
    .checklist_table input[type="checkbox"] {
        appearance: none;
        background: #fff;
        border: 2px solid #d9534f;
        border-radius: 4px;
        cursor: pointer;
        height: 22px;
        position: relative;
        width: 22px;
        -webkit-appearance: none;
    }

        /* チェックリスト（チェック時に × を表示） */
        .checklist_table input[type="checkbox"]:checked::after {
            content: "×";
            color: #d9534f;
            font-size: 20px;
            font-weight: bold;
            left: 50%;
            line-height: 1;
            position: absolute;
            top: 50%;
            transform: translate(-50%, -55%);
        }

/* チェックリスト（td全体をクリック可能に） */
.checklist_cell {
    padding: 0; /* labelに委ねる */
}

/* チェックリスト（背景色） */
body.is-pc .checklist_table .checklist_cell {
    background-color: #FFE3E1 !important;
}

/* チェック用ラベル */
.checklist_label {
    align-items: center;
    /*  cursor: pointer; */
    display: flex;
    gap: 10px;
    height: 100%;
    padding: 10px;
    width: 100%;
}

/* paddingを幅計算に含める */
body.is-pc .checklist_label {
    box-sizing: border-box;
}

    /* テキストは残り幅を使う */
    body.is-pc .checklist_label input[type="text"] {
        box-sizing: border-box;
        flex: 1;
        font-size: 14px; /* 実施エリアと同じ */
        height: 38px; /* 実施エリアとバランスを取る */
        min-width: 0; /* ← これが超重要 */
        padding: 8px 6px;
        width: auto; /* 95%を打ち消す */
    }

/* チェックボックス位置調整 */
.checklist_label input[type="checkbox"] {
    flex-shrink: 0;
}


/* チェックリスト（登録用） */
/* チェックボックスサイズ */
.checklist_button {
    width: 80px !important;
    height: 40px !important;
}

/* チェック時 × のサイズ */
.checklist_table input.checklist_button:checked::after {
    font-size: 36px !important;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* FSIフリー項目用（グレー表示） */
.checklist_table input[type="checkbox"].fsiFree {
    border: 2px solid #c5c5c5;
}

    .checklist_table input[type="checkbox"].fsiFree:checked::after {
        color: #c5c5c5;
    }


/* ===== メールアイコン ===== */
.mail_cell {
    text-align: center;
    width: 30px;
}

    /* メールありのときだけ表示 */
    .mail_cell.has_mail {
        background-image: url("/icon/mail.png");
        background-position: center;
        background-repeat: no-repeat;
        background-size: 20px 20px;
        cursor: pointer;
    }

        .mail_cell.has_mail:hover {
            opacity: 0.7;
        }

/* クリック判定 */
.mail_hit {
    cursor: pointer;
    display: inline-block;
    height: 30px;
    width: 30px;
}

    /* メールあり */
    .mail_hit.has_mail {
        background: url("/icon/mail.png") center / 30px no-repeat;
    }

/* ===== ピン止めアイコン ===== */
.pin_cell {
    cursor: pointer;
    text-align: center;
    width: 30px;
}

/* OFF */
.pin_off {
    background: url("/icon/pin_off.png") center / 20px no-repeat;
    opacity: 0.4;
}

/* ON */
.pin_on {
    background: url("/icon/pin_on.png") center / 20px no-repeat;
    opacity: 1;
}

.pin_cell:hover {
    opacity: 0.7;
}

tr.pinned {
    opacity: 1;
}

/* ===== ピン ===== */
/* クリック判定用 */
.pin_hit {
    cursor: pointer;
    display: inline-block;
    height: 26px;
    width: 26px;
}

    /* OFF */
    .pin_hit.pin_off {
        background: url("/icon/pin_off.png") center / 26px no-repeat;
        opacity: 0.4;
    }

    /* ON */
    .pin_hit.pin_on {
        background: url("/icon/pin_on.png") center / 26px no-repeat;
        opacity: 1;
    }

/* ===== ダウンロードアイコン ===== */
.download_cell {
    background-image: url("/icon/download.png");
    background-position: center;
    background-repeat: no-repeat;
    background-size: 25px 30px;
    cursor: pointer;
    text-align: center;
    width: 30px;
}

/* スマホ用ダウンロードアイコン */
body.is-sp span.download_cell {
    display: inline-block;
    width: 30px;
    height: 30px;
}

.download_cell:hover {
    opacity: 0.7;
}


/* ===== ページャ ===== */
.pager {
    align-items: center;
    display: flex;
    gap: 8px;
    justify-content: center;
    margin: 12px 0;
}

    /* 現在ページ */
    .pager .current {
        background: #1976d2;
        border-radius: 4px;
        border: 1px solid #1976d2;
        color: #fff;
        height: 32px;
        line-height: 32px;
        min-width: 32px;
        text-align: center;
    }

    /* ページャ（リンク） */
    .pager a,
    .pager span {
        border-radius: 4px;
        border: 1px solid #ccc;
        color: #333;
        height: 32px;
        line-height: 32px;
        min-width: 32px;
        text-align: center;
        text-decoration: none;
    }

    /* ページャ（有効） */
    .pager .active {
        background: #1976d2;
        border-color: #1976d2;
        color: #fff;
    }

    /* ページャ（無効） */
    .pager .disabled {
        background: #f5f5f5;
        border-color: #ddd;
        opacity: 0.4; /* 薄く表示 */
        pointer-events: none; /* クリック不可 */
    }

/* ===== フッタ固定 ===== */
.fixed_footer {
    background: #ffffff;
    border-radius: 16px 16px 0 0;
    bottom: 0;
    box-shadow: 0 -4px 20px rgba(0,0,0,0.08);
    box-sizing: border-box;
    left: 0;
    padding: 10px 15px;
    position: fixed;
    width: 100%;
    z-index: 200;
}

/* ===== メッセージ ===== */
.message_area {
    background: #fff;
    border: 2px solid #ff0000;
    color: #ff0000;
    padding: 4px 4px;
    margin: 0px auto 5px auto;
}


/* ===== 状況 ===== */
.status_badge {
    border-radius: 4px;
    display: inline-block;
    font-size: 12px;
    line-height: 1;
    padding: 4px 8px;
    border: 1px solid transparent;
}

/* 未実施 */
.status_notyet {
    background: #aaaaaa;
}

/* 承認待ち */
.status_pending {
    background: #f39c12;
}

/* 承認済み */
.status_approved {
    color: #fff;
    background: #27ae60;
}

/* 差戻し */
.status_returned {
    color: #fff;
    background: #e74c3c;
}

/* ===== 入力区分タグ ===== */
.type_label {
    display: inline-block;
    padding: 3px 10px;
    border-left: 5px solid;
    border-radius: 4px;
    font-size: 13px;
    font-weight: bold;
    line-height: 1.4;
    white-space: nowrap;
}

/* 是正 */
.type_zesei {
    background: #ffeaea;
    border-left-color: #e74c3c;
    color: #c0392b;
}

/* 好事例 */
.type_good {
    background: #eafaf1;
    border-left-color: #27ae60;
    color: #1e8449;
}

/* ===== FSI重要項目タグ ===== */
/* 重要 */
.type_important {
    align-items: center;
    background: #EEF4FF;
    border: 1px solid #5B84F1;
    border-radius: 6px;
    box-sizing: border-box;
    color: #1A47D4;
    display: inline-flex;
    font-size: 11px;
    font-weight: 700;
    height: 22px;
    justify-content: center;
    padding: 0 5px;
    white-space: nowrap;
}


/* ===== 評価アイコン ===== */
.rate_icon {
    align-items: center;
    box-sizing: border-box;
    display: inline-flex;
    height: 20px;
    justify-content: center;
    width: 20px;
}

/* ◎アイコン */
.rate_icon_double_circle {
    position: relative;
    width: 20px;
    height: 20px;
    border: 2px solid #000;
    border-radius: 50%;
}

    .rate_icon_double_circle::after {
        content: "";
        position: absolute;
        width: 6px;
        height: 6px;
        border: 2px solid #000;
        border-radius: 50%;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

/* ○アイコン */
.rate_icon_circle {
    border-radius: 50%;
    border: 2px solid #000;
}

/* △アイコン */
.rate_icon_triangle {
    border-bottom: 20px solid #000;
    border-left: 12px solid transparent;
    border-right: 12px solid transparent;
    content: "";
    height: 0;
    width: 0;
}

/* ×アイコン */
.rate_icon_cross {
    position: relative;
}

    .rate_icon_cross::before,
    .rate_icon_cross::after {
        background: #000;
        content: "";
        height: 20px;
        position: absolute;
        width: 2px;
    }

    .rate_icon_cross::before {
        transform: rotate(45deg);
    }

    .rate_icon_cross::after {
        transform: rotate(-45deg);
    }

/* チェックON時 */
/* ◎アイコン */
input[type="checkbox"]:checked + .btn_check .rate_icon_double_circle {
    border-color: #fff;
}

    /* 内側の円も白 */
    input[type="checkbox"]:checked + .btn_check .rate_icon_double_circle::after {
        border-color: #fff;
    }
/* ○アイコン */
input[type="checkbox"]:checked + .btn_check .rate_icon_circle {
    border-color: #fff;
}


/* ===== メッセージconfirm ===== */
/* confirm背景 */
.confirm_overlay {
    position: fixed !important;
    inset: 0 !important;
    background: rgba(0,0,0,0.4);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 9999 !important;
    pointer-events: auto !important;
}

/* confirm本体 */
/*.confirm_box {
    background: #fff;
    padding: 25px;
    border-radius: 8px;
    width: 300px;
    text-align: center;
    position: relative;
    z-index: 9999 !important;
}*/
.confirm_box {
    display: inline-block;
    min-width: 300px;
    max-width: min(80vw, 600px);
    text-align: center;
    padding: 25px;
    background: #fff;
    border-radius: 8px;
    box-sizing: border-box;
}
/* メッセージ */
.confirm_message {
    margin-bottom: 20px;
}

/* ボタン領域 */
.confirm_buttons {
    display: flex;
    justify-content: center;
    gap: 20px;
}


/* =========================
   モーダル共通
========================= */
.modal_overlay {
    align-items: center;
    background: rgba(0,0,0,0.5);
    display: none;
    inset: 0;
    justify-content: center;
    position: fixed;
    z-index: 1000;
}

.modal_content {
    background: #fff;
    width: 90%;
    max-width: 400px;
    height: 70vh; /* ← 縦サイズ固定 */
    border-radius: 8px;
    padding: 15px;
    display: flex;
    flex-direction: column;
}

/*
.modal_content_jigyosyo {
  background: #fff;
  width: 500px;
  padding: 20px;
  border-radius: 6px;
  box-shadow: 0 5px 20px rgba(0,0,0,0.2);
}
*/
.modal_content_jigyosyo {
    background: #fff;
    width: 500px;
    height: 90vh;
    padding: 20px;
    border-radius: 6px;
    box-shadow: 0 5px 20px rgba(0,0,0,0.2);
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
}

    .modal_content_jigyosyo .modal_footer {
        margin-top: 10px;
        flex-shrink: 0;
    }

.modal_body {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

/* =========================
   モーダルフッター
========================= */
.modal_footer {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
}


/* =========================
   事業所ツリー
========================= */
#jigyosyoTree {
    flex: 1;
    min-height: 200px;
    overflow-y: auto;
    border: 1px solid #ddd;
    padding: 10px;
    margin-top: 10px;
}

/* フォルダアイコン非表示 */
.jstree-themeicon {
    display: none !important;
}

/* -------------------------
   行高さ統一
------------------------- */

.jstree-anchor {
    height: 48px !important;
    line-height: 48px !important;
    font-size: 16px;
}

.jstree-node {
    min-height: 48px !important;
    line-height: 48px !important;
}

.jstree-wholerow {
    height: 48px !important;
}

/* -------------------------
   選択行
------------------------- */

.jstree-wholerow-clicked {
    background: #d8ebff !important;
}

.jstree-clicked {
    background: transparent !important;
}

/* -------------------------
   開閉アイコン領域
------------------------- */

.jstree-ocl {
    position: relative;
    width: 56px !important;
    height: 56px !important;
    background-image: none !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    cursor: pointer;
}

/* -------------------------
   葉ノード
------------------------- */

.jstree-leaf > .jstree-ocl::before,
.jstree-leaf > .jstree-ocl::after {
    display: none;
}

/* -------------------------
   □ 共通
------------------------- */

.jstree-open > .jstree-ocl::before,
.jstree-closed > .jstree-ocl::before {
    content: "";
    position: absolute;
    width: 28px;
    height: 28px;
    border: 2px solid #666;
    border-radius: 2px;
    background: #fff;
    box-sizing: border-box;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* -------------------------
   ＋
------------------------- */

.jstree-closed > .jstree-ocl::after {
    content: "+";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -56%);
    font-size: 22px;
    font-weight: bold;
    color: #333;
    line-height: 1;
}

/* -------------------------
   －
------------------------- */

.jstree-open > .jstree-ocl::after {
    content: "−";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -60%);
    font-size: 22px;
    font-weight: bold;
    color: #333;
    line-height: 1;
}

/* -------------------------
   ホバー
------------------------- */

.jstree-ocl:hover::before {
    border-color: #1976d2;
    background: #f0f7ff;
}

/* -------------------------
   スマホ
------------------------- */

@media (max-width: 768px) {

    .jstree-ocl {
        width: 64px !important;
        height: 64px !important;
    }

    .jstree-open > .jstree-ocl::before,
    .jstree-closed > .jstree-ocl::before {
        width: 34px;
        height: 34px;
    }

    .jstree-open > .jstree-ocl::after,
    .jstree-closed > .jstree-ocl::after {
        font-size: 26px;
    }
}

/* ノードを基準にする */
.jstree-node {
    position: relative;
}

    /* 縦線 */
    .jstree-node::before {
        content: "";
        position: absolute;
        left: 28px; /* □の中心 */
        top: -8px;
        bottom: -8px;
        width: 1px;
        background: #c0c0c0;
    }

/* 横線 */
.jstree-anchor {
    position: relative;
}

    .jstree-anchor::before {
        content: "";
        position: absolute;
        left: -14px;
        top: 50%;
        width: 14px;
        height: 1px;
        background: #c0c0c0;
    }

/* 最上位は縦線なし */
.jstree-container-ul > .jstree-node::before {
    display: none;
}

/* ---------------------------------------------------------
   iOS Safari：プルしてリロードを抑止
   --------------------------------------------------------- */
html,
body {
    overscroll-behavior-y: none;
}

/* =================================================
   PC固有設定
================================================= */
/* ===== 一覧テーブル ===== */
.design_pc .disp_list {
    border: 1px solid #cccccc;
    border-collapse: collapse;
    width: 100%;
}

    /* ヘッダ縦線 */
    .design_pc .disp_list thead th {
        border-right: 1px solid #bbb;
        border-bottom: 1px solid #bbb;
    }

    /* 明細縦線 */
    .design_pc .disp_list tbody td {
        border-right: 1px solid #cccccc;
        border-bottom: 1px solid #e5e7eb;
    }

/* 一覧テーブル 外枠補強 */
.design_pc .disp_list {
    border-collapse: collapse;
}

    /* 右端の線 */
    .design_pc .disp_list thead th:last-child,
    .design_pc .disp_list tbody td:last-child {
        border-right: 1px solid #cccccc;
    }

    /* 最下行の線 */
    /*
.design_pc .disp_list tbody tr:last-child td {
  border-bottom: 1px solid #cccccc;
}
*/
    /* tbody全体の最下線 */
    .design_pc .disp_list tbody {
        border-bottom: 1px solid #cccccc;
    }

/* 右端の線は消す */
/*
.design_pc .disp_list thead th:last-child,
.design_pc .disp_list tbody td:last-child {
  border-right: none;
}
*/

/* 横線（見やすさ向上） */
/*
.design_pc .disp_list tbody tr {
  border-bottom: 1px solid #e5e7eb;
}
*/

/* =================================================
   スマートフォン固有設定
================================================= */
/* ===== ボディ全体 ===== */
/* フッタ高さ分 */
body.is-sp {
    padding-bottom: 100px;
}

    /* ===== アコーディオン内部 ===== */
    body.is-sp .accordion_content tbody tr {
        display: block;
    }

    body.is-sp .accordion_content td {
        text-align: left; /* 一旦リセット */
    }

        body.is-sp .accordion_content td:last-child {
            display: flex;
            justify-content: flex-end;
        }

    /* 検索条件tableを縦並びに */
    body.is-sp .accordion_content table,
    body.is-sp .accordion_content tbody {
        width: 100%;
        box-sizing: border-box;
    }

    body.is-sp .accordion_content input,
    body.is-sp .accordion_content select {
        font-size: 16px;
        width: 100%;
    }

    body.is-sp .accordion_content td[align="right"] {
        text-align: center;
    }

    /* ===== セクションヘッダ（スマホ用） ===== */
    body.is-sp .sp_header {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

        body.is-sp .sp_header span:last-child {
            font-weight: normal;
        }

    /* ===== 一覧テーブル ===== */
    /* ===== inner table ===== */
    body.is-sp .disp_list {
        border: 0px;
    }

        body.is-sp .disp_list tbody tr,
        body.is-sp .inner_table tbody tr {
            height: auto;
        }

        body.is-sp .disp_list th,
        body.is-sp .disp_list td,
        body.is-sp .inner_table td {
            width: auto !important;
        }


        /* 一覧ヘッダ非表示 */
        body.is-sp .disp_list thead {
            display: none;
        }

        /* 一覧明細（1行＝カード化） */
        body.is-sp .disp_list tbody tr {
            background: #ffffff;
            border-radius: 8px;
            border: 1px solid #DEDEDE;
            display: block;
            height: auto;
            margin-bottom: 10px;
        }

            /* 一覧明細（偶数行） */
            body.is-sp .disp_list tbody tr:nth-child(even) {
                background-color: #F5F5F5;
            }

        /* 一覧明細（セル） */
        body.is-sp .disp_list tbody td {
            border-left: none !important;
            display: block;
            padding: 6px 8px;
            width: 100% !important;
        }

    /* inner_table調整 */
    body.is-sp .inner_table tbody tr {
        margin-bottom: 0 !important;
    }

    body.is-sp .inner_table td {
        font-size: 14px;
        line-height: 1.4;
        word-break: break-word;
    }

        body.is-sp .inner_table td[style*="width"] {
            width: auto !important;
        }

    /* inner_table が disp_list を超えないようにする */
    body.is-sp .disp_list tbody td {
        box-sizing: border-box;
    }

    body.is-sp .inner_table {
        box-sizing: border-box;
        max-width: 100%;
        width: 100%;
    }

    /* 右寄せ（スマホ） */
    body.is-sp .action_cell {
        display: flex;
        align-items: center;
    }

    /* ===== ピン ===== */
    /* クリック判定用 */
    body.is-sp .pin_hit {
        margin-left: auto;
    }

    /* 明細選択 */
    body.is-sp .action_cell {
        display: flex;
        align-items: center;
        gap: 10px;
    }

    body.is-sp .disp_list tbody td.action_cell {
        align-items: center;
        display: flex !important;
        gap: 10px;
    }

    /* ピンは常に右端 */
    body.is-sp .action_cell .pin_icon {
        margin-left: auto;
    }

    /* ===== ボタン ===== */
    body.is-sp .btn {
        min-height: 44px;
        min-width: 44px;
    }

    body.is-sp .btn_5 {
        min-height: 44px;
    }

    /* スマホカード */
    body.is-sp .sp_card {
        background: #fff;
        border-radius: 8px;
        border: 1px solid #ccc;
        padding: 10px;
    }

    body.is-sp .sp_card_input {
        background: #FFFFCC;
        border-radius: 8px;
        border: 1px solid #ccc;
        padding: 10px;
    }

    body.is-sp .sp_card_check {
        background: #FFE3E1;
        border-radius: 8px;
        border: 1px solid #ccc;
        padding: 10px;
    }

    /* 1項目 */
    body.is-sp .sp_row {
        margin-bottom: 12px;
    }

    /* ラベル */
    body.is-sp .sp_label {
        background-color: #F0F4FF;
        border: 1px solid #ddd; /* 外枠 */
        font-size: 13px;
        margin-bottom: 4px;
        padding: 0px 10px;
    }

    /* ラベル（指摘あり） */
    body.is-sp .sp_label_check {
        background-color: #F8CBAD;
    }

    /* 値 */
    body.is-sp .sp_value {
        font-size: 15px;
    }

    /* TextArea風ラベル(span) */
    body.is-sp .textarea_label {
        font-size: 15px;
    }

    /* スマホ用：入力欄を大きく */
    body.is-sp input[type="text"],
    body.is-sp input[type="password"],
    body.is-sp input[type="date"],
    body.is-sp select,
    body.is-sp textarea {
        box-sizing: border-box;
        font-size: 16px;
        min-height: 36px;
        padding: 8px 10px;
    }

    body.is-sp .radio_group label {
        align-items: center;
        display: inline-flex;
        font-size: 16px;
        line-height: 44px;
        padding: 0 12px;
    }

    body.is-sp .radio_group {
        display: flex;
        gap: 12px;
    }


    /* チェックリスト */
    body.is-sp .checklist_table {
        box-sizing: border-box;
        width: 100%;
    }

    /* ヘッダ行 */
    body.is-sp .sp_label_check {
        background-color: #f8cbad; /* PCと同じ赤系背景 */
        border: 1px solid #d9534f; /* 外枠 */
        font-weight: bold;
        margin-bottom: 0;
        padding: 0px 10px;
    }

    /* チェック用ラベル */
    body.is-sp .checklist_label {
        box-sizing: border-box;
        display: flex;
        gap: 10px;
        width: 100%;
    }

        body.is-sp .checklist_label span {
            flex: 1; /* 残り幅を使用 */
            overflow-wrap: anywhere;
            word-break: break-word; /* 長文折り返し */
        }

        body.is-sp .checklist_label input[type="text"] {
            box-sizing: border-box;
            flex: 1; /* 残り幅いっぱい */
            min-width: 0; /* はみ出し防止 */
            width: 100%;
        }

    /* チェック項目 */
    body.is-sp .checklist_item {
        align-items: center;
        display: flex;
        gap: 10px;
        padding: 10px;
        border-bottom: 1px dashed #e0a0a0;
    }

        /* 最後の項目は点線非表示 */
        body.is-sp .checklist_item:last-child {
            border-bottom: none;
        }

        body.is-sp .checklist_item input[type="checkbox"] {
            flex-shrink: 0;
        }

        body.is-sp .checklist_item .checklist_label {
            flex: 1;
            margin: 0;
            padding: 0; /* 広がり防止 */
        }

/* スマホ：評価と状況を横並び */
.design_sp .sp_eval_row {
    align-items: center;
    display: flex;
    justify-content: space-between;
    margin-top: 4px;
}

/* 左側 */
.design_sp .eval_left {
    align-items: center;
    display: inline-flex;
    gap: 6px;
}

/* 右側 */
.design_sp .eval_right {
    text-align: right;
}

/* =========================
   モーダル共通
========================= */
body.is-sp .modal_content {
    width: 100%;
    height: 100%;
    max-width: none;
    border-radius: 8px;
}

body.is-sp .modal_content_jigyosyo {
    /*
    box-sizing: border-box;
    width: calc(100% - 20px);
    height: calc(100vh - 20px);
    margin: 10px;
    padding: 15px;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
*/
    width: calc(100% - 20px);
    max-height: calc(100dvh - 20px);
    display: flex;
    flex-direction: column;
}

    body.is-sp .modal_content_jigyosyo .search_item {
        display: block;
        margin-bottom: 14px;
    }

        body.is-sp .modal_content_jigyosyo .search_item label {
            display: block;
            margin-bottom: 6px;
        }

        body.is-sp .modal_content_jigyosyo .search_item select {
            width: 100%;
        }


/* =================================================
   iPad用固有設定
================================================= */
/* iPad用：入力フォント拡大（ズーム防止） */
body.is-ipad input,
body.is-ipad select,
body.is-ipad textarea {
    font-size: 16px;
}


