/**
 * Atas Medya Booking - Randevu takvimi stilleri
 *
 * KAPSAMA İLKESİ
 * Tüm kurallar `.atas-medya-booking-calendar` altındadır. Flatpickr takvimi
 * <body> sonuna eklendiği için ona da özel bir sınıf verilir
 * (`.flatpickr-calendar.atas-medya-fp`); böylece hem tema hem de başka
 * eklentilerin Flatpickr örnekleri etkilenmez.
 *
 * Buton ve girdi sıfırlamaları bilinçli olarak açıktır: WooCommerce temaları
 * <button> ve <input> öğelerini agresif biçimde biçimlendirir.
 *
 * @package Atas_Medya_Booking
 */

/* ==========================================================================
   1. Kapsayıcı
   ========================================================================== */

.atas-medya-booking-calendar {
	--atas-medya-cal-ink: #1f2933;
	--atas-medya-cal-muted: #6b7280;
	--atas-medya-cal-border: #e2e5e9;
	--atas-medya-cal-border-strong: #cbd2d9;
	--atas-medya-cal-bg: #ffffff;
	--atas-medya-cal-soft: #f7f8f9;
	--atas-medya-cal-accent: #8a1f3d;
	--atas-medya-cal-accent-soft: rgba(138, 31, 61, 0.09);
	--atas-medya-cal-accent-ink: #ffffff;
	--atas-medya-cal-danger: #b42318;
	--atas-medya-cal-success: #067647;
	--atas-medya-cal-radius: 14px;

	box-sizing: border-box;
	display: block;
	width: 100%;
	max-width: 100%;
	margin: 0 0 22px;
	padding: 20px 22px 22px;
	border: 1px solid var(--atas-medya-cal-border);
	border-radius: var(--atas-medya-cal-radius);
	background: var(--atas-medya-cal-bg);
	box-shadow: none;
	font-family: inherit;
	text-align: left;
	clear: both;
}

.atas-medya-booking-calendar *,
.atas-medya-booking-calendar *::before,
.atas-medya-booking-calendar *::after {
	box-sizing: border-box;
}

/*
 * `hidden` özniteliği tarayıcının varsayılan `[hidden]{display:none}` kuralıyla
 * çalışır. Aşağıdaki bölümlerde öğelere açıkça `display: flex/block` verildiği
 * için bu varsayılan ezilir ve gizli kutular boş şerit hâlinde görünür kalır.
 * Bu nedenle kapsam içinde açıkça yeniden tanımlanır.
 */
.atas-medya-booking-calendar [hidden] {
	display: none !important;
}

.atas-medya-booking-calendar__head {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 16px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--atas-medya-cal-border);
}

.atas-medya-booking-calendar__title {
	display: block;
	margin: 0;
	color: var(--atas-medya-cal-ink);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0.2px;
	text-transform: none;
}

.atas-medya-booking-calendar__field {
	margin: 0 0 16px;
}

.atas-medya-booking-calendar__field:last-of-type {
	margin-bottom: 0;
}

.atas-medya-booking-calendar__label {
	display: block;
	margin: 0 0 7px;
	padding: 0;
	color: var(--atas-medya-cal-muted);
	font-size: 12.5px;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.5px;
	text-transform: uppercase;
}

/* ==========================================================================
   2. Tarih girdisi
   ========================================================================== */

.atas-medya-booking-calendar__input-wrap {
	position: relative;
	display: block;
	width: 100%;
	max-width: 320px;
}

.atas-medya-booking-calendar input.atas-medya-booking-calendar__input,
.atas-medya-booking-calendar input.atas-medya-booking-calendar__input:focus {
	display: block;
	width: 100%;
	height: 48px;
	min-height: 48px;
	margin: 0;
	padding: 0 44px 0 15px;
	border: 1px solid var(--atas-medya-cal-border-strong);
	border-radius: 10px;
	background: var(--atas-medya-cal-bg);
	color: var(--atas-medya-cal-ink);
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	line-height: 46px;
	letter-spacing: normal;
	text-align: left;
	text-transform: none;
	box-shadow: none;
	cursor: pointer;
	outline: none;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color 0.18s ease, box-shadow 0.18s ease;
}

.atas-medya-booking-calendar input.atas-medya-booking-calendar__input::placeholder {
	color: #9aa5b1;
	opacity: 1;
}

.atas-medya-booking-calendar input.atas-medya-booking-calendar__input:hover {
	border-color: #aeb6bf;
}

.atas-medya-booking-calendar input.atas-medya-booking-calendar__input:focus {
	border-color: var(--atas-medya-cal-accent);
	box-shadow: 0 0 0 3px var(--atas-medya-cal-accent-soft);
}

.atas-medya-booking-calendar__input-icon {
	position: absolute;
	top: 50%;
	right: 14px;
	display: block;
	color: var(--atas-medya-cal-muted);
	transform: translateY(-50%);
	pointer-events: none;
}

.atas-medya-booking-calendar__input-icon svg {
	display: block;
	width: 18px;
	height: 18px;
	fill: currentColor;
}

/* ==========================================================================
   3. Saat seçenekleri (pill butonlar)
   ========================================================================== */

.atas-medya-booking-calendar__slots {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/*
 * Saat seçenekleri <button> değil <span role="radio"> olarak üretilir.
 * Gerekçe: WooCommerce temaları ve sayfa oluşturucular `button` etiketini
 * çoğu zaman `!important` ile biçimlendirir; hiçbir özgüllük artışı bunu
 * yenemez. `span` seçicisi ise pratikte hiçbir tema tarafından hedeflenmez,
 * dolayısıyla bileşen tasarımı yapısal olarak korunur. Klavye ve ekran
 * okuyucu davranışı JS tarafında (role, aria-checked, tabindex, Enter/Space)
 * eksiksiz sağlanır.
 */
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 92px;
	min-height: 44px;
	margin: 0;
	padding: 11px 18px;
	border: 1px solid var(--atas-medya-cal-border-strong);
	border-radius: 999px;
	background: var(--atas-medya-cal-bg);
	color: var(--atas-medya-cal-ink);
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0.2px;
	text-align: center;
	text-transform: none;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: none;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	-webkit-tap-highlight-color: transparent;
	transition:
		border-color 0.18s ease,
		background-color 0.18s ease,
		color 0.18s ease,
		transform 0.18s cubic-bezier(0.2, 0.8, 0.3, 1),
		box-shadow 0.18s ease;
}

@media (hover: hover) and (pointer: fine) {
	.atas-medya-booking-calendar .atas-medya-booking-calendar__slot:not([aria-disabled="true"]):hover {
		border-color: var(--atas-medya-cal-accent);
		background: var(--atas-medya-cal-soft);
	}
}

.atas-medya-booking-calendar .atas-medya-booking-calendar__slot:focus-visible {
	outline: 2px solid var(--atas-medya-cal-accent);
	outline-offset: 2px;
}

.atas-medya-booking-calendar .atas-medya-booking-calendar__slot:not([aria-disabled="true"]):active {
	opacity: 0.9;
}

/* Seçili saat */
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot.is-selected,
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot[aria-checked="true"],
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot.is-selected:hover,
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot[aria-checked="true"]:hover {
	border-color: var(--atas-medya-cal-accent);
	background: var(--atas-medya-cal-accent);
	color: var(--atas-medya-cal-accent-ink);
	box-shadow: none;
}

/* Dolu veya kapalı saat */
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot[aria-disabled="true"],
.atas-medya-booking-calendar .atas-medya-booking-calendar__slot.is-unavailable {
	border-color: var(--atas-medya-cal-border);
	background: var(--atas-medya-cal-soft);
	color: #a3adb8;
	cursor: not-allowed;
	opacity: 1;
	box-shadow: none;
	transform: none;
}

