/* Templiz Site Builder — shared structure. Visual identity (color, type,
   section layout details) lives entirely in each template-*.css file via
   the --tsb-* custom properties set inline by the shortcode. */

.tsb-site {
	background: var(--tsb-paper);
	color: var(--tsb-ink);
	font-family: var(--tsb-font-body);
	line-height: 1.6;
	overflow-x: hidden;
}

.tsb-site * { box-sizing: border-box; }

.tsb-site img { max-width: 100%; display: block; }

.tsb-site a { color: inherit; }

.tsb-section-title {
	font-family: var(--tsb-font-display);
	font-size: 30px;
	font-weight: 500;
	margin: 0 0 32px;
}

/* Hero */
.tsb-hero {
	position: relative;
	padding: 64px 6vw 80px;
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 40px;
	align-items: center;
}
.tsb-logo { max-height: 48px; grid-column: 1 / -1; margin-bottom: 8px; }
.tsb-hero-kicker { font-family: var(--tsb-font-body); color: var(--tsb-accent); margin: 0 0 12px; font-size: 15px; }
.tsb-hero-title { font-family: var(--tsb-font-display); font-size: clamp(36px, 5vw, 60px); line-height: 1.05; margin: 0 0 16px; }
.tsb-hero-tagline { font-size: 18px; max-width: 42ch; margin: 0 0 28px; opacity: 0.85; }
.tsb-hero-media img { width: 100%; height: 480px; object-fit: cover; }

.tsb-btn {
	display: inline-block;
	font-family: var(--tsb-font-body);
	font-size: 15px;
	padding: 14px 30px;
	text-decoration: none;
	border: 1px solid var(--tsb-ink);
}
.tsb-btn-primary { background: var(--tsb-ink); color: var(--tsb-paper); }

/* About */
.tsb-about {
	padding: 60px 6vw;
	max-width: 900px;
}
.tsb-about-text { font-size: 17px; opacity: 0.9; }

/* Gallery */
.tsb-gallery { padding: 20px 6vw 70px; }
.tsb-gallery-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 14px;
}
.tsb-gallery-item img { width: 100%; height: 240px; object-fit: cover; }

/* Booking */
.tsb-booking { padding: 60px 6vw 80px; background: var(--tsb-sand); }
.tsb-booking-widget-wrap { max-width: 560px; }
.tsb-booking-missing { opacity: 0.7; font-style: italic; }

/* Testimonials */
.tsb-testimonials { padding: 70px 6vw; }
.tsb-testimonials-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}
.tsb-testimonial { margin: 0; padding: 24px; border: 1px solid var(--tsb-sand); }
.tsb-testimonial-text { font-size: 15px; margin: 0 0 12px; }
.tsb-testimonial-meta { display: flex; justify-content: space-between; font-size: 13px; opacity: 0.75; }

/* Footer */
.tsb-footer { padding: 60px 6vw 40px; background: var(--tsb-sand); }
.tsb-footer-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
	margin-bottom: 40px;
}
.tsb-footer-heading { font-family: var(--tsb-font-display); font-size: 18px; margin: 0 0 12px; font-weight: 500; }
.tsb-footer-col p { margin: 0 0 6px; font-size: 14px; }
.tsb-hours-list, .tsb-social-list { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.tsb-hours-list li { display: flex; justify-content: space-between; padding: 3px 0; max-width: 220px; }
.tsb-social-list li { padding: 3px 0; }
.tsb-footer-credit { font-size: 13px; opacity: 0.6; margin: 0; }

@media (max-width: 900px) {
	.tsb-hero { grid-template-columns: 1fr; padding: 48px 6vw; }
	.tsb-hero-media img { height: 320px; }
	.tsb-gallery-grid { grid-template-columns: repeat(2, 1fr); }
	.tsb-testimonials-grid { grid-template-columns: 1fr; }
	.tsb-footer-grid { grid-template-columns: 1fr; }
}
