/* Golf VX Coaching — scoped styles for the public app and coach portal. */
.gvx-app, .gvx-portal {
	--gvx-yellow: #FFCD00; --gvx-black: #000; --gvx-ink2: #4C4C4C; --gvx-ink3: #7D7D7D;
	--gvx-line: #E8E8E8; --gvx-soft: #F5F5F5; --gvx-green: #23BC61; --gvx-red: #D43F1A;
	--gvx-display: "Centra No.2", "Centra No2", var(--vx-font-display, "Inter"), system-ui, sans-serif;
	--gvx-body: var(--vx-font-body, "Inter"), system-ui, -apple-system, "Segoe UI", sans-serif;
	font-family: var(--gvx-body); color: var(--gvx-black); line-height: 1.45; -webkit-font-smoothing: antialiased;
	max-width: 1160px; margin: 0 auto;
}
.gvx-app *, .gvx-portal * { box-sizing: border-box; }
.gvx-app a, .gvx-portal a { color: inherit; }

.gvx-h1, .gvx-h2, .gvx-h3 { font-weight: 900; text-transform: uppercase; line-height: 1; margin: 0; letter-spacing: -.005em; }
.gvx-h1 { font-size: clamp(32px, 5vw, 52px); }
.gvx-h2 { font-size: clamp(20px, 2.4vw, 26px); }
.gvx-h3 { font-size: 19px; }
.gvx-eyebrow { color: var(--gvx-yellow); font-weight: 900; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 12px; }
.gvx-eyebrow--dark { color: var(--gvx-ink2); }
.gvx-kicker { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--gvx-ink2); margin-bottom: 4px; }
.gvx-meta { font-size: 13px; color: var(--gvx-ink2); margin-top: 3px; }
.gvx-desc { font-size: 14px; color: var(--gvx-ink2); margin: 8px 0 0; text-wrap: pretty; }
.gvx-note { font-size: 13px; color: var(--gvx-ink2); margin: 12px 0 0; }
.gvx-lead { font-size: 15px; color: var(--gvx-ink2); margin: 0; max-width: 560px; text-wrap: pretty; }

