/**
 * Primo Calendar Displayer - スタイル
 *
 * @package Primo_Calendar_Displayer
 * @since 1.0.0
 */

/* カレンダーコンテナ */
.primo-calendar-displayer {
	width: 100%;
	max-width: 800px;
	margin: 1em auto;
	scroll-margin-top: 1em;
}

.primo-calendar-displayer:focus {
	outline: none;
}

/* ヘッダー（前月・翌月ナビ） */
.primo-calendar-header {
	display: flex;
	flex-direction: column;
	gap: 0.5em;
	margin-bottom: 1em;
}

.primo-calendar-header-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.primo-calendar-title {
	margin: 0;
	font-size: 1.25em;
}

.primo-calendar-month-jump-row {
	display: flex;
	justify-content: flex-end;
}

.primo-calendar-month-jump {
	min-height: 44px;
	padding: 0.25em 0.5em;
	font-size: 1em;
	border: 1px solid #ddd;
	border-radius: 4px;
}

.primo-calendar-nav a {
	text-decoration: none;
	color: #0073aa;
}

.primo-calendar-nav a:hover {
	text-decoration: underline;
}

/* カレンダーテーブル */
.primo-calendar-table {
	width: 100%;
	min-width: 400px;
	table-layout: fixed;
	border-collapse: collapse;
	border: 1px solid #ddd;
}

.primo-calendar-table th,
.primo-calendar-table td {
	border: 1px solid #ddd;
	padding: 0.5em;
	min-height: 80px;
	vertical-align: top;
}

.primo-calendar-table th {
	background: #f5f5f5;
	text-align: center;
	font-weight: bold;
}

/* 曜日ヘッダー色分け（テーマ上書きを防ぐため !important を使用） */
.primo-calendar-displayer .primo-calendar-table thead th.primo-calendar-dow-sunday {
	color: #c00 !important;
}

.primo-calendar-displayer .primo-calendar-table thead th.primo-calendar-dow-saturday {
	color: #0066cc !important;
}

.primo-calendar-displayer .primo-calendar-table thead th.primo-calendar-dow-weekday {
	color: #000 !important;
}

/* 土日祝セル背景（薄ピンク） */
.primo-calendar-displayer .primo-calendar-table td.primo-calendar-day-sunday,
.primo-calendar-displayer .primo-calendar-table td.primo-calendar-day-saturday,
.primo-calendar-displayer .primo-calendar-table td.primo-calendar-day-holiday {
	background-color: #fff0f5;
}

.primo-calendar-empty {
	background: #fafafa;
}

.primo-calendar-date {
	font-weight: 600;
	margin-bottom: 0.25em;
}

.primo-calendar-date .primo-calendar-holiday-name {
	font-size: 0.75em;
	font-weight: normal;
	color: #666;
	margin-left: 0.25em;
}

/* 休館日セル（グレーアウト） */
.primo-calendar-displayer .primo-calendar-table td.primo-calendar-day-closed {
	background-color: #d0d0d0;
}

.primo-calendar-date .primo-calendar-closed-name {
	font-size: 0.75em;
	font-weight: normal;
	color: #666;
	margin-left: 0.25em;
}

/* テーマの .p-entry__body ul 上書きを防ぐため詳細度を上げる */
.primo-calendar-displayer .primo-calendar-events {
	list-style: none;
	margin: 0;
	margin-left: 0;
	padding: 0;
	padding-left: 0;
	font-size: 0.85em;
}

.primo-calendar-events li {
	margin-bottom: 0.25em;
}

/* イベントブロック（時刻のみの四角形表示） */
.primo-calendar-events .primo-calendar-block {
	display: block;
	padding: 0.2em 0.4em;
	border-radius: 4px;
	background-color: #555;
	color: #fff;
	font-size: 0.95em;
}