.atas-medya-booking-calendar .atas-medya-booking-calendar__slot-note {
	display: inline-block;
	margin-left: 2px;
	color: inherit;
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.3px;
	opacity: 0.85;
}

/* Yükleniyor iskeleti */
.atas-medya-booking-calendar__slot-skeleton {
	display: inline-block;
	width: 92px;
	height: 44px;
	border-radius: 999px;
	background: linear-gradient(
		90deg,
		var(--atas-medya-cal-soft) 25%,
		#eef0f2 37%,
		var(--atas-medya-cal-soft) 63%
	);
	background-size: 400% 100%;
	animation: atas-medya-cal-shimmer 1.3s ease-in-out infinite;
}

@keyframes atas-medya-cal-shimmer {
	0% {
		background-position: 100% 50%;
	}

	100% {
		background-position: 0 50%;
	}
}

/* ==========================================================================
   4. Bilgi, özet ve hata alanları
   ========================================================================== */

.atas-medya-booking-calendar .atas-medya-booking-calendar__hint {
	display: block;
	margin: 14px 0 0;
	padding: 0;
	color: var(--atas-medya-cal-muted);
	font-size: 13px;
	font-style: normal;
	font-weight: 400;
	line-height: 1.55;
	text-transform: none;
}

.atas-medya-booking-calendar__summary {
	display: flex;
	align-items: center;
	gap: 9px;
	margin: 16px 0 0;
	padding: 12px 14px;
	border: 1px solid rgba(6, 118, 71, 0.22);
	border-radius: 10px;
	background: rgba(6, 118, 71, 0.06);
	color: var(--atas-medya-cal-success);
	font-size: 13.5px;
	font-weight: 600;
	line-height: 1.45;
}

.atas-medya-booking-calendar__summary::before {
	content: "";
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--atas-medya-cal-success);
}

.atas-medya-booking-calendar__error {
	display: block;
	margin: 14px 0 0;
	padding: 12px 14px;
	border: 1px solid rgba(180, 35, 24, 0.24);
	border-left-width: 3px;
	border-radius: 8px;
	background: rgba(180, 35, 24, 0.05);
	color: var(--atas-medya-cal-danger);
	font-size: 13.5px;
	font-weight: 500;
	line-height: 1.55;
	animation: atas-medya-cal-shake 0.32s ease;
}

.atas-medya-booking-calendar__error a {
	color: var(--atas-medya-cal-danger);
	font-weight: 600;
	text-decoration: underline;
}

@keyframes atas-medya-cal-shake {
	0%,
	100% {
		transform: translateX(0);
	}

	25% {
		transform: translateX(-4px);
	}

	75% {
		transform: translateX(4px);
	}
}

.atas-medya-booking-calendar.is-loading .atas-medya-booking-calendar__slots {
	pointer-events: none;
}

/* ==========================================================================
   5. Mobil
   ========================================================================== */

@media (max-width: 600px) {
	.atas-medya-booking-calendar {
		padding: 16px 16px 18px;
	}

	.atas-medya-booking-calendar__input-wrap {
		max-width: 100%;
	}

	.atas-medya-booking-calendar__slots {
		gap: 8px;
	}

	.atas-medya-booking-calendar .atas-medya-booking-calendar__slot {
		flex: 1 1 calc(33.333% - 6px);
		min-width: 0;
		max-width: calc(50% - 4px);
		padding: 12px 8px;
		font-size: 13.5px;
	}
}

@media (max-width: 380px) {
	.atas-medya-booking-calendar .atas-medya-booking-calendar__slot {
		flex-basis: calc(50% - 4px);
	}
}

/* ==========================================================================
   6. Flatpickr görünümü (yalnızca bizim örneğimiz)
   ========================================================================== */

.flatpickr-calendar.atas-medya-fp {
	width: 320px;
	margin-top: 6px;
	border: 1px solid #e2e5e9;
	border-radius: 12px;
	background: #fff;
	box-shadow: none;
	font-family: inherit;
	font-size: 14px;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-months {
	padding: 10px 6px 4px;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-current-month,
.flatpickr-calendar.atas-medya-fp .flatpickr-monthDropdown-months,
.flatpickr-calendar.atas-medya-fp .numInput.cur-year {
	color: #1f2933;
	font-size: 15px;
	font-weight: 600;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-weekday {
	color: #6b7280;
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: 0.4px;
	text-transform: uppercase;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day {
	max-width: 40px;
	height: 38px;
	border: 0;
	border-radius: 9px;
	color: #1f2933;
	font-size: 14px;
	font-weight: 500;
	line-height: 38px;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day:hover {
	background: #f2f4f6;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.today {
	box-shadow: inset 0 0 0 1px #cbd2d9;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.selected,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.selected:hover {
	background: #8a1f3d;
	border-color: #8a1f3d;
	color: #fff;
	font-weight: 700;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.flatpickr-disabled,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.flatpickr-disabled:hover,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.prevMonthDay,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.nextMonthDay {
	background: transparent;
	color: #cfd4da;
	text-decoration: line-through;
	text-decoration-thickness: 1px;
	cursor: not-allowed;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.prevMonthDay,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.nextMonthDay {
	text-decoration: none;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-prev-month:hover svg,
.flatpickr-calendar.atas-medya-fp .flatpickr-next-month:hover svg {
	fill: #1f2933;
}

@media (max-width: 380px) {
	.flatpickr-calendar.atas-medya-fp {
		width: 288px;
	}

	.flatpickr-calendar.atas-medya-fp .flatpickr-day {
		max-width: 36px;
		height: 35px;
		line-height: 35px;
	}
}

/* ==========================================================================
   7. Erişilebilirlik
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	.atas-medya-booking-calendar .atas-medya-booking-calendar__slot,
	.atas-medya-booking-calendar input.atas-medya-booking-calendar__input {
		transition: none;
	}

	.atas-medya-booking-calendar__error {
		animation: none;
	}

	.atas-medya-booking-calendar__slot-skeleton {
		animation: none;
	}
}

/* ==========================================================================
   8. Gün bölümüne göre gruplanmış saatler
   --------------------------------------------------------------------------
   Yarım saatlik aralıkta bir gün 20+ seçenek üretir. Düz ızgara bu sayıda
   okunaksızlaşır; saatler Sabah / Öğleden Sonra / Akşam bloklarına ayrılır.
   Açılır liste tercih edilmedi: kutular günün ne kadar dolu olduğunu ve
   "Dolu / Kapalı" gerekçelerini tek bakışta gösterir.
   ========================================================================== */

.atas-medya-booking-calendar .atas-medya-booking-calendar__slots--grouped {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 16px;
}

.atas-medya-booking-calendar__group {
	display: block;
}

.atas-medya-booking-calendar .atas-medya-booking-calendar__group-title {
	display: block;
	margin: 0 0 8px;
	padding: 0;
	color: var(--atas-medya-cal-muted);
	font-size: 11.5px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.7px;
	text-transform: uppercase;
}

.atas-medya-booking-calendar__group-items {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
}

@media (max-width: 600px) {
	.atas-medya-booking-calendar .atas-medya-booking-calendar__slots--grouped {
		gap: 14px;
	}

	.atas-medya-booking-calendar__group-items {
		gap: 8px;
	}

	.atas-medya-booking-calendar__group-items .atas-medya-booking-calendar__slot {
		flex: 1 1 calc(33.333% - 6px);
		min-width: 0;
		/* Son satirda yalniz kalan kutu tum satiri kaplamasin. */
		max-width: calc(50% - 4px);
	}
}

/* ==========================================================================
   9. Kapalı günler ve bilgi balonu
   --------------------------------------------------------------------------
   Flatpickr kapalı günleri yalnızca soluklaştırır; müşteri neden
   seçemediğini anlamaz. Burada kapalı günler kırmızı tonda gösterilir ve
   köşesine saat ikonu konur. Tıklanınca günün üstünde küçük siyah bir balon
   nedeni açıklar.
   ========================================================================== */

.flatpickr-calendar.atas-medya-fp {
	position: absolute;
	overflow: visible;
}

/* Mesai günü olmayan günler (Cumartesi, Pazar vb.) */
.flatpickr-calendar.atas-medya-fp .flatpickr-day.atas-medya-day--offday,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.atas-medya-day--offday:hover {
	position: relative;
	background: transparent;
	color: #b42318;
	text-decoration: none;
	cursor: pointer;
}

/* Yönetici kuralıyla kapatılmış veya dolmuş günler */
.flatpickr-calendar.atas-medya-fp .flatpickr-day.atas-medya-day--closed,
.flatpickr-calendar.atas-medya-fp .flatpickr-day.atas-medya-day--closed:hover {
	position: relative;
	background: transparent;
	color: #a3adb8;
	text-decoration: none;
	cursor: pointer;
}

/* Küçük saat ikonu — saf CSS, ek dosya yok. */
.flatpickr-calendar.atas-medya-fp .atas-medya-day__icon {
	position: absolute;
	right: 3px;
	bottom: 3px;
	display: block;
	width: 9px;
	height: 9px;
	border: 1.4px solid currentColor;
	border-radius: 50%;
	opacity: 0.85;
	pointer-events: none;
}

/* Akrep ve yelkovan */
.flatpickr-calendar.atas-medya-fp .atas-medya-day__icon::before,
.flatpickr-calendar.atas-medya-fp .atas-medya-day__icon::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 50%;
	width: 1.4px;
	background: currentColor;
	transform-origin: bottom center;
}

.flatpickr-calendar.atas-medya-fp .atas-medya-day__icon::before {
	height: 2.6px;
	transform: translateX(-50%) rotate(90deg);
}

.flatpickr-calendar.atas-medya-fp .atas-medya-day__icon::after {
	height: 3.4px;
	transform: translateX(-50%) rotate(0deg);
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.atas-medya-day--offday .atas-medya-day__icon {
	color: #b42318;
}

/* Bilgi balonu */
.flatpickr-calendar.atas-medya-fp .atas-medya-fp-tip {
	position: absolute;
	z-index: 9999;
	max-width: 190px;
	padding: 7px 10px;
	border-radius: 7px;
	background: #16181d;
	color: #fff;
	font-size: 11.5px;
	font-weight: 500;
	line-height: 1.45;
	text-align: center;
	white-space: normal;
	transform: translate(-50%, -100%);
	pointer-events: none;
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
	animation: atas-medya-tip-in 0.16s ease-out;
}

.flatpickr-calendar.atas-medya-fp .atas-medya-fp-tip::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	width: 0;
	height: 0;
	border: 5px solid transparent;
	border-top-color: #16181d;
	transform: translateX(-50%);
}

.flatpickr-calendar.atas-medya-fp .atas-medya-fp-tip[hidden] {
	display: none;
}

@keyframes atas-medya-tip-in {
	from {
		opacity: 0;
		transform: translate(-50%, -92%);
	}

	to {
		opacity: 1;
		transform: translate(-50%, -100%);
	}
}

/* ==========================================================================
   10. Takvim görünümü rötuşları
   ========================================================================== */

.flatpickr-calendar.atas-medya-fp {
	padding-bottom: 6px;
	border-radius: 14px;
	box-shadow: none;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-months {
	padding: 12px 6px 6px;
	border-bottom: 1px solid #f0f1f3;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-weekdays {
	margin-top: 6px;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day {
	border-radius: 10px;
	transition: background-color 0.15s ease, color 0.15s ease;
}

.flatpickr-calendar.atas-medya-fp .flatpickr-day.today:not(.selected) {
	box-shadow: inset 0 0 0 1.5px #8a1f3d;
	color: #8a1f3d;
	font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
	.flatpickr-calendar.atas-medya-fp .atas-medya-fp-tip {
		animation: none;
	}
}
