/* ── Jo Pilates Yoga Public Styles ────────────────────────── */

.jpy-form, .jpy-dashboard { max-width: 720px; margin: 0 auto; }

.jpy-field { margin-bottom: 18px; }
.jpy-field label { display: block; font-weight: 600; margin-bottom: 4px; }
.jpy-field input[type="text"],
.jpy-field input[type="email"],
.jpy-field input[type="tel"],
.jpy-field input[type="date"],
.jpy-field input[type="time"],
.jpy-field select,
.jpy-field textarea {
	width: 100%;
	max-width: 480px;
	padding: 8px 12px;
	border: 1px solid #ccc;
	border-radius: 4px;
	font-size: 1rem;
	box-sizing: border-box;
}
.jpy-field-group { display: flex; gap: 16px; flex-wrap: wrap; }
.jpy-field-group .jpy-field { flex: 1; min-width: 180px; }

.jpy-checkboxes { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-bottom: 18px; }
.jpy-checkboxes label { font-weight: 400; cursor: pointer; }

.jpy-yn { margin-bottom: 14px; }
.jpy-yn > label:first-child { font-weight: 600; display: block; margin-bottom: 4px; }
.jpy-yn label + label { margin-right: 16px; }

.jpy-notice {
	background: #f0f9ff;
	border-left: 4px solid #0ea5e9;
	padding: 12px 16px;
	margin: 20px 0;
	font-size: .9em;
}
.jpy-notice-warning { background: #fef9c3; border-color: #ca8a04; }

.jpy-errors {
	background: #fef2f2;
	border-left: 4px solid #ef4444;
	padding: 12px 16px;
	margin-bottom: 20px;
}
.jpy-errors ul { margin: 0; padding-left: 18px; }

.jpy-success {
	background: #f0fdf4;
	border-left: 4px solid #22c55e;
	padding: 12px 16px;
	margin-bottom: 20px;
}

.req { color: #ef4444; }

.jpy-btn {
	display: inline-block;
	padding: 10px 24px;
	border-radius: 4px;
	font-weight: 600;
	cursor: pointer;
	border: none;
	font-size: 1rem;
}
.jpy-btn-primary   { background: #7c3aed; color: #fff; }
.jpy-btn-secondary { background: #0ea5e9; color: #fff; }
.jpy-btn:hover { opacity: .9; }

.jpy-pay-box {
	border: 1px solid #e5e7eb;
	border-radius: 6px;
	padding: 20px;
	margin-bottom: 20px;
}
.jpy-pay-box h4 { margin-top: 0; }

.jpy-table { width: 100%; border-collapse: collapse; margin-top: 12px; }
.jpy-table th, .jpy-table td { padding: 8px 12px; border-bottom: 1px solid #e5e7eb; text-align: left; }
.jpy-table th { font-weight: 600; background: #f9fafb; }

.jpy-date-range { font-size: .8em; color: #6b7280; font-weight: 400; margin-left: 8px; }

.jpy-class-list li { margin-bottom: 4px; }

.jpy-message { margin-top: 10px; color: #d63638; }

/* ── Status labels ── */
.jpy-status { display: inline-block; padding: 2px 8px; border-radius: 9999px; font-size: .8em; font-weight: 600; }
.jpy-status-paid    { background: #d1fae5; color: #065f46; }
.jpy-status-pending { background: #fef3c7; color: #92400e; }
.jpy-status-failed  { background: #fee2e2; color: #991b1b; }

/* ── Small button variant ── */
.jpy-btn-sm { padding: 4px 12px; font-size: .85em; }

/* ── Inline "all paid" message ── */
.jpy-success-inline { color: #065f46; font-weight: 600; }

/* ── Session picker table ── */
.jpy-session-picker td:last-child { text-align: right; white-space: nowrap; }

/* ── Table foot for totals ── */
.jpy-table tfoot td { font-weight: 600; border-top: 2px solid #d1d5db; border-bottom: none; }
