/*

 Theme Name:   GeneratePress Child

 Theme URI:    https://generatepress.com

 Description:  Default GeneratePress child theme

 Author:       Tom Usborne

 Author URI:   https://tomusborne.com

 Template:     generatepress

 Version:      0.1

*/




/* RoomsWithTubs hotel cards */
/* Grid layout handled by GeneratePress/GenerateBlocks - no custom grid needed */

.rwt-card {
	margin-bottom: 20px;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(15,23,42,.08);
	transition: box-shadow 0.2s, border-color 0.2s;
}
.rwt-card:hover {
	box-shadow: 0 4px 12px rgba(15,23,42,.12);
	border-color: #cbd5e1;
}
.rwt-card-header {
	padding: 14px 16px 12px;
	border-bottom: 1px solid #f1f5f9;
}
.rwt-title { margin: 0 0 8px; font-size: 20px; line-height: 1.3; font-weight: 700; color: var(--contrast,#0f172a); }
.rwt-address { 
	display: flex; 
	align-items: center; 
	gap: 2px; 
	color: #324560; 
	font-size: 11px; 
	line-height: 1.4;
}
.rwt-icon { width: 16px; height: 16px; flex-shrink: 0; }
.rwt-icon-pin { color: #dc2626; }
.rwt-media { position: relative; display: block; }
.rwt-media img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 16/10; display: block; }
.rwt-badges { position: absolute; left: 12px; top: 12px; display: flex; flex-direction: column; gap: 8px; z-index: 2; }
.rwt-badge { 
	background: #0891b2; 
	color: #fff; 
	font-size: 13px; 
	padding: 6px 12px; 
	border-radius: 6px; 
	backdrop-filter: blur(6px); 
	font-weight: 600; 
	text-transform: capitalize; 
	box-shadow: 0 2px 4px rgba(0,0,0,0.15);
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
.rwt-badge-icon {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}
.rwt-badge-double-verified { 
	background: linear-gradient(135deg, #10b981 0%, #059669 100%);
	text-transform: none;
	font-size: 12px;
	padding: 7px 10px;
	box-shadow: 0 3px 8px rgba(16, 185, 129, 0.4);
	border: 1px solid rgba(255, 255, 255, 0.3);
}
.rwt-badge-budget { background: #16a34a; }
.rwt-badge-luxury { background: #9333ea; }
.rwt-badge-romantic { background: #db2777; }
.rwt-badge-adults { background: #64748b; }
.rwt-rating-boxes { position: absolute; right: 12px; top: 12px; display: flex; flex-direction: column; gap: 6px; z-index: 2; }
.rwt-score-box { background: #0f766e; color: #fff; padding: 8px 12px; border-radius: 8px; text-align: center; display: flex; align-items: center; gap: 4px; justify-content: center; }
.rwt-score { font-weight: 700; font-size: 18px; line-height: 1; }
.rwt-score-count { font-size: 12px; font-weight: 500; opacity: 0.9; }
.rwt-star-box { background: #fbbf24; color: #78350f; font-size: 15px; padding: 6px 10px; border-radius: 8px; font-weight: 700; text-align: center; line-height: 1.2; }
.rwt-star-label { font-size: 10px; display: block; margin-top: 2px; }
.rwt-body { padding: 14px; }

.rwt-rooms-section { 
	background: #e6effa;
	border: 1px solid #e8e6e3;
	border-radius: 8px;
	padding: 12px;
	margin: 0 0 8px;
}
.rwt-rooms-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 2px;
	font-size: 16px;
	font-weight: 700;
	color: var(--contrast,#0f172a);
}
.rwt-hottub-icon { width: 18px; height: 18px; fill: currentColor; }
.rwt-room {
	padding: 5px 0;
	border-bottom: 1px solid #e8e6e3;
}
.rwt-room:last-child { border-bottom: none; padding-bottom: 0; }
.rwt-room:first-child { padding-top: 0; }
.rwt-room-header {
	display: flex;
	align-items: flex-start;
	gap: 4px;
	margin-bottom: 1px;
	flex-wrap: nowrap;
}
.rwt-room-number { 
	font-weight: 500; 
	color: #393d40; 
	font-size: 13px; 
	flex-shrink: 0;
	white-space: nowrap;
}
.rwt-room-name { 
	font-weight: 500; 
	font-size: 13px; 
	color: #393d40;
	flex: 1;
	word-wrap: break-word;
	overflow-wrap: break-word;
}
.rwt-room-badges {
	display: flex;
	gap: 6px;
	align-items: center;
}
.rwt-smoking-badge {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    background: #dc2626;
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    padding: 1px 4px;
    border-radius: 6px;
    text-transform: capitalize;
    line-height: 1.7em;
}
.rwt-smoking-badge .rwt-smoke-icon { width: 14px; height: 14px; }
.rwt-tub-badge {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    background: #fbbf24;
    color: #78350f;
    font-size: 12px;
    font-weight: 500;
    padding: 1px 4px;
    border-radius: 6px;
    text-transform: capitalize;
    line-height: 1.7em;
}
.rwt-tub-badge .rwt-hottub-icon { width: 14px; height: 14px; }
.rwt-info-link {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
	margin-left: 2px;
	opacity: 0.8;
	transition: opacity 0.2s;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
	color: inherit;
}
.rwt-info-link:hover {
	opacity: 1;
}
.rwt-info-icon {
	width: 13px;
	height: 13px;
	display: block;
}

/* Hot Tub Info Modal */
.rwt-modal {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 9999;
}
.rwt-modal.rwt-modal-open {
	display: flex;
	align-items: center;
	justify-content: center;
}
.rwt-modal-overlay {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.6);
	cursor: pointer;
}
.rwt-modal-content {
	position: relative;
	background: #fff;
	border-radius: 12px;
	max-width: 500px;
	width: 90%;
	max-height: 80vh;
	overflow-y: auto;
	padding: 24px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
	z-index: 10000;
}
.rwt-modal-content h3 {
	margin: 0 0 16px;
	font-size: 22px;
	color: #0f172a;
}
.rwt-modal-body {
	color: #475569;
	line-height: 1.6;
}
.rwt-modal-body p {
	margin: 0 0 12px;
}
.rwt-modal-body p:last-child {
	margin-bottom: 0;
}
.rwt-modal-body strong {
	color: #0f172a;
	font-weight: 600;
}
.rwt-modal-close {
	position: absolute;
	top: 16px;
	right: 16px;
	background: none;
	border: none;
	width: 32px;
	height: 32px;
	padding: 0;
	cursor: pointer;
	color: #64748b;
	transition: color 0.2s;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
}
.rwt-modal-close:hover {
	color: #0f172a;
	background: #f1f5f9;
}
.rwt-modal-close svg {
	width: 24px;
	height: 24px;
}
.rwt-room-meta { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 13px; color: #2f3030; margin-top: 4px; }
.rwt-room-meta-left { display: flex; gap: 12px; }
.rwt-icon-inline { width: 16px; height: 16px; vertical-align: middle; }

/* Compact styling for smoking rooms to prevent wrapping */
.rwt-room:has(.rwt-smoking-badge) .rwt-room-meta {
	font-size: 12px;
}
.rwt-room:has(.rwt-smoking-badge) .rwt-smoking-badge,
.rwt-room:has(.rwt-smoking-badge) .rwt-tub-badge {
	font-size: 11px;
}

.rwt-amenities { 
	display: flex; 
	flex-wrap: wrap; 
	gap: 8px 8px; 
	align-items: center;
	margin: 0 0 6px; 
	padding: 2px 0;
	border-top: 1px solid #f1f5f9;
}
.rwt-amenity-item {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	white-space: nowrap;
}
.rwt-amenity-icon { 
	width: 18px; 
	height: 18px; 
	line-height: 1;
	display: inline-flex;
	align-items: center;
	flex-shrink: 0;
	color: var(--accent,#1e40af);
}
.rwt-amenity-icon svg { width: 100%; height: 100%; }
.rwt-amenity-label { font-size: 14px; font-weight: 500; color: var(--contrast-2,#475569); }

.rwt-desc { margin: 0 0 8px; font-size: 14px; line-height: 1.6; color: var(--contrast-2,#475569); }
.rwt-highlights { font-size: 13px; line-height: 1.6; margin: 0 0 6px; color: var(--contrast-2,#475569); }
.rwt-highlights p { margin: 3px 0; }

.rwt-hotel-info {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin: 10px 0 12px;
	padding: 10px 12px;
	background: var(--base-2,#f8fafc);
	border: 1px solid var(--base,#e5e7eb);
	border-radius: 8px;
	font-size: 13px;
	color: var(--contrast-2,#475569);
}
.rwt-info-left, .rwt-info-right { display: flex; flex-direction: column; gap: 6px; }
.rwt-info-right { align-items: flex-end; text-align: right; }
.rwt-info-item { display: inline-flex; align-items: center; gap: 5px; font-weight: 500; white-space: nowrap; }
.rwt-info-icon { width: 14px; height: 14px; flex-shrink: 0; }
/* Mobile: Keep 2-column layout but reduce font size and padding for better fit */
@media (max-width: 600px) { 
	.rwt-hotel-info { 
		font-size: 12px;
		padding: 8px 10px;
		gap: 6px;
	}
	.rwt-info-item {
		font-size: 12px;
		gap: 4px;
	}
	.rwt-info-icon { 
		width: 13px; 
		height: 13px; 
	}
}

.rwt-pills { display:flex; gap:6px; flex-wrap:wrap; margin: 8px 0; }
.rwt-pill { background:#e0f2fe; color:#0c4a6e; padding:4px 8px; border-radius:999px; font-size:11px; }

.rwt-more { border-top: 1px solid #e5e7eb; padding-top: 5px; }
.rwt-more > summary { cursor: pointer; color: #0c4a6e; font-weight: 600; margin-bottom: 8px; font-size: 15px; }
.rwt-transport-nearby { font-size: 14px; }
.rwt-shuttles { display: flex; gap: 10px; margin-bottom: 6px; }
.rwt-shuttles span { color: #16a34a; font-size: 14px; }
.rwt-airports, .rwt-airport, .rwt-pois { margin: 8px 0; font-size: 14px; line-height: 1.6; }
.rwt-airports strong, .rwt-pois strong { display: block; margin-bottom: 4px; }
.rwt-airports ul, .rwt-pois ul { 
	list-style: disc; 
	margin: 0 0 0 20px; 
	padding: 0; 
}
.rwt-airports li, .rwt-pois li { 
	margin: 2px 0; 
}
.rwt-distance { color: var(--contrast-2,#475569); font-size: 13px; }

.rwt-cta { margin-top: 0px; display: flex; flex-direction: column; gap: 5px; }
.rwt-starting-price { font-weight: 700; font-size: 18px; color: var(--accent,#0ea5e9); text-align: center; padding: 8px 0; }
.rwt-btn { display: inline-block; background: var(--accent,#0ea5e9); color: #fff; text-decoration: none; padding: 12px 16px; border-radius: 8px; font-weight: 700; font-size: 14px; text-align: center; transition: all 0.2s; }
.rwt-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.rwt-btn-booking { background: #003580; }
.rwt-btn-tripadvisor { background: #34e0a1; color: #000; }

.rwt-breadcrumbs { font-size: 14px; margin-bottom: 1px; color: #1b2026; }
.rwt-breadcrumbs a { color: #64748b; text-decoration:none; }
.rwt-breadcrumbs span { opacity:.6; margin: 0 6px; }

.rwt-subtitle { margin: 14px 0 8px; font-size: 18px; }
.rwt-page-title { margin: 8px 0 14px; font-size: clamp(24px, 3vw, 34px); color:#fff}

/* Center align all section headlines on city pages */
.rwt-page-title,
h2, h3 {
	text-align: center;
}

/* State page city headlines */
.rwt-city-headline {
	text-align: center;
	margin: 24px 0 16px;
	font-size: 24px;
	font-weight: 700;
}

.rwt-section-headline {
	text-align: center;
	margin: 20px 0;
}

.rwt-city-list { 
	list-style:none; 
	padding:0; 
	margin: 10px 0 20px; 
	display:flex; 
	flex-wrap:wrap; 
	gap:12px 18px; 
	justify-content: center;
	max-width: 100%;
	width: 100%;
	text-align: center;
}
.rwt-city-list a { text-decoration:none; color: #0f172a; }
.rwt-count { color: #64748b; font-size: 12px; }

.rwt-see-all { 
	text-align: center; 
	margin: 0px 0 20px; 
	padding: 10px 0; 
	border-bottom: 1px solid #e5e7eb;
}
.rwt-see-all a { 
	display: inline-block;
	color: #0c4a6e; 
	font-weight: 600; 
	font-size: 16px;
	text-decoration: none; 
	padding: 10px;
	border: 2px solid #0c4a6e;
	border-radius: 6px;
	transition: all 0.2s;
}
.rwt-see-all a:hover { 
	background: #0c4a6e;
	color: #fff;
}

/* State page: make city headers and see-all span full width across all columns */
.rwt-state-city-header,
.rwt-state-see-all {
	grid-column: 1 / -1 !important;
	width: 100% !important;
	max-width: 100% !important;
	display: block !important;
}

/* Target within GB grids specifically */
.gb-grid-wrapper > .rwt-state-city-header,
.gb-grid-wrapper > .rwt-state-see-all,
.wp-block-generateblocks-grid > .rwt-state-city-header,
.wp-block-generateblocks-grid > .rwt-state-see-all,
.gb-container .rwt-state-city-header,
.gb-container .rwt-state-see-all {
	grid-column: 1 / -1 !important;
	width: 100% !important;
	max-width: none !important;
}

.rwt-state-city-header {
	margin-top: 5px;
	clear: both;
}
.rwt-state-city-header:first-child {
	margin-top: 0;
}

/* Consistent padding for both city and state pages */
.gb-element-a1091c76,
.gb-element-b8639518 {
	padding-left: 15px;
	padding-right: 15px;
	box-sizing: border-box;
}

/* Remove any extra padding from nested wrappers on city pages */
.gb-element-fa58c1a9 {
	padding-left: 0;
	padding-right: 0;
}

/* Fix mobile container overflow - remove fixed widths on mobile */
@media (max-width: 1024px) {
	/* All GenerateBlocks elements with fixed widths - City Pages */
	.gb-element-a1091c76,
	.gb-element-78246c0f,
	.gb-element-b0119c45,
	.gb-element-aadb70d6,
	.gb-element-cd571128,
	.gb-element-8f965574,
	.gb-element-0b7b1246,
	.gb-element-ae59e101,
	.gb-element-4290980b,
	/* State Pages */
	.gb-element-b8639518,
	/* Footer - Disclaimer (1000px) */
	.gb-element-331d18a7 {
		width: 100% !important;
		max-width: 100% !important;
		padding-left: 10px !important;
		padding-right: 10px !important;
		box-sizing: border-box !important;
	}
}

@media (max-width: 720px) {
	.rwt-card-header { padding: 12px 14px 10px; }
	.rwt-title { font-size: 20px; }
	.rwt-body { padding: 10px; }
	.rwt-amenities { gap: 10px; }
	.rwt-amenity-icon { font-size: 16px; }
	.rwt-amenity-label { font-size: 13px; }
	.rwt-room-meta { font-size: 12px; }
	.rwt-price { font-size: 15px; }
	.rwt-btn { font-size: 13px; padding: 10px 14px; }
}

/* Search Results Styling */
.rwt-search-results {
	width: 100%;
	max-width: 1200px;
	margin: 0 auto 40px;
}
.rwt-search-results .gbp-section__inner {
	padding: 20px;
}
.rwt-search-header {
	margin-bottom: 30px;
	padding-bottom: 15px;
	border-bottom: 2px solid #e5e7eb;
}
.rwt-search-title {
	margin: 0;
	font-size: 28px;
	font-weight: 700;
	color: #1e293b;
	line-height: 1.3;
}
.rwt-search-title span {
	color: #2563eb;
	font-weight: 600;
}
.rwt-search-result {
	margin-bottom: 20px;
	padding-bottom: 15px;
	border-bottom: 1px solid #e5e7eb;
}
.rwt-search-result:last-child {
	border-bottom: none;
}
.rwt-search-result-title {
	margin: 0 0 5px 0;
	font-size: 22px;
	font-weight: 600;
	line-height: 1.4;
}
.rwt-search-result-title a {
	color: #1e40af;
	text-decoration: none;
	transition: color 0.2s ease;
}
.rwt-search-result-title a:hover {
	color: #2563eb;
	text-decoration: underline;
}

/* Legacy search results styling for standard posts/pages */
.search-results article {
	margin-bottom: 30px;
	padding-bottom: 20px;
	border-bottom: 1px solid #e5e7eb;
}
.search-results article:last-child {
	border-bottom: none;
}
.search-results .entry-title {
	margin-bottom: 8px;
}
.search-results .entry-title a {
	color: #1e40af;
	text-decoration: none;
	font-size: 20px;
}
.search-results .entry-title a:hover {
	text-decoration: underline;
}
.search-results .entry-summary,
.search-results .entry-content {
	color: #475569;
	line-height: 1.6;
}
.search-no-results {
	text-align: center;
	padding: 40px 20px;
}
.search-no-results .page-title {
	margin-bottom: 20px;
}