@charset "utf-8";

/* ============================================================================
   대관시설 예약현황 캘린더
   대상 : /siteprogram/Bcic/page/Facility_List.aspx  (fullCalendar v3)
          /siteprogram/Bcic/page/OpenDoor_List.aspx  (fullCalendar v3)
   경로 : /site/resource/bcic/common/css/rental-calendar.css
   ----------------------------------------------------------------------------
   ※ fullcalendar.min.css 뒤에 로드해야 합니다.
   ※ 색상 / 폰트 / 간격은 style.css 의 :root 토큰을 그대로 사용합니다.
      (--main-color01, --gray-color01, --blue-color01, --font-type02 등)
   ※ 상세 테이블은 사이트 공통 .table.table-line 을 사용하고, 여기서는
      캘린더 안에서만 필요한 보정(폭 제한 해제, 상태 텍스트 색)만 합니다.
   ※ 마스터에서 css-vars-ponyfill 을 쓰므로 미디어쿼리 안에서는 변수를
      재정의하지 않고 실제 값을 직접 지정합니다. (IE 대응)
   ========================================================================== */

/* ── 캘린더 카드 ────────────────────────────────────────────────────────── */

.rental-calendar-wrap {
    border: 1px solid #DDD;
    border-radius: 8px;
    background: #fff;
    padding: 20px 20px 24px;
    margin-top: 12px;
}

    /* ── 툴바 : 사이트 datepicker 헤더와 동일한 어법 ────────────────────────── */

    .rental-calendar-wrap .fc-toolbar.fc-header-toolbar {
        margin-bottom: 14px;
    }

    .rental-calendar-wrap .fc-toolbar h2 {
        font-family: var(--font-type02);
        font-size: 22px;
        font-weight: 700;
        letter-spacing: 0;
        line-height: 32px;
        color: var(--font-color01);
        margin: 0;
    }

    .rental-calendar-wrap .fc-button {
        width: 32px;
        height: 32px;
        padding: 0;
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        text-shadow: none;
        color: var(--font-color01);
        opacity: 1;
    }

        /* fullCalendar 자체 아이콘을 숨기고 bootstrap-icons 로 교체 */
        .rental-calendar-wrap .fc-button .fc-icon {
            display: none;
        }

        .rental-calendar-wrap .fc-button::after {
            display: block;
            font-family: var(--font-icon);
            font-size: 26px;
            line-height: 32px;
            text-align: center;
        }

    .rental-calendar-wrap .fc-prev-button::after {
        content: "\F12A";
    }

    .rental-calendar-wrap .fc-next-button::after {
        content: "\F134";
    }

    .rental-calendar-wrap .fc-button:hover {
        color: var(--main-color01);
    }

    .rental-calendar-wrap .fc-button:focus {
        outline: 1px auto -webkit-focus-ring-color;
    }

    .rental-calendar-wrap .fc-button.fc-state-disabled {
        opacity: .25;
        cursor: default;
    }

        .rental-calendar-wrap .fc-button.fc-state-disabled:hover {
            color: var(--font-color01);
        }

    /* ── 표 골격 : 사이트 .table 관례(상단 2px)를 따름 ──────────────────────── */

    .rental-calendar-wrap .fc-view > table {
        border-top: 2px solid var(--main-color02);
    }

    .rental-calendar-wrap .fc-unthemed td,
    .rental-calendar-wrap .fc-unthemed th {
        border-color: #E5E5E5;
    }

    .rental-calendar-wrap .fc-view > table > thead > tr > td {
        border-color: #E5E5E5;
    }

    /* 요일 헤더 */
    .rental-calendar-wrap .fc-day-header {
        padding: 12px 0 11px;
        background: transparent;
        font-size: 15px;
        font-weight: 700;
        color: var(--font-color01);
    }

        .rental-calendar-wrap .fc-day-header.fc-sun {
            color: #B70F0F;
        }

        .rental-calendar-wrap .fc-day-header.fc-sat {
            color: #116EB4;
        }

    /* ── 날짜 셀 ────────────────────────────────────────────────────────────── */

    /* 캘린더는 항상 전체가 보여야 하므로 내부 스크롤을 쓰지 않는다.
   (fullCalendar 의 scroller 가 overflow-y:auto 라 스크롤바가 생길 수 있음) */
    .rental-calendar-wrap .fc-scroller.fc-day-grid-container {
        height: auto !important;
        overflow: visible !important;
    }

    .rental-calendar-wrap .fc-day-grid .fc-row {
        min-height: 96px;
    }

    .rental-calendar-wrap .fc-content-skeleton td.fc-day-top {
        position: relative;
        height: 96px;
        padding: 10px 10px 0;
        vertical-align: top;
    }

    /* fullCalendar 기본값인 float:right 를 해제해야 뱃지가 아래로 정렬됩니다. */
    .rental-calendar-wrap .fc-day-top .fc-day-number {
        float: none;
        display: block;
        padding: 0;
        font-size: 17px;
        font-weight: 600;
        line-height: 22px;
        text-align: right;
        color: #333;
        opacity: 1;
    }

    .rental-calendar-wrap .fc-day-top.fc-sun .fc-day-number {
        color: #B70F0F;
    }

    .rental-calendar-wrap .fc-day-top.fc-sat .fc-day-number {
        color: #116EB4;
    }

    .rental-calendar-wrap .fc-day-top.fc-other-month,
    .rental-calendar-wrap .fc-day.fc-other-month {
        background: #FAFBFC;
    }

    .rental-calendar-wrap .fc-day.fc-today {
        background: var(--blue-color01);
    }

    .rental-calendar-wrap .fc-day-top.fc-today .fc-day-number {
        font-weight: 700;
        color: var(--main-color01);
    }

    /* 선택 표시 : 행 전체 높이를 차지하는 배경 셀에 건다.
   (.fc-content-skeleton 의 셀은 날짜 숫자 영역까지만 차지해 높이가 어긋남) */
    .rental-calendar-wrap .fc-bg td.fc-day.is-selected {
        box-shadow: inset 0 0 0 2px var(--main-color01);
    }

    /* 캘린더 하단 마감선.
   상세 영역이 .fc-day-grid 안에 삽입되므로, 선을 마지막 주 행에 걸면
   상세가 열렸을 때 본문 셀 아래가 비어 버린다. 본문 셀에 한 번만 그린다. */
    .rental-calendar-wrap .fc-body > tr > .fc-widget-content {
        border-bottom: 1px solid #E5E5E5;
    }

    /* 캘린더 격자와 상세 영역 사이에도 선을 넣고 싶으면 아래 주석을 해제.
   (JS 가 마지막 주 행에 is-last-week 클래스를 부여함)
.rental-calendar-wrap .fc-day-grid > .fc-row.is-last-week {
    border-bottom: 1px solid #E5E5E5;
}
*/

    /* 이벤트를 쓰지 않으므로 이벤트 영역이 셀 높이를 밀어내지 않도록 제거 */
    .rental-calendar-wrap .fc-content-skeleton {
        padding-bottom: 0;
    }

        .rental-calendar-wrap .fc-content-skeleton tbody,
        .rental-calendar-wrap .fc-content-skeleton .fc-event-container {
            display: none !important;
        }

    /* ── 상태 뱃지 ──────────────────────────────────────────────────────────── */

    .rental-calendar-wrap .fac-cal-badge {
        display: block;
        box-sizing: border-box;
        position: absolute;
        left: 10px;
        right: 10px;
        top: 50%;
        width: auto;
        height: 28px;
        margin: -14px 0 0; /* height 의 절반. transform 대신 사용 (IE 대응) */
        padding: 0 5px;
        border: 0;
        border-radius: 6px;
        -webkit-appearance: none;
        appearance: none;
        font-family: var(--font-type01);
        font-size: 14px;
        font-weight: 500;
        line-height: 28px;
        letter-spacing: -.4px;
        text-align: center;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        /* 비활성 뱃지도 동일한 button 이므로 브라우저 기본 흐림 처리만 해제 */
        .rental-calendar-wrap .fac-cal-badge[disabled] {
            opacity: 1;
            cursor: default;
            pointer-events: none;
        }

        /* 예약가능 : 사이트 primary */
        .rental-calendar-wrap .fac-cal-badge.is-open {
            color: #fff;
            background: var(--main-color01);
            cursor: pointer;
            transition: background .2s;
        }

            .rental-calendar-wrap .fac-cal-badge.is-open:hover,
            .rental-calendar-wrap .fac-cal-badge.is-open:focus {
                background: var(--main-color01-hover);
            }

            .rental-calendar-wrap .fac-cal-badge.is-open:focus {
                outline: 1px auto -webkit-focus-ring-color;
            }

        /* 휴관 / 공휴일 등 : 옅은 톤 + 강조색 텍스트 */
        .rental-calendar-wrap .fac-cal-badge.is-holiday {
            color: #B70F0F;
            background: #FBECEC;
        }

        /* 예약완료 */
        .rental-calendar-wrap .fac-cal-badge.is-booked {
            color: var(--main-color02);
            background: var(--gray-color02);
        }

        /* 예약종료 / 예약불가 */
        .rental-calendar-wrap .fac-cal-badge.is-disabled {
            color: var(--font-color02);
            background: var(--gray-color01);
        }

    /* ── 일자 선택 시 상세 영역 ─────────────────────────────────────────────── */

    .rental-calendar-wrap .cal-detail-row {
        background: #fff;
        padding: 0;
        margin: 16px;
    }

        /* 응답이 350ms 를 넘길 때만 JS 가 붙인다. 평상시엔 나타나지 않음 */
        .rental-calendar-wrap .cal-detail-row.is-loading {
            opacity: .65;
            transition: opacity .2s ease-out;
        }

    .rental-calendar-wrap .cal-detail-head {
        font-family: var(--font-type02);
        font-size: 16px;
        font-weight: 700;
        letter-spacing: 0;
        color: var(--font-color01);
        margin-bottom: 8px;
    }

        .rental-calendar-wrap .cal-detail-head .txt {
            font-family: var(--font-type01);
            font-size: 15px;
            font-weight: 400;
            letter-spacing: -.4px;
            color: var(--font-color02);
            margin-left: 5px;
        }

        .rental-calendar-wrap .cal-detail-head .txt-holiday {
            font-family: var(--font-type01);
            font-size: 15px;
            font-weight: 500;
            letter-spacing: -.4px;
            color: #B70F0F;
            margin-left: 5px;
        }

    /* 3개 컬럼짜리 표라 공통 min-width(768px) 는 해제 */
    .rental-calendar-wrap .cal-detail-row .table-responsive .table {
        min-width: 0;
    }

    .rental-calendar-wrap .cal-detail-row .table {
        background: #fff;
        font-size: 15px;
        margin-bottom: 0;
    }

        .rental-calendar-wrap .cal-detail-row .table th,
        .rental-calendar-wrap .cal-detail-row .table td {
            padding: 12px;
            vertical-align: middle;
            border-left: 1px solid #E5E5E5;
        }

            /* .table-line 은 좌측 테두리를 그리지 않아 캘린더 격자와 어긋난다 */
            .rental-calendar-wrap .cal-detail-row .table th:last-child,
            .rental-calendar-wrap .cal-detail-row .table td:last-child {
                border-right: 1px solid #E5E5E5;
            }

        /* 셀 구분선이 border-top 으로만 그려져 마지막 행 아래가 비어 있다 */
        .rental-calendar-wrap .cal-detail-row .table > tbody > tr:last-child > th,
        .rental-calendar-wrap .cal-detail-row .table > tbody > tr:last-child > td {
            border-bottom: 1px solid #E5E5E5;
        }

    .rental-calendar-wrap .cal-detail-row .state-ok {
        font-weight: 600;
        color: var(--main-color01);
    }

    /* 예약가능 → 예약 페이지 이동 링크 */
    .rental-calendar-wrap .cal-detail-row a.state-ok {
        display: inline-block;
        padding: 2px 10px;
        border: 1px solid var(--main-color01);
        border-radius: 4px;
        text-decoration: none;
        transition: color .2s, background .2s;
    }

        .rental-calendar-wrap .cal-detail-row a.state-ok:hover,
        .rental-calendar-wrap .cal-detail-row a.state-ok:focus {
            color: #fff;
            background: var(--main-color01);
        }

    .rental-calendar-wrap .cal-detail-row .state-full {
        color: var(--font-color02);
    }

    .rental-calendar-wrap .cal-detail-row .state-off {
        color: #B70F0F;
    }

    .rental-calendar-wrap .cal-detail-foot {
        display: flex;
        justify-content: flex-end;
        margin-top: 10px;
    }

        .rental-calendar-wrap .cal-detail-foot .btn {
            min-width: 100px;
            padding: .35rem 1rem;
            font-size: 15px;
        }

    .rental-calendar-wrap .cal-detail-loading,
    .rental-calendar-wrap .cal-detail-empty {
        padding: 20px 0;
        font-size: 15px;
        text-align: center;
        color: var(--font-color02);
    }

/* ── 목록 버튼 정렬 (예약하기 / 예약현황 폭 통일) ───────────────────────── */

.list-item .btn-wrap {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
}

    .list-item .btn-wrap .btn {
        min-width: 130px;
        margin: 0;
        white-space: nowrap;
    }

/* ── 반응형 ─────────────────────────────────────────────────────────────── */

@media (max-width: 991px) {
    .rental-calendar-wrap {
        padding: 15px 14px 18px;
    }

        .rental-calendar-wrap .fc-toolbar h2 {
            font-size: 19px;
        }

        .rental-calendar-wrap .fc-day-header {
            padding: 10px 0 9px;
            font-size: 14px;
        }

        .rental-calendar-wrap .fc-day-grid .fc-row {
            min-height: 82px;
        }

        .rental-calendar-wrap .fc-content-skeleton td.fc-day-top {
            height: 82px;
            padding: 6px 6px 0;
        }

        .rental-calendar-wrap .fc-day-top .fc-day-number {
            font-size: 14px;
            line-height: 18px;
        }

        .rental-calendar-wrap .fac-cal-badge {
            left: 6px;
            right: 6px;
            height: 24px;
            margin-top: -12px;
            padding: 0 2px;
            border-radius: 5px;
            font-size: 12px;
            line-height: 24px;
        }

        .rental-calendar-wrap .cal-detail-row {
            padding: 0;
            margin: 12px;
        }

        .rental-calendar-wrap .cal-detail-head {
            font-size: 15px;
        }

        .rental-calendar-wrap .cal-detail-row .table {
            font-size: 14px;
        }

            .rental-calendar-wrap .cal-detail-row .table th,
            .rental-calendar-wrap .cal-detail-row .table td {
                padding: 10px 8px;
            }

        .rental-calendar-wrap .cal-detail-foot .btn {
            width: 100%;
        }

    .list-item .btn-wrap {
        flex-direction: row;
    }

        .list-item .btn-wrap .btn {
            flex: 1 1 0;
            min-width: 0;
        }
}

@media print {
    .rental-calendar-wrap .fc-toolbar .fc-button,
    .rental-calendar-wrap .cal-detail-foot {
        display: none;
    }
}
