.rc-cal-frontend {
	max-width: 880px;
	margin: 0 auto 24px;
	font-size: 15px;
	--rc-accent: #2e7d5b;
	--rc-accent-soft: #e7f4ee;
	--rc-unavailable: #b8bcc2;
	--rc-border: #e3e3e3;
}

.rc-cal-frontend .rc-cal-legend {
	display: flex;
	gap: 18px;
	justify-content: center;
	margin-bottom: 14px;
	font-size: 13px;
	color: #555;
}
.rc-cal-frontend .rc-mark { font-weight: 700; margin-right: 4px; }
.rc-cal-frontend .rc-mark-available { color: var(--rc-accent); }
.rc-cal-frontend .rc-mark-unavailable { color: var(--rc-unavailable); }

.rc-cal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 10px;
}
.rc-cal-month-label {
	font-weight: 700;
	font-size: 18px;
}
.rc-cal-prev,
.rc-cal-next {
	background: #fff;
	border: 1px solid var(--rc-border);
	border-radius: 6px;
	width: 34px;
	height: 34px;
	font-size: 16px;
	cursor: pointer;
}
.rc-cal-prev:disabled,
.rc-cal-next:disabled {
	opacity: 0.3;
	cursor: default;
}

.rc-cal-table {
	width: 100%;
	border-collapse: collapse;
	table-layout: fixed;
}
.rc-cal-weekdays th {
	padding: 6px 0;
	font-size: 12px;
	color: #777;
	font-weight: 600;
	border-bottom: 1px solid var(--rc-border);
}

.rc-day-cell {
	border: 1px solid var(--rc-border);
	vertical-align: top;
	padding: 6px 4px;
	min-height: 96px;
}
.rc-empty-cell {
	background: #fafafa;
	border: 1px solid var(--rc-border);
}

.rc-day-number {
	font-size: 12px;
	color: #444;
	margin-bottom: 4px;
	text-align: center;
}
.rc-day-weekday-label {
	display: none;
}
.rc-weekday-0 .rc-day-number { color: #c0392b; }
.rc-weekday-6 .rc-day-number { color: #2b6ec0; }
.rc-day-cell.rc-day-holiday .rc-day-number { color: #c0392b; } /* 祝日は土曜より優先して赤色にする */

.rc-day-slots {
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.rc-slot-btn {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 6px;
	width: 100%;
	line-height: 1.3;
	padding: 4px 3px;
	border-radius: 4px;
	border: 1px solid var(--rc-border);
	background: #fff;
	cursor: pointer;
	text-align: center;
}
.rc-slot-label {
	font-size: 13px; /* 通常より2px大きく */
	font-weight: 700;
	white-space: nowrap;
}
.rc-slot-status {
	font-size: 11px;
}
.rc-slot-status.rc-slot-note {
	font-size: 10px;
	white-space: normal;
	word-break: break-all;
	line-height: 1.2;
	text-align: left;
}
.rc-slot-available {
	background: var(--rc-accent-soft);
	color: var(--rc-accent);
	border-color: #cdeadc;
}
.rc-slot-available:hover {
	background: var(--rc-accent);
	color: #fff;
}
.rc-slot-unavailable {
	background: #f4f4f5;
	color: var(--rc-unavailable);
	cursor: default;
}
.rc-slot-unavailable .rc-slot-note {
	color: #8a8f98;
}
.rc-slot-btn.rc-selected {
	outline: 2px solid var(--rc-accent);
	outline-offset: 1px;
}

.rc-cal-note {
	margin-top: 12px;
	font-size: 12px;
	color: #777;
	text-align: center;
}

/* CF7の応答メッセージ欄は、中身が空のときは表示しない(JS側でも制御しているが念のため) */
.wpcf7-response-output:empty {
	display: none;
}

@media (max-width: 480px) {
	.rc-cal-frontend { font-size: 13px; }
	.rc-slot-btn { font-size: 10px; padding: 4px 2px; }
}

/* ------------------------------------------------------------------
   SP表示: グリッド(曜日横並び)だと崩れるため、1週間=1ブロックの
   縦リスト表示に切り替える
------------------------------------------------------------------ */
@media (max-width: 640px) {
	.rc-cal-table,
	.rc-cal-table tbody,
	.rc-cal-table tr {
		display: block;
		width: 100%;
	}
	.rc-cal-table thead,
	.rc-cal-weekdays {
		display: none !important; /* 曜日ヘッダーは各日付側に(月)のように表示するので不要 */
	}
	.rc-cal-table tr {
		margin-bottom: 4px;
	}
	.rc-empty-cell {
		display: none; /* 月初・月末の空白セルは不要 */
	}
	.rc-day-cell.rc-day-past {
		display: none; /* 当日より前の選択できない日はスマホでは非表示にしてコンパクトにする */
	}
	.rc-day-cell {
		display: flex;
		align-items: flex-start;
		gap: 8px;
		width: 100%;
		padding: 10px 6px;
		border-left: none;
		border-right: none;
		border-top: none;
		border-bottom: 1px solid var(--rc-border);
	}
	.rc-day-cell.rc-weekday-0 {
		border-top: 2px solid var(--rc-accent);
		margin-top: 10px;
		padding-top: 12px;
	}
	.rc-day-number {
		flex: 0 0 70px; /* 日付の横幅を少し広めに確保 */
		margin-bottom: 0;
		padding-top: 4px;
		text-align: left;
		font-size: 14px;
	}
	.rc-day-weekday-label {
		display: inline;
		font-size: 12px;
		color: #777;
		margin-left: 2px;
	}
	.rc-day-slots {
		flex: 1 1 auto;
		flex-direction: column;
		gap: 6px;
		max-width: calc(100% - 78px); /* プラン側は日付分を差し引いてわずかに狭く */
	}
	.rc-slot-btn {
		justify-content: flex-start;
		padding: 6px 6px;
	}
}
