/* ================================================================
   Komatsu9 空き状況カレンダー
   v2.4.0
   ================================================================ */

.komatsu9-calendar-wrap {
    margin: 24px 0 36px;
    font-family: inherit;
}

/* ヘッダー（前月・翌月ボタン） */
.k9cal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.k9cal-nav-btn {
    background: #2c5f8a;
    color: #fff;
    border: none;
    padding: 6px 14px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.9em;
    transition: background 0.15s;
}

.k9cal-nav-btn:hover,
.k9cal-nav-btn:focus {
    background: #1a4a70;
}

.k9cal-nav-btn:disabled {
    background: #b0b8c1;
    cursor: not-allowed;
    opacity: 0.6;
}

/* 凡例 */
.k9cal-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    font-size: 0.82em;
    color: #444;
    margin-bottom: 10px;
}

.k9cal-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.k9cal-legend-item i {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* 2ヶ月ラッパー */
.k9cal-months-wrap {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 12px;
}

/* 個別の月 */
.k9cal-month-title {
    text-align: center;
    font-weight: bold;
    font-size: 1em;
    color: #333;
    margin-bottom: 6px;
}

/* 曜日ヘッダー */
.k9cal-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    font-size: 0.75em;
    color: #888;
    margin-bottom: 3px;
}

.k9cal-weekdays span:nth-child(6) { color: #2c82c9; } /* 土 */
.k9cal-weekdays span:nth-child(7) { color: #c0392b; } /* 日 */

/* グリッド */
.k9cal-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

/* 日セル */
.k9cal-day {
    min-height: 52px;
    border: 1px solid #e0e0e0;
    border-radius: 3px;
    padding: 3px 2px 2px;
    cursor: pointer;
    background: #fff;
    transition: background 0.1s, border-color 0.1s;
    box-sizing: border-box;
    user-select: none;
    -webkit-user-select: none;
}

.k9cal-day:hover {
    background: #f0f5ff;
    border-color: #b0c4de;
}

.k9cal-day-empty {
    border: none;
    background: transparent;
    cursor: default;
    min-height: 52px;
}

.k9cal-day-empty:hover { background: transparent; }

/* 土日 */
.k9cal-day.k9cal-sat .k9cal-day-num { color: #2c82c9; }
.k9cal-day.k9cal-sun .k9cal-day-num { color: #c0392b; }

/* 今日 */
.k9cal-today {
    background: #f0f6ff;
    border-color: #2c5f8a;
}

/* ── 選択状態 ── */

/* 確定した開始・終了日（濃青・テキスト白） */
.k9cal-day-sel-start,
.k9cal-day-sel-end {
    background: #2c5f8a !important;
    border-color: #1e4d74 !important;
    border-width: 1px !important;
    box-shadow: 0 2px 7px rgba(44, 95, 138, 0.40);
}

.k9cal-day-sel-start .k9cal-day-num,
.k9cal-day-sel-end .k9cal-day-num {
    color: #fff !important;
    font-weight: bold;
}

/* 確定した中間（薄青） */
.k9cal-day-sel-range {
    background: #c8dff4;
    border-color: #8ab8d8;
}

/* ホバープレビュー：終了候補（中青・破線） */
.k9cal-day-hover-end {
    background: #4e82a8 !important;
    border-color: #2c5f8a !important;
    border-style: dashed !important;
}

.k9cal-day-hover-end .k9cal-day-num {
    color: #fff !important;
}

/* ホバープレビュー：中間（極薄青） */
.k9cal-day-hover-range {
    background: #e4f0fa;
    border-color: #aac8e4;
}

/* 選択中カーソル変更 */
.k9cal-selecting .k9cal-day:not(.k9cal-day-empty):not(.k9cal-day-disabled) {
    cursor: crosshair;
}

/* 開始・終了 SVG アイコンラベル */
.k9cal-day-label {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 3px;
    line-height: 1;
}

.k9cal-arrow {
    display: block;
    width: 18px;
    height: 10px;
    color: rgba(255, 255, 255, 0.92);
    flex-shrink: 0;
}

.k9cal-arrow-wide {
    width: 22px;
}

/* 日付番号 */
.k9cal-day-num {
    display: block;
    font-size: 0.8em;
    color: #333;
    line-height: 1;
    margin-bottom: 2px;
}

/* 施設ドット */
.k9cal-dots {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 1px 0;
}

.k9cal-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* ローディング */
.k9cal-loading {
    grid-column: 1 / -1;
    text-align: center;
    color: #888;
    padding: 20px 0;
    font-size: 0.9em;
}

/* ── 共有テーブルスタイル（block summary・equip detail 兼用） ── */

.k9cal-detail-scroll {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.k9cal-detail-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82em;
    white-space: nowrap;
}

.k9cal-detail-table th,
.k9cal-detail-table td {
    padding: 4px 7px;
    border: 1px solid #dde2ea;
    text-align: center;
}

.k9cal-detail-table th {
    background: #edf0f5;
    font-weight: normal;
    color: #555;
    line-height: 1.2;
}

.k9cal-th-hours {
    font-size: 0.8em;
    color: #888;
    font-weight: normal;
    white-space: nowrap;
}

.k9cal-detail-table .k9cal-det-date,
.k9cal-detail-table .k9cal-det-fac {
    text-align: left;
}

.k9cal-det-date {
    font-size: 1em;
    color: #555;
    background: #f0f2f5 !important;
}

.k9cal-row-day-start td {
    border-top: 2px solid #c8cdd8;
}

.k9cal-det-fac {
    padding-left: 6px;
    border-left: 3px solid;
    font-size: 0.9em;
    max-width: 120px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.k9cal-det-fac-price {
    display: block;
    font-size: 0.75em;
    color: #aaa;
    margin-top: 2px;
    padding-left: 6px;
}

.k9cal-det-free    { color: #27ae60; }
.k9cal-det-blocked { color: #e74c3c; font-weight: bold; }

/* 選択不可（過去・範囲外） */
.k9cal-day-disabled {
    opacity: 0.32;
    cursor: not-allowed !important;
    background: #f4f4f4 !important;
}

.k9cal-day-disabled:hover {
    background: #f4f4f4 !important;
    border-color: #e0e0e0 !important;
}

/* 公開イベント種別（fieldset リセット込み） */
.k9cal-public-event-wrap {
    background: #f8fafd;
    border: 1px solid #d0d8e8;
    border-radius: 6px;
    padding: 10px 14px;
    margin: 0 0 16px;
}

.k9cal-public-event-question {
    display: block;
    font-size: 0.92em;
    font-weight: bold;
    color: #2c3e50;
    margin: 0 0 8px;
    padding: 0;
}

.k9cal-public-event-label {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 0.93em;
    cursor: pointer;
    color: #2c3e50;
    margin-bottom: 5px;
}

.k9cal-public-event-label input[type="checkbox"],
.k9cal-public-event-label input[type="radio"] {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    cursor: pointer;
    accent-color: #2c5f8a;
    margin-top: 3px;
}

/* ── カレンダーウィジェット内セクション見出し ── */

.k9cal-section-heading {
    margin: 20px 0 8px;
}

.komatsu9-calendar-wrap .k9cal-section-heading:first-child {
    margin-top: 0;
}

.k9cal-facility-note {
    font-size: 0.82em;
    color: #666;
    font-weight: normal;
}

/* 外構通路セル（colspan・トグル） */
.k9cal-corridor-cell {
    font-size: 0.82em;
}

/* 選択可能セル共通（設備ブロック等で使用） */
.k9cal-det-cell {
    cursor: pointer;
    text-align: center;
    color: #aaa;
    font-size: 0.9em;
    transition: background 0.1s;
}

.k9cal-det-cell:hover {
    background: #e8f0fa;
    color: #555;
}

/* メイン（青） */
.k9cal-cell-main {
    background: #2c5f8a !important;
    color: #fff !important;
    font-weight: bold;
}

.k9cal-cell-main:hover {
    background: #245078 !important;
}

/* 準備・片付け（アンバー） */
.k9cal-cell-prep {
    background: #e8a020 !important;
    color: #fff !important;
    font-weight: bold;
}

.k9cal-cell-prep:hover {
    background: #c8880e !important;
}

/* 予約済み（選択不可） */
.k9cal-cell-unavailable {
    background: #fdecea !important;
    color: #c0392b !important;
    cursor: not-allowed;
}
.k9cal-cell-unavailable:hover {
    background: #fad4d0 !important;
}
.bbs-cell-unavail-lbl {
    font-size: 0.75em;
    font-weight: bold;
    color: #c0392b;
}
.bbs-cell-conflict {
    font-size: 0.75em;
    font-weight: bold;
    color: #fff;
}
/* 予約済み × 選択済み（競合）のセル */
.k9cal-cell-unavailable.k9cal-cell-main,
.k9cal-cell-unavailable.k9cal-cell-prep {
    background: #c0392b !important;
    color: #fff !important;
}

/* bbs-time-fac-row 競合ハイライト */
.bbs-time-fac-row--conflict {
    background: #fff8f8;
    border: 1px solid #e74c3c;
    border-radius: 4px;
}
.bbs-time-fac-row--conflict .bbs-fac-label {
    border-left-color: #e74c3c !important;
}
.bbs-fac-conflict-badge {
    display: block;
    font-size: 0.72em;
    font-weight: bold;
    color: #c0392b;
    margin-top: 2px;
}

/* 競合警告ボックス */
.bbs-conflict-warn {
    margin-top: 10px;
    padding: 10px 14px;
    background: #fff3f3;
    border: 1px solid #e74c3c;
    border-left: 4px solid #e74c3c;
    border-radius: 4px;
    color: #c0392b;
    font-size: 0.88em;
    line-height: 1.6;
}

/* 凡例：予約済みスウォッチ */
.bbs-legend [data-state="unavailable"]::before {
    background: #fdecea;
    border: 1px solid #e74c3c;
}

/* ── 詳細テーブル：操作ボタン行 ── */

/* ── ヒント ── */

.k9cal-selection-hint {
    font-size: 0.82em;
    color: #888;
    margin: 4px 0 0;
}

.k9cal-hint-selecting {
    color: #2c5f8a;
    font-weight: bold;
}

.k9cal-hint-selected {
    color: #27ae60;
}

/* ── モバイル ── */

@media (max-width: 680px) {
    .k9cal-months-wrap {
        grid-template-columns: 1fr;
    }

    .k9cal-day {
        min-height: 40px;
        padding: 2px;
    }

    .k9cal-day-num { font-size: 0.72em; }
    .k9cal-dot     { width: 5px; height: 5px; }

    .k9cal-nav-btn {
        padding: 5px 10px;
        font-size: 0.82em;
    }

    .k9cal-detail-table { font-size: 0.75em; }

    .k9cal-detail-table th,
    .k9cal-detail-table td {
        padding: 3px 4px;
    }
}