/* イベント色分け（schedule ごと） */
.primo-calendar-events .primo-calendar-block-performance { background-color: #004b7a; }
.primo-calendar-events .primo-calendar-block-hall       { background-color: #9d6b4a; }
.primo-calendar-events .primo-calendar-block-studio     { background-color: #3d6b5c; }
.primo-calendar-events .primo-calendar-block-closed     { background-color: #d0d0d0; color: #333; }
.primo-calendar-events .primo-calendar-block-default    { background-color: #555; }

.primo-calendar-events .primo-calendar-block-link {
	display: block;
	text-decoration: none;
	color: inherit;
}

.primo-calendar-events .primo-calendar-block-link:hover {
	opacity: 0.9;
}

.primo-calendar-events .primo-calendar-time {
	margin: 0;
	color: inherit;
}

/* イベントリスト（テーマの ul/li 上書きを防ぐため詳細度を上げる） */
.primo-calendar-displayer .primo-event-list-items {
	list-style: none;
	margin: 0;
	padding: 0;
	padding-left: 0;
}

.primo-calendar-displayer .primo-event-list-item {
	list-style: none;
	margin-bottom: 0.75em;
	padding: 0.5em 0;
	border-bottom: 1px solid #eee;
}

.primo-calendar-displayer .primo-event-list-item:last-child {
	border-bottom: none;
}

.primo-calendar-displayer .primo-event-list-item a {
	text-decoration: none;
}

.primo-calendar-displayer .primo-event-list-item a:hover {
	text-decoration: underline;
}

.primo-event-datetime {
	display: inline-block;
	min-width: 10em;
	color: #666;
	font-size: 0.95em;
}

.primo-event-title {
	font-weight: 500;
}

/* イベントリスト：凡例配色（左ボーダー） */
.primo-calendar-displayer .primo-event-list-item.primo-calendar-block-performance {
	border-left: 4px solid #004b7a;
	padding-left: 0.75em;
}

.primo-calendar-displayer .primo-event-list-item.primo-calendar-block-hall {
	border-left: 4px solid #9d6b4a;
	padding-left: 0.75em;
}

.primo-calendar-displayer .primo-event-list-item.primo-calendar-block-studio {
	border-left: 4px solid #3d6b5c;
	padding-left: 0.75em;
}

.primo-calendar-displayer .primo-event-list-item.primo-calendar-block-closed {
	border-left: 4px solid #d0d0d0;
	padding-left: 0.75em;
}

.primo-calendar-displayer .primo-event-list-item.primo-calendar-block-default {
	border-left: 4px solid #555;
	padding-left: 0.75em;
}

/* グリッド形式 */
.primo-event-list.format-grid .primo-event-list-items {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1em;
}

.primo-event-list.format-grid .primo-event-list-item {
	border: 1px solid #eee;
	padding: 0.75em;
	border-radius: 4px;
}

/* 凡例 */
.primo-calendar-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75em 1.5em;
	margin-top: 1em;
	font-size: 0.85em;
}

.primo-calendar-legend-item {
	display: flex;
	align-items: center;
	gap: 0.35em;
}

.primo-calendar-legend-swatch {
	display: inline-block;
	width: 14px;
	height: 14px;
	border-radius: 3px;
	flex-shrink: 0;
}

/* 凡例スウォッチの色（イベントブロックと同一） */
.primo-calendar-legend .primo-calendar-legend-swatch.primo-calendar-day-holiday {
	background-color: #fff0f5;
	border: 1px solid #ddd;
}

.primo-calendar-legend .primo-calendar-legend-swatch.primo-calendar-block-performance {
	background-color: #004b7a;
}

.primo-calendar-legend .primo-calendar-legend-swatch.primo-calendar-block-hall {
	background-color: #9d6b4a;
}

.primo-calendar-legend .primo-calendar-legend-swatch.primo-calendar-block-studio {
	background-color: #3d6b5c;
}

.primo-calendar-legend .primo-calendar-legend-swatch.primo-calendar-day-closed {
	background-color: #d0d0d0;
	border: 1px solid #aaa;
}

/* レスポンシブ: スマホ向け */
@media (max-width: 600px) {
	.primo-calendar-displayer {
		margin: 0.75em auto;
		overflow-x: auto;
	}

	.primo-calendar-header {
		margin-bottom: 0.75em;
	}

	.primo-calendar-title {
		font-size: 1.1em;
	}

	.primo-calendar-table th,
	.primo-calendar-table td {
		padding: 0.35em;
		min-height: 60px;
		font-size: 0.9em;
	}

	.primo-calendar-date {
		font-size: 0.95em;
	}

	.primo-calendar-date .primo-calendar-holiday-name,
	.primo-calendar-date .primo-calendar-closed-name {
		font-size: 0.7em;
	}

	.primo-calendar-displayer .primo-calendar-events {
		font-size: 0.8em;
	}

	.primo-calendar-events .primo-calendar-block {
		padding: 0.15em 0.3em;
		font-size: 0.9em;
	}

	.primo-calendar-legend {
		font-size: 0.8em;
		gap: 0.5em 1em;
	}

	.primo-event-list.format-grid .primo-event-list-items {
		grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
		gap: 0.75em;
	}
}
