/* SullivanPro Rental Operations Manager public styles. Everything is scoped to SullivanPro Rental Operations containers so it can safely inherit any theme. */
.rentops-catalog,
.rentops-request-wrapper {
	--rentops-accent: var(--wp--preset--color--primary, #2563eb);
	--rentops-accent-strong: #1d4ed8;
	--rentops-ink: #172033;
	--rentops-muted: #667085;
	--rentops-line: #dbe2ea;
	--rentops-surface: #ffffff;
	--rentops-soft: #f7f9fc;
	--rentops-success: #16803a;
	--rentops-warning: #b54708;
	--rentops-danger: #b42318;
	--rentops-radius: 18px;
	--rentops-shadow: 0 18px 48px rgba(15, 23, 42, .09);
	box-sizing: border-box;
	color: var(--rentops-ink);
	font: inherit;
}
.rentops-catalog *,
.rentops-request-wrapper * { box-sizing: border-box; }

/* Catalog. */
.rentops-catalog { display: grid; gap: 24px; margin: 28px 0; }
.rentops-columns-1 { grid-template-columns: 1fr; }
.rentops-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rentops-columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rentops-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.rentops-catalog-card { overflow: hidden; border: 1px solid var(--rentops-line); border-radius: var(--rentops-radius); background: var(--rentops-surface); box-shadow: 0 10px 30px rgba(15, 23, 42, .07); transition: transform .2s ease, box-shadow .2s ease; }
.rentops-catalog-card:hover { transform: translateY(-2px); box-shadow: var(--rentops-shadow); }
.rentops-catalog-media { background: var(--rentops-soft); }
.rentops-catalog-media img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.rentops-catalog-content { padding: 22px; }
.rentops-catalog-category { display: inline-flex; margin-bottom: 10px; padding: 5px 9px; border-radius: 999px; background: var(--rentops-soft); color: var(--rentops-muted); font-size: .75rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.rentops-catalog-card h3 { margin: 0 0 12px; color: var(--rentops-ink); font-size: clamp(1.1rem, 2vw, 1.35rem); line-height: 1.25; }
.rentops-catalog-description { color: var(--rentops-muted); }
.rentops-catalog-description p:last-child { margin-bottom: 0; }
.rentops-catalog-rates { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 18px 0; }
.rentops-catalog-rates span { padding: 7px 10px; border-radius: 10px; background: var(--rentops-soft); }
.rentops-availability { display: flex; align-items: center; gap: 8px; margin: 14px 0; color: var(--rentops-muted); }
.rentops-dot { flex: 0 0 10px; width: 10px; height: 10px; border-radius: 50%; background: #98a2b3; box-shadow: 0 0 0 4px rgba(152, 162, 179, .12); }
.rentops-dot.is-available { background: var(--rentops-success); box-shadow: 0 0 0 4px rgba(22, 128, 58, .12); }
.rentops-dot.is-unavailable { background: var(--rentops-danger); box-shadow: 0 0 0 4px rgba(180, 35, 24, .12); }

/* Booking request. */
.rentops-request-wrapper { width: 100%; max-width: 980px; margin: 32px auto; padding: 0 12px; }
.rentops-booking-card { overflow: hidden; border: 1px solid var(--rentops-line); border-radius: 24px; background: var(--rentops-surface); box-shadow: var(--rentops-shadow); }
.rentops-booking-header { display: flex; gap: 20px; align-items: flex-start; padding: clamp(24px, 5vw, 42px); color: #fff; background: linear-gradient(135deg, var(--rentops-accent-strong), var(--rentops-accent)); }
.rentops-booking-header h2 { margin: 3px 0 8px; color: inherit; font-size: clamp(1.7rem, 4vw, 2.45rem); line-height: 1.1; }
.rentops-booking-header p { margin: 0; max-width: 660px; color: rgba(255,255,255,.88); }
.rentops-booking-eyebrow { margin-bottom: 8px !important; font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; }
.rentops-booking-icon { display: grid; flex: 0 0 54px; width: 54px; height: 54px; place-items: center; border: 1px solid rgba(255,255,255,.3); border-radius: 16px; background: rgba(255,255,255,.14); backdrop-filter: blur(8px); }
.rentops-booking-icon svg { width: 28px; height: 28px; fill: currentColor; }
.rentops-request-form { margin: 0; padding: clamp(22px, 5vw, 42px); background: var(--rentops-surface); }
.rentops-form-section { min-width: 0; margin: 0 0 30px; padding: 0; border: 0; }
.rentops-form-section + .rentops-form-section { padding-top: 28px; border-top: 1px solid var(--rentops-line); }
.rentops-form-section legend { display: flex; gap: 10px; align-items: center; width: 100%; margin: 0 0 20px; padding: 0; color: var(--rentops-ink); font-size: 1.05rem; font-weight: 800; }
.rentops-form-section legend > span { display: inline-grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; color: #fff; background: var(--rentops-accent); font-size: .85rem; }
.rentops-request-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.rentops-request-grid label,
.rentops-field-block { display: flex; min-width: 0; flex-direction: column; gap: 7px; margin: 0; color: var(--rentops-ink); }
.rentops-request-grid label > span,
.rentops-field-block > span { font-size: .9rem; font-weight: 700; }
.rentops-request-grid input,
.rentops-request-grid select,
.rentops-request-grid textarea,
.rentops-field-block textarea { width: 100%; min-height: 48px; margin: 0; padding: 11px 13px; border: 1px solid #cfd8e3; border-radius: 11px; outline: 0; color: var(--rentops-ink); background: #fff; box-shadow: 0 1px 2px rgba(15,23,42,.03); font: inherit; line-height: 1.35; transition: border-color .18s ease, box-shadow .18s ease, background .18s ease; }
.rentops-request-grid textarea,
.rentops-field-block textarea { min-height: 122px; resize: vertical; }
.rentops-request-grid input:hover,
.rentops-request-grid select:hover,
.rentops-field-block textarea:hover { border-color: #aab8c8; }
.rentops-request-grid input:focus,
.rentops-request-grid select:focus,
.rentops-field-block textarea:focus { border-color: var(--rentops-accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--rentops-accent) 15%, transparent); }
.rentops-request-grid input::placeholder,
.rentops-field-block textarea::placeholder { color: #98a2b3; }
.rentops-request-grid .rentops-full { grid-column: 1 / -1; }
.rentops-availability-box { display: flex; gap: 14px; align-items: flex-start; margin-top: 20px; padding: 16px 18px; border: 1px solid var(--rentops-line); border-radius: 14px; color: var(--rentops-muted); background: var(--rentops-soft); transition: .2s ease; }
.rentops-availability-box strong { display: block; margin-bottom: 3px; color: var(--rentops-ink); }
.rentops-availability-box p { margin: 0; color: inherit; }
.rentops-availability-symbol { display: inline-grid; flex: 0 0 30px; width: 30px; height: 30px; place-items: center; border-radius: 50%; color: #fff; background: #667085; font-weight: 900; }
.rentops-availability-box.is-checking { border-color: #b9c5d4; background: #f4f7fb; }
.rentops-availability-box.is-checking .rentops-availability-symbol { animation: rentops-pulse 1s infinite alternate; }
.rentops-availability-box.is-available { border-color: #a6d9b4; color: #166534; background: #effaf2; }
.rentops-availability-box.is-available .rentops-availability-symbol { background: var(--rentops-success); }
.rentops-availability-box.is-reserved,
.rentops-availability-box.is-mixed { border-color: #f2c894; color: #8a3d08; background: #fff8eb; }
.rentops-availability-box.is-reserved .rentops-availability-symbol,
.rentops-availability-box.is-mixed .rentops-availability-symbol { background: var(--rentops-warning); }
.rentops-availability-box.is-checked_out,
.rentops-availability-box.is-unavailable,
.rentops-availability-box.is-invalid { border-color: #f0b7b2; color: #8f1d18; background: #fff2f1; }
.rentops-availability-box.is-checked_out .rentops-availability-symbol,
.rentops-availability-box.is-unavailable .rentops-availability-symbol,
.rentops-availability-box.is-invalid .rentops-availability-symbol { background: var(--rentops-danger); }
.rentops-form-footer { display: flex; gap: 20px; align-items: center; justify-content: space-between; padding-top: 8px; }
.rentops-form-note { max-width: 620px; margin: 0; color: var(--rentops-muted); font-size: .88rem; line-height: 1.55; }
.rentops-button { display: inline-flex; min-height: 48px; gap: 12px; align-items: center; justify-content: center; padding: 11px 20px; border: 0; border-radius: 11px; color: #fff !important; background: var(--rentops-accent); box-shadow: 0 8px 20px color-mix(in srgb, var(--rentops-accent) 25%, transparent); text-decoration: none !important; font: inherit; font-weight: 800; line-height: 1; cursor: pointer; transition: transform .18s ease, filter .18s ease, box-shadow .18s ease; }
.rentops-button:hover { color: #fff !important; filter: brightness(.94); transform: translateY(-1px); }
.rentops-button:focus-visible { outline: 3px solid color-mix(in srgb, var(--rentops-accent) 30%, transparent); outline-offset: 3px; }
.rentops-button:disabled { cursor: not-allowed; filter: grayscale(.45); opacity: .58; transform: none; box-shadow: none; }
.rentops-message { margin: 0 0 18px; padding: 15px 17px; border-radius: 12px; font-weight: 650; }
.rentops-message-success { border: 1px solid #b7dfbf; color: #116329; background: #edfaef; }
.rentops-message-error { border: 1px solid #efc8ca; color: #8a2424; background: #fcf0f1; }
.rentops-honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
@keyframes rentops-pulse { from { opacity: .55; transform: scale(.92); } to { opacity: 1; transform: scale(1.05); } }

@media (max-width: 900px) {
	.rentops-columns-3, .rentops-columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	.rentops-catalog, .rentops-request-grid { grid-template-columns: 1fr; }
	.rentops-request-grid .rentops-full { grid-column: auto; }
	.rentops-booking-header { gap: 14px; }
	.rentops-booking-icon { flex-basis: 44px; width: 44px; height: 44px; border-radius: 13px; }
	.rentops-booking-icon svg { width: 23px; height: 23px; }
	.rentops-form-footer { align-items: stretch; flex-direction: column; }
	.rentops-button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
	.rentops-catalog-card, .rentops-button, .rentops-availability-box { transition: none; }
	.rentops-availability-box.is-checking .rentops-availability-symbol { animation: none; }
}

.rentops-request-wrapper .rentops-section-help {
	margin: -0.15rem 0 1rem;
	color: var(--rentops-muted);
	font-size: 0.9rem;
	line-height: 1.5;
}