.gvx-hero { background: var(--gvx-black); color: #fff; border-radius: 8px 8px 0 0; padding: 36px 32px 20px; }
.gvx-hero--min { padding: 16px 20px; }
.gvx-hero-top { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; align-items: flex-start; }
.gvx-hero-copy { max-width: 640px; }
.gvx-intro { margin: 14px 0 0; font-size: 17px; color: #E8E8E8; font-weight: 500; text-wrap: pretty; }
.gvx-loc { border: 1px solid #4C4C4C; border-radius: 999px; padding: 8px 14px; font-size: 13px; font-weight: 700; white-space: nowrap; }
.gvx-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 28px; }
.gvx-hero--min .gvx-tabs { margin-top: 0; }
.gvx-tab { border: 1px solid #4C4C4C; background: transparent; color: #fff; border-radius: 999px; padding: 12px 20px; font: 900 13px/1 var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.gvx-tab:hover { border-color: #fff; }
.gvx-tab.is-on { background: var(--gvx-yellow); color: #000; border-color: var(--gvx-yellow); }

.gvx-body { background: #fff; border: 1px solid var(--gvx-line); border-top: none; border-radius: 0 0 8px 8px; padding: 32px; }
.gvx-empty { padding: 32px 0; text-align: center; color: var(--gvx-ink2); font-size: 15px; }

.gvx-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: var(--gvx-yellow); color: #000 !important; border: 1px solid var(--gvx-yellow); border-radius: 999px; padding: 13px 22px; font: 900 13px/1 var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; text-decoration: none !important; cursor: pointer; transition: background .2s, color .2s, border-color .2s; white-space: nowrap; }
.gvx-btn:hover { background: #000; color: var(--gvx-yellow) !important; border-color: #000; }
.gvx-btn:disabled { opacity: .6; cursor: default; }
.gvx-btn--ghost { background: #fff; border-color: #000; }
.gvx-btn--lg { padding: 17px 28px; font-size: 14px; }
.gvx-btn.is-off { background: var(--gvx-soft); border-color: var(--gvx-soft); color: var(--gvx-ink3) !important; cursor: default; }
.gvx-link { background: none; border: none; padding: 0; font: 700 13px var(--gvx-body); text-decoration: underline; cursor: pointer; color: var(--gvx-ink2); }

.gvx-list { display: flex; flex-direction: column; gap: 10px; }
.gvx-clinic { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 18px 20px; }
.gvx-clinic-main { flex: 1 1 260px; min-width: 0; }
.gvx-cap { flex: 0 0 150px; }
.gvx-bar { height: 6px; background: var(--gvx-line); border-radius: 999px; overflow: hidden; }
.gvx-bar span { display: block; height: 100%; background: #000; }
.gvx-cap-l { font-size: 12px; font-weight: 700; margin-top: 6px; }
.gvx-cap-s { font-size: 12px; color: var(--gvx-ink2); }
.gvx-clinic-buy { display: flex; align-items: center; gap: 16px; margin-left: auto; }
.gvx-price { font-family: var(--gvx-display); font-weight: 900; font-size: 24px; text-align: right; line-height: 1; }
.gvx-price small { display: block; font-family: var(--gvx-body); font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gvx-ink2); margin-top: 4px; }

.gvx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.gvx-coach, .gvx-plan { border: 2px solid var(--gvx-line); border-radius: 8px; padding: 20px; display: flex; flex-direction: column; gap: 12px; background: #fff; transition: border-color .2s; }
.gvx-coach.is-on, .gvx-plan.is-on { border-color: #000; }
.gvx-coach-top { display: flex; gap: 14px; align-items: center; }
.gvx-ava { width: 56px; height: 56px; border-radius: 999px; background: var(--gvx-line); display: inline-flex; align-items: center; justify-content: center; font-weight: 900; font-size: 17px; flex: none; object-fit: cover; }
.gvx-creds, .gvx-inc { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; font-size: 13px; }
.gvx-creds li, .gvx-inc li { position: relative; padding-left: 14px; }
.gvx-creds li::before, .gvx-inc li::before { content: ""; position: absolute; left: 0; top: 7px; width: 6px; height: 6px; border-radius: 999px; background: var(--gvx-yellow); }
.gvx-rates { font-size: 13px; border-top: 1px solid var(--gvx-line); padding-top: 12px; margin-top: auto; }
.gvx-rates strong { font-weight: 900; }
.gvx-rates span { color: var(--gvx-ink3); }
.gvx-coach-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.gvx-phone { font-size: 13px; font-weight: 700; color: var(--gvx-ink2) !important; text-decoration: none; }

.gvx-plans-head { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 20px; }
.gvx-toggles { display: flex; gap: 10px; flex-wrap: wrap; }
.gvx-seg { display: inline-flex; border: 1px solid var(--gvx-line); border-radius: 999px; padding: 3px; }
.gvx-seg button { border: none; background: transparent; color: #000; border-radius: 999px; padding: 9px 14px; font: 900 12px/1 var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.gvx-seg button.is-on { background: #000; color: #fff; }
.gvx-grid--plans { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.gvx-big { font-family: var(--gvx-display); font-weight: 900; font-size: 34px; line-height: 1; }
.gvx-standing { font-size: 13px; font-weight: 700; }
.gvx-plan .gvx-inc { flex: 1; color: var(--gvx-ink2); }

.gvx-form { margin-top: 24px; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 24px; background: #fff; }
.gvx-form-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.gvx-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 16px; }
.gvx-f { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.gvx-f--full { grid-column: 1 / -1; }
.gvx-f > span { font-weight: 700; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--gvx-ink2); }
.gvx-f em { font-style: normal; font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--gvx-ink3); }
.gvx-f input, .gvx-f select, .gvx-f textarea, .gvx-hours-t input { width: 100%; min-height: 46px; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 10px 14px; font: 500 15px var(--gvx-body); color: #000; background: #fff; outline: none; }
.gvx-f textarea { resize: vertical; }
.gvx-f input:focus, .gvx-f select:focus, .gvx-f textarea:focus, .gvx-hours-t input:focus { border-color: #000; }
.gvx-err { color: var(--gvx-red); font-size: 14px; font-weight: 700; min-height: 1px; margin-top: 12px; }
.gvx-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 12px; }
.gvx-actions .gvx-note { margin: 0; }
.gvx-policy { margin-top: 16px; background: var(--gvx-soft); border-radius: 8px; padding: 14px 16px; }
.gvx-policy-t { font-size: 13px; color: var(--gvx-ink2); line-height: 1.5; }
.gvx-check-row { display: flex; gap: 10px; align-items: center; margin-top: 10px; font-size: 14px; font-weight: 700; cursor: pointer; }
.gvx-check-row input { width: 18px; height: 18px; accent-color: #000; }
.gvx-clinic.is-on { border-color: #000; box-shadow: inset 0 0 0 1px #000; }
.gvx-lead-last { font-size: 12px; color: var(--gvx-ink3); margin-top: 4px; }
.gvx-lead-ctl { display: flex; flex-direction: column; gap: 6px; align-items: flex-end; }
.gvx-lead-ctl .gvx-link { font-size: 12px; }
.gvx-lead-tag { display: inline-block; border: 1px solid var(--gvx-line); border-radius: 999px; padding: 2px 8px; font-size: 10px; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; margin-left: 6px; vertical-align: middle; }
.gvx-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.gvx-done { max-width: 620px; margin: 24px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.gvx-done p { margin: 0; font-size: 16px; color: var(--gvx-ink2); }
.gvx-check { width: 56px; height: 56px; border-radius: 999px; background: var(--gvx-yellow); display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 26px; }

.gvx-pick { text-align: center; border-top: 1px solid var(--gvx-line); border-radius: 8px; }
.gvx-pick-list { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 18px; }

/* Portal */
.gvx-portal { padding: 28px 0 64px; display: flex; flex-direction: column; gap: 20px; }
.gvx-portal--login { max-width: 420px; }
.gvx-portal--login form p { display: flex; flex-direction: column; gap: 6px; margin: 0 0 14px; }
.gvx-portal--login input[type=text], .gvx-portal--login input[type=password] { min-height: 46px; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 10px 14px; font: 500 15px var(--gvx-body); }
.gvx-portal--login .login-remember { flex-direction: row; }
.gvx-portal--login input[type=submit] { background: var(--gvx-yellow); border: none; border-radius: 999px; padding: 15px 26px; font: 900 13px var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.gvx-portal-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.gvx-portal-actions { display: flex; gap: 12px; align-items: center; }
.gvx-toast { background: #000; color: var(--gvx-yellow); border-radius: 999px; padding: 8px 14px; font-size: 12px; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.gvx-portal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 16px; align-items: start; }
.gvx-card { background: #fff; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 20px; }
.gvx-card--strong { border: 2px solid #000; }
.gvx-card-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.gvx-badge { border: 1px solid var(--gvx-line); border-radius: 999px; padding: 5px 10px; font-size: 11px; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.gvx-badge.is-on { background: var(--gvx-yellow); border-color: var(--gvx-yellow); }
.gvx-leads { display: flex; flex-direction: column; }
.gvx-lead-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-top: 1px solid var(--gvx-line); font-size: 13px; }
.gvx-lead-row.is-new { box-shadow: inset 3px 0 0 var(--gvx-yellow); padding-left: 12px; }
.gvx-lead-who { display: flex; flex-direction: column; min-width: 0; }
.gvx-lead-who strong { font-size: 14px; font-weight: 900; }
.gvx-lead-who a { color: var(--gvx-ink2); text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
.gvx-lead-what p { margin: 4px 0 0; }
.gvx-lead-row select { border: 1px solid var(--gvx-line); border-radius: 999px; padding: 7px 12px; font: 900 11px var(--gvx-body); text-transform: uppercase; letter-spacing: .04em; background: #fff; }
.gvx-hours-t { width: 100%; border-collapse: collapse; margin-bottom: 12px; }
.gvx-hours-t td { padding: 4px 6px 4px 0; font-size: 14px; }
.gvx-hours-t label { display: flex; gap: 8px; align-items: center; font-weight: 700; }
.gvx-hours-t input[type=time] { min-height: 40px; padding: 6px 10px; }

@media (max-width: 640px) {
	.gvx-hero { padding: 24px 18px 16px; }
	.gvx-body { padding: 20px 16px; }
	.gvx-clinic-buy { margin-left: 0; width: 100%; justify-content: space-between; }
	.gvx-lead-row { grid-template-columns: 1fr; }
	.gvx-tab { padding: 10px 14px; font-size: 12px; }
}

/* v0.2 — booking, payments, FAQ, portal tools */
.gvx-series { font-size: 13px; font-weight: 700; margin-top: 3px; }
.gvx-price small { display: block; }
.gvx-book { margin-top: 24px; border: 2px solid #000; border-radius: 8px; padding: 22px; }
.gvx-days { display: flex; gap: 8px; overflow-x: auto; padding: 12px 0 4px; }
.gvx-day { flex: none; min-width: 92px; border: 1px solid var(--gvx-line); background: #fff; border-radius: 8px; padding: 10px 12px; text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 2px; font: 500 13px var(--gvx-body); color: #000; }
.gvx-day b { font-weight: 900; text-transform: uppercase; }
.gvx-day small { font-size: 11px; font-weight: 700; opacity: .75; margin-top: 4px; }
.gvx-day.is-on { background: #000; color: #fff; border-color: #000; }
.gvx-times { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.gvx-time { border: 1px solid var(--gvx-line); background: #fff; border-radius: 999px; padding: 10px 16px; font: 700 14px var(--gvx-body); cursor: pointer; color: #000; }
.gvx-time.is-on { background: var(--gvx-yellow); border-color: var(--gvx-yellow); }
.gvx-pay { margin-top: 16px; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 16px; }
.gvx-btn--sm { padding: 9px 14px; font-size: 11px; }
.gvx-faq { margin-top: 32px; }
.gvx-faq-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 10px; margin-top: 14px; align-items: start; }
.gvx-faq-item { border: 1px solid var(--gvx-line); border-radius: 8px; padding: 16px 18px; background: #fff; }
.gvx-faq-item[open] { border-color: #000; }
.gvx-faq-item summary { font-weight: 900; font-size: 15px; cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.gvx-faq-item summary::after { content: "+"; font-size: 18px; line-height: 1; }
.gvx-faq-item[open] summary::after { content: "–"; }
.gvx-faq-item summary::-webkit-details-marker { display: none; }
.gvx-faq-item p { margin: 10px 0 0; font-size: 14px; color: var(--gvx-ink2); line-height: 1.55; }
.gvx-lead-slot { font-weight: 900; color: #000; margin-bottom: 4px; }
.gvx-lead-btns { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.gvx-lead-ctl select { border: 1px solid #000; border-radius: 8px; padding: 7px 10px; font: 500 13px var(--gvx-body); background: #fff; }
.gvx-cal-list { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.gvx-cal-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; border-top: 1px solid var(--gvx-line); padding-top: 10px; }
.gvx-blocks { list-style: none; margin: 14px 0 0; padding: 0; }
.gvx-blocks li { display: flex; justify-content: space-between; gap: 10px; border-top: 1px solid var(--gvx-line); padding: 8px 0; font-size: 13px; }

.gvx-seg--mode button { padding: 9px 12px; }
.gvx-coach-foot .gvx-btn--ghost { padding: 12px 16px; }

.gvx-clinics-layout { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.gvx-clinics-layout .gvx-list { flex: 1 1 0; min-width: min(100%, 340px); }
.gvx-clinics-layout .gvx-form { flex: 1 1 0; min-width: min(100%, 340px); margin-top: 0; position: sticky; top: 100px; }
.gvx-clinics-layout.has-form .gvx-clinic-main { flex-basis: 200px; }

.gvx-switch { margin-top: 14px; }
.gvx-switch select { border-color: #000 !important; font-weight: 700 !important; }
@media (max-width: 760px) {
	.gvx-clinics-layout .gvx-form { position: static; }
	.gvx-hero-top { flex-direction: column; }
	.gvx-fields { grid-template-columns: 1fr; }
	.gvx-coach-foot .gvx-btn { flex: 1 1 auto; }
	.gvx-actions .gvx-btn { width: 100%; }
	.gvx-form, .gvx-book { padding: 18px 16px; }
	.gvx-portal-grid { grid-template-columns: 1fr; }
	.gvx-lead-ctl { align-items: stretch; }
	.gvx-lead-btns { justify-content: flex-start; }
}

/* Clinic card: name + price on top, capacity underneath — holds up in split view and on phones */
.gvx-clinic { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 16px; align-items: start; }
.gvx-clinic-main { grid-column: 1; grid-row: 1; }
.gvx-clinic-buy { grid-column: 2; grid-row: 1; margin-left: 0; flex-direction: column; align-items: flex-end; gap: 10px; width: auto; }
.gvx-price { white-space: nowrap; }
.gvx-price small { margin-top: 5px; }
.gvx-cap { grid-column: 1 / -1; grid-row: 2; flex: none; }
@media (max-width: 480px) {
	.gvx-clinic-buy { grid-column: 1 / -1; grid-row: 3; flex-direction: row; justify-content: space-between; align-items: center; }
}

/* Clinic form: fixed 2-up pairs so rows line up (email|phone, experience|sim, handedness|clubs) */
.gvx-form[data-form=clinic] .gvx-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; }
.gvx-form[data-form=clinic] .gvx-fields > .gvx-f:first-child { grid-column: 1 / -1; }
@media (max-width: 520px) { .gvx-form[data-form=clinic] .gvx-fields { grid-template-columns: 1fr; } }

.gvx-fields { align-items: end; }

/* Selects: brand chevron, consistent height; the open list stays native so phones get their own picker */
.gvx-f select, .gvx-lead-ctl select { -webkit-appearance: none; appearance: none; padding-right: 40px; background-image: linear-gradient(45deg, transparent 50%, #000 50%), linear-gradient(135deg, #000 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; cursor: pointer; }
.gvx-f select:invalid { color: var(--gvx-ink3); }
.gvx-f select option { color: #000; }

/* Our Pros */
.gvx-pros { background: #000; border-radius: 8px; padding: clamp(28px, 6vw, 72px) clamp(16px, 5vw, 64px); margin-bottom: 16px; }
.gvx-pros-h { font-weight: 900; font-size: clamp(44px, 8vw, 80px); line-height: .9; color: #fff; text-transform: uppercase; margin: 0 0 clamp(24px, 4vw, 40px); letter-spacing: -.02em; }
.gvx-pros-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin: 0 0 clamp(24px, 4vw, 40px); }
.gvx-pros-head .gvx-pros-h { margin: 0; }
.gvx-pros-nav { display: flex; gap: 10px; }
.gvx-pros-nav[hidden] { display: none; }
.gvx-pros-arrow { width: 52px; height: 52px; border-radius: 999px; border: 2px solid #fff; background: #000; color: #fff; font-size: 22px; font-weight: 900; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s, color .2s, border-color .2s, opacity .2s; }
.gvx-pros-arrow:hover:not(:disabled) { background: var(--gvx-yellow); border-color: var(--gvx-yellow); color: #000; }
.gvx-pros-arrow:disabled { opacity: .35; cursor: default; }
.gvx-pros-grid { --gap: clamp(14px, 2vw, 26px); display: grid; grid-auto-flow: column; grid-auto-columns: max(min(300px, 82%), calc((100% - 2 * var(--gap)) / 3)); gap: var(--gap); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.gvx-pros-grid::-webkit-scrollbar { display: none; }
.gvx-pros-grid > .gvx-pro { scroll-snap-align: start; }
.gvx-pros-grid:focus-visible { outline: 2px solid var(--gvx-yellow); outline-offset: 4px; }
.gvx-pro { background: #fff; border-radius: 16px; padding: clamp(20px, 2.4vw, 28px); display: flex; flex-direction: column; gap: 18px; }
.gvx-pro-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.gvx-pro-ava { width: clamp(104px, 12vw, 146px); height: clamp(104px, 12vw, 146px); border-radius: 999px; object-fit: cover; background: var(--gvx-line); display: inline-flex; align-items: center; justify-content: center; font-family: var(--gvx-display); font-weight: 900; font-size: 36px; color: var(--gvx-ink3); flex: none; }
.gvx-pro-btn { border: 2px solid #000; background: #fff; color: #000; border-radius: 999px; padding: 14px 26px; font: 900 15px/1 var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; white-space: nowrap; transition: background .2s, color .2s; }
.gvx-pro-btn:hover { background: #000; color: var(--gvx-yellow); }
.gvx-pro-name { font-weight: 900; font-size: clamp(20px, 2vw, 24px); text-transform: uppercase; line-height: 1.1; margin: 0; color: #000; }
.gvx-pro-title { color: #F5C30A; font-weight: 900; font-size: clamp(14px, 1.4vw, 17px); letter-spacing: .06em; text-transform: uppercase; margin-top: 6px; line-height: 1.25; }
.gvx-pro-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.gvx-pro-list li { position: relative; padding-left: 30px; font-size: clamp(15px, 1.3vw, 17px); line-height: 1.35; color: var(--gvx-ink2); }
.gvx-pro-list li::before { content: "✓"; position: absolute; left: 0; top: 2px; width: 18px; height: 18px; border-radius: 999px; background: #000; color: #fff; font-size: 11px; font-weight: 900; display: flex; align-items: center; justify-content: center; }
.gvx-step { font-weight: 900; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--gvx-ink2); margin-bottom: 10px; }
.gvx-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.gvx-pill { border: 2px solid var(--gvx-line); background: #fff; color: #000; border-radius: 999px; padding: 11px 18px; font: 900 13px/1 var(--gvx-body); letter-spacing: .04em; text-transform: uppercase; cursor: pointer; }
.gvx-pill.is-on { background: var(--gvx-yellow); border-color: #000; }
@media (max-width: 480px) { .gvx-pro-btn { width: 100%; } }

.gvx-portal .gvx-pro, .gvx-portal .gvx-pro-ava, .gvx-portal .gvx-pro-btn { box-sizing: border-box; }
.gvx-card-edit { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 18px; align-items: start; }
.gvx-pro--preview { border: 1px solid var(--gvx-line); }
.gvx-pro--preview .gvx-pro-ava { width: 96px; height: 96px; font-size: 28px; }
.gvx-pro--preview .gvx-pro-btn { padding: 10px 16px; font-size: 12px; cursor: default; }

.gvx-app--pros .gvx-pros { margin-bottom: 0; }

/* Lesson booking layout cleanup */
.gvx-days { display: grid; grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); overflow: visible; padding: 12px 0 0; }
.gvx-day { min-width: 0; }
.gvx-times { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); }
.gvx-time { padding: 11px 10px; }
.gvx-form[data-form=lesson] .gvx-fields { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.gvx-form[data-form=lesson] .gvx-actions { background: #000; color: #fff; border-radius: 8px; padding: 16px 20px; justify-content: space-between; }
.gvx-form[data-form=lesson] .gvx-actions .gvx-note { color: #E8E8E8; order: -1; }
.gvx-form[data-form=lesson] .gvx-actions .gvx-btn:hover { background: #fff; color: #000 !important; border-color: #fff; }

/* Coach portal — operations */
.gvx-card--wide { grid-column: 1 / -1; }
.gvx-table { display: flex; flex-direction: column; }
.gvx-trow { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1.4fr) 130px auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--gvx-line); font-size: 13px; }
.gvx-bays { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.gvx-bay { background: #F5F5F5; border-radius: 8px; padding: 14px 16px; }
.gvx-bay > strong { font-family: var(--gvx-display); text-transform: uppercase; }
.gvx-bay-g { display: flex; justify-content: space-between; gap: 8px; font-size: 13px; padding: 7px 0; border-top: 1px solid var(--gvx-line); margin-top: 6px; }
.gvx-fill { padding: 10px 0; border-top: 1px solid var(--gvx-line); }
.gvx-fill-top { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; margin-bottom: 6px; }
.gvx-card-head select { border: 1px solid var(--gvx-line); border-radius: 8px; padding: 8px 10px; font: 500 14px var(--gvx-body); background: #fff; }
@media (max-width: 760px) { .gvx-trow { grid-template-columns: 1fr; gap: 6px; } }

/* Coach portal tabs */
.gvx-ptabs { display: flex; gap: 8px; flex-wrap: wrap; border-bottom: 1px solid var(--gvx-line); padding-bottom: 12px; margin: 0 0 20px; }
.gvx-ptab { border: 1px solid var(--gvx-line); background: #fff; color: #000; border-radius: 999px; padding: 10px 18px; font: 900 13px var(--gvx-body); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.gvx-ptab.is-on { background: #000; color: var(--gvx-yellow); border-color: #000; }
.gvx-photo-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.gvx-photo-row label { cursor: pointer; }

.gvx-ptools { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.gvx-ptools input, .gvx-ptools select { height: 40px; border: 1px solid var(--gvx-line); border-radius: 999px; padding: 0 14px; font: 500 14px var(--gvx-body); background: #fff; }
.gvx-bay-g { align-items: center; }

.gvx-movecal { border: 2px solid #000; border-radius: 8px; padding: 12px; background: #fff; display: flex; flex-direction: column; gap: 10px; width: min(340px, 100%); }
.gvx-movecal-h { display: flex; justify-content: space-between; align-items: baseline; }
.gvx-movecal-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.gvx-movecal-d { border: 1px solid var(--gvx-line); background: #fff; border-radius: 6px; padding: 4px 0; font: 700 11px var(--gvx-body); cursor: pointer; display: flex; flex-direction: column; align-items: center; color: #000; }
.gvx-movecal-d b { font-size: 9px; color: #7D7D7D; }
.gvx-movecal-d.is-on { background: #000; color: var(--gvx-yellow); border-color: #000; }
.gvx-movecal-d:disabled { opacity: .35; cursor: default; }
.gvx-movecal-t { display: flex; gap: 6px; flex-wrap: wrap; }

/* All plugin selects: one consistent look, immune to theme overrides, native list so it always opens attached to the field */
.gvx-app select, .gvx-portal select, .gvx-card-head select, .gvx-ptools select, .gvx-bay-g select, .gvx-lead-row select, .gvx-switch select {
	-webkit-appearance: none !important; appearance: none !important; box-sizing: border-box; max-width: 100%;
	background-color: #fff !important; color: #000; cursor: pointer; line-height: 1.2;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important; background-position: right 12px center !important; background-size: 12px 8px !important;
	padding-right: 34px !important; margin: 0; float: none; position: static; box-shadow: none;
}
.gvx-app select::-ms-expand, .gvx-portal select::-ms-expand { display: none; }
.gvx-app select:focus, .gvx-portal select:focus { outline: none; border-color: #000 !important; }

/* Bay placement: drag & drop (tap-to-move on phones) */
.gvx-bay { border: 2px dashed transparent; min-height: 150px; transition: background .15s, border-color .15s; }
.gvx-bay.is-over { background: #FFF1B3; border-color: #000; }
.gvx-bay-g { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid var(--gvx-line); border-radius: 8px; padding: 8px 10px; margin-top: 6px; cursor: grab; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
.gvx-bay-g:hover { border-color: #000; }
.gvx-bay-g.is-sel { background: #FFCD00; border-color: #000; }
.gvx-bay-g.is-drag { opacity: .45; }
.gvx-grip { flex: none; width: 9px; height: 15px; opacity: .5; background-image: radial-gradient(#000 1.5px, transparent 1.6px); background-size: 6px 6px; }
.gvx-bay-empty { display: flex; align-items: center; justify-content: center; min-height: 60px; font-size: 12px; font-weight: 700; color: var(--gvx-ink3); }

/* Section mode (default): the embed sits inside the page's own section — the page supplies the H1/hero,
   the module supplies a site-style section heading and no card chrome, so it inherits the section background. */
.gvx-app--section { background: transparent; color: inherit; }
.gvx-app--section .gvx-hero, .gvx-app--section .gvx-hero--min { background: transparent; color: inherit; padding: 0 0 20px; border-radius: 0; }
.gvx-app--section .gvx-body { background: transparent; border: 0; border-radius: 0; padding: 0; }
.gvx-app--section .gvx-sechead { margin: 0 0 clamp(20px, 3vw, 32px); }
.gvx-sechead .gvx-eyebrow { color: var(--gvx-ink2); font-weight: 900; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }
.gvx-sechead h3 { font-weight: 900; font-size: clamp(34px, 5.5vw, 60px); line-height: .95; text-transform: uppercase; margin: 8px 0 0; letter-spacing: -.01em; }
.gvx-app--section .gvx-card, .gvx-app--section .gvx-form { background: #fff; }

/* Payment log */
.gvx-pay-list { display: flex; flex-direction: column; margin-top: 12px; }
.gvx-pay-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 6px 14px; align-items: center; padding: 11px 0; border-top: 1px solid var(--gvx-line); font-size: 13px; }
.gvx-pay-amt { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.gvx-pay-st { border-radius: 999px; padding: 4px 10px; font: 900 10px var(--gvx-body); letter-spacing: .05em; text-transform: uppercase; white-space: nowrap; background: #F5F5F5; color: #4C4C4C; }
.gvx-pay--paid .gvx-pay-st { background: #E6F6EC; color: #0B6B32; }
.gvx-pay--unpaid .gvx-pay-st { background: #FFCD00; color: #000; }
.gvx-pay--onfile .gvx-pay-st { background: #fff; color: #000; border: 1px solid var(--gvx-line); }
@media (max-width: 640px) { .gvx-pay-row { grid-template-columns: 1fr; } .gvx-pay-amt { align-items: flex-start; } }

/* v0.4.5 — Our Pros matched to the live playgolfvx.com lessons section */
.gvx-app--pros { max-width: none; color: inherit; }
.gvx-pros { background: transparent; border-radius: 0; padding: 0; margin-bottom: 0; }
.gvx-pros-h { font-size: clamp(40px, 6vw, 64px); color: inherit; letter-spacing: -.01em; }
.gvx-pros-arrow { width: 44px; height: 44px; font-size: 18px; border-width: 1px; background: transparent; }
.gvx-pros-grid { --gap: clamp(14px, 1.6vw, 24px); grid-auto-columns: max(min(300px, 86%), calc((100% - 2 * var(--gap)) / 3)); }
.gvx-pro { border-radius: 12px; padding: clamp(18px, 1.8vw, 24px); gap: 16px; color: #000; }
.gvx-pro-top { flex-wrap: nowrap; align-items: flex-start; }
.gvx-pro-ava { width: clamp(72px, 7vw, 100px); height: clamp(72px, 7vw, 100px); font-size: 26px; font-family: var(--gvx-body); }
.gvx-pro-btn { border-width: 1px; padding: 12px 20px; font-size: 12px; letter-spacing: .05em; }
.gvx-pro-name { font-size: clamp(16px, 1.35vw, 19px); line-height: 1.2; letter-spacing: .01em; }
.gvx-pro-title { font-size: clamp(12px, 1vw, 14px); letter-spacing: .04em; margin-top: 4px; }
.gvx-pro-list { gap: 8px; }
.gvx-pro-list li { font-size: clamp(13px, 1.05vw, 15px); padding-left: 26px; }
.gvx-pro-list li::before { width: 16px; height: 16px; font-size: 10px; }
.gvx-pro-copy { display: flex; flex-direction: column; gap: 14px; }
@media (max-width: 380px) { .gvx-pro-top { flex-wrap: wrap; } .gvx-pro-btn { width: 100%; } }

/* v0.4.6 — Lessons & Clinics: heading sits on the page like OUR PROS, content in one clean white card */
.gvx-app--section:not(.gvx-app--pros) { max-width: none; color: inherit; margin-top: clamp(40px, 6vw, 80px); }
.gvx-app--section .gvx-hero, .gvx-app--section .gvx-hero--min { color: inherit; padding: 0 0 clamp(20px, 3vw, 32px); }
.gvx-app--section .gvx-sechead { margin: 0; }
.gvx-app--section .gvx-sechead h3 { color: inherit; font-size: clamp(40px, 6vw, 64px); line-height: .9; letter-spacing: -.01em; margin-top: 10px; }
.gvx-app--section .gvx-sechead .gvx-eyebrow { color: var(--gvx-yellow); margin: 0; }
.gvx-app--section .gvx-hero .gvx-intro, .gvx-app--section .gvx-hero .gvx-lead { color: inherit; opacity: .8; }
.gvx-app--section .gvx-body { background: #fff; color: #000; border-radius: 12px; padding: clamp(20px, 3vw, 36px); }
.gvx-app--section .gvx-step { margin-top: 28px; }
.gvx-app--section .gvx-body > .gvx-step:first-child, .gvx-app--section .gvx-body > :first-child .gvx-step:first-child { margin-top: 0; }
.gvx-app--section .gvx-pill { border-width: 1px; border-color: #000; padding: 12px 20px; font-size: 12px; letter-spacing: .05em; }
.gvx-app--section .gvx-pill.is-on { background: #000; color: #fff; border-color: #000; }
.gvx-app--section .gvx-pill:hover:not(.is-on) { background: #F5F5F5; }
.gvx-app--section .gvx-seg button.is-on { background: #000; color: #fff; }
.gvx-app--section .gvx-book { border: 1px solid var(--gvx-line); border-radius: 12px; padding: clamp(16px, 2.4vw, 28px); margin-top: 20px; }
.gvx-app--section .gvx-days { grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }
.gvx-app--section .gvx-day { border-radius: 10px; padding: 10px; }
.gvx-app--section .gvx-day:hover:not(.is-on) { border-color: #000; }
.gvx-app--section .gvx-times { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
.gvx-app--section .gvx-time:hover:not(.is-on) { border-color: #000; }
@media (max-width: 520px) { .gvx-app--section .gvx-body { padding: 18px 14px; } .gvx-app--section .gvx-days { grid-template-columns: repeat(4, minmax(0, 1fr)); } .gvx-app--section .gvx-times { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* v0.4.6 — Native fonts: everything uses the website's own fonts. Headings pick up the theme's heading font; all other text inherits the page's body font. */
.gvx-app, .gvx-portal { font-family: inherit; }
.gvx-app :where(div, span, p, ul, ol, li, a, button, input, select, textarea, label, small, b, strong, em, summary, details, td, th, article, section),
.gvx-portal :where(div, span, p, ul, ol, li, a, button, input, select, textarea, label, small, b, strong, em, summary, details, td, th, article, section) { font-family: inherit !important; }

/* v0.4.7 — headings forced past theme heading colors; Book a Lesson is one self-contained white module */
.gvx-app--pros .gvx-pros-h { color: #fff !important; }
.gvx-app--section:not(.gvx-app--pros) { background: #fff; color: #000; border-radius: 12px; padding: clamp(22px, 3.2vw, 40px); margin-top: clamp(24px, 3vw, 40px); }
.gvx-app--section:not(.gvx-app--pros) .gvx-hero, .gvx-app--section:not(.gvx-app--pros) .gvx-hero--min { background: transparent; color: #000; padding: 0 0 clamp(18px, 2.4vw, 28px); margin: 0; }
.gvx-app--section:not(.gvx-app--pros) .gvx-sechead h3 { color: #000 !important; margin: 8px 0 0; }
.gvx-app--section:not(.gvx-app--pros) .gvx-sechead .gvx-eyebrow { color: var(--gvx-ink2) !important; }
.gvx-app--section:not(.gvx-app--pros) .gvx-hero .gvx-intro, .gvx-app--section:not(.gvx-app--pros) .gvx-hero .gvx-lead { color: var(--gvx-ink2); opacity: 1; }
.gvx-app--section:not(.gvx-app--pros) .gvx-body { background: transparent; border: 0; border-radius: 0; padding: 0; }
.gvx-app--section:not(.gvx-app--pros) .gvx-h1, .gvx-app--section:not(.gvx-app--pros) .gvx-h2, .gvx-app--section:not(.gvx-app--pros) .gvx-h3 { color: #000 !important; }
@media (max-width: 520px) { .gvx-app--section:not(.gvx-app--pros) { padding: 20px 16px; } }

/* v0.4.8 — responsive polish + spacing. Section spacing comes from the page; the module adds none of its own. */
.gvx-app, .gvx-portal { width: 100%; }
.gvx-app--section:not(.gvx-app--pros) { background: #fff !important; color: #000 !important; margin: 0 !important; box-shadow: none; }
.gvx-app--pros { margin: 0 0 clamp(20px, 3vw, 32px) !important; }
.gvx-app--pros + .gvx-app--section, .gvx-app--pros ~ * .gvx-app--section { margin-top: 0 !important; }
.gvx-app--section:not(.gvx-app--pros) .gvx-pill { background: #fff; color: #000; }
.gvx-app--section:not(.gvx-app--pros) .gvx-pill.is-on { background: #000 !important; color: #fff !important; }
.gvx-app--section:not(.gvx-app--pros) .gvx-note, .gvx-app--section:not(.gvx-app--pros) .gvx-step { color: var(--gvx-ink2); }
.gvx-app--section:not(.gvx-app--pros) .gvx-sechead h3 { font-size: clamp(30px, 5vw, 56px) !important; line-height: .95 !important; }
@media (max-width: 640px) {
	.gvx-app--section:not(.gvx-app--pros) { border-radius: 12px; padding: 22px 18px !important; }
	.gvx-app--section:not(.gvx-app--pros) .gvx-hero { padding-bottom: 18px !important; }
	.gvx-app--section:not(.gvx-app--pros) .gvx-sechead .gvx-eyebrow { font-size: 11px; letter-spacing: .1em; }
	.gvx-app--section .gvx-pills { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
	.gvx-app--section .gvx-pill { width: 100%; padding: 12px 8px; text-align: center; white-space: normal; line-height: 1.15; }
	.gvx-app--section .gvx-book { padding: 16px 14px; border-radius: 10px; }
	.gvx-app--section .gvx-step { margin-top: 22px; }
	.gvx-app--pros .gvx-pros-head { align-items: center; flex-wrap: nowrap; }
	.gvx-app--pros .gvx-pros-h { font-size: clamp(34px, 10vw, 44px); }
	.gvx-pros-arrow { width: 38px; height: 38px; font-size: 16px; }
	.gvx-pros-grid { grid-auto-columns: 86%; }
	.gvx-pro { padding: 18px; gap: 14px; }
	.gvx-pro-ava { width: 72px; height: 72px; font-size: 22px; }
	.gvx-pro-btn { padding: 11px 16px; font-size: 11px; }
	.gvx-pro-list li { font-size: 14px; }
	.gvx-app--section .gvx-fields { grid-template-columns: 1fr !important; }
	.gvx-app--section .gvx-actions .gvx-btn { width: 100%; }
}
@media (max-width: 360px) {
	.gvx-app--section .gvx-days { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
	.gvx-app--section .gvx-times { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
