/* Z&OO Train Bookings: public form. Scoped to .ztb so theme styles are left alone. */
.ztb {
	--ztb-accent: #1d5c2e;
	--ztb-accent-dark: #143f20;
	--ztb-ink: #1f2328;
	--ztb-muted: #5b636b;
	--ztb-line: #d5d9de;
	--ztb-soft: #f3f6f2;
	--ztb-warn-bg: #fff6dd;
	--ztb-warn-line: #e3b341;
	--ztb-bad: #b42318;
	max-width: 860px;
	margin: 0 auto;
	color: var(--ztb-ink);
	font-size: 17px;
	line-height: 1.5;
}
.ztb *, .ztb *::before, .ztb *::after { box-sizing: border-box; }
.ztb-intro { background: var(--ztb-soft); border-left: 4px solid var(--ztb-accent); padding: 14px 18px; margin-bottom: 20px; border-radius: 4px; }
.ztb-intro p { margin: 0 0 8px; }
.ztb-intro p:last-child { margin-bottom: 0; }

.ztb-steps { display: flex; gap: 6px; list-style: none; margin: 0 0 18px; padding: 0; counter-reset: none; }
.ztb-steps li { flex: 1; text-align: center; padding: 8px 4px; border-bottom: 3px solid var(--ztb-line); color: var(--ztb-muted); font-size: 15px; margin: 0; }
.ztb-steps li.is-active { border-color: var(--ztb-accent); color: var(--ztb-ink); font-weight: 700; }
.ztb-steps li.is-done { border-color: #8db596; color: var(--ztb-ink); }

.ztb-panel { border: 1px solid var(--ztb-line); border-radius: 8px; padding: 20px; background: #fff; }
.ztb-label { display: block; font-weight: 700; font-size: 18px; margin: 0 0 6px; }
.ztb-help { color: var(--ztb-muted); font-size: 15px; margin: 4px 0 12px; }
.ztb input[type="number"], .ztb input[type="email"], .ztb input[type="tel"], .ztb input:not([type]) {
	width: 100%; max-width: 100%; font-size: 17px; padding: 10px 12px; border: 1px solid #9aa3ab; border-radius: 6px; background: #fff; color: var(--ztb-ink);
}
.ztb #ztb-riders { max-width: 160px; font-size: 22px; }
.ztb input:focus, .ztb button:focus-visible { outline: 3px solid #8fc19c; outline-offset: 2px; }
.ztb-summary { font-weight: 600; margin: 12px 0 0; min-height: 1.5em; }
.ztb-summary.is-bad { color: var(--ztb-bad); }

.ztb-actions { display: flex; justify-content: space-between; gap: 10px; margin-top: 20px; flex-wrap: wrap; }
.ztb-actions .ztb-btn:only-child { margin-left: auto; }
.ztb-btn {
	display: inline-block; appearance: none; border: 0; border-radius: 6px; background: var(--ztb-accent); color: #fff !important;
	font-size: 17px; font-weight: 700; padding: 12px 22px; cursor: pointer; text-decoration: none; line-height: 1.2;
}
.ztb-btn:hover { background: var(--ztb-accent-dark); }
.ztb-btn:disabled { opacity: .6; cursor: wait; }
.ztb-btn-secondary { background: #fff; color: var(--ztb-ink) !important; border: 1px solid #9aa3ab; }
.ztb-btn-secondary:hover { background: #f1f3f5; }
.ztb-btn-pay { font-size: 18px; }

.ztb-cal-wrap { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(220px, 1fr); gap: 20px; align-items: start; }
.ztb-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.ztb-cal-title { font-weight: 700; font-size: 18px; }
.ztb-cal-nav { appearance: none; border: 1px solid var(--ztb-line); background: #fff; border-radius: 6px; width: 40px; height: 40px; font-size: 24px; line-height: 1; cursor: pointer; color: var(--ztb-ink); }
.ztb-cal-nav:disabled { opacity: .3; cursor: default; }
.ztb-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.ztb-cal-grid.is-loading { opacity: .45; }
.ztb-dow { text-align: center; font-size: 13px; color: var(--ztb-muted); padding: 2px 0; }
.ztb-day { appearance: none; border: 1px solid transparent; background: transparent; border-radius: 6px; aspect-ratio: 1 / 1; font-size: 16px; color: #a2a9b0; cursor: default; padding: 0; }
.ztb-day.is-open { background: var(--ztb-soft); border-color: #b9d3be; color: var(--ztb-ink); font-weight: 700; cursor: pointer; }
.ztb-day.is-open:hover { border-color: var(--ztb-accent); }
.ztb-day.is-selected { background: var(--ztb-accent); border-color: var(--ztb-accent); color: #fff; }
.ztb-cal-legend { font-size: 14px; color: var(--ztb-muted); margin: 8px 0 0; }
.ztb-dot { display: inline-block; width: 12px; height: 12px; border-radius: 3px; background: var(--ztb-soft); border: 1px solid #b9d3be; vertical-align: -1px; }
.ztb-times-title { font-weight: 700; margin: 0 0 4px; }
.ztb-time-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.ztb-time { appearance: none; border: 1px solid #9aa3ab; background: #fff; border-radius: 6px; padding: 10px 6px; font-size: 16px; cursor: pointer; color: var(--ztb-ink); }
.ztb-time:hover { border-color: var(--ztb-accent); }
.ztb-time.is-selected { background: var(--ztb-accent); border-color: var(--ztb-accent); color: #fff; font-weight: 700; }

.ztb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.ztb-grid p { margin: 0 0 14px; }
.ztb-grid label { display: block; font-weight: 600; margin-bottom: 4px; }
.ztb-wide { grid-column: 1 / -1; }
.ztb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.ztb-review table, .ztb-result table { width: 100%; border-collapse: collapse; margin: 0 0 12px; }
.ztb-review th, .ztb-review td { text-align: left; padding: 8px 6px; border-bottom: 1px solid var(--ztb-line); vertical-align: top; }
.ztb-review th { width: 30%; color: var(--ztb-muted); font-weight: 600; }

.ztb-notice { padding: 12px 16px; border-radius: 6px; background: var(--ztb-soft); border: 1px solid #b9d3be; margin: 0 0 16px; }
.ztb-warn { background: var(--ztb-warn-bg); border-color: var(--ztb-warn-line); }
.ztb-error { color: var(--ztb-bad); background: #fdecea; border: 1px solid #f3b4ad; border-radius: 6px; padding: 10px 14px; margin-top: 14px; font-weight: 600; }
.ztb-result h2 { margin-top: 0; }
.ztb-contact { text-align: center; margin-top: 14px; }

@media (max-width: 640px) {
	.ztb-cal-wrap, .ztb-grid { grid-template-columns: 1fr; }
	.ztb-steps li { font-size: 13px; }
	.ztb-panel { padding: 16px; }
	.ztb-actions { flex-direction: column-reverse; }
	.ztb-actions .ztb-btn { width: 100%; }
}
