/**
 * Private Viewing Reservations — front-end styles.
 * Luxury, restrained, mobile-first. Uses CSS custom properties so a
 * theme can override the palette without touching this file.
 */

:root {
	--pvr-ink: #1a1a1a;
	--pvr-ink-soft: #3a3a3a;
	--pvr-gold: #b08d57;
	--pvr-gold-deep: #8a6d3f;
	--pvr-paper: #ffffff;
	--pvr-line: #e6e1d8;
	--pvr-muted: #8a8276;
	--pvr-radius: 2px;
	--pvr-font: Georgia, "Times New Roman", serif;
}

/* ----- CTA buttons ----- */
.pvr-single-cta { margin: 22px 0; }

.pvr-open-modal,
.pvr-submit {
	background: var(--pvr-ink) !important;
	color: #fff !important;
	border: 1px solid var(--pvr-ink) !important;
	padding: 14px 30px !important;
	font-family: var(--pvr-font);
	font-size: 14px !important;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	cursor: pointer;
	border-radius: var(--pvr-radius);
	transition: background .25s ease, color .25s ease;
}

.pvr-open-modal:hover,
.pvr-submit:hover {
	background: var(--pvr-gold) !important;
	border-color: var(--pvr-gold) !important;
	color: #fff !important;
}

.pvr-loop-cta {
	display: inline-block;
	margin-top: 8px;
	font-size: 12px;
	letter-spacing: 1px;
	text-transform: uppercase;
}

/* ----- Modal overlay ----- */
.pvr-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(20, 18, 16, 0.55);
	backdrop-filter: blur(3px);
	display: none;
	align-items: flex-start;
	justify-content: center;
	z-index: 99999;
	overflow-y: auto;
	padding: 5vh 16px;
}

.pvr-modal-overlay.pvr-open { display: flex; }

.pvr-modal {
	position: relative;
	background: var(--pvr-paper);
	max-width: 560px;
	width: 100%;
	padding: 44px 40px 40px;
	border: 1px solid var(--pvr-line);
	box-shadow: 0 30px 80px rgba(0, 0, 0, 0.25);
	animation: pvr-rise .35s ease;
}

@keyframes pvr-rise {
	from { opacity: 0; transform: translateY(16px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Inline (shortcode) variant */
.pvr-form-wrap.pvr-inline {
	max-width: 560px;
	margin: 0 auto;
}
.pvr-form-wrap.pvr-inline .pvr-modal {
	box-shadow: none;
	animation: none;
	padding: 32px 28px;
}

.pvr-close {
	position: absolute;
	top: 14px;
	right: 16px;
	background: none;
	border: none;
	font-size: 30px;
	line-height: 1;
	color: var(--pvr-muted);
	cursor: pointer;
}
.pvr-close:hover { color: var(--pvr-ink); }

.pvr-modal-title {
	font-family: var(--pvr-font);
	font-size: 26px;
	font-weight: normal;
	color: var(--pvr-ink);
	margin: 0 0 6px;
	text-align: center;
}

.pvr-modal-sub {
	text-align: center;
	color: var(--pvr-muted);
	font-size: 14px;
	margin: 0 0 26px;
}

/* ----- Form ----- */
.pvr-field { margin-bottom: 18px; }

.pvr-row {
	display: flex;
	gap: 16px;
}
.pvr-row .pvr-field { flex: 1; }

.pvr-field label {
	display: block;
	font-family: var(--pvr-font);
	font-size: 12px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--pvr-ink-soft);
	margin-bottom: 7px;
}

.pvr-field input,
.pvr-field select,
.pvr-field textarea {
	width: 100%;
	padding: 12px 14px;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	font-size: 15px;
	font-family: inherit;
	background: #fdfdfc;
	box-sizing: border-box;
}

.pvr-field input:focus,
.pvr-field select:focus,
.pvr-field textarea:focus {
	outline: none;
	border-color: var(--pvr-gold);
	box-shadow: 0 0 0 2px rgba(176, 141, 87, 0.15);
}

/* Consultation type selector */
.pvr-type-options {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.pvr-type-option {
	flex: 1;
	min-width: 120px;
	position: relative;
	text-transform: none !important;
	letter-spacing: 0 !important;
}

.pvr-type-option input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.pvr-type-option span {
	display: block;
	text-align: center;
	padding: 13px 10px;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	font-size: 13px;
	color: var(--pvr-ink-soft);
	cursor: pointer;
	transition: all .2s ease;
}

.pvr-type-option input:checked + span {
	border-color: var(--pvr-gold);
	background: var(--pvr-gold);
	color: #fff;
}

/* Honeypot */
.pvr-hp {
	position: absolute !important;
	left: -9999px !important;
	height: 0;
	width: 0;
	opacity: 0;
}

.pvr-submit {
	width: 100%;
	margin-top: 6px;
}

/* Messages */
.pvr-message {
	margin: 14px 0 4px;
	padding: 0;
	font-size: 14px;
	text-align: center;
}
.pvr-message-error {
	color: #9a2b2b;
	padding: 12px;
	background: #fbeaea;
	border-radius: var(--pvr-radius);
}
.pvr-message-success {
	color: #2c6b3f;
	padding: 14px;
	background: #eaf5ee;
	border-radius: var(--pvr-radius);
}

/* ----- Mobile ----- */
@media (max-width: 560px) {
	.pvr-modal { padding: 40px 22px 30px; }
	.pvr-row { flex-direction: column; gap: 0; }
	.pvr-modal-title { font-size: 22px; }
	.pvr-type-option { min-width: 0; }
}

/* ============================================================
   Viewing Tray
   ============================================================ */

/* Add-to-tray "added" state: toggle the two labels */
.pvr-add-tray .pvr-added-label { display: none; }
.pvr-add-tray.pvr-in-tray .pvr-add-label { display: none; }
.pvr-add-tray.pvr-in-tray .pvr-added-label { display: inline; }
.pvr-add-tray.pvr-in-tray {
	background: var(--pvr-gold) !important;
	border-color: var(--pvr-gold) !important;
}

/* Floating launcher */
.pvr-tray-launcher {
	position: fixed;
	right: 22px;
	bottom: 22px;
	z-index: 99998;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: var(--pvr-ink);
	color: #fff;
	border: none;
	padding: 14px 22px;
	border-radius: 40px;
	cursor: pointer;
	font-family: var(--pvr-font);
	letter-spacing: 1px;
	text-transform: uppercase;
	font-size: 13px;
	box-shadow: 0 10px 30px rgba(0,0,0,0.25);
	transition: background .25s ease;
}
.pvr-tray-launcher:hover { background: var(--pvr-gold-deep); }
.pvr-tray-icon { color: var(--pvr-gold); font-size: 16px; }
.pvr-tray-count {
	background: var(--pvr-gold);
	color: #1a1a1a;
	font-weight: 700;
	min-width: 22px;
	height: 22px;
	border-radius: 11px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	padding: 0 6px;
}

/* Drawer */
.pvr-tray-overlay {
	position: fixed;
	inset: 0;
	background: rgba(20,18,16,0.5);
	backdrop-filter: blur(2px);
	z-index: 99999;
	display: none;
}
.pvr-tray-overlay.pvr-open { display: block; }

.pvr-tray-panel {
	position: absolute;
	top: 0;
	right: 0;
	height: 100%;
	width: 420px;
	max-width: 92vw;
	background: var(--pvr-paper);
	display: flex;
	flex-direction: column;
	box-shadow: -20px 0 60px rgba(0,0,0,0.25);
	animation: pvr-slide .3s ease;
}
@keyframes pvr-slide { from { transform: translateX(40px); opacity: .6; } to { transform: translateX(0); opacity: 1; } }

.pvr-tray-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 22px 26px;
	border-bottom: 1px solid var(--pvr-line);
}
.pvr-tray-header h3 {
	margin: 0;
	font-family: var(--pvr-font);
	font-weight: normal;
	font-size: 20px;
	color: var(--pvr-ink);
}
.pvr-tray-close {
	background: none; border: none; font-size: 28px; line-height: 1;
	color: var(--pvr-muted); cursor: pointer;
}
.pvr-tray-sub { padding: 16px 26px 0; margin: 0; color: var(--pvr-muted); font-size: 13px; }

.pvr-tray-items { flex: 1; overflow-y: auto; padding: 16px 26px; }
.pvr-tray-empty, .pvr-tray-loading { color: var(--pvr-muted); font-size: 14px; text-align: center; margin-top: 30px; }

.pvr-tray-row {
	display: flex;
	gap: 14px;
	align-items: center;
	padding: 14px 0;
	border-bottom: 1px solid var(--pvr-line);
}
.pvr-tray-thumb {
	width: 64px; height: 64px; object-fit: cover; border: 1px solid var(--pvr-line); flex-shrink: 0;
}
.pvr-tray-meta { flex: 1; display: flex; flex-direction: column; gap: 3px; }
.pvr-tray-name { font-size: 15px; color: var(--pvr-ink); text-decoration: none; }
.pvr-tray-name:hover { color: var(--pvr-gold-deep); }
.pvr-tray-sku { font-size: 12px; color: var(--pvr-muted); }
.pvr-tray-price { font-size: 13px; color: var(--pvr-ink-soft); }
.pvr-tray-remove {
	background: none; border: none; font-size: 22px; color: var(--pvr-muted); cursor: pointer; line-height: 1;
}
.pvr-tray-remove:hover { color: #9a2b2b; }

.pvr-tray-footer { padding: 20px 26px; border-top: 1px solid var(--pvr-line); }
.pvr-tray-reserve { width: 100%; }
.pvr-tray-reserve:disabled { opacity: .45; cursor: not-allowed; }

/* Modal item summary */
.pvr-modal-items {
	background: #faf8f4;
	border: 1px solid var(--pvr-line);
	padding: 12px 14px;
	font-size: 13px;
	color: var(--pvr-ink-soft);
	margin-bottom: 20px;
	border-radius: var(--pvr-radius);
}
.pvr-modal-items:empty { display: none; }
.pvr-modal-items-label { font-weight: 600; color: var(--pvr-ink); }

@media (max-width: 480px) {
	.pvr-tray-launcher { right: 14px; bottom: 14px; padding: 12px 18px; }
	.pvr-tray-text { display: none; }
}

/* ============================================================
   Header tray link (block / shortcode) + cart hiding
   ============================================================ */
.pvr-tray-link {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	text-decoration: none;
	color: inherit;
	font: inherit;
	cursor: pointer;
	position: relative;
}
.pvr-tray-link:hover { color: var(--pvr-gold-deep, #9a7b3f); }
.pvr-tray-link-icon { flex-shrink: 0; }
.pvr-tray-link-label { white-space: nowrap; }
.pvr-tray-link-count {
	background: var(--pvr-gold, #c8a45c);
	color: #1a1a1a;
	font-size: 11px;
	font-weight: 700;
	min-width: 18px;
	height: 18px;
	border-radius: 9px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 5px;
	line-height: 1;
}
.pvr-tray-link-count[hidden] { display: none; }

/* Keep the WooCommerce cart out of the way in catalog mode */
.wc-block-mini-cart,
.wp-block-woocommerce-mini-cart,
.wc-block-mini-cart__button,
.site-header .cart-contents,
.wp-block-woocommerce-cart {
	display: none !important;
}

.pvr-tray-note {
	margin: 10px 0 0;
	font-size: 12px;
	color: var(--pvr-muted, #8a8276);
	text-align: center;
}

/* ----- Ring size selector in tray drawer ----- */
.pvr-ring-size-wrap {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 6px;
}
.pvr-ring-size-label {
	font-size: 11px;
	letter-spacing: .8px;
	text-transform: uppercase;
	color: var(--pvr-muted);
	white-space: nowrap;
}
.pvr-ring-size-select {
	font-size: 13px;
	padding: 4px 8px;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	background: var(--pvr-paper);
	color: var(--pvr-ink);
	min-width: 100px;
}

/* ----- Calendly multi-option styling (same as consultation types) ----- */
.pvr-type-option.pvr-calendly-option { cursor: pointer; }

/* =====================================================================
   My Account — My Viewings tab
   ===================================================================== */

.pvr-myaccount {
	font-family: var(--pvr-font);
	color: var(--pvr-ink);
}

/* Remove WooCommerce's default top padding on the My Account content column */
.woocommerce-account .woocommerce-MyAccount-content {
	padding-top: 0 !important;
}
.woocommerce-account .woocommerce-MyAccount-content > p:first-child:empty,
.woocommerce-account .woocommerce-MyAccount-content > div:first-child:empty {
	display: none;
}

.pvr-myaccount-title {
	font-size: 18px;
	font-weight: normal;
	letter-spacing: 1px;
	margin: 0 0 16px;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--pvr-line);
}

.pvr-myaccount-empty {
	color: var(--pvr-muted);
	font-size: 15px;
	padding: 24px 0;
}

/* ----- Booking card ----- */
.pvr-booking-card {
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	margin-bottom: 24px;
	overflow: hidden;
}

.pvr-booking-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 8px 16px;
	background: #f9f7f4;
	border-bottom: 1px solid var(--pvr-line);
	gap: 12px;
}

.pvr-booking-ref {
	font-size: 13px;
	font-weight: bold;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: var(--pvr-ink-soft);
}

/* Status badges */
.pvr-booking-badge {
	display: inline-block;
	font-size: 11px;
	font-weight: bold;
	letter-spacing: 1px;
	text-transform: uppercase;
	padding: 4px 10px;
	border-radius: 20px;
	white-space: nowrap;
}
.pvr-badge-open        { background: #f0ede8; color: var(--pvr-muted); }
.pvr-badge-pending     { background: #fef9ec; color: #8a6700; border: 1px solid #f5e08a; }
.pvr-badge-confirmed   { background: #edf7f0; color: #276640; border: 1px solid #a8dbb8; }
.pvr-badge-rescheduled { background: #edf3fe; color: #1a4fa0; border: 1px solid #a8c4f5; }
.pvr-badge-completed   { background: #f0ede8; color: var(--pvr-muted); border: 1px solid var(--pvr-line); }
.pvr-badge-cancelled   { background: #fef0f0; color: #a02020; border: 1px solid #f5a8a8; }
.pvr-badge-no_show     { background: #fef0f0; color: #a02020; border: 1px solid #f5a8a8; }

.pvr-booking-body {
	padding: 20px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* ----- Section ----- */
.pvr-booking-section-title {
	font-size: 11px;
	font-weight: bold;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--pvr-muted);
	margin: 0 0 12px;
}

/* ----- Definition list for appointment details ----- */
.pvr-booking-dl {
	display: grid;
	grid-template-columns: 140px 1fr;
	gap: 6px 16px;
	margin: 0;
	font-size: 14px;
}

.pvr-booking-dl dt {
	color: var(--pvr-muted);
	font-weight: normal;
}

.pvr-booking-dl dd {
	margin: 0;
	color: var(--pvr-ink);
}

.pvr-booking-dl dd.pvr-awaiting {
	color: #8a6700;
	font-style: italic;
}

/* ----- Calendly action links ----- */
.pvr-booking-links {
	display: flex;
	gap: 16px;
	margin-top: 14px;
	flex-wrap: wrap;
}

.pvr-booking-link {
	font-size: 12px;
	letter-spacing: 1px;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--pvr-ink);
	border-bottom: 1px solid var(--pvr-ink);
	padding-bottom: 1px;
	transition: color .2s, border-color .2s;
}
.pvr-booking-link:hover { color: var(--pvr-gold); border-color: var(--pvr-gold); }
.pvr-booking-link-cancel { color: #a02020; border-color: #a02020; }
.pvr-booking-link-cancel:hover { color: #d03030; border-color: #d03030; }

/* ----- Product list — compact horizontal rows ----- */
.pvr-booking-items {
	display: flex;
	flex-direction: column;
	gap: 0;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	overflow: hidden;
}

.pvr-booking-item {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 10px 14px;
	border-bottom: 1px solid var(--pvr-line);
	font-size: 13px;
	background: #fff;
}
.pvr-booking-item:last-child { border-bottom: none; }

.pvr-booking-item-img-link { display: block; flex-shrink: 0; }
.pvr-booking-item-img {
	width: 52px;
	height: 52px;
	object-fit: cover;
	display: block;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
}

.pvr-booking-item-meta {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.pvr-booking-item-name {
	font-size: 13px;
	color: var(--pvr-ink);
	text-decoration: none;
	line-height: 1.35;
	font-weight: bold;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.pvr-booking-item-name:hover { color: var(--pvr-gold); }

.pvr-booking-item-sku,
.pvr-booking-item-ring {
	font-size: 11px;
	color: var(--pvr-muted);
	letter-spacing: .5px;
}

.pvr-booking-item-price {
	font-size: 12px;
	color: var(--pvr-ink-soft);
}

/* ----- Mobile ----- */
@media (max-width: 600px) {
	.pvr-booking-dl {
		grid-template-columns: 1fr;
		gap: 2px 0;
	}
	.pvr-booking-dl dt { margin-top: 8px; }
	.pvr-booking-item-name {
		white-space: normal;
	}
}

/* ----- Item notes in tray drawer ----- */
.pvr-item-note {
	width: 100%;
	margin-top: 5px;
	font-size: 12px;
	font-family: inherit;
	color: var(--pvr-ink-soft);
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	padding: 5px 8px;
	resize: none;
	overflow: hidden;
	line-height: 1.4;
	box-sizing: border-box;
}
.pvr-item-note::placeholder { color: var(--pvr-muted); font-style: italic; }
.pvr-item-note:focus { outline: none; border-color: var(--pvr-gold); }

/* ----- Save tray button ----- */
.pvr-save-tray-wrap {
	padding: 14px 0 4px;
	border-top: 1px solid var(--pvr-line);
	margin-top: 8px;
}
.pvr-save-tray-btn {
	background: none;
	border: 1px solid var(--pvr-line);
	padding: 9px 18px;
	font-size: 12px;
	font-family: var(--pvr-font);
	letter-spacing: 1px;
	text-transform: uppercase;
	cursor: pointer;
	color: var(--pvr-ink-soft);
	border-radius: var(--pvr-radius);
	transition: border-color .2s, color .2s;
	width: 100%;
	text-align: center;
}
.pvr-save-tray-btn:hover:not(:disabled) { border-color: var(--pvr-gold); color: var(--pvr-gold); }
.pvr-save-tray-btn:disabled { opacity: .6; cursor: default; }

.pvr-save-tray-form {
	margin-top: 2px;
}
.pvr-save-tray-name {
	width: 100%;
	box-sizing: border-box;
	border: 1px solid var(--pvr-line);
	border-radius: var(--pvr-radius);
	padding: 9px 12px;
	font-size: 13px;
	font-family: var(--pvr-font);
	color: var(--pvr-ink);
	background: #fff;
	margin-bottom: 8px;
}
.pvr-save-tray-name:focus { outline: none; border-color: var(--pvr-gold); }
.pvr-save-tray-name::placeholder { color: var(--pvr-muted); }

.pvr-save-tray-actions {
	display: flex;
	gap: 8px;
}
.pvr-save-tray-confirm {
	flex: 1;
	background: var(--pvr-ink);
	color: #fff;
	border: none;
	padding: 9px 0;
	font-size: 11px;
	font-family: var(--pvr-font);
	letter-spacing: 1.5px;
	text-transform: uppercase;
	cursor: pointer;
	border-radius: var(--pvr-radius);
	transition: background .2s;
}
.pvr-save-tray-confirm:hover:not(:disabled) { background: var(--pvr-gold); }
.pvr-save-tray-confirm:disabled { opacity: .6; cursor: default; }

.pvr-save-tray-cancel {
	background: none;
	border: 1px solid var(--pvr-line);
	padding: 9px 16px;
	font-size: 11px;
	font-family: var(--pvr-font);
	letter-spacing: 1px;
	text-transform: uppercase;
	cursor: pointer;
	color: var(--pvr-muted);
	border-radius: var(--pvr-radius);
	transition: border-color .2s;
}
.pvr-save-tray-cancel:hover { border-color: var(--pvr-ink-soft); color: var(--pvr-ink); }

.pvr-save-result { font-size: 12px; color: #cc1818; display: block; margin-top: 6px; }
