@charset "utf-8";

/* ✅️ [WEBIS-260421 R9] WEBIS booking 공개 페이지 CSS — Artifacts 목업 이식. */
/* 네이밍: ws_booking_view_public_wrap > es_*_area > bs_*_box > is_* > ss_* > ks_* > os_* > rs_* */
/* 속성: 한 줄, 콜론/세미콜론 뒤 공백 금지, 색상 대문자, 순서 LAYOUT > SIZE > BORDER > BG > TYPO > EFFECT */
/* 고령 사용자 대상이라 mockup 대비 본문/핵심 폰트 1~4px 상향 */

[x-cloak] {display:none!important}

/* ====================================================================================================
   ROOT VARIABLES — oklch 팔레트 (터라코타 / 앰버 / 세이지 / 플럼)
   ==================================================================================================== */
.ws_booking_view_public_wrap {--wb-bg:oklch(0.985 0.004 85);--wb-surface:#FFF;--wb-surface-2:oklch(0.975 0.005 85);--wb-ink:oklch(0.18 0.012 260);--wb-ink-2:oklch(0.35 0.012 260);--wb-ink-3:oklch(0.55 0.010 260);--wb-ink-4:oklch(0.72 0.008 260);--wb-line:oklch(0.92 0.006 260);--wb-line-2:oklch(0.95 0.005 260);--wb-accent:oklch(0.42 0.08 260);--wb-v1:oklch(0.58 0.14 32);--wb-v1-soft:oklch(0.96 0.025 32);--wb-v1-ink:oklch(0.38 0.11 32);--wb-v2:oklch(0.72 0.13 78);--wb-v2-soft:oklch(0.97 0.03 85);--wb-v2-ink:oklch(0.46 0.10 70);--wb-v3:oklch(0.60 0.09 155);--wb-v3-soft:oklch(0.96 0.02 155);--wb-v3-ink:oklch(0.40 0.08 155);--wb-v4:oklch(0.52 0.12 305);--wb-v4-soft:oklch(0.96 0.02 305);--wb-v4-ink:oklch(0.36 0.10 305);--wb-shadow-sm:0 1px 2px rgba(17,24,39,.04),0 1px 1px rgba(17,24,39,.03);--wb-shadow-md:0 1px 2px rgba(17,24,39,.04),0 8px 24px -12px rgba(17,24,39,.12);--wb-shadow-lg:0 2px 4px rgba(17,24,39,.05),0 24px 48px -20px rgba(17,24,39,.22)}

/* ====================================================================================================
   WRAPPER — 컨텐츠 영역 풀폭 (참조: /page/content/lecture/guide 와 동일 레벨)
   · 기존 880px 고정을 제거하고 부모 we_container 폭을 실질적으로 다 활용
   · 초광폭(2000px+) 에서만 1680px 센터 정렬 — 가독성 한계점
   · 좌우 padding 은 4vw 로 화면 크기에 비례
   · 내부 텍스트(hero lede/footnote) 는 별도 ch 단위로 가독 제어
   ==================================================================================================== */
.ws_booking_view_public_wrap {display:block;width:100%;max-width:none;margin:0;padding:40px 0 100px;background:transparent;color:var(--wb-ink);font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Apple SD Gothic Neo",sans-serif;font-size:17px;font-feature-settings:"tnum" 1,"ss01" 1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* ====================================================================================================
   HEADER — eyebrow + display + lede
   ==================================================================================================== */
.ws_booking_view_public_wrap .es_header_area {display:block;margin-bottom:40px}

.ws_booking_view_public_wrap .bs_eyebrow_box {display:block;margin-bottom:16px}
.ws_booking_view_public_wrap .bs_eyebrow_box .ss_eyebrow {display:inline-flex;align-items:center;gap:8px;color:var(--wb-ink-3);font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.ws_booking_view_public_wrap .bs_eyebrow_box .ss_eyebrow::before {display:inline-block;width:22px;height:1px;background:var(--wb-ink-3);content:""}

.ws_booking_view_public_wrap .bs_display_box {display:block;margin:0 0 20px;color:var(--wb-ink);font-size:clamp(32px,4.2vw,44px);font-weight:700;line-height:1.12;letter-spacing:-0.025em;text-wrap:balance}
.ws_booking_view_public_wrap .bs_display_box .ss_line {display:inline}

.ws_booking_view_public_wrap .bs_lede_box {max-width:58ch;margin:0;color:var(--wb-ink-2);font-size:18px;line-height:1.65}

/* ====================================================================================================
   TOOLBAR — tabs + legend
   ==================================================================================================== */
.ws_booking_view_public_wrap .es_toolbar_area {display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}

.ws_booking_view_public_wrap .bs_tabs_box {display:inline-flex;gap:2px;padding:4px;border:1px solid var(--wb-line);border-radius:999px;background:var(--wb-surface-2)}
.ws_booking_view_public_wrap .bs_tabs_box .is_tab {position:relative;padding:10px 22px;border:none;border-radius:999px;background:transparent;color:var(--wb-ink-3);font-size:16px;font-weight:600;letter-spacing:-0.01em;white-space:nowrap;cursor:pointer;transition:color .2s ease,background .2s ease}
.ws_booking_view_public_wrap .bs_tabs_box .is_tab:hover {color:var(--wb-ink-2)}
.ws_booking_view_public_wrap .bs_tabs_box .is_tab[aria-selected="true"] {background:var(--wb-surface);color:var(--wb-ink);box-shadow:var(--wb-shadow-sm)}

.ws_booking_view_public_wrap .bs_legend_box {display:flex;flex-wrap:wrap;gap:14px 22px;color:var(--wb-ink-2);font-size:14px}
.ws_booking_view_public_wrap .bs_legend_box .is_legend_item {display:inline-flex;align-items:center}
.ws_booking_view_public_wrap .bs_legend_box .ks_dot {display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:999px;vertical-align:1px}
.ws_booking_view_public_wrap .bs_legend_box .ks_dot.os_vehicle_1 {background:var(--wb-v1)}
.ws_booking_view_public_wrap .bs_legend_box .ks_dot.os_vehicle_2 {background:var(--wb-v2)}
.ws_booking_view_public_wrap .bs_legend_box .ks_dot.os_vehicle_3 {background:var(--wb-v3)}
.ws_booking_view_public_wrap .bs_legend_box .ks_dot.os_vehicle_4 {background:var(--wb-v4)}

/* ====================================================================================================
   WEEK AREA — 3주 카드 스택
   ==================================================================================================== */
.ws_booking_view_public_wrap .es_week_area {display:flex;flex-direction:column;gap:24px}
.ws_booking_view_public_wrap .bs_empty_box {padding:60px 20px;border:1px dashed var(--wb-line);border-radius:20px;background:var(--wb-surface);color:var(--wb-ink-3);font-size:15px;text-align:center}

.ws_booking_view_public_wrap .bs_week_card_box {overflow:hidden;border:1px solid var(--wb-line);border-radius:20px;background:var(--wb-surface);box-shadow:var(--wb-shadow-sm);transition:box-shadow .25s ease,transform .25s ease}
.ws_booking_view_public_wrap .bs_week_card_box:hover {box-shadow:var(--wb-shadow-md)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_0 {border-color:oklch(0.91 0.012 260)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_1 {border-color:oklch(0.93 0.020 80)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_2 {border-color:oklch(0.92 0.016 155)}

.ws_booking_view_public_wrap .bs_week_card_box .is_head {display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:18px 22px 16px;border-bottom:1px solid var(--wb-line-2)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_0 .is_head {background:linear-gradient(180deg,oklch(0.985 0.010 260) 0%,#FFF 100%)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_1 .is_head {background:linear-gradient(180deg,oklch(0.987 0.015 85) 0%,#FFF 100%)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_2 .is_head {background:linear-gradient(180deg,oklch(0.986 0.012 155) 0%,#FFF 100%)}
.ws_booking_view_public_wrap .bs_week_card_box .is_head .is_head_left {display:flex;align-items:baseline;gap:14px}
.ws_booking_view_public_wrap .bs_week_card_box .is_head .ss_label {color:var(--wb-ink-3);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.ws_booking_view_public_wrap .bs_week_card_box .is_head .ss_range {color:var(--wb-ink);font-size:20px;font-weight:700;letter-spacing:-0.015em}
.ws_booking_view_public_wrap .bs_week_card_box .is_head .ss_count {display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:var(--wb-surface-2);color:var(--wb-ink-3);font-size:13px;font-variant-numeric:tabular-nums}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_0 .is_head .ss_label,
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_0 .is_head .ss_range {color:var(--wb-accent)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_1 .is_head .ss_label,
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_1 .is_head .ss_range {color:var(--wb-v2-ink)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_2 .is_head .ss_label,
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_2 .is_head .ss_range {color:var(--wb-v3-ink)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_0 .is_head .ss_count {background:oklch(0.97 0.010 260)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_1 .is_head .ss_count {background:oklch(0.985 0.015 85)}
.ws_booking_view_public_wrap .bs_week_card_box.rs_week_2 .is_head .ss_count {background:oklch(0.982 0.012 155)}

/* 7-day grid */
.ws_booking_view_public_wrap .bs_week_card_box .is_days_grid {display:grid;grid-template-columns:repeat(7,1fr)}

.ws_booking_view_public_wrap .bs_day_cell_box {display:flex;flex-direction:column;gap:8px;position:relative;min-height:160px;padding:12px 10px 14px;border-top:1px solid var(--wb-line-2);border-right:1px solid var(--wb-line-2);background:var(--wb-surface);transition:background .2s ease}
.ws_booking_view_public_wrap .bs_day_cell_box:nth-child(7n) {border-right:none}
.ws_booking_view_public_wrap .bs_day_cell_box:nth-child(-n+7) {border-top:none}
.ws_booking_view_public_wrap .bs_day_cell_box:hover {background:var(--wb-surface-2)}
.ws_booking_view_public_wrap .bs_day_cell_box .ks_dow {color:var(--wb-ink-4);font-size:12px;font-weight:600;letter-spacing:.04em}
.ws_booking_view_public_wrap .bs_day_cell_box .ks_dom {display:flex;align-items:center;gap:6px;color:var(--wb-ink);font-size:19px;font-weight:700;letter-spacing:-0.01em;font-variant-numeric:tabular-nums}
.ws_booking_view_public_wrap .bs_day_cell_box.os_sat .ks_dow,
.ws_booking_view_public_wrap .bs_day_cell_box.os_sat .ks_dom {color:oklch(0.48 0.10 255)}
.ws_booking_view_public_wrap .bs_day_cell_box.os_sun .ks_dow,
.ws_booking_view_public_wrap .bs_day_cell_box.os_sun .ks_dom {color:oklch(0.48 0.13 25)}
.ws_booking_view_public_wrap .bs_day_cell_box.rs_is_today .ks_dom::after {display:inline-block;width:5px;height:5px;border-radius:999px;background:var(--wb-accent);content:""}
.ws_booking_view_public_wrap .bs_day_cell_box.rs_is_past {opacity:.55}

.ws_booking_view_public_wrap .bs_day_cell_box .is_events {display:flex;flex-direction:column;gap:6px;margin-top:auto}

/* ====================================================================================================
   EVENT PILL — 3줄 구조
   Row1: [호차 라벨 chip] + [예약상태 chip]  (색상 먹인 pill 느낌)
   Row2: 읍/면 (region)
   Row3: 장소 (venue · 회관/경로당 등)
   ==================================================================================================== */
.ws_booking_view_public_wrap .bs_event_pill {display:flex;gap:8px;position:relative;padding:8px 10px 9px 9px;border:1px solid var(--wb-line);border-radius:10px;background:var(--wb-surface);color:var(--wb-ink);text-align:left;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}
.ws_booking_view_public_wrap .bs_event_pill:hover {transform:translateY(-1px);border-color:oklch(0.85 0.008 260);box-shadow:var(--wb-shadow-md)}
.ws_booking_view_public_wrap .bs_event_pill .ks_bar {flex-shrink:0;align-self:stretch;width:3px;border-radius:2px;background:var(--wb-v1)}
.ws_booking_view_public_wrap .bs_event_pill .is_txt {display:flex;flex-direction:column;flex:1;gap:4px;min-width:0}

/* Row1: 두 chip 을 인라인으로 */
.ws_booking_view_public_wrap .bs_event_pill .is_row_1 {display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.ws_booking_view_public_wrap .bs_event_pill .ss_vehicle_chip {display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--wb-v1-soft);color:var(--wb-v1-ink);font-size:11px;font-weight:700;letter-spacing:.02em;line-height:1.4}
.ws_booking_view_public_wrap .bs_event_pill .ss_state_chip {display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:oklch(0.94 0.05 155);color:oklch(0.36 0.10 155);font-size:11px;font-weight:700;letter-spacing:.02em;line-height:1.4}

/* Row2: 지역(읍/면) */
.ws_booking_view_public_wrap .bs_event_pill .ss_region {overflow:hidden;color:var(--wb-ink-2);font-size:13px;font-weight:500;line-height:1.3;white-space:nowrap;text-overflow:ellipsis}

/* Row3: 장소(회관명) */
.ws_booking_view_public_wrap .bs_event_pill .ss_venue {overflow:hidden;color:var(--wb-ink);font-size:15px;font-weight:600;line-height:1.3;white-space:nowrap;text-overflow:ellipsis}

/* ✅️ [WEBIS-260423] 타이틀 1줄 — 주간/월간 pill 공용 */
.ws_booking_view_public_wrap .bs_event_pill .ss_title {overflow:hidden;color:var(--wb-ink);font-size:14px;font-weight:700;line-height:1.35;white-space:nowrap;text-overflow:ellipsis}

/* 차량별 bar / chip 색상 */
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_1 .ks_bar {background:var(--wb-v1)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_1 .ss_vehicle_chip {background:var(--wb-v1-soft);color:var(--wb-v1-ink)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_2 .ks_bar {background:var(--wb-v2)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_2 .ss_vehicle_chip {background:var(--wb-v2-soft);color:var(--wb-v2-ink)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_3 .ks_bar {background:var(--wb-v3)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_3 .ss_vehicle_chip {background:var(--wb-v3-soft);color:var(--wb-v3-ink)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_4 .ks_bar {background:var(--wb-v4)}
.ws_booking_view_public_wrap .bs_event_pill.os_vehicle_4 .ss_vehicle_chip {background:var(--wb-v4-soft);color:var(--wb-v4-ink)}

/* 예약가능 = 초록 / 예약완료 = 회색 */
.ws_booking_view_public_wrap .bs_event_pill .ss_state_chip.os_available {background:oklch(0.94 0.05 155);color:oklch(0.36 0.10 155)}
.ws_booking_view_public_wrap .bs_event_pill .ss_state_chip.os_booked {background:var(--wb-ink-4);color:#FFF}

/* 예약완료 pill = 비활성 시각 (배경 회색톤 + not-allowed) */
.ws_booking_view_public_wrap .bs_event_pill.rs_state_booking,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_done {background:var(--wb-surface-2);cursor:not-allowed}
.ws_booking_view_public_wrap .bs_event_pill.rs_state_booking:hover,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_done:hover {transform:none;border-color:var(--wb-line);box-shadow:none}
.ws_booking_view_public_wrap .bs_event_pill.rs_state_booking .ks_bar,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_done .ks_bar {background:var(--wb-ink-4)}
.ws_booking_view_public_wrap .bs_event_pill.rs_state_booking .ss_region,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_done .ss_region,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_booking .ss_venue,
.ws_booking_view_public_wrap .bs_event_pill.rs_state_done .ss_venue {color:var(--wb-ink-3)}

/* cancel 은 서버에서 이미 필터링되지만 혹시 DOM 남는 경우 */
.ws_booking_view_public_wrap .bs_event_pill.rs_state_cancel {opacity:.4;cursor:not-allowed}
.ws_booking_view_public_wrap .bs_event_pill.rs_state_cancel .ss_venue {text-decoration:line-through}
.ws_booking_view_public_wrap .bs_event_pill.rs_is_past {background:var(--wb-surface-2);border-color:var(--wb-line);cursor:not-allowed;opacity:.74}
.ws_booking_view_public_wrap .bs_event_pill.rs_is_past:hover {transform:none;border-color:var(--wb-line);box-shadow:none}
.ws_booking_view_public_wrap .bs_event_pill.rs_is_past .ks_bar {background:var(--wb-ink-4)!important}
.ws_booking_view_public_wrap .bs_event_pill.rs_is_past .ss_region,
.ws_booking_view_public_wrap .bs_event_pill.rs_is_past .ss_venue {color:var(--wb-ink-3);text-decoration:line-through}

/* ====================================================================================================
   MONTH AREA — FullCalendar v4 overrides
   ==================================================================================================== */
.ws_booking_view_public_wrap .es_month_area {display:block}
.ws_booking_view_public_wrap .bs_cal_wrap_box {padding:24px;border:1px solid var(--wb-line);border-radius:20px;background:var(--wb-surface);box-shadow:var(--wb-shadow-sm)}

/* FullCalendar 4.x overrides — wrapper-scoped */
.ws_booking_view_public_wrap .fc-toolbar.fc-header-toolbar {margin-bottom:20px}
.ws_booking_view_public_wrap .fc-toolbar h2 {color:var(--wb-ink);font-size:22px!important;font-weight:700!important;letter-spacing:-0.02em}
.ws_booking_view_public_wrap .fc-button-primary {padding:8px 14px!important;border:1px solid var(--wb-line)!important;border-radius:10px!important;background:var(--wb-surface)!important;color:var(--wb-ink-2)!important;font-size:14px!important;font-weight:600!important;text-transform:none!important;box-shadow:var(--wb-shadow-sm);transition:all .18s ease}
.ws_booking_view_public_wrap .fc-button-primary:hover {border-color:oklch(0.82 0.008 260)!important;color:var(--wb-ink)!important}
.ws_booking_view_public_wrap .fc-button-primary:not(:disabled):active,
.ws_booking_view_public_wrap .fc-button-primary:not(:disabled).fc-button-active {border-color:var(--wb-ink)!important;background:var(--wb-ink)!important;color:#FFF!important}
.ws_booking_view_public_wrap .fc-button-primary:focus {box-shadow:0 0 0 3px oklch(0.92 0.02 260)!important}
.ws_booking_view_public_wrap .fc-icon {font-size:1em!important}

.ws_booking_view_public_wrap .fc-view-container {font-family:inherit}
.ws_booking_view_public_wrap .fc-day-header {padding:10px 0!important;border:none!important;border-bottom:1px solid var(--wb-line)!important;background:transparent!important;color:var(--wb-ink-3)!important;font-size:12px!important;font-weight:600!important;letter-spacing:.14em;text-transform:uppercase}
.ws_booking_view_public_wrap .fc-day-header.fc-sun {color:oklch(0.52 0.13 25)!important}
.ws_booking_view_public_wrap .fc-day-header.fc-sat {color:oklch(0.52 0.10 255)!important}
.ws_booking_view_public_wrap .fc-unthemed td,
.ws_booking_view_public_wrap .fc-unthemed th {border-color:var(--wb-line-2)!important}
.ws_booking_view_public_wrap .fc-day.fc-past:not(.fc-today) {opacity:.82}
.ws_booking_view_public_wrap .fc-day.fc-sun:not(.fc-today) {background:oklch(0.985 0.010 25)!important}
.ws_booking_view_public_wrap .fc-day.fc-sat:not(.fc-today) {background:oklch(0.985 0.010 255)!important}
.ws_booking_view_public_wrap .fc-day-number {padding:8px 10px!important;color:var(--wb-ink-2)!important;font-size:13px!important;font-weight:600!important;font-variant-numeric:tabular-nums}
.ws_booking_view_public_wrap .fc-other-month {background:transparent!important}
.ws_booking_view_public_wrap .fc-other-month .fc-day-number {opacity:.35}
.ws_booking_view_public_wrap .fc-today {background:oklch(0.95 0.025 85)!important;box-shadow:inset 0 0 0 2px oklch(0.78 0.05 85 / .55)}
.ws_booking_view_public_wrap .fc-today .fc-day-number {color:var(--wb-accent)!important;font-weight:700!important}

.ws_booking_view_public_wrap .fc-event {margin:2px 6px!important;padding:0!important;border:none!important;background:transparent!important}
.ws_booking_view_public_wrap .fc-event-container {padding:0!important}
.ws_booking_view_public_wrap .fc-day-grid-event {margin:2px 6px!important}

/* FC chip — 주간 pill 과 동일한 3줄 구조 */
.ws_booking_view_public_wrap .bs_fc_chip_box {display:flex;gap:6px;overflow:hidden;padding:6px 8px 7px 7px;border:1px solid var(--wb-line);border-radius:8px;background:var(--wb-surface);color:var(--wb-ink);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}
.ws_booking_view_public_wrap .bs_fc_chip_box:hover {transform:translateY(-1px);box-shadow:var(--wb-shadow-sm)}
.ws_booking_view_public_wrap .bs_fc_chip_box .ks_bar {flex-shrink:0;align-self:stretch;width:2.5px;border-radius:2px}
.ws_booking_view_public_wrap .bs_fc_chip_box .is_body {display:flex;flex-direction:column;flex:1;gap:3px;min-width:0}
.ws_booking_view_public_wrap .bs_fc_chip_box .is_row_1 {display:flex;flex-wrap:wrap;align-items:center;gap:3px}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_vehicle_chip {display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;background:var(--wb-v1-soft);color:var(--wb-v1-ink);font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1.4}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_state_chip {display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1.4}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_state_chip.os_available {background:oklch(0.94 0.05 155);color:oklch(0.36 0.10 155)}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_state_chip.os_booked {background:var(--wb-ink-4);color:#FFF}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_region {overflow:hidden;color:var(--wb-ink-2);font-size:11px;font-weight:500;line-height:1.25;white-space:nowrap;text-overflow:ellipsis}
.ws_booking_view_public_wrap .bs_fc_chip_box .ss_venue {overflow:hidden;color:var(--wb-ink);font-size:12.5px;font-weight:600;line-height:1.25;white-space:nowrap;text-overflow:ellipsis}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_1 .ks_bar {background:var(--wb-v1)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_1 .ss_vehicle_chip {background:var(--wb-v1-soft);color:var(--wb-v1-ink)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_2 .ks_bar {background:var(--wb-v2)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_2 .ss_vehicle_chip {background:var(--wb-v2-soft);color:var(--wb-v2-ink)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_3 .ks_bar {background:var(--wb-v3)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_3 .ss_vehicle_chip {background:var(--wb-v3-soft);color:var(--wb-v3-ink)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_4 .ks_bar {background:var(--wb-v4)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_vehicle_4 .ss_vehicle_chip {background:var(--wb-v4-soft);color:var(--wb-v4-ink)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_booked {background:var(--wb-surface-2);cursor:not-allowed}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_booked:hover {transform:none;box-shadow:none}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_booked .ks_bar {background:var(--wb-ink-4)!important}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_booked .ss_region,
.ws_booking_view_public_wrap .bs_fc_chip_box.os_booked .ss_venue {color:var(--wb-ink-3)}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_past {background:var(--wb-surface-2);border-color:var(--wb-line);cursor:not-allowed;opacity:.72}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_past:hover {transform:none;box-shadow:none}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_past .ks_bar {background:var(--wb-ink-4)!important}
.ws_booking_view_public_wrap .bs_fc_chip_box.os_past .ss_region,
.ws_booking_view_public_wrap .bs_fc_chip_box.os_past .ss_venue {color:var(--wb-ink-3);text-decoration:line-through}

/* ====================================================================================================
   FOOTNOTE
   ==================================================================================================== */
.ws_booking_view_public_wrap .es_footnote_area {margin-top:40px}
.ws_booking_view_public_wrap .bs_footnote_box {margin:0;color:var(--wb-ink-3);font-size:14px;line-height:1.7}

/* ====================================================================================================
   MODAL — ws_booking_modal_root 은 별도 루트 (fixed overlay)
   ==================================================================================================== */
.ws_booking_modal_root {display:block}

.ws_booking_modal_root .es_modal_backdrop {position:fixed;inset:0;z-index:60;background:oklch(0.18 0.012 260 / 0.32);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}

.ws_booking_modal_root .es_modal_area {display:flex;justify-content:center;align-items:center;position:fixed;inset:0;z-index:70;padding:24px}

.ws_booking_modal_root .bs_modal_card_box {overflow:hidden;width:100%;max-width:560px;border:1px solid oklch(0.92 0.006 260);border-radius:22px;background:#FFF;box-shadow:0 2px 4px rgba(17,24,39,.05),0 24px 48px -20px rgba(17,24,39,.22);font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Apple SD Gothic Neo",sans-serif;color:oklch(0.18 0.012 260)}

.ws_booking_modal_root .bs_modal_card_box .is_head {display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:26px 28px 22px}
.ws_booking_modal_root .bs_modal_card_box .is_head .is_head_left {display:flex;flex-direction:column;gap:8px}
.ws_booking_modal_root .bs_modal_card_box .is_head .bs_eyebrow_box .ss_eyebrow {display:inline-flex;align-items:center;gap:8px;color:oklch(0.55 0.010 260);font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.ws_booking_modal_root .bs_modal_card_box .is_head .bs_eyebrow_box .ss_eyebrow::before {display:inline-block;width:22px;height:1px;background:oklch(0.55 0.010 260);content:""}
.ws_booking_modal_root .bs_modal_card_box .is_head .ss_modal_title {margin:0;font-size:24px;font-weight:700;letter-spacing:-0.015em;line-height:1.2}
.ws_booking_modal_root .bs_modal_card_box .is_head .ss_modal_sub {margin:0;color:oklch(0.55 0.010 260);font-size:14px;line-height:1.5}
.ws_booking_modal_root .bs_modal_card_box .is_head .is_close {padding:6px;border:none;border-radius:10px;background:transparent;color:oklch(0.55 0.010 260);cursor:pointer;transition:color .18s ease,background .18s ease}
.ws_booking_modal_root .bs_modal_card_box .is_head .is_close:hover {background:oklch(0.975 0.005 85);color:oklch(0.18 0.012 260)}

.ws_booking_modal_root .bs_modal_card_box .ks_rule {width:100%;height:1px;background:oklch(0.92 0.006 260)}

.ws_booking_modal_root .bs_modal_card_box .is_summary_wrap {padding:22px 28px;background:oklch(0.975 0.005 85)}
.ws_booking_modal_root .bs_modal_card_box .bs_summary_box {display:grid;grid-template-columns:auto 1fr;column-gap:18px;row-gap:12px;margin:0;font-size:15px}
.ws_booking_modal_root .bs_modal_card_box .bs_summary_box dt {padding-top:2px;color:oklch(0.55 0.010 260);font-size:13px;font-weight:500;letter-spacing:.04em}
.ws_booking_modal_root .bs_modal_card_box .bs_summary_box dd {margin:0;color:oklch(0.18 0.012 260);font-size:15px;font-weight:600;letter-spacing:-0.005em}

.ws_booking_modal_root .ss_vehicle_tag {display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:oklch(0.96 0.025 32);color:oklch(0.38 0.11 32);font-size:12px;font-weight:700;letter-spacing:.02em}
.ws_booking_modal_root .ss_vehicle_tag .ks_dot {width:7px;height:7px;border-radius:999px;background:oklch(0.58 0.14 32)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_1 {background:oklch(0.96 0.025 32);color:oklch(0.38 0.11 32)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_1 .ks_dot {background:oklch(0.58 0.14 32)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_2 {background:oklch(0.97 0.03 85);color:oklch(0.46 0.10 70)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_2 .ks_dot {background:oklch(0.72 0.13 78)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_3 {background:oklch(0.96 0.02 155);color:oklch(0.40 0.08 155)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_3 .ks_dot {background:oklch(0.60 0.09 155)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_4 {background:oklch(0.96 0.02 305);color:oklch(0.36 0.10 305)}
.ws_booking_modal_root .ss_vehicle_tag.os_vehicle_4 .ks_dot {background:oklch(0.52 0.12 305)}

.ws_booking_modal_root .ss_state_tag {display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:-0.005em}
.ws_booking_modal_root .ss_state_tag.rs_state_ready {background:oklch(0.96 0.03 155);color:oklch(0.40 0.10 155)}
.ws_booking_modal_root .ss_state_tag.rs_state_booking {background:oklch(0.95 0.02 85);color:oklch(0.42 0.09 70)}
.ws_booking_modal_root .ss_state_tag.rs_state_done {background:oklch(0.95 0.004 260);color:oklch(0.55 0.010 260)}
.ws_booking_modal_root .ss_state_tag.rs_state_cancel {background:oklch(0.95 0.03 25);color:oklch(0.45 0.14 25)}

/* Form */
.ws_booking_modal_root .bs_modal_card_box .is_form_wrap {display:flex;flex-direction:column;gap:16px;padding:24px 28px 26px}

.ws_booking_modal_root .bs_field_box {display:flex;flex-direction:column;gap:8px}
.ws_booking_modal_root .bs_field_box .ss_label {display:flex;align-items:center;gap:6px;color:oklch(0.35 0.012 260);font-size:13px;font-weight:600;letter-spacing:.01em}
.ws_booking_modal_root .bs_field_box .ks_req {color:oklch(0.58 0.16 25)}
.ws_booking_modal_root .bs_field_box .ks_opt {color:oklch(0.72 0.008 260);font-weight:400}
.ws_booking_modal_root .bs_field_box input,
.ws_booking_modal_root .bs_field_box textarea {width:100%;padding:12px 14px;border:1px solid oklch(0.92 0.006 260);border-radius:12px;background:#FFF;color:oklch(0.18 0.012 260);font-family:inherit;font-size:16px;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.ws_booking_modal_root .bs_field_box input:focus,
.ws_booking_modal_root .bs_field_box textarea:focus {outline:none;border-color:oklch(0.18 0.012 260);box-shadow:0 0 0 4px oklch(0.92 0.012 260)}
.ws_booking_modal_root .bs_field_box input::placeholder,
.ws_booking_modal_root .bs_field_box textarea::placeholder {color:oklch(0.72 0.008 260)}
.ws_booking_modal_root .bs_field_box textarea {min-height:92px;resize:vertical}

/* Action row */
.ws_booking_modal_root .is_actions {display:flex;justify-content:space-between;align-items:center;padding-top:6px}
.ws_booking_modal_root .is_actions .ss_hint {color:oklch(0.55 0.010 260);font-size:13px}
.ws_booking_modal_root .is_actions .is_actions_btns {display:inline-flex;align-items:center;gap:8px}

.ws_booking_modal_root .bs_btn {padding:12px 20px;border:none;border-radius:12px;font-size:15px;font-weight:600;letter-spacing:-0.01em;cursor:pointer;transition:all .18s ease}
.ws_booking_modal_root .bs_btn.os_ghost {background:transparent;color:oklch(0.35 0.012 260)}
.ws_booking_modal_root .bs_btn.os_ghost:hover {background:oklch(0.975 0.005 85);color:oklch(0.18 0.012 260)}
.ws_booking_modal_root .bs_btn.os_primary {background:oklch(0.18 0.012 260);color:#FFF}
.ws_booking_modal_root .bs_btn.os_primary:hover {transform:translateY(-1px);background:oklch(0.10 0.01 260);box-shadow:0 1px 2px rgba(17,24,39,.04),0 8px 24px -12px rgba(17,24,39,.12)}
.ws_booking_modal_root .bs_btn.os_primary:disabled {background:oklch(0.72 0.008 260);box-shadow:none;transform:none;cursor:not-allowed}

/* ====================================================================================================
   TOAST
   ==================================================================================================== */
.ws_booking_toast {display:flex;align-items:center;gap:10px;position:fixed;bottom:40px;left:50%;z-index:80;padding:13px 20px;border-radius:999px;background:oklch(0.18 0.012 260);color:#FFF;font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Apple SD Gothic Neo",sans-serif;font-size:14px;font-weight:500;box-shadow:0 2px 4px rgba(17,24,39,.05),0 24px 48px -20px rgba(17,24,39,.22);transform:translateX(-50%)}

/* ====================================================================================================
   ANIMATIONS — fade, pop, stagger
   ==================================================================================================== */
.ws_booking_view_public_wrap .rs_fade_in,
.ws_booking_modal_root .rs_fade_in,
.ws_booking_toast.rs_fade_in {animation:wbFadeIn .25s ease both}
.ws_booking_modal_root .rs_pop_in {animation:wbPopIn .28s cubic-bezier(.16,1,.3,1) both}

@keyframes wbFadeIn {from {opacity:0} to {opacity:1}}
@keyframes wbPopIn {from {opacity:0;transform:translateY(8px) scale(.98)} to {opacity:1;transform:translateY(0) scale(1)}}

.ws_booking_view_public_wrap .rs_stagger > * {opacity:0;animation:wbRise .45s cubic-bezier(.16,1,.3,1) forwards}
.ws_booking_view_public_wrap .rs_stagger > *:nth-child(1) {animation-delay:.05s}
.ws_booking_view_public_wrap .rs_stagger > *:nth-child(2) {animation-delay:.12s}
.ws_booking_view_public_wrap .rs_stagger > *:nth-child(3) {animation-delay:.19s}
.ws_booking_view_public_wrap .rs_stagger > *:nth-child(4) {animation-delay:.26s}

@keyframes wbRise {from {opacity:0;transform:translateY(10px)} to {opacity:1;transform:translateY(0)}}

/* ====================================================================================================
   RESPONSIVE
   ==================================================================================================== */
@media (max-width:767px) {
    .ws_booking_view_public_wrap {padding:36px 16px 80px;font-size:16px}
    .ws_booking_view_public_wrap .bs_display_box {font-size:28px}
    .ws_booking_view_public_wrap .bs_lede_box {font-size:16px}
    .ws_booking_view_public_wrap .bs_week_card_box .is_days_grid {grid-template-columns:repeat(2,1fr)}
    .ws_booking_view_public_wrap .bs_day_cell_box {min-height:110px;border-right:1px solid var(--wb-line-2)}
    .ws_booking_view_public_wrap .bs_day_cell_box:nth-child(2n) {border-right:none}
    .ws_booking_view_public_wrap .bs_week_card_box .is_head .ss_range {font-size:17px}
    .ws_booking_view_public_wrap .bs_cal_wrap_box {padding:16px}
    .ws_booking_modal_root .bs_modal_card_box .is_head {padding:20px 20px 16px}
    .ws_booking_modal_root .bs_modal_card_box .is_summary_wrap {padding:18px 20px}
    .ws_booking_modal_root .bs_modal_card_box .is_form_wrap {padding:20px 20px 22px}
    .ws_booking_modal_root .is_actions {flex-direction:column;align-items:flex-start;gap:12px}
    .ws_booking_modal_root .is_actions .is_actions_btns {width:100%;justify-content:flex-end}
}
@media (min-width:768px) and (max-width:991px) {
    .ws_booking_view_public_wrap .bs_week_card_box .is_days_grid {grid-template-columns:repeat(4,1fr)}
    .ws_booking_view_public_wrap .bs_day_cell_box:nth-child(4n) {border-right:none}
    .ws_booking_view_public_wrap .bs_day_cell_box:nth-child(7n) {border-right:1px solid var(--wb-line-2)}
}
