/* Volleyball Site public */
.vball-wrap,.vball-main{--vball-radius:12px;color:var(--vball-ink,#1a2332);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}
.vball-wrap a{color:var(--vball-navy,#0a1628)}
.vball-card{background:var(--vball-card,#fff);border-radius:var(--vball-radius);padding:1.25rem 1.5rem;margin:1rem 0;box-shadow:0 1px 3px rgba(10,22,40,.08)}
.vball-hero{display:flex;gap:1.5rem;align-items:flex-start;flex-wrap:wrap;background:var(--vball-navy,#0a1628);color:#fff;padding:1.75rem;border-radius:var(--vball-radius);margin-bottom:1.25rem}
.vball-hero h1,.vball-recruit-hero h1{margin:.2rem 0 .4rem;font-size:2rem;letter-spacing:-.02em}
.vball-hero a{color:#fff}
.vball-kicker{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;opacity:.85;margin:0}
.vball-headshot{width:180px;height:220px;object-fit:cover;border-radius:8px;background:#123}
.vball-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem;list-style:none;padding:0;margin:1rem 0}
.vball-metrics li{background:rgba(255,255,255,.08);padding:.5rem .75rem;border-radius:8px;font-size:.85rem}
.vball-metrics strong{display:block;font-size:1rem}
.vball-pill{display:inline-block;background:var(--vball-navy,#0a1628);color:#fff;border-radius:999px;padding:.1rem .55rem;font-size:.75rem;font-weight:600}
.vball-table{width:100%;border-collapse:collapse}
.vball-table th,.vball-table td{padding:.45rem .6rem;border-bottom:1px solid #e6eaf0;text-align:left}
.vball-table caption{text-align:left;font-weight:700;margin-bottom:.4rem}
.vball-btn,.vball-copy{display:inline-block;background:var(--vball-navy,#0a1628);color:#fff!important;border:0;border-radius:8px;padding:.45rem .9rem;font-weight:600;cursor:pointer;text-decoration:none;margin:.15rem .25rem 0 0}
.vball-btn:hover,.vball-copy:hover{filter:brightness(1.05)}
.vball-empty{color:var(--vball-muted,#5c6b7a)}
.vball-note{font-size:.85rem;color:var(--vball-muted,#5c6b7a)}
.vball-embed{position:relative;padding-top:56.25%;background:#0a1628;border-radius:12px;overflow:hidden;border:1px solid #dcdcde}
.vball-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vball-lazy-video{position:absolute;inset:0;width:100%;height:100%;background:radial-gradient(ellipse at center,rgba(10,22,40,.35) 0%,#0a1628 70%);color:#fff;font-size:.82rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border:0}
.vball-video-links{list-style:none;padding:0;margin:.75rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem}
.vball-video-links a,.vball-video-out{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.55rem 1rem;border-radius:999px;background:#0a1628;color:#fff!important;font-weight:800;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;border:2px solid #1e3358;flex:1 1 8.5rem}
.vball-video-out{background:#0a1628;color:#fff!important;border-color:#0a1628;width:100%;border-radius:8px}
.vball-family-video{margin:1rem 0;padding:1rem 1.05rem 1.1rem;background:#fff;border:1px solid #dcdcde;border-top:3px solid #0a1628;border-radius:16px}
.vball-family-video__kicker{margin:0 0 .65rem;color:#646970;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.vball-family-video input[type="url"],.vball-family-video textarea{width:100%;min-height:48px;display:block;font-size:1rem}
.vball-family-video textarea{min-height:7rem}
@media (max-width:720px){.vball-video-links a{flex:1 1 100%;min-height:52px}}
.vball-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.6rem}
.vball-gallery img{width:100%;height:140px;object-fit:cover;border-radius:8px}
.vball-program-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.vball-program-card{display:flex;flex-direction:column;gap:.35rem;padding:1.1rem;border-radius:12px;background:#fff;border:2px solid transparent;text-align:left;cursor:pointer;text-decoration:none;color:inherit;box-shadow:0 1px 3px rgba(10,22,40,.08)}
.vball-program-card.is-selected,.vball-program-card:focus{border-color:var(--vball-accent,#0a1628)}
.vball-prog-league{border-top:4px solid var(--vball-league,#2e6da4)}
.vball-prog-mini{border-top:4px solid var(--vball-mini,#e07a3d)}
.vball-prog-club{border-top:4px solid var(--vball-club,#0a1628)}
.vball-prog-open{border-top:4px solid var(--vball-open,#6b4c9a)}
.vball-prog-private,.vball-prog-lessons{border-top:4px solid var(--vball-private,#3d8b6e)}
.vball-kiosk{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem}
.vball-kiosk-btn{min-height:72px;font-size:1.1rem;border-radius:10px;border:2px solid #d5dbe3;background:#fff;cursor:pointer}
.vball-kiosk-btn.is-in{background:#d4edda;border-color:#3d8b6e}
.vball-kiosk-btn.is-out{background:#f8d7da;border-color:#a33}
.vball-scoreboard{display:flex;justify-content:space-around;text-align:center;font-size:1.4rem;padding:1rem 0}
.vball-scoreboard .sets{font-size:3rem;display:block}
.vball-live-note{color:var(--vball-muted)}
.vball-gym-grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}
.vball-cal{list-style:none;padding:0}
.vball-cal li{padding:.4rem 0;border-bottom:1px solid #eef1f5}
.vball-dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;margin-right:.3rem}
.vball-dot.match{background:var(--vball-league,#2e6da4)}
.vball-dot.practice{background:var(--vball-navy,#0a1628)}
.vball-sponsor-grid{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.vball-qr{margin:.6rem 0 0}
blockquote{border-left:4px solid var(--vball-navy,#0a1628);margin:0;padding:.2rem 0 .2rem 1rem;font-style:italic}
.vball-mini h1{font-size:1.6rem}
@media (max-width:640px){
  .vball-hero{padding:1rem}
  .vball-headshot{width:100%;max-width:280px;height:auto}
  .vball-signup-bar{position:sticky;bottom:0}
}

/* Calendar month / week / list (built by public.js) */
.vball-cal-views{display:flex;gap:.4rem;margin:0 0 .85rem;flex-wrap:wrap}
.vball-cal-views button{background:var(--vball-bg,#f4f6f9);border:1px solid #d7dee7;border-radius:999px;padding:.45rem .9rem;min-height:40px;cursor:pointer;font-weight:600;color:var(--vball-navy,#0a1628)}
.vball-cal-views button[aria-current="true"]{background:var(--vball-navy,#0a1628);color:#fff;border-color:var(--vball-navy,#0a1628)}
.vball-cal-month,.vball-cal-week{display:none;width:100%;border-collapse:collapse;table-layout:fixed}
.vball-cal-wrap.is-month .vball-cal-month,.vball-cal-wrap.is-week .vball-cal-week{display:table}
.vball-cal-wrap.is-month .vball-cal,.vball-cal-wrap.is-week .vball-cal{display:none}
.vball-cal-month th,.vball-cal-week th{background:var(--vball-navy,#0a1628);color:#fff;text-align:center;font-size:.75rem;padding:.4rem}
.vball-cal-month td,.vball-cal-week td{border:1px solid #e6ebf1;padding:.4rem;vertical-align:top;height:6.5rem;font-size:.8rem}
.vball-cal-daynum{display:block;font-weight:700;color:var(--vball-navy,#0a1628);margin-bottom:.25rem}
.vball-cal-ev{display:block;width:100%;box-sizing:border-box;appearance:none;-webkit-appearance:none;border:0;border-radius:4px;padding:.2rem .35rem;margin:0 0 .2rem;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;font:inherit;font-size:.75rem;font-weight:700;line-height:1.25;text-align:left;touch-action:manipulation}
.vball-cal-ev.match{background:var(--vball-league,#2e6da4)}
.vball-cal-ev.practice{background:var(--vball-navy,#0a1628)}
.vball-cal-ev:hover,.vball-cal-ev:focus-visible{filter:brightness(1.08)}
@media (max-width:700px){.vball-cal-month td,.vball-cal-week td{height:auto;min-height:3.5rem}.vball-cal-ev{min-height:2rem;padding:.35rem .4rem}}
.vball-cal-sheet{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;z-index:80}
.vball-cal-sheet::backdrop{background:rgba(10,22,40,.55)}
.vball-cal-sheet__panel{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(32rem,calc(100% - 1rem));max-height:min(86vh,36rem);overflow:auto;background:#fff;color:var(--vball-ink,#1a2332);border-radius:16px 16px 0 0;padding:1.25rem 1.2rem calc(1.35rem + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 32px rgba(10,22,40,.18)}
.vball-cal-sheet__close{position:absolute;top:.65rem;right:.65rem;width:44px;height:44px;border:0;border-radius:999px;background:#f4f6f9;color:var(--vball-navy,#0a1628);font-size:1.5rem;line-height:1;cursor:pointer}
.vball-cal-sheet__kind{margin:0 2.5rem .35rem 0;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--vball-muted,#5c6b7a)}
.vball-cal-sheet__panel.is-match .vball-cal-sheet__kind{color:var(--vball-league,#2e6da4)}
.vball-cal-sheet__title{margin:0 2.5rem .5rem 0;font-size:1.2rem;line-height:1.25;overflow-wrap:anywhere}
.vball-cal-sheet__when,.vball-cal-sheet__where{margin:.25rem 0;font-size:1rem}
.vball-cal-sheet__actions{margin:.9rem 0 0}
.vball-cal-sheet__details{min-height:44px}
.vball-cal-sheet [hidden]{display:none!important}
@media (min-width:700px){.vball-cal-sheet__panel{top:50%;bottom:auto;transform:translate(-50%,-50%);border-radius:16px;width:min(28rem,calc(100% - 2rem))}}

/* Huge kiosk tap targets */
.vball-kiosk{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}
.vball-kiosk-btn{min-height:96px;font-size:1.2rem;font-weight:700;border-radius:12px;border:2px solid #d5dbe3;background:#fff;cursor:pointer;padding:.75rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;color:var(--vball-navy,#0a1628)}
.vball-kiosk-btn .num{font-size:1.6rem;color:var(--vball-accent,#0a1628)}
.vball-kiosk-btn[data-status="checked_in"],.vball-kiosk-btn.is-in{background:#e7f7ee;border-color:var(--vball-lessons,#3d8b6e)}
.vball-kiosk-btn[data-status="late"],.vball-kiosk-btn.is-late{background:#fff4e0;border-color:var(--vball-accent,#0a1628)}
.vball-kiosk-btn[data-status="absent"],.vball-kiosk-btn.is-absent{background:#fdecea;border-color:#c0392b}
.vball-kiosk-btn[data-status="checked_out"],.vball-kiosk-btn.is-out{background:#f4f6f9;border-color:#5c6b7a}
.vball-checkin-public input{font-size:1.4rem;min-height:52px;width:8rem;letter-spacing:.3em;text-align:center}

.vball-kiosk-phone,.vball-kiosk{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem}
.vball-kiosk-btn{min-height:112px;min-width:140px;font-size:1.25rem;padding:1rem;touch-action:manipulation}
.vball-kiosk .vball-kiosk-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.15rem}
.vball-kiosk-btn .name,.vball-kiosk-btn small,.vball-kiosk-btn .vball-kiosk-avail{display:block;width:100%;line-height:1.25}
.vball-kiosk-btn small{font-size:.78rem;font-weight:600;color:#5c6b7a}

.vball-kiosk-btn.is-blocked,.vball-kiosk-btn[data-blocked="1"]{opacity:.45;background:#eee;cursor:not-allowed}
.vball-family-card{padding:1rem;border:1px solid #d5dbe3;border-radius:12px;margin:1rem 0}
.vball-bio-nag{background:#fff8e5;border:2px solid #dba017;padding:.75rem 1rem;border-radius:8px;margin:1rem 0}
.vball-bio-nag ul{margin:.5rem 0;padding-left:1.2rem}
.vball-bio-nag li{margin:.25rem 0}
.vball-family-card button,.vball-family-card .vball-btn{min-height:44px}
.vball-ical-subscribe{margin:.75rem 0 1rem}
.vball-ical-subscribe .vball-btn{margin:.25rem .4rem .25rem 0;display:inline-block}
.vball-ical-subscribe code{display:block;margin-top:.4rem;overflow-wrap:anywhere;font-size:.8em}
.vball-coach-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}
.vball-coach-card img{width:100%;height:180px;object-fit:cover;border-radius:12px}
.vball-coach-card a.coach-card__media{display:block}
.vball-coach-card h3 a{color:inherit;text-decoration:none}
.vball-coach-card .coach-card__bio{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.vball-coach-card .coach-card__contact{margin:.5rem 0 0;font-size:.85rem;word-break:break-word;display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .75rem}
.vball-coach-card .coach-card__contact a{display:inline-flex;align-items:center}
.vball-coach-teams{list-style:none;padding:0;margin:.75rem 0;display:flex;flex-wrap:wrap;gap:.4rem}
.vball-coach-teams a{display:inline-block;padding:.2rem .7rem;border-radius:999px;background:#f6f7f7;color:#0a1628;text-decoration:none;font-weight:700;border:1px solid #dcdcde}
.vball-coach-contact a{display:inline-block;margin-right:1rem}
.vball-join-poster{text-align:center;padding:1.5rem}
.vball-jersey-pad{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:.5rem}
.vball-jersey-pad .is-green{background:#d4edda;border:2px solid #3d8b6e}
.vball-jersey-pad .is-red{background:#f8d7da;border:2px solid #a33}
.vball-gym-alert{background:#fff3cd;border:2px solid #e0a800;padding:.75rem 1rem;border-radius:8px;font-weight:700}
.vball-heat{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:4px}
.vball-heat span{display:block;text-align:center;padding:.35rem .2rem;border-radius:6px;font-size:.75rem}
.vball-heat .ok{background:#d4edda}
.vball-heat .low{background:#fff3cd}
.vball-heat .out{background:#f8d7da}
@media print{.vball-join-poster{page-break-inside:avoid}}

.vball-form-qr{margin:.75rem 0;max-width:160px}
.vball-form-qr svg{width:140px;height:140px;display:block;background:#fff}
.vball-form-qr-row{display:flex;flex-wrap:wrap;gap:1.25rem;align-items:flex-start}
.vball-form-qr-row .vball-form-qr{margin:0}
.vball-card-fail{background:#fdecea;border:2px solid #d63638;padding:.75rem 1rem;border-radius:8px;margin:1rem 0}
.vball-family-photo img{width:96px;height:120px;object-fit:cover;border-radius:8px}

/* Signature pad + signed copies (family portal, login-walled) */
.vball-sig-wrap{margin:1rem 0;overscroll-behavior:contain}
.vball-sig-wrap canvas.vball-sig-pad{
  display:block;width:100%;min-height:160px;height:168px;max-width:100%;
  background:#fff;border:2px solid var(--vball-navy,#0a1628);border-radius:8px;
  touch-action:none;cursor:crosshair;box-shadow:inset 0 0 0 3px var(--vball-accent,#0a1628);
}
.vball-sig-wrap .vball-sig-clear{
  min-height:44px;padding:.45rem .9rem;border:1px solid var(--vball-navy,#0a1628);
  background:#fff;color:var(--vball-navy,#0a1628);border-radius:8px;font-weight:600;cursor:pointer;
}
.vball-sig-err{color:#b32d2e;font-weight:700}
.vball-sig-img{max-width:280px;width:100%;height:auto;border-bottom:2px solid var(--vball-navy,#0a1628);background:#fff;display:block}
.vball-form-copy{margin:.75rem 0}
.vball-form-copy dl{display:grid;grid-template-columns:minmax(7rem,auto) 1fr;gap:.2rem .85rem}
.vball-form-copy dt{font-weight:700}
.vball-form-copy dd{margin:0}
.vball-form-actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:.75rem}
.vball-btn-ghost{background:#fff;color:var(--vball-navy,#0a1628)!important;border:2px solid var(--vball-navy,#0a1628)}
.vball-family-forms{margin:1rem 0}
.vball-family-form{margin:1rem 0;padding:1rem;background:#f4f6f9;border:1px solid #dcdcde;border-radius:12px}
.vball-family-form.is-signed{background:#f3faf6;padding:.75rem 1rem}
.vball-family-form.is-signed .vball-florida-sheet,
.vball-family-form.is-signed .vball-form-sign,
.vball-family-form.is-signed .vball-sig-wrap,
.vball-family-form.is-signed .vball-form-qr{
  display:none !important;
}
.vball-form-copy.is-compact{margin:0}
.vball-form-copy.is-compact h3{margin:0 0 .35rem;font-size:1rem}
.vball-form-copy.is-compact .vball-sig-img{max-height:48px;max-width:160px}
.vball-form-copy.is-compact .vball-form-actions{margin-top:.5rem}
.vball-form-saved{background:#e7f7ee;border:2px solid var(--vball-lessons,#3d8b6e);padding:.75rem 1rem;border-radius:8px}
.vball-form input,.vball-form textarea{width:100%;max-width:32rem;min-height:44px;padding:.45rem .6rem;border:1px solid #d5dbe3;border-radius:8px;font:inherit}
.vball-form textarea{min-height:5rem}
.vball-form label{display:block;font-weight:600;margin:.35rem 0}
.vball-family-checklist{list-style:none;padding:0;margin:1rem 0}
.vball-family-checklist li{padding:.35rem 0;border-bottom:1px solid #e6ebf1}

.vball-family-stats{margin:1.25rem 0 0;padding:1rem;background:#f4f6f9;border:1px solid #dcdcde;border-radius:12px}
.vball-family-stats h2{margin-top:0}
.vball-counting-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.75rem,1fr));gap:.65rem .5rem;margin:1rem 0}
.vball-counting-grid.is-plain{grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.75rem}
.vball-count-field{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;font-weight:700;font-size:.8rem;letter-spacing:.04em;margin:0}
.vball-count-name{font-size:.82rem;letter-spacing:0;font-weight:700;line-height:1.2;text-transform:none}
.vball-count-abbr{font-size:.68rem;font-weight:600;letter-spacing:.04em;color:#6a7788;text-transform:uppercase}
.vball-count-field input{width:100%;min-height:56px;font-size:1.65rem;font-weight:700;text-align:center;border:2px solid var(--vball-navy,#0a1628);border-radius:10px;padding:.35rem;box-sizing:border-box;-moz-appearance:textfield}
.vball-count-field input::-webkit-outer-spin-button,.vball-count-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.vball-calc-rates{background:#fff;border-radius:10px;padding:.75rem 1rem;font-size:.95rem;line-height:1.6}
.vball-calc-rates strong{display:inline-block;margin-right:.85rem}
.vball-stats-howto{margin:1rem 0;padding:1rem;background:#fff;border:2px solid var(--vball-navy,#0a1628);border-radius:12px}
.vball-stats-howto .vball-btn{width:100%;font-size:1.05rem}

.vball-scoresheet-photo{max-width:100%;height:auto;border:1px solid #d5dbe3;border-radius:8px;margin:0 0 1rem}
.vball-scoresheet-notice{background:#fff8e5;border-left:4px solid #dba017;padding:.75rem 1rem;margin:0 0 1rem}
.vball-scoresheet-upload{margin:1.25rem 0 0;padding:1rem;border:1px dashed #0a1628;border-radius:8px;background:#f4f6f9}
.vball-scoresheet-upload-form{max-width:420px}
.vball-scoresheet-card .vball-scoresheet-upload-form{margin-top:.6rem}
.vball-scoresheet-family{margin:1rem 0;padding:1rem;background:#fff;border:1px solid #d5dbe3;border-radius:12px}
.vball-scoresheet-family h3{margin:.2rem 0 .5rem}
.vball-scoresheet-card{margin:0 0 .85rem;padding:.75rem;border:1px solid #e6ebf1;border-radius:8px;background:#f4f6f9}

.vball-practice-avail{margin:1rem 0;padding:1rem;background:#f4f6f9;border:1px solid #dcdcde;border-radius:12px}
.vball-practice-avail-home .vball-practice-avail{background:#fff;border:1px solid #dcdcde}
.vball-practice-avail-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem}
.vball-practice-avail .vball-btn{min-height:52px;min-width:7.5rem;font-weight:700;touch-action:manipulation}
.vball-practice-avail .vball-btn.is-on{outline:3px solid var(--vball-navy,#0a1628);background:var(--vball-navy,#0a1628);color:#fff}
.vball-practice-avail .vball-btn.is-cant{background:#fff4e0;border-color:#dba017;color:#7a4e00;outline-color:#dba017}
.vball-kiosk-avail,.vball-att-avail{display:inline-block;color:#7a4e00;font-weight:700;font-size:.8rem;background:#fff4e0;border-radius:999px;padding:.15rem .55rem;margin-top:.25rem}
.vball-kiosk-btn .vball-kiosk-avail{margin:.15rem 0}
@media (max-width:600px){
	.vball-practice-avail .vball-btn{flex:1 1 30%}
}

.vball-florida-sheet{background:#fff;color:#111;border:1px solid #111;padding:1.1rem 1.2rem;margin:.75rem 0;max-width:40rem}
.vball-florida-sheet__head{text-align:center;margin-bottom:.75rem}
.vball-florida-sheet__mark{max-height:48px;width:auto;display:block;margin:0 auto .4rem}
.vball-florida-sheet__org{margin:0;font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:.95rem}
.vball-florida-sheet__title{margin:.2rem 0 .5rem;font-size:1.15rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;text-align:center}
.vball-florida-sheet__intro,.vball-florida-sheet__attest{font-size:.9rem;line-height:1.45;margin:.5rem 0 .75rem}
.vball-florida-sheet__line{display:block;border-bottom:1px solid #111;padding:.35rem 0 .15rem;margin:.45rem 0}
.vball-florida-sheet__line > span:first-child{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#333}
.vball-florida-sheet__row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.vball-florida-sheet__sig img{display:block;max-height:72px;width:auto;margin-top:.2rem}
.vball-florida-sheet__status{font-size:.85rem;color:#5c6b7a;margin-top:.6rem}
.vball-form.vball-florida-sheet{border:0;padding:0;background:transparent}
.vball-form.vball-florida-sheet .vball-florida-sheet__org{text-align:center}
@media (max-width:600px){.vball-florida-sheet__row{grid-template-columns:1fr}}

.vball-unsigned-filters{display:flex;flex-wrap:wrap;gap:.55rem .85rem;align-items:center;margin:0 0 1rem}
.vball-unsigned-filters .btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:.35rem .9rem;border-radius:999px;border:2px solid #0a1628;background:#fff;color:#0a1628;font-weight:700;text-decoration:none}
.vball-unsigned-filters .btn.is-on{background:#0a1628;color:#fff}
.vball-unsigned-gender,.vball-unsigned-years{display:inline-flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.vball-unsigned-years .btn{padding:.35rem .7rem;font-variant-numeric:tabular-nums}
@media (max-width:600px){
	.vball-unsigned-years .btn{padding:.35rem .55rem;font-size:.95rem}
}


/* Family portal — compact home */
.vball-family.vball-card,.vball-family{background:transparent;box-shadow:none;border:0;padding:0;margin:0}
.vball-family-head{background:#fff;color:#0a1628;border-radius:16px;padding:.85rem 1.15rem;margin:0 0 1rem;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.5rem;border:1px solid #dcdcde}
.vball-family-kicker{margin:0 0 .15rem;color:#646970;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.vball-family-head h1{margin:0;color:#0a1628;font-size:1.45rem;letter-spacing:-.02em;font-weight:800}
.vball-tonight-kicker{margin:0 0 .45rem;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--vball-navy,#0a1628)}
.vball-tonight-home{margin:0 0 1rem;padding:1rem 1.1rem;background:#fff;border-radius:16px;border:1px solid #e6ebf1}
.vball-family-lookup{display:flex;flex-wrap:wrap;gap:.6rem;align-items:flex-end;margin:0 0 1rem;padding:.9rem 1.1rem;background:#fff;border-radius:16px;border:1px solid #e6ebf1}
.vball-family-lookup label{flex:1 1 220px;font-weight:700;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:#5c6b7a}
.vball-family-lookup input{display:block;width:100%;min-height:44px;margin-top:.3rem;padding:.4rem .7rem;border:1px solid #d5dbe3;border-radius:10px;font:inherit;text-transform:none;letter-spacing:0}
.vball-family-card{background:#fff;border:1px solid #e6ebf1;border-top:4px solid var(--vball-prog,var(--vball-navy,#0a1628));border-radius:16px;padding:1.1rem 1.2rem;margin:0 0 1rem;box-shadow:0 8px 24px rgba(10,22,40,.05)}
.vball-family-card__top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem;margin:0 0 .65rem}
.vball-family-card__top h2{margin:0;font-size:1.2rem;color:var(--vball-navy,#0a1628)}
.vball-family-prog{display:inline-block;margin:.35rem .4rem 0 0;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:#0a1628;color:#fff;border-radius:999px;padding:.18rem .55rem}
.vball-family-status{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:.28rem .65rem;white-space:nowrap}
.vball-family-status.is-hold{background:#fff4e0;color:#7a4e00}
.vball-family-status.is-pending{background:#e8eef8;color:#0a1628}
.vball-family-status.is-ok{background:#e7f7ee;color:#1e6b3c}
.vball-family-status.is-block{background:#fdecea;color:#b32d2e}
.vball-family-hold-copy{margin:0 0 .6rem;font-size:1rem}
.vball-family-payall{margin:0 0 1rem;padding:.9rem 1.1rem;background:#fff;border-radius:16px;border:1px solid #e6ebf1}
.vball-family-form{border-radius:14px}
@media (max-width:600px){
	.vball-family-head h1{font-size:1.25rem}
	.vball-family-lookup .vball-btn{width:100%}
}

/* Token cards + family matches board — light desk */
.vball-matches-board{margin:1rem 0 1.25rem;padding:1rem 1.1rem;background:#fff;color:#1d2327;border:1px solid #dcdcde;border-radius:16px}
.vball-matches-board h2{margin:0 0 .85rem;color:#0a1628;font-size:1.05rem;letter-spacing:.08em;text-transform:uppercase}
.vball-match-tile{background:#fff;border:1px solid #dcdcde;border-radius:16px;padding:.9rem 1rem;margin:0 0 .75rem}
.vball-match-tile.is-need{border-color:#0a1628;box-shadow:none}
.vball-match-tile h3{margin:.35rem 0 .2rem;font-size:1.1rem;color:#0a1628}
.vball-match-meta{margin:0;color:#646970;font-size:.85rem}
.vball-match-chips{display:flex;flex-wrap:wrap;gap:.4rem}
.vball-chip{display:inline-flex;align-items:center;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:.2rem .55rem;border-radius:999px}
.vball-chip.is-win{background:#e7f7ee;color:#1e6b3c}
.vball-chip.is-need{background:#fff4e0;color:#7a4e00}
.vball-chip.is-soon{background:#e8eef8;color:#0a1628}
.vball-chip.is-done{background:#f0f0f1;color:#646970}
.vball-chip--readonly{margin:.4rem 0}
.vball-match-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem;align-items:flex-start}
.vball-match-actions .vball-stats-howto{margin:0;padding:0;background:transparent;border:0;flex:1 1 140px}
.vball-match-add{flex:1 1 160px}
.vball-match-add summary{list-style:none;cursor:pointer;text-align:center}
.vball-match-add summary::-webkit-details-marker{display:none}
.vball-match-stats-form{margin-top:.75rem;padding:.75rem;background:#f6f7f7;border:1px solid #dcdcde;border-radius:12px}
.vball-btn-tap{width:100%;min-height:48px;font-size:1.05rem;font-weight:800;background:#0a1628;color:#fff!important;border-radius:10px;touch-action:manipulation}
.vball-matches-board .vball-btn-ghost{background:#fff;color:#0a1628!important;border:2px solid #0a1628;border-radius:10px}
.vball-matches-board .vball-btn-ghost{width:100%;min-height:48px}
.vball-token-card{max-width:28rem;margin:0 auto}
.vball-token-card h1{margin:.2rem 0 .35rem;color:var(--vball-navy,#0a1628)}
.vball-token-opp{font-size:1.15rem;font-weight:700;margin:.2rem 0}
.vball-token-form input[type=text],.vball-token-form input[type=date],.vball-token-form input[name=opponent],.vball-token-form input[name=opponent_name]{width:100%;font-size:1.1rem;padding:.75rem;border:1px solid #dcdcde;border-radius:10px;background:#fff;color:#1d2327}
.vball-season-total{margin:1rem 0}
.vball-season-total h3{margin:.2rem 0 .35rem}
.vball-day-line{display:flex;flex-wrap:wrap;gap:.35rem .85rem;font-size:.92rem;line-height:1.5}
.vball-family-day-stats,.vball-family-match-stats{margin:1.25rem 0;padding:1rem;background:#f4f6f9;border:1px solid #dcdcde;border-radius:12px}
.vball-set-row{display:flex;gap:.5rem;align-items:center}
.vball-set-row input{width:5em;font-size:1.4rem;padding:.7rem;text-align:center;border:1px solid #dcdcde;border-radius:10px;background:#fff;color:#1d2327}
.vball-wl-row{display:flex;gap:.5rem;flex-wrap:wrap}
.vball-wl-choice{flex:1;min-width:90px;border:2px solid var(--vball-navy,#0a1628);border-radius:10px;padding:.85rem;text-align:center;font-size:1.1rem;font-weight:800}
.vball-results-card-mail .vball-btn{width:100%}
@media (max-width:600px){
	.vball-match-actions{flex-direction:column}
	.vball-match-add,.vball-match-actions .vball-stats-howto{flex:1 1 auto;width:100%}
}
.vball-token-kicker{margin:0 0 .2rem;color:#646970;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.vball-token-meta{color:var(--vball-muted,#646970);margin:.2rem 0 .75rem}
.vball-btn-volt{background:#0a1628;color:#fff!important;width:100%;min-height:48px;font-size:1.05rem;font-weight:800;border-radius:10px}
.vball-jersey{font-weight:700;color:#646970}
.vball-wl{display:flex;gap:.5rem;flex-wrap:wrap}
.vball-wl-opt{flex:1;min-width:90px;border:2px solid var(--vball-navy,#0a1628);border-radius:10px;padding:.85rem;text-align:center;font-size:1.1rem;font-weight:800;background:#fff;color:#0a1628}
.vball-wl-opt.is-on{background:#0a1628;color:#fff}
.vball-photo-slot{display:block;font-weight:700}
.vball-board-label{margin:.6rem 0 .4rem;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#646970}
.vball-family-match-stats{background:#f6f7f7;border:1px solid #dcdcde;border-radius:12px;padding:.85rem;margin:0 0 .75rem}

.vball-family-tabs{
	display:flex;
	flex-wrap:nowrap;
	align-items:stretch;
	gap:.35rem;
	overflow-x:auto;
	overscroll-behavior-x:contain;
	-webkit-overflow-scrolling:touch;
	scrollbar-width:none;
	position:sticky;
	top:8px;
	z-index:5;
	background:#fff;
	border:1px solid #dcdcde;
	border-radius:12px;
	padding:4px;
	margin:0 0 1rem;
}
.vball-family-tabs::-webkit-scrollbar{display:none}
.vball-family-tabs button{
	flex:0 0 auto;
	border:0;
	background:transparent;
	color:#646970;
	font-weight:800;
	padding:.75rem 1.05rem;
	min-height:48px;
	min-width:5.6rem;
	border-radius:8px;
	cursor:pointer;
	font:inherit;
	font-size:.9rem;
	white-space:nowrap;
	-webkit-tap-highlight-color:transparent;
}
.vball-family-tabs button.is-on{background:#0a1628;color:#fff}
@media (max-width:420px){
	.vball-family-tabs{top:0;margin:0 -4px 1rem;border-radius:12px}
	.vball-family-tabs button{min-height:48px;font-size:.88rem;padding:.7rem .95rem}
}
.vball-tab-panel{display:none}
.vball-tab-panel.is-on{display:block}
.vball-match-tile{display:block;text-decoration:none;color:#1d2327}
.vball-match-opp{display:block;font-size:1.05rem;margin:.35rem 0 .15rem;color:#0a1628}
.vball-token-card.vball-stats-card,.vball-token-card.vball-results-card{background:#fff;color:#1d2327;border:1px solid #dcdcde;border-radius:16px;padding:1.1rem 1.2rem}
.vball-token-card.vball-stats-card h1,.vball-token-card.vball-results-card h1{color:#0a1628}
.vball-token-card .vball-token-kicker{color:#646970}
.vball-token-card .vball-token-meta{color:#646970}
.vball-token-card .vball-count-field{color:#646970}
.vball-token-card .vball-count-field input,.vball-token-card input[name=opponent],.vball-token-card .vball-set-row input{background:#fff;color:#1d2327;border-color:#dcdcde}
.vball-token-card .vball-calc-rates{background:#f6f7f7;color:#1d2327}
.vball-token-card .vball-calc-rates strong{color:#0a1628}
.vball-token-card .vball-note{color:#646970}
.vball-token-card .vball-wl-opt{color:#0a1628;border-color:#dcdcde;background:#fff}
.vball-photo-slot input{margin-top:.4rem;width:100%}

.vball-billing-board{margin:0 0 1.25rem;padding:1rem 1.1rem;background:#fff;border:1px solid #e6ebf1;border-radius:16px}
.vball-billing-board h2{margin:.1rem 0 .5rem}
.vball-bill-kicker{margin:0 0 .75rem;font-weight:800;color:#0a1628}
.vball-bill-kid{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding:.75rem 0;border-bottom:1px solid #e6ebf1;text-decoration:none;color:inherit}
.vball-bill-kid h3{margin:0;font-size:1rem}
.vball-bill-right{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem}
.vball-bill-amt{font-weight:800}
.vball-bill-total{display:flex;justify-content:space-between;padding:.85rem 0;font-size:1.05rem}
.vball-bill-ok{color:#1e6b3c;font-weight:700}
.vball-player-bill{padding:.2rem 0 1rem}
.vball-player-bill__top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin:0 0 .5rem}
.vball-bill-lines{list-style:none;margin:0 0 .75rem;padding:0}
.vball-bill-line{display:flex;justify-content:space-between;gap:.5rem;padding:.55rem 0;border-bottom:1px solid #e6ebf1}
.vball-bill-line em{font-style:normal;color:#b32d2e;font-size:.85rem;margin-left:.35rem}
.vball-bill-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}
.vball-bill-actions .vball-btn,.vball-bill-actions form{flex:1 1 140px}
.vball-bill-actions .vball-btn{width:100%;min-height:48px}
.vball-family-status.is-due{background:#fff4e0;color:#7a4e00}
.vball-family-status.is-past{background:#fdecea;color:#b32d2e}
.vball-family-status.is-cancel{background:#e8eef8;color:#0a1628}
.vball-btn-ghost{background:transparent;color:#0a1628;border:2px solid #0a1628}
.vball-gear-board,.vball-teams-board,.vball-recruit-dash{margin:0 0 1rem}
.vball-gear-year{margin:1rem 0 .4rem;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#0a1628}
.vball-gear-lines,.vball-teams-lines,.vball-interest-list,.vball-recruit-nudge{list-style:none;margin:0;padding:0}
.vball-gear-line{display:flex;justify-content:space-between;gap:.5rem;padding:.5rem 0;border-bottom:1px solid #e6ebf1}
.vball-gear-line em{font-style:normal;font-size:.8rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.vball-gear-line em.is-ordered{color:#7a4e00}
.vball-gear-line em.is-assigned,.vball-gear-line em.is-received{color:#1e6b3c}
.vball-recruit-zero{margin:.35rem 0;color:#0a1628}
.vball-recruit-needed{background:#fdecea;border:1px solid #f5c2c0;border-radius:12px;padding:.85rem 1rem;margin:0 0 1rem}
.vball-recruit-needed p{margin:.25rem 0}
.vball-recruit-nudge li{padding:.45rem 0;border-bottom:1px solid #e6ebf1}
.vball-interest-list li{padding:.45rem 0;border-bottom:1px solid #e6ebf1}
.vball-bio-nag{background:#fff4e0;border:1px solid #f0d5a0;border-radius:12px;padding:.85rem 1rem;margin:0 0 1rem}

/* Family portal — light desk (paper + navy). Scoped so public pages stay as-is. */
.vball-family{
	--vball-navy:#0a1628;
	--vball-accent:#0a1628;
	--vball-paper:#fff;
	--vball-wash:#f6f7f7;
	--vball-line:#dcdcde;
	--vball-ink:#1d2327;
	--vball-muted:#646970;
	--vball-card:#fff;
	--vball-text:#1d2327;
	--card:#fff;
	--text:#1d2327;
	--ink:#1d2327;
	--muted:#646970;
	--accent:#0a1628;
	color:var(--vball-ink);
	background:var(--vball-wash);
}
.family-app .app-card:has(.vball-family),
.family-app .app-card:has(.vball-token-card){
	background:#f6f7f7;
	color:#1d2327;
	border:1px solid #dcdcde;
	border-radius:16px;
	box-shadow:none;
	overflow:visible;
}
.vball-family a{color:#0a1628}
.vball-family-head{
	background:#fff;
	color:#0a1628;
	border-radius:16px;
	padding:1.05rem 1.2rem;
	margin:0 0 1.1rem;
	border:1px solid #dcdcde;
}
.vball-family-kicker{color:#646970}
.vball-family-head h1{color:#0a1628;font-size:1.6rem}
.vball-family-card{
	background:#fff;
	color:#1d2327;
	border:1px solid #dcdcde;
	border-top:3px solid var(--vball-prog,var(--vball-navy,#0a1628));
	border-radius:16px;
	padding:1.15rem 1.15rem 1.25rem;
	margin:0 0 1.15rem;
	box-shadow:0 1px 3px rgba(10,22,40,.06);
	overflow:visible;
}
.vball-family-card__top{align-items:center;gap:.75rem}
.vball-family-card__top h2{color:#0a1628;font-size:1.25rem;letter-spacing:-.02em}
.vball-family-who{display:flex;align-items:center;gap:.75rem;min-width:0}
.vball-family-avatar{
	flex:0 0 48px;
	width:48px;height:48px;
	border-radius:50%;
	background:#0a1628;
	color:#fff;
	font-weight:800;
	font-size:1rem;
	letter-spacing:.02em;
	display:flex;align-items:center;justify-content:center;
}
.vball-family-meta{margin:.15rem 0 0;color:#646970;font-size:.9rem}
.vball-family-prog{background:#0a1628;color:#fff;border:1px solid #0a1628}
.vball-family-status{border-radius:999px;padding:.3rem .7rem}
.vball-family-status.is-ok{background:#e7f7ee;color:#1e6b3c}
.vball-family-status.is-past,.vball-family-status.is-block{background:#fdecea;color:#b32d2e}
.vball-family-status.is-due,.vball-family-status.is-hold{background:#fff4e0;color:#7a4e00}
.vball-family-status.is-pending,.vball-family-status.is-cancel{background:#e8eef8;color:#0a1628}
.vball-family-status.is-uncommitted{background:#0a1628;color:#fff}
.vball-family .vball-btn,
.vball-family-card .vball-btn,
.vball-family .vball-btn-volt,
.vball-family .vball-btn-tap,
.vball-bill-actions .vball-btn:not(.vball-btn-ghost),
.vball-token-card .vball-btn,
.vball-token-card .vball-btn-volt{
	background:#0a1628;
	color:#fff!important;
	border:0;
	border-radius:10px;
	min-height:48px;
	font-weight:800;
}
.vball-family .vball-btn-ghost,
.vball-bill-actions .vball-btn-ghost,
.vball-matches-board .vball-btn-ghost{
	background:#fff;
	color:#0a1628!important;
	border:2px solid #0a1628;
	border-radius:10px;
}
.vball-family-photo img{width:96px;height:128px;object-fit:cover;object-position:center top;border-radius:12px;background:#0a1628}
.vball-family-card input,.vball-family-card select,.vball-family-card textarea,
.vball-family-lookup input,
.vball-family-video input,.vball-family-video textarea{
	background:#fff;color:#1d2327;border:1px solid #dcdcde;border-radius:10px
}
.vball-family-card label,.vball-family-card h2,.vball-family-card h3{color:#0a1628}
.vball-family-card .vball-note{color:#646970}
.vball-family-card p{color:#1d2327}
.vball-family-form,.vball-family-stats,.vball-family-lookup,.vball-family-payall,.vball-billing-board{
	background:#fff;color:#1d2327;border:1px solid #dcdcde;border-radius:16px
}
.vball-family-form.is-signed{background:#f3faf6}
.vball-recruit-needed{
	background:#fff;
	border:1px solid #dcdcde;
	border-radius:16px;
	padding:1rem 1.05rem;
	margin:0 0 1rem;
	color:#1d2327;
}
.vball-recruit-needed p{margin:.3rem 0;color:#1d2327;overflow:visible;white-space:normal;text-overflow:unset}
.vball-recruit-needed strong{color:#0a1628;display:block;font-size:1.02rem}
.vball-recruit-needed .vball-note{color:#646970}
.vball-needed-link{color:#0a1628;font-weight:700;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.vball-needed-link:hover,.vball-needed-link:focus{color:#0a1628}
.vball-bio-nag li{overflow:visible;white-space:normal;text-overflow:unset}
.vball-family [id^="vball-profile-"]{scroll-margin-top:72px}
.vball-recruit-dash{background:#fff;border:1px solid #dcdcde;border-radius:16px;padding:1rem 1.05rem;color:#1d2327}
.vball-recruit-dash h2,.vball-recruit-dash h3{color:#0a1628;margin:.2rem 0 .55rem}
.vball-recruit-dash h3{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:#646970}
.vball-recruit-totals{margin:.65rem 0 1rem}
.vball-recruit-zero{color:#0a1628;font-size:1.05rem;margin:.2rem 0}
.vball-recruit-nudge li,.vball-interest-list li,.vball-gear-line,.vball-bill-line{
	border-bottom-color:#dcdcde;color:#1d2327
}
.vball-gear-board,.vball-teams-board{background:#fff;border:1px solid #dcdcde;border-radius:16px;padding:1rem 1.05rem;color:#1d2327}
.vball-gear-year{color:#646970}
.vball-gear-line em.is-ordered{color:#7a4e00}
.vball-gear-line em.is-assigned,.vball-gear-line em.is-received{color:#1e6b3c}
.vball-bill-kicker,.vball-bill-amt{color:#0a1628}
.vball-player-bill{background:#fff;border:1px solid #dcdcde;border-radius:16px;padding:.9rem 1rem;margin:0 0 .85rem}
.vball-unsigned-card:not(:has(img)){display:none}
@media (max-width:420px){
}

.vball-upcoming-strip{margin:0 0 1rem;padding:.85rem 1rem;background:#fff;border:1px solid #e6ebf1;border-radius:14px}
.vball-upcoming-kicker{margin:0 0 .4rem;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--vball-navy,#0a1628)}
.vball-upcoming-strip ul{list-style:none;margin:0;padding:0}
.vball-upcoming-strip li{padding:.35rem 0;border-bottom:1px solid #eef1f5;font-size:.95rem}
.vball-upcoming-strip li:last-child{border-bottom:0}
.vball-upcoming-strip strong{display:block;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--vball-navy,#0a1628)}


.coach-bio__contact { display: flex; flex-wrap: wrap; gap: 0.55rem; margin-top: 1rem; align-items: center; }
.coach-mail { display: inline-block; position: relative; }
.coach-mail[open] { flex: 1 1 100%; }
.coach-mail__btn::-webkit-details-marker,
.coach-mail__btn::marker { display: none; content: ""; }
.coach-mail-icon,
.coach-mail__btn,
a.coach-mail-icon {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	border-radius: 999px;
	background: var(--vball-navy, #0a1628);
	color: #fff !important;
	border: 2px solid var(--vball-navy, #0a1628);
	cursor: pointer;
	text-decoration: none !important;
	font-weight: 700;
	list-style: none;
	box-sizing: border-box;
}
.coach-card .coach-mail-icon,
.vball-coach-card .coach-mail-icon {
	border-color: rgba(255,255,255,.4);
}
.coach-mail__svg { display: block; pointer-events: none; }
.coach-mail__panel { margin-top: 0.75rem; max-width: 28rem; }
.coach-form { position: relative; }
.coach-form label { display: block; margin: 0.65rem 0; font-weight: 600; }
.coach-form input,
.coach-form select,
.coach-form textarea {
	display: block;
	width: 100%;
	min-height: 44px;
	margin-top: 0.25rem;
	padding: 0.5rem 0.8rem;
	border-radius: 12px;
	border: 1px solid #c9d2dc;
	font: inherit;
	background: #fff;
	color: #0a1628;
}
.coach-form textarea { min-height: 7rem; }
.coach-form__wants { border: 0; padding: 0; margin: 0.75rem 0; }
.coach-form__wants legend { font-weight: 700; margin-bottom: 0.35rem; }
.coach-form__check { display: block; font-weight: 500; margin: 0.35rem 0; }
.coach-form__check input { display: inline-block; width: auto; min-height: 22px; min-width: 22px; margin-right: 0.4rem; }
.coach-form__notice { font-weight: 700; }
.vball-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.coach-apply { margin-top: 1.25rem; }
.page-hero .coach-mail__btn,
.coach-bio__hero .coach-mail__btn,
.vball-coach-hero .coach-mail__btn {
	background: #fff;
	color: var(--vball-navy, #0a1628);
	border-color: #fff;
}

.coach-card .coach-card__contact,
.vball-coach-card .coach-card__contact {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.45rem 0.75rem;
}


/* ------------------------------------------------------------------
   Family / token light desk — LAST layer. Beats scheme-dark canvas,
   :root tokens, .app-card wrap, and hardcoded form fields.
   Public home / programs / recruiting board stay dark sports-app.
   Header stays navy (tokens restored below). No volt in family/token.
   ------------------------------------------------------------------ */
html:has(body.is-family-app) {
	--vball-bg:#f6f7f7; --vball-card:#fff; --vball-text:#1d2327; --vball-ink:#1d2327;
	--vball-muted:#646970; --vball-accent:#0a1628; --bg:#f6f7f7; --card:#fff;
	--text:#1d2327; --ink:#1d2327; --accent:#0a1628;
	background:#f6f7f7 !important;
	color:#1d2327;
}
body.is-family-app,
body.is-family-app.scheme-dark {
	--vball-bg:#f6f7f7; --vball-card:#fff; --vball-text:#1d2327; --vball-ink:#1d2327;
	--vball-muted:#646970; --vball-accent:#0a1628; --bg:#f6f7f7; --card:#fff;
	--text:#1d2327; --ink:#1d2327; --accent:#0a1628;
	background:#f6f7f7 !important;
	color:#1d2327 !important;
}

/* Header / announce / drawer stay paper+navy. Footer stays cinematic navy. */
body.is-family-app .site-header,
body.is-family-app.scheme-dark .site-header,
body.is-family-app .announce,
body.is-family-app .mobile-drawer {
	--vball-accent:#0a1628;
	--accent:#0a1628;
	--vball-bg:#f6f7f7;
	--vball-card:#fff;
	--vball-text:#1d2327;
	--vball-ink:#1d2327;
	--bg:#f6f7f7;
	--card:#fff;
	--text:#1d2327;
	--ink:#1d2327;
}
body.is-family-app .site-footer {
	--vball-accent:#fff;
	--accent:#fff;
	--vball-text:#d7dee8;
	--vball-ink:#fff;
}

/* Canvas + wrap. Body class is is-family-app; main is family-app. */
body.is-family-app .site-main,
body.is-family-app .app-stack,
body.is-family-app .family-app,
.family-app,
.family-app .app-card,
.family-app .app-card:has(.vball-family),
.family-app .app-card:has(.vball-token-card) {
	background:#f6f7f7;
	color:#1d2327;
}
body.is-family-app .app-card,
body.is-family-app .vball-family,
.family-app .app-card,
.vball-family {
	background:#f6f7f7;
	color:#1d2327;
	border-color:#dcdcde;
	overflow:visible;
	overflow-x:visible;
}
body.is-family-app .vball-family-card,
body.is-family-app .vball-token-card,
.vball-family-card,
.vball-token-card,
.vball-token-card.vball-stats-card,
.vball-token-card.vball-results-card {
	background:#fff;
	color:#1d2327;
	border-color:#dcdcde;
	overflow:visible;
}

/* Sticky swipe tabs. Ancestors must stay overflow:visible. */
body.is-family-app .vball-family-tabs,
.vball-family .vball-family-tabs,
.vball-family-tabs {
	position:sticky;
	top:8px;
	z-index:5;
	display:flex;
	flex-wrap:nowrap;
	overflow-x:auto;
	overscroll-behavior-x:contain;
	-webkit-overflow-scrolling:touch;
	background:#fff;
	border:1px solid #dcdcde;
}
body.is-family-app .vball-family-tabs button.is-on,
.vball-family-tabs button.is-on {
	background:#0a1628;
	color:#fff;
}

/* scheme-dark input/select/textarea — hardcoded #0c1524 + volt border. */
body.is-family-app.scheme-dark input,
body.is-family-app.scheme-dark select,
body.is-family-app.scheme-dark textarea,
body.scheme-dark.is-family-app input:not([type="radio"]):not([type="checkbox"]),
body.scheme-dark.is-family-app select,
body.scheme-dark.is-family-app textarea,
body.is-family-app.scheme-dark .tonight-tool input,
body.is-family-app.scheme-dark .tonight-tool select,
body.is-family-app.scheme-dark .age-finder input:not([type="radio"]):not([type="checkbox"]),
body.is-family-app.scheme-dark .signup-wizard input:not([type="radio"]):not([type="checkbox"]),
body.is-family-app.scheme-dark .search-form input,
body.is-family-app.scheme-dark .vball-signup-form input,
body.is-family-app.scheme-dark .vball-signup-form select,
body.is-family-app.scheme-dark .vball-family input,
body.is-family-app.scheme-dark .vball-family select,
body.is-family-app.scheme-dark .vball-family textarea,
body.is-family-app.scheme-dark .vball-token-card input,
body.is-family-app.scheme-dark .vball-token-card select,
body.is-family-app.scheme-dark .vball-token-card textarea,
body.is-family-app.scheme-dark .vball-family-card input,
body.is-family-app.scheme-dark .vball-family-card select,
body.is-family-app.scheme-dark .vball-family-card textarea {
	background:#fff;
	color:#1d2327;
	border:1px solid #dcdcde;
	border-radius:10px;
}
body.is-family-app.scheme-dark input:focus,
body.is-family-app.scheme-dark select:focus,
body.is-family-app.scheme-dark textarea:focus {
	border-color:#0a1628;
	outline:2px solid #0a1628;
	outline-offset:1px;
}
body.is-family-app.scheme-dark input::placeholder,
body.is-family-app.scheme-dark textarea::placeholder {
	color:#646970;
}

/* Links / heads in the family canvas. Do not touch header a. */
body.is-family-app .site-main a,
body.is-family-app.scheme-dark .site-main a,
body.is-family-app .vball-family a,
body.is-family-app .vball-token-card a,
.family-app a,
.vball-family a,
.vball-token-card a {
	color:#0a1628;
}
body.is-family-app .site-main a:hover,
body.is-family-app.scheme-dark .site-main a:hover,
.vball-family a:hover,
.vball-token-card a:hover {
	color:#1a2c4a;
}
body.is-family-app .site-main h1,
body.is-family-app .site-main h2,
body.is-family-app .site-main h3,
body.is-family-app.scheme-dark .site-main h1,
body.is-family-app.scheme-dark .site-main h2,
body.is-family-app.scheme-dark .site-main h3 {
	color:#0a1628;
}

/* Buttons inside family: navy fill, white text, 10px radius. */
body.is-family-app .site-main .vball-btn,
body.is-family-app .site-main .vball-btn-volt,
body.is-family-app .site-main .vball-btn-tap,
body.is-family-app .vball-family .vball-btn,
body.is-family-app .vball-family .vball-btn-volt,
body.is-family-app .vball-token-card .vball-btn,
body.is-family-app .vball-token-card .vball-btn-volt,
.vball-family .vball-btn,
.vball-family .vball-btn-volt,
.vball-family .vball-btn-tap,
.vball-token-card .vball-btn,
.vball-token-card .vball-btn-volt {
	background:#0a1628;
	color:#fff !important;
	border:0;
	border-radius:10px;
}
body.is-family-app .site-main .vball-btn-ghost,
.vball-family .vball-btn-ghost,
.vball-bill-actions .vball-btn-ghost,
.vball-matches-board .vball-btn-ghost {
	background:#fff;
	color:#0a1628 !important;
	border:2px solid #0a1628;
	border-radius:10px;
}

/* Family product nav in main — navy selected, no volt CTA. */
body.is-family-app .site-main .family-nav,
body.is-family-app.scheme-dark .site-main .family-nav,
body.is-family-app.scheme-dark .family-nav {
	background:#fff;
}
body.is-family-app .site-main .family-nav__item,
body.is-family-app.scheme-dark .site-main .family-nav__item,
body.is-family-app.scheme-dark .family-nav__item {
	color:#0a1628;
	background:transparent;
}
body.is-family-app .site-main .family-nav__item.is-on,
body.is-family-app .site-main .family-nav__item:hover,
body.is-family-app .site-main .family-nav__item[href*="register"],
body.is-family-app.scheme-dark .site-main .family-nav__item.is-on,
body.is-family-app.scheme-dark .site-main .family-nav__item:hover,
body.is-family-app.scheme-dark .family-nav__item.is-on,
body.is-family-app.scheme-dark .family-nav__item:hover {
	background:#0a1628;
	color:#fff;
}

/* No #e8ff3d in family / token. */
body.is-family-app .vball-family .vball-video-out,
body.is-family-app .vball-family .vball-lazy-video,
.vball-family .vball-video-out,
.vball-family .vball-lazy-video {
	background:#0a1628;
	color:#fff !important;
	border-color:#0a1628;
}
body.is-family-app .recruit-video {
	border-top-color:#0a1628;
}

/* Tables / calendar / signup plates under family. */
body.is-family-app.scheme-dark .vball-table,
body.is-family-app.scheme-dark .vball-table th,
body.is-family-app.scheme-dark .vball-table td,
body.is-family-app.scheme-dark .vball-cal-month td,
body.is-family-app.scheme-dark .vball-cal-week td,
body.is-family-app.scheme-dark .vball-cal-views button,
body.is-family-app.scheme-dark .vball-cal-sheet__close,
body.is-family-app.scheme-dark .vball-cal-sheet__panel {
	background:#fff;
	color:#1d2327;
	border-color:#dcdcde;
}
body.is-family-app.scheme-dark .vball-program-card,
body.is-family-app.scheme-dark .signup-choice {
	background:#fff;
	color:#1d2327;
	border-color:#dcdcde;
}

/* Page hero stays a navy band with white type. */
body.is-family-app .page-hero,
body.is-family-app .page-hero h1,
body.is-family-app .page-hero h2,
body.is-family-app .page-hero h3,
body.is-family-app .page-hero .eyebrow,
body.is-family-app .page-hero .lead,
body.is-family-app .page-hero a,
body.is-family-app.scheme-dark .page-hero h1,
body.is-family-app.scheme-dark .page-hero h2,
body.is-family-app.scheme-dark .page-hero h3,
body.is-family-app.scheme-dark .page-hero a {
	color:#fff;
}

/* Recruit video / footage chips on family-classed pages: navy, no volt. */
body.is-family-app .recruit-video,
.vball-family .recruit-video {
	border-top-color:#0a1628;
}
body.is-family-app .recruit-video .vball-lazy-video::before,
body.is-family-app .recruit-video__tap,
body.is-family-app .recruit-footage__chip:hover,
body.is-family-app .recruit-footage__chip:focus,
body.is-family-app .vball-lazy-video,
body.is-family-app .vball-video-out,
.vball-family .vball-lazy-video,
.vball-family .vball-video-out,
.vball-token-card .vball-lazy-video,
.vball-token-card .vball-video-out {
	background:#0a1628;
	color:#fff !important;
	border-color:#0a1628;
	box-shadow:none;
}

/* Check-in kiosk is also is-family-app — keep the dark full-screen. */
body.is-family-app.is-kiosk,
body.is-family-app.is-kiosk.scheme-dark {
	--vball-bg:#0a1628; --vball-card:#101a2c; --vball-text:#fff; --vball-ink:#fff;
	--vball-accent:#0a1628; --bg:#0a1628; --card:#101a2c; --text:#fff; --accent:#fff;
	background:#0a1628 !important;
	color:#fff !important;
}
html:has(body.is-family-app.is-kiosk) {
	background:#0a1628 !important;
	--vball-bg:#0a1628; --vball-accent:#0a1628; --bg:#0a1628; --accent:#fff;
}

/* Family recruiting send progress — counts only, not a staff list. */
.vball-recruit-send-family{margin:1.1rem 0 0;padding-top:.85rem;border-top:1px solid #dcdcde}
.vball-send-family-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 1rem}
.vball-send-family-kpi{background:#fff;border:1px solid #dcdcde;border-top:3px solid #0a1628;border-radius:12px;padding:10px 12px}
.vball-send-family-kpi span{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#646970;font-weight:700}
.vball-send-family-kpi strong{display:block;font-size:1.85rem;line-height:1.1;color:#0a1628;margin-top:4px}
.vball-send-family-list{margin:.35rem 0 0}


/* Signed terms + family billing. */
.vball-terms-family{margin:1rem 0 0;padding-top:.85rem;border-top:1px solid #dcdcde}
.vball-terms-family h3{color:#0a1628;margin:0 0 .4rem}
.vball-terms-page .vball-terms-meta{list-style:none;padding:0;margin:.4rem 0 1rem;display:flex;flex-wrap:wrap;gap:.6rem;color:#646970;font-size:.85rem}
.vball-terms-page .vball-terms-body{margin:1rem 0}
.vball-terms-page .vball-terms-body h1,.vball-terms-page .vball-terms-body h2{color:#0a1628}
.vball-family-status.is-declined,.vball-family-status.is-past_due{background:#fdecea;color:#b32d2e}
.vball-family-card-form{margin:.5rem 0 0}


/* phpList / Listmonk public subscribe — HUD theme can restyle later. */
.vball-listmonk{margin:1rem 0;padding:1rem 1.1rem;background:var(--vball-card,#fff);border:1px solid #dcdcde;border-top:3px solid var(--vball-navy,#0a1628);border-radius:12px;max-width:28rem}
.vball-listmonk__kicker{margin:0 0 .35rem;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--vball-muted,#646970)}
.vball-listmonk__intro,.vball-listmonk__notice,.vball-listmonk__msg{margin:.35rem 0}
.vball-listmonk__field{display:block;margin:.45rem 0}
.vball-listmonk__field span{display:block;font-size:.85rem;font-weight:600;margin-bottom:.15rem}
.vball-listmonk__field input{width:100%;min-height:44px;padding:.4rem .6rem;border:1px solid #c3c4c7;border-radius:8px}
.vball-listmonk__check{display:flex;gap:.5rem;align-items:flex-start;margin:.5rem 0}
.vball-listmonk__hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.vball-listmonk--footer{margin:1.5rem auto}

.vball-phplist{margin:1rem 0;padding:1rem 1.1rem;background:var(--vball-card,#fff);border:1px solid #dcdcde;border-top:3px solid var(--vball-navy,#0a1628);border-radius:12px;max-width:28rem}
.vball-phplist__kicker{margin:0 0 .35rem;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--vball-muted,#646970)}
.vball-phplist__intro,.vball-phplist__notice,.vball-phplist__msg{margin:.35rem 0}
.vball-phplist__field{display:block;margin:.45rem 0}
.vball-phplist__field span{display:block;font-size:.85rem;font-weight:600;margin-bottom:.15rem}
.vball-phplist__field input{width:100%;min-height:44px;padding:.4rem .6rem;border:1px solid #c3c4c7;border-radius:8px}
.vball-phplist__check{display:flex;gap:.5rem;align-items:flex-start;margin:.5rem 0}
.vball-phplist__hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.vball-phplist--footer{margin:1.5rem auto}
