@import "typography-0l2Z4eH.css";
@import "hero-ozxLjCa.css";

/* Club kit: royal blue, vivid pink, white and midnight navy.
   Bright pink is decorative; dark variants keep text and controls legible. */
:root {
    --ink: #0B1A3C;
    --ink2: #30466E;
    --muted: #536582;
    --line: #DCE5F5;
    --bg: #F5F7FF;
    --white: #fff;
    --club-navy: #0B1A3C;
    --club-blue: #0E4CD3;
    --club-blue-deep: #093AA9;
    --club-blue-soft: #EAF0FF;
    --club-pink: #FF2D8B;
    --club-pink-deep: #AA175B;
    --club-pink-bright: #FF72B5;
    --club-pink-light: #FF72B5;
    --club-pink-soft: #FFF0F7;
    --club-jersey-stripe: linear-gradient(90deg,
        var(--club-blue) 0 44%, #fff 44% 45.5%,
        var(--club-pink) 45.5% 54.5%, #fff 54.5% 56%,
        var(--club-blue) 56% 100%);
    --green: #157452;
    --red: #b33c4b;
    --radius: 16px;
}
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--bg); font-family:Onest,system-ui,-apple-system,"Segoe UI",sans-serif; font-size:16px; line-height:1.6; font-weight:400; min-height:100svh; display:flex; flex-direction:column; }
main { flex:1; }
button,input,select,textarea { font:inherit; }
a { color:inherit; text-decoration:none; }
button,summary { cursor:pointer; }
img,svg { max-width:100%; }
figure { margin:0; }
h1,h2,h3,h4,p { margin-top:0; overflow-wrap:anywhere; }
h1,h2,h3,h4,strong,b { font-weight:600; }
h1 { font-size:clamp(30px,3.2vw,42px); line-height:1.18; letter-spacing:-.035em; margin-bottom:14px; overflow-wrap:anywhere; }
h2 { font-size:clamp(24px,2.4vw,32px); line-height:1.25; letter-spacing:-.025em; margin-bottom:16px; }
h3 { font-size:20px; line-height:1.35; margin-bottom:10px; }
p { margin-bottom:18px; }
[hidden] { display:none!important; }
main,section,article,aside,.card,turbo-frame,.grid>* { min-width:0; }
:focus-visible { outline:3px solid var(--club-pink-deep); outline-offset:3px; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.skip-link { position:fixed; z-index:500; top:8px; left:8px; background:white; border:1px solid var(--line); border-radius:8px; padding:10px 16px; transform:translateY(-150%); }
.skip-link:focus { transform:translateY(0); }
.container { width:100%; max-width:1280px; margin-inline:auto; padding-inline:24px; }
.eyebrow { color:var(--club-pink-deep); font-size:12px; font-weight:600; letter-spacing:.08em; line-height:1.5; margin-bottom:12px; }
.muted { color:var(--muted); }
.small { font-size:14px; }
.plaintext { white-space:pre-line; overflow-wrap:anywhere; }
.button { min-height:46px; display:inline-flex; align-items:center; justify-content:center; gap:10px; padding:11px 18px; border:1px solid transparent; border-radius:10px; font-size:14px; font-weight:600; line-height:1.45; text-align:center; transition:background .15s,border-color .15s; }
.button svg,.text-link svg,.hero-secondary svg { width:19px; height:19px; flex:none; }
.button.primary,.button-primary { background:var(--club-blue); color:white; }
.button.primary:hover,.button-primary:hover { background:var(--club-blue-deep); }
.button.outline,.button-outline { color:var(--ink); background:white; border-color:#cedbe6; }
.button.outline:hover,.button-outline:hover { border-color:#8eaac1; background:#f5f9fc; }
.button.dark,.button-dark { color:white; background:var(--ink); }
.button.ghost { background:#eaf1f7; }
.button.sm { padding:9px 13px; min-height:42px; }
.button.block { width:100%; }
.button-row,.chips { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.text-link,.hero-secondary { display:inline-flex; align-items:center; gap:9px; min-height:42px; font-size:14px; font-weight:600; color:var(--club-pink-deep); }
.text-link:hover,.hero-secondary:hover { text-decoration:underline; text-underline-offset:4px; }
.card { border:1px solid var(--line); background:white; border-radius:var(--radius); overflow:hidden; }
.card.pad { padding:24px; }
.card.soft { background:#eff5f9; }
.card.hover { transition:box-shadow .15s,border-color .15s; }
.card.hover:hover { border-color:#b5c9da; box-shadow:0 10px 28px #233f5710; }
.grid { display:grid; gap:20px; }
.g2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.g3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.g4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.stack { display:flex; flex-direction:column; gap:14px; }
.split { display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.section { padding-block:36px; }
.section-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px; margin-bottom:24px; }
.section-head h2 { margin-bottom:0; }
.page-head { padding:32px 0 24px; }
.page-head p:last-child { color:var(--muted); margin-bottom:0; max-width:720px; }
.page-head .eyebrow { color:var(--club-pink-deep); }
.page { padding-bottom:36px; }
.tag,.status-badge,.pill { display:inline-flex; align-items:center; gap:6px; padding:5px 9px; border-radius:6px; font-size:12px; line-height:1.5; font-weight:500; background:var(--club-pink-soft); color:var(--club-pink-deep); }
.tag.gray,.pill { color:#52677c; background:#edf2f6; }
.tag.green,.status-confirmed { color:#176546; background:#e8f5ed; }
.tag.blue { color:var(--club-blue-deep); background:var(--club-blue-soft); }
.status-pending { color:#78551c; background:#fff5da; }
.status-rejected,.status-cancelled { color:#a23443; background:#faeaed; }
.chip { padding:9px 13px; border:1px solid var(--line); background:white; border-radius:8px; font-size:14px; }
.chip.on { border-color:var(--club-pink); color:var(--club-pink-deep); background:var(--club-pink-soft); }

/* Public navigation */
.site-header { min-height:76px; display:flex; align-items:center; gap:24px; padding:10px max(24px,calc((100vw - 1232px)/2)); background:white; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:100; }
.logo { flex:none; display:flex; align-items:center; }
.logo-img { width:140px; height:48px; object-fit:contain; mix-blend-mode:multiply; }
.site-nav { display:flex; align-items:center; gap:15px; margin-left:auto; min-width:0; }
.nav-link { display:block; font-size:13px; font-weight:500; color:#3d5268; padding:16px 0; white-space:nowrap; }
.nav-link:hover,.nav-link[aria-current=page] { color:var(--club-pink-deep); }
.header-actions { display:flex; gap:10px; flex:none; }
.header-actions .button { font-size:13px; padding-inline:13px; }
.mobile-toggle,.mobile-account,.mobile-bar { display:none; }
.account-menu { position:relative; }
.account-menu summary { cursor:pointer; }
.account-menu:not([open]) .account-nav { display:none; }
.account-nav { position:absolute; top:52px; right:0; min-width:224px; padding:8px; border:1px solid var(--line); border-radius:12px; background:white; box-shadow:0 12px 32px #172b4314; display:grid; gap:2px; }
.account-nav a,.nav-logout { display:flex; align-items:center; gap:8px; min-height:40px; padding:8px 10px; font-size:14px; border:0; border-radius:7px; background:none; text-align:left; width:100%; font-weight:400; color:var(--ink); }
.account-nav a:hover,.nav-logout:hover { background:#eef5fa; }
.account-nav svg { width:18px; height:18px; }
.account-nav form { margin:0; }

/* A club in motion */
.hero { background:linear-gradient(120deg,#fff 25%,#eef6fc); border-bottom:1px solid #e4edf4; }
.hero-layout { display:grid; grid-template-columns:1fr 1.06fr; align-items:center; gap:48px; padding-block:44px 28px; }
.hero-copy { padding-bottom:24px; }
.hero .eyebrow { margin-bottom:20px; }
.hero h1 { font-size:clamp(40px,4.2vw,58px); line-height:1.1; letter-spacing:-.045em; font-weight:600; margin-bottom:22px; }
.hero h1 span { color:var(--club-pink); }
.hero .lead { max-width:475px; color:#526981; font-size:17px; line-height:1.75; }
.hero-actions { margin-top:28px; gap:20px; }
.hero-actions .primary { min-height:50px; padding-inline:23px; }
.hero-note { display:flex; align-items:center; gap:10px; font-size:13px; color:var(--muted); margin-top:24px; }
.hero-note svg { width:19px; height:19px; color:var(--club-blue); flex:none; }
.hero-image { position:relative; }
.hero-photo { width:100%; height:auto; display:block; border-radius:18px; aspect-ratio:3/2; object-fit:cover; }
.photo-credit { color:#607387; font-size:10px; line-height:1.6; padding-top:9px; }
.photo-credit a { text-decoration:underline; text-underline-offset:2px; }
.home-content { padding-bottom:32px; }
.service-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; padding-block:24px; border-bottom:1px solid var(--line); }
.service { display:flex; align-items:center; gap:12px; padding:12px 18px; border-right:1px solid var(--line); }
.service:first-child { padding-left:0; }
.service:last-child { border-right:0; padding-right:0; }
.service .ico { flex:none; width:42px; height:42px; display:grid; place-items:center; color:var(--club-pink-deep); background:var(--club-pink-soft); border-radius:12px; }
.service:nth-child(2) .ico,.service:nth-child(4) .ico { color:var(--club-blue); background:#e9f3fb; }
.service .ico svg { width:22px; height:22px; }
.service strong { font-size:15px; font-weight:500; display:block; }
.service small { display:block; font-size:12px; color:var(--muted); margin-top:3px; }
.service-arrow { width:16px; height:16px; margin-left:auto; color:#6c849a; flex:none; }
.service:hover strong { color:var(--club-pink-deep); }
.home-story { display:grid; grid-template-columns:.85fr 1.15fr; gap:64px; align-items:center; padding-block:48px; }
.home-story-copy h2 { font-size:38px; margin-bottom:18px; }
.home-story-copy>p:not(.eyebrow) { color:var(--muted); max-width:440px; }
.school-invite { background:#eaf3fb; border-radius:18px; padding:32px; display:flex; gap:24px; align-items:start; position:relative; }
.school-invite h2 { font-size:28px; }
.school-invite p:not(.eyebrow) { color:#526d85; }
.school-invite-icon { width:54px; height:54px; flex:none; color:#356b9a; background:white; border-radius:14px; display:grid; place-items:center; }
.school-invite-icon svg { width:30px; height:30px; }
.home-community { border-top:1px solid var(--line); padding-block:32px; }
.community-line { display:flex; align-items:center; gap:18px; padding:22px 0; border-bottom:1px solid var(--line); }
.community-line>div { flex:1; }
.community-line h3 { font-size:18px; margin-bottom:5px; }
.community-line p { color:var(--muted); font-size:14px; margin:0; }
.community-icon { width:44px; height:44px; display:grid; place-items:center; background:var(--club-pink-soft); color:var(--club-pink-deep); border-radius:12px; flex:none; }
.community-icon svg { width:23px; height:23px; }
.community-icon.blue { background:var(--club-blue-soft); color:var(--club-blue); }
.home-events { margin-top:24px; }
.play-invite,.black-band { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:24px; background:var(--club-pink-soft); border:1px solid #F4C3DC; border-radius:16px; padding:28px 32px; margin-top:24px; }
.play-invite h2,.black-band h2 { font-size:27px; margin:0; }
.play-invite .eyebrow { margin-bottom:8px; }
.black-band p { margin-bottom:0; }

/* Booking is the main workspace, not a marketing page. */
turbo-frame { display:block; }
.booking-page-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding-block:28px 23px; }
.booking-page-head h1 { color:var(--club-navy); font-weight:750; letter-spacing:-.045em; }
.booking-page-head .eyebrow { display:flex; align-items:center; gap:10px; }
.booking-page-head .eyebrow::before { content:""; width:23px; height:3px; flex:none; border-radius:2px; background:var(--club-pink); }
.booking-page-head .eyebrow { margin-bottom:5px; }
.booking-page-head h1 { margin:0; font-size:32px; }
.booking-section { padding-bottom:32px; }
.booking-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:24px; align-items:start; }
.booking-workspace { display:block; position:relative; }
.booking-calendar { padding:26px; overflow:visible; border-color:#D2DDF2; background:#fff; box-shadow:0 6px 24px #0B1A3C0A; }
.booking-filters { display:grid; grid-template-columns:1fr 1.4fr auto; align-items:end; gap:16px; padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--line); }
.booking-filters>div { min-width:0; }
.booking-filters label { display:block; font-size:13px; font-weight:650; margin-bottom:6px; color:var(--ink2); }
input,select,textarea { max-width:100%; }
.booking-filters input,.booking-filters select,.club-form input,.club-form select,.club-form textarea,.school-form input,.school-form select,.school-form textarea,.login-card input { width:100%; min-width:0; min-height:44px; padding:10px 12px; font-size:16px; line-height:1.5; border:1px solid #bdcede; border-radius:8px; background:white; color:var(--ink); }
.booking-duration { grid-column:1/-1; grid-row:2; min-width:0; margin:0; padding:0; border:0; }
.booking-duration legend { font-size:13px; font-weight:500; margin-bottom:8px; padding:0; }
.duration-choices { display:flex; flex-wrap:wrap; gap:8px; }
.booking-filters .duration-choices label { position:relative; display:block; margin:0; cursor:pointer; }
.booking-filters .duration-choices input { position:absolute; opacity:0; width:1px; min-height:0; height:1px; padding:0; }
.duration-choices span { display:flex; align-items:center; justify-content:center; min-height:44px; min-width:88px; padding:10px 18px; border:1px solid #bdcede; border-radius:8px; color:var(--ink); background:white; font-size:15px; }
.duration-choices input:checked+span { border-color:var(--club-pink); background:var(--club-pink-soft); color:var(--club-pink-deep); box-shadow:inset 0 0 0 1px var(--club-pink); font-weight:600; }
.duration-choices input:focus-visible+span { outline:3px solid #b9d6f1; outline-offset:2px; }
.duration-choices label:hover span { border-color:var(--club-pink); }
.booking-filters .button { min-height:46px; }
.booking-filters input:focus-visible,.booking-filters select:focus-visible { border-color:var(--club-blue); outline:3px solid #0E4CD32B; outline-offset:1px; }
.week { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; }
.day { display:flex; flex-direction:column; align-items:center; padding:8px 4px; border-radius:9px; border:1px solid #e2e9f1; background:#f8fafc; line-height:1.35; min-width:0; }
.day strong { font-size:19px; font-weight:500; }
.day small { color:#536a7f; font-size:11px; }
.day.on { border-color:var(--club-navy); background:var(--club-navy); color:#fff; box-shadow:inset 0 -3px 0 var(--club-pink); }
.day.on small { color:#DCE6FA; }
.booking-days-nav .day { transition:background .18s,border-color .18s,transform .18s,box-shadow .18s; }
.booking-days-nav .day:hover:not([aria-current]) { background:var(--club-blue-soft); border-color:var(--club-blue); transform:translateY(-2px); }
.booking-days-nav .day:focus-visible { outline:3px solid var(--club-pink-deep); outline-offset:2px; }
.booking-meta { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin:16px 0; }
.booking-meta p { font-size:12px; color:var(--muted); margin:0; }
.booking-legend { display:flex; flex-wrap:wrap; gap:14px; font-size:12px; }
.legend-available { color:var(--green); }.legend-busy { color:var(--red); }.legend-closed { color:#667387; }
.booking-table-choice>summary { display:flex; justify-content:space-between; gap:16px; align-items:center; font-size:19px; font-weight:700; color:var(--club-navy); padding:10px 0 10px 13px; border-left:3px solid var(--club-pink); list-style:none; }
.booking-table-choice>summary .muted { font-size:13px; font-weight:400; }
.booking-help { color:var(--muted); font-size:13px; margin:6px 0 14px; }
.booking-grid-scroll { overflow:auto; max-height:470px; max-width:100%; border:1px solid #D4E1F5; border-radius:12px; overscroll-behavior:contain; }
.availability-grid { border-collapse:separate; border-spacing:0; width:100%; min-width:calc(76px + var(--table-count,4) * 112px); table-layout:fixed; background:white; }
.availability-grid th { background:var(--club-blue-soft); color:var(--club-navy); padding:12px 8px; font-size:13px; font-weight:600; border-bottom:1px solid #dce7ef; text-align:center; overflow-wrap:anywhere; }
.availability-grid thead th { position:sticky; top:0; z-index:3; }
.availability-grid thead th:first-child { width:76px; left:0; z-index:4; }
.availability-grid tbody th { position:sticky; left:0; z-index:2; background:#f5f8fb; font-variant-numeric:tabular-nums; font-size:13px; font-weight:400; padding:7px; }
.availability-grid td { padding:3px; border-bottom:1px solid #edf2f6; }
.slot { display:flex; align-items:stretch; min-height:40px; text-align:center; border-radius:6px; font-size:12px; font-weight:500; background:#F7FBF9; color:#176747; }
.slot a,.slot>span { position:relative; display:flex; align-items:center; justify-content:center; width:100%; min-height:40px; padding:8px 4px; border:1px solid #D6E8DD; border-radius:6px; }
.slot a:hover { background:#E8F5EF; border-color:#73B493; }
.slot-busy { color:#a33d4b; background:#fbecef; }.slot-busy>span { border-color:#f2d8de; }
.slot-closed { color:#536a7f; background:#eff2f6; }.slot-closed>span { border-color:#e0e5ec; }
.slot.selected a { background:var(--club-pink-deep); border-color:var(--club-pink-deep); color:white; box-shadow:0 0 0 2px #AA175B24; }
.slot a[aria-current=true]::after { content:'✓'; padding-left:5px; }
.booking-quick { margin-top:20px; border-top:1px solid var(--line); }
.booking-quick>summary,.booking-rules-panel>summary { padding:16px 0; min-height:48px; font-size:14px; font-weight:500; }
.booking-quick>p { margin-bottom:14px; }
.booking-time-period { border:1px solid var(--line); background:#f8fbfd; border-radius:9px; margin-bottom:10px; }
.booking-time-period>summary { display:flex; align-items:center; gap:10px; list-style:none; padding:12px 14px; font-size:14px; font-weight:500; }
.booking-time-period>summary::after { content:'+'; font-size:20px; }
.booking-time-period[open]>summary::after { content:'−'; }
.period-count { margin-left:auto; color:var(--muted); font-size:12px; font-weight:400; }
.booking-quick-times { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:0 12px 12px; gap:8px; }
.booking-quick-times .button { flex-direction:column; gap:3px; padding:9px 6px; border-color:#cce2d5; }
.booking-quick-times strong { font-weight:500; font-size:14px; }
.booking-quick-times small { font-size:12px; color:var(--muted); }
.booking-rules-panel { margin-top:12px; border-top:1px solid var(--line); }
.booking-rules { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.booking-rules strong,.booking-rules p { font-size:13px; }
.booking-rules p { color:var(--muted); }
/* An actionable booking ticket: context, selected period, then confirmation. */
.booking-workspace .booking-summary {
    position: sticky;
    top: 86px;
    z-index: 20;
    display: grid;
    grid-template-columns: minmax(200px,1.04fr) minmax(315px,1.22fr) auto;
    align-items: center;
    gap: clamp(12px,2vw,24px);
    margin: 10px 0 24px;
    padding: 18px 20px;
    border: 1px solid #30456F;
    border-radius: 16px;
    color: #F7FAFF;
    background: linear-gradient(112deg,var(--club-navy) 0%,#142B59 65%,#1C386D 100%);
    box-shadow: 0 16px 32px #0B1A3C23,0 3px 8px #0B1A3C12;
    isolation: isolate;
    overflow: clip;
}
.booking-workspace .booking-summary::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: linear-gradient(180deg,var(--club-pink),var(--club-pink-light));
    pointer-events: none;
}
.booking-summary__identity { display: flex; align-items: center; gap: 13px; min-width: 0; }
.booking-summary__icon {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    flex: none;
    color: #FFB8D8;
    background: #FFFFFF12;
    border: 1px solid #FFFFFF30;
    border-radius: 12px;
}
.booking-summary__icon svg { width: 24px; height: 24px; }
.booking-summary__context { display: grid; gap: 4px; min-width: 0; }
.booking-summary__eyebrow { color: #FFB8D8; font-size: 10px; font-weight: 750; letter-spacing: .13em; line-height: 1.3; }
.booking-summary__meta { color: #DAE4F6; font-size: 13px; line-height: 1.4; overflow-wrap: anywhere; }
.booking-summary__selection {
    display: grid;
    grid-template-columns: minmax(65px,.75fr) minmax(110px,1.25fr) minmax(85px,.9fr);
    align-items: stretch;
    min-width: 0;
}
.booking-summary__field {
    display: grid;
    align-content: center;
    gap: 4px;
    min-width: 0;
    padding: 1px 14px;
    border-left: 1px solid #FFFFFF32;
}
.booking-summary__label { color: #AFC3E8; font-size: 10px; line-height: 1.3; letter-spacing: .06em; text-transform: uppercase; font-weight: 650; }
.booking-summary__field strong { color: #fff; font-size: 18px; line-height: 1.3; font-weight: 750; white-space: nowrap; }
.booking-summary__field--time strong { font-size: 20px; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.booking-summary__duration { color: #E1EAF9; font-size: 14px; font-weight: 600; white-space: nowrap; }
.booking-summary__actions { display: flex; align-items: center; justify-self: end; gap: 9px; min-width: 0; }
.booking-summary__actions .button.primary {
    min-height: 46px;
    padding: 11px 17px;
    white-space: nowrap;
    background: var(--club-blue);
    border-radius: 10px;
    box-shadow: inset 0 1px #FFFFFF26;
    transition: background .18s,transform .18s,box-shadow .18s;
}
.booking-summary__actions .button.primary:hover { background: var(--club-blue-deep); transform: translateY(-1px); box-shadow: 0 7px 18px #07153852; }
.booking-summary__actions .button.primary:focus-visible,.booking-summary__actions .booking-clear:focus-visible { outline: 3px solid #FFA7D2; outline-offset: 3px; }
.booking-summary__actions .booking-clear {
    display: grid;
    place-items: center;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    border: 1px solid #FFFFFF4A;
    border-radius: 10px;
    background: #FFFFFF0F;
    color: #E0E9F8;
    transition: background .18s,border-color .18s;
}
.booking-summary__actions .booking-clear svg { width: 20px; height: 20px; }
.booking-summary__actions .booking-clear:hover { background: #FF2D8B33; border-color: var(--club-pink-light); color: #fff; }
.booking-callout { display:flex; align-items:center; flex-wrap:wrap; justify-content:space-between; gap:20px; padding:22px 24px; border:1px solid #D5E1F5; border-left:3px solid var(--club-pink); border-radius:12px; background:var(--club-blue-soft); margin-top:20px; }
.booking-callout h3 { margin-bottom:6px; }.booking-callout p { margin:0; color:var(--muted); font-size:14px; }
.booking-confirmation { grid-template-columns:minmax(250px,340px) minmax(0,1fr); }
.confirmation-page { padding-top:0; }
.confirmation-page>.page-head { padding-top:28px; }
.booking-confirmation-summary h2 { font-size:24px; margin-bottom:6px; }
.booking-confirmation-summary p { font-size:14px; margin-bottom:12px; }.confirmation-place { min-width:0; }
.booking-confirmation-summary .eyebrow { font-size:11px; }
.confirmation-rules { border-top:1px solid var(--line); margin-top:14px; }
.confirmation-rules>summary,.booking-note>summary { padding:12px 0; font-size:13px; font-weight:500; cursor:pointer; }
.confirmation-rules p { color:var(--muted); font-size:13px; }
.booking-note { border-top:1px solid var(--line); margin-top:20px; }
.booking-note label { margin-top:6px; }
.gallery-description { margin-bottom:20px; }
.gallery-description>summary { color:var(--muted); font-size:14px; cursor:pointer; padding-block:6px; }
.gallery-description p { margin-top:12px; }
.gallery-grid figcaption { max-height:5.5em; overflow:auto; }
.booking-scroll-hint { display:none; }
.summary-row { display:flex; align-items:baseline; justify-content:space-between; gap:16px; padding:13px 0; border-bottom:1px solid var(--line); font-size:14px; }
.summary-row span { color:var(--muted); }.summary-row strong { max-width:65%; text-align:right; overflow-wrap:anywhere; }
.booking-form-card,.login-card { padding:28px; border:1px solid var(--line); border-radius:16px; background:white; }
.booking-form-card h2 { font-size:25px; }
.booking-period-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.club-form label,.school-form label,.login-card label { display:block; font-size:14px; font-weight:500; margin:18px 0 7px; }
.club-form textarea,.school-form textarea { min-height:100px; resize:vertical; }
.club-form button,.school-form button,.login-card form button { margin-top:20px; }
.club-form .help-text,.club-form .form-text,.form-help { color:var(--muted); font-size:13px; }
.form-error,form ul { color:#a33443; }.form-error { background:#fbeef0; border:1px solid #efd0d7; padding:16px; border-radius:9px; margin:14px 0; }
.info,.flash,.school-notice { background:#edf5fa; border:1px solid #d5e4ef; padding:16px; border-radius:10px; color:#4e697f; font-size:14px; }
.flash { margin-top:16px; }.flash-error { background:#fbeef0; border-color:#efd0d7; color:#a33443; }
.booking-toolbar { display:flex; align-items:start; justify-content:space-between; flex-wrap:wrap; gap:20px; margin-bottom:24px; }
.booking-toolbar>div { min-width:0; flex:1 1 260px; }.booking-toolbar h2 { font-size:24px; }
.booking-admin-tools { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:24px; }.booking-admin-tools h2 { font-size:21px; }.booking-admin-tools p { font-size:14px; color:var(--muted); margin:0; }
.booking-subtitle { margin-top:32px; font-size:25px; }
.reservation-card { display:flex; align-items:center; gap:22px; flex-wrap:wrap; background:white; border:1px solid var(--line); border-radius:14px; padding:22px; margin:14px 0; }
.reservation-date { text-align:center; min-width:64px; background:#edf4fa; color:#285f8c; border-radius:10px; padding:10px; }.reservation-date strong { display:block; font-size:27px; font-weight:500; }.reservation-date span { font-size:12px; }
.reservation-info { flex:1; min-width:170px; }.reservation-info h3 { margin:8px 0; font-size:20px; overflow-wrap:anywhere; }.reservation-info p { margin:4px 0; font-size:14px; color:var(--muted); overflow-wrap:anywhere; }.reservation-card form { margin:0; }

/* Editorial pages and member spaces */
.empty-state { display:flex; align-items:center; gap:22px; padding:32px; background:linear-gradient(110deg,#fff,#eff6fb); border:1px solid var(--line); border-radius:16px; }
.empty-state p { color:var(--muted); margin:0; max-width:680px; }.empty-state :is(h2,h3) { font-size:22px; margin-bottom:9px; }
.empty-icon { width:72px; height:72px; flex:none; display:grid; place-items:center; border-radius:19px; color:#4c7da6; background:#deedf8; }.empty-icon svg { width:35px; height:35px; }
.gallery-next { display:flex; align-items:center; flex-wrap:wrap; gap:24px; margin-top:24px; }
.news-card .text-block { padding:22px; }.news-card h3 { font-size:21px; }.news-card p { font-size:14px; color:var(--muted); }.news-card .meta { font-size:12px; color:var(--muted); margin-bottom:10px; }.news-card .arrow { display:inline-flex; align-items:center; gap:6px; font-size:14px; color:var(--club-pink-deep); font-weight:500; }.news-card .arrow svg { width:17px; height:17px; }
.thumb { display:block; height:210px; background:#eaf1f6; position:relative; overflow:hidden; }.thumb img { width:100%; height:100%; object-fit:cover; }.thumb .tag { position:absolute; bottom:12px; left:12px; }
.article-placeholder { display:flex; align-items:center; justify-content:center; color:#6e91ad; background:#e5f0f8; }.article-placeholder>svg { width:50px; height:50px; }
.page-intro-grid,.features,.about-hero { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr); gap:40px; align-items:start; }.page-intro-copy { min-width:0; }.page-action-card { background:#eaf3fb; padding:28px; border-radius:16px; }.page-action-card h2 { font-size:27px; }.page-action-card p { color:var(--muted); }
.article { display:grid; grid-template-columns:minmax(0,1fr) 290px; gap:32px; align-items:start; }.article-page { padding-top:32px; }.article-page h1 { max-width:1000px; }.detail-eyebrow,.detail-date { margin-top:20px; }.article-lead { font-size:18px; color:#526b82; }.article-body,.article .body p { color:#405a72; font-size:16px; line-height:1.85; }.article-cover { width:100%; max-height:460px; object-fit:cover; border-radius:14px; margin:20px 0; display:block; }.article .article-img { height:340px; background-size:cover; background-position:center; border-radius:14px; }.article-body { margin:18px 0 28px; }
.coach-card .photo { width:100%; height:270px; object-fit:cover; object-position:center top; }.coach-card .content { padding:22px; }.coach-card p { font-size:14px; color:var(--muted); }.coach-card h3 { margin-top:12px; }.photo { background-size:cover; background-position:center; }.concept-photo img { width:100%; object-fit:cover; display:block; }.concept-photo figcaption { font-size:12px; color:var(--muted); padding-top:8px; }.picture-large { min-height:300px; border-radius:14px; }
.event-card { display:grid; grid-template-columns:72px minmax(0,1fr); gap:20px; padding:24px; }.event-date { background:var(--club-pink-soft); border-radius:10px; text-align:center; padding:12px 5px; color:var(--club-pink-deep); }.event-date b { display:block; font-size:30px; font-weight:500; }.event-date small { font-size:12px; }.event-card h3 { font-size:21px; }.event-card p { font-size:14px; color:var(--muted); }
.gallery-section { margin-bottom:32px; }.gallery-grid { display:grid; grid-template-columns:2fr 1fr 1fr; grid-auto-rows:220px; gap:16px; }.gallery-grid figure { position:relative; border-radius:12px; overflow:hidden; background:white; }.gallery-grid figure:first-child { grid-row:span 2; }.gallery-grid img { width:100%; height:100%; object-fit:cover; display:block; }.gallery-grid a { height:100%; display:block; }.gallery-grid figcaption,.photo-label { position:absolute; bottom:12px; left:12px; right:12px; border-radius:7px; padding:7px 11px; color:white; background:#172b43d9; font-size:12px; }
.login-section { display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; padding-block:44px; max-width:1080px; }.login-intro h1 { font-size:40px; }.login-card .text-link { margin-top:16px; }
.app-shell { display:grid; grid-template-columns:224px minmax(0,1fr); min-height:65vh; }.sidebar { background:white; padding:22px 14px; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:5px; }.sidebar .side-label { color:var(--muted); font-size:11px; font-weight:500; padding:14px 12px 8px; letter-spacing:.06em; }.sidebar a { display:block; padding:11px 12px; color:#4b657d; border-radius:8px; font-size:14px; font-weight:500; }.sidebar a:hover { background:#edf5fb; }.sidebar a[aria-current=page],.sidebar a.active { color:var(--club-pink-deep); background:var(--club-pink-soft); }.app-content { padding:28px 32px; min-width:0; }.dash-header { display:flex; justify-content:space-between; align-items:start; flex-wrap:wrap; gap:18px; margin-bottom:24px; }.dash-header h1 { font-size:32px; margin-bottom:8px; }.dash-header p { color:var(--muted); margin:0; }.dash-grid { display:grid; grid-template-columns:1.35fr 1fr; gap:20px; }
.stats,.portal-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:24px; }.stat { padding:18px; border:1px solid var(--line); border-radius:12px; background:white; }.stat .num { display:block; font-size:30px; font-weight:500; line-height:1.25; margin:7px 0; }.stat small { font-size:13px; color:var(--muted); }
.school-portal h2 { font-size:26px; margin-top:28px; }.school-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin:20px 0 28px; }.school-card { border:1px solid var(--line); border-radius:14px; padding:24px; background:white; }.school-card h3 { font-size:22px; margin-top:12px; }.school-card p,.school-card li { font-size:14px; }.school-card ul { padding-left:18px; line-height:1.8; }.school-important { border-left:3px solid var(--club-pink); }.school-empty { padding:20px; border:1px solid var(--line); border-radius:12px; background:white; color:var(--muted); }.school-table-wrap { overflow:auto; border:1px solid var(--line); border-radius:10px; }.school-table { border-collapse:collapse; width:100%; min-width:520px; font-size:14px; background:white; }.school-table th,.school-table td { padding:14px; border-bottom:1px solid var(--line); text-align:left; }.school-table th { background:#edf4fa; font-weight:500; }.school-table caption { padding:14px; text-align:left; background:white; }
.notification-list .empty-state { display:block; }
.notification-list { display:grid; gap:14px; margin:24px 0; }.notification-list h2 { font-size:22px; }.notification-list form { margin-top:16px; }.notification-unread { border-left:3px solid var(--club-pink); }

/* A quiet, useful footer */
.footer { margin-top:36px; background:white; border-top:1px solid var(--line); color:#5b7187; padding:32px 0 22px; }
.footer .grid { grid-template-columns:1.6fr 1fr 1fr 1fr; gap:32px; }
.footer-logo { width:140px; height:46px; object-fit:contain; mix-blend-mode:multiply; }
.footer .brand>span { display:none; }.footer .brand { display:inline-flex; }
.footer h2 { font-size:14px; font-weight:500; margin-bottom:12px; color:var(--ink); }
.footer p { font-size:13px; margin:12px 0 0; }.footer a:not(.brand) { display:block; font-size:13px; padding:4px 0; }.footer a:hover { color:var(--club-pink-deep); }.footer-city { font-size:13px; display:block; margin-top:8px; }.footer-bottom { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; border-top:1px solid #edf2f6; padding-top:18px; margin-top:24px; font-size:11px; color:#526d7f; }

@media (max-width:1280px) { .header-actions { display:none; }.mobile-account { display:block; }.site-nav { gap:14px; } }
@media (max-width:1100px) {
    .site-nav { display:none; position:absolute; top:75px; left:0; right:0; padding:14px 24px; background:white; box-shadow:0 12px 24px #172b4314; flex-direction:column; align-items:stretch; gap:0; max-height:calc(100dvh - 150px); overflow:auto; }
    .site-nav.is-open { display:flex; }.site-nav .nav-link { padding:12px; font-size:16px; }.site-nav .nav-link[aria-current=page] { border-radius:5px; }
    .mobile-toggle { display:flex; align-items:center; justify-content:center; width:44px; height:44px; margin-left:auto; border:1px solid var(--line); background:white; border-radius:9px; }
    .account-nav { position:static; min-width:0; border:0; box-shadow:none; padding:4px 8px; }
    .hero-layout { gap:30px; }.service { padding-inline:12px; }.service small { font-size:11px; }.service-arrow { display:none; }
    .home-story { gap:32px; }.school-invite { padding:24px; gap:18px; }.school-invite-icon { display:none; }
    .booking-layout,.article { grid-template-columns:minmax(0,1fr); }.booking-workspace { display:block; }
    .app-shell { grid-template-columns:190px minmax(0,1fr); }.app-content { padding:24px; }.dash-grid { grid-template-columns:minmax(0,1fr); }.stats,.portal-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:767px) {
    html { scroll-padding-bottom:calc(88px + env(safe-area-inset-bottom)); }
    body.is-browser { padding-bottom:calc(72px + env(safe-area-inset-bottom)); }
    body.is-browser :is(input,select,textarea,button,a,summary,[tabindex]) { scroll-margin-bottom:calc(88px + env(safe-area-inset-bottom)); }
    .container { padding-inline:16px; }.site-header { min-height:66px; padding:8px 16px; gap:16px; }.logo-img { width:132px; height:44px; }.site-nav { top:65px; padding-inline:16px; }
    h1 { font-size:30px; }h2 { font-size:25px; }.section { padding-block:28px; }.page-head { padding:26px 0 20px; }.page { padding-bottom:24px; }
    .hero-layout { grid-template-columns:minmax(0,1fr); padding-block:28px 20px; gap:22px; }.hero-copy { padding-bottom:0; }.hero .eyebrow { margin-bottom:14px; }.hero h1 { font-size:clamp(37px,10.5vw,48px); margin-bottom:17px; }.hero .lead { font-size:16px; line-height:1.7; margin-bottom:20px; }.hero-actions { margin-top:20px; gap:18px; }.hero-actions .primary { padding-inline:18px; }.hero-note { margin-top:18px; font-size:12px; }.hero-photo { border-radius:13px; }.photo-credit { font-size:10px; }
    .service-grid { grid-template-columns:repeat(2,minmax(0,1fr)); padding-block:16px; gap:4px 12px; }.service { padding:12px 0; border:0; gap:10px; }.service .ico { width:36px; height:36px; border-radius:10px; }.service .ico svg { width:20px; height:20px; }.service strong { font-size:13px; }.service small { font-size:11px; }
    .home-story { grid-template-columns:minmax(0,1fr); padding-block:30px; gap:28px; }.home-story-copy h2 { font-size:31px; }.home-story-copy h2 br { display:none; }.school-invite { padding:24px; }.school-invite h2 { font-size:26px; }.home-community { padding-block:28px; }.community-line { flex-wrap:wrap; gap:12px; padding:20px 0; }.community-line>div { flex-basis:200px; }.community-line>.text-link { margin-left:56px; min-height:36px; }.community-line h3 { font-size:17px; }.community-line p { font-size:13px; }
    .play-invite,.black-band { padding:24px; gap:20px; }.play-invite h2,.black-band h2 { font-size:25px; }.play-invite .button { width:100%; }
    .g2,.g3,.g4,.page-intro-grid,.features,.about-hero,.login-section { grid-template-columns:minmax(0,1fr); }.card.pad { padding:20px; }.section-head { gap:12px; margin-bottom:18px; }
    .booking-page-head { gap:12px; padding-block:20px 16px; }.booking-page-head h1 { font-size:28px; }.booking-page-head>.button { font-size:13px; min-height:40px; padding:8px 12px; }
    .booking-calendar { padding:16px; }.booking-filters { grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:12px; padding-bottom:16px; margin-bottom:16px; }.booking-filters>div:nth-child(1) { grid-column:1/-1; }.booking-filters>div:nth-child(2) { grid-column:1; grid-row:2; }.booking-filters>.button { grid-column:2; grid-row:2; }.booking-duration { grid-row:3; }.duration-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }.duration-choices span { min-width:0; padding-inline:8px; }.booking-filters label { font-size:12px; }.booking-filters .button { padding-inline:10px; }
    .week { gap:4px; }.day { padding:7px 1px; border-radius:7px; }.day strong { font-size:17px; }.day small { font-size:10px; }.booking-meta { margin-block:12px; gap:7px; }.booking-meta p { font-size:11px; }.booking-legend { font-size:11px; gap:12px; }
    .booking-table-choice>summary { font-size:17px; flex-wrap:wrap; gap:2px; }.booking-table-choice>summary .muted { font-size:12px; }.booking-help { font-size:12px; margin-bottom:10px; }.booking-grid-scroll { max-height:420px; }.availability-grid { min-width:calc(60px + var(--table-count,4) * 112px); }.availability-grid th { font-size:12px; padding:10px 6px; }.availability-grid thead th:first-child { width:60px; }.slot { font-size:12px; }.slot a,.slot>span { min-height:42px; }
    .booking-quick-times { grid-template-columns:repeat(2,minmax(0,1fr)); }.booking-rules { grid-template-columns:minmax(0,1fr); gap:5px; }.booking-callout { padding:20px; }.booking-callout h3 { font-size:19px; }
    body.is-native .booking-workspace .booking-summary { top:12px; }
    .booking-confirmation,.booking-period-fields { grid-template-columns:minmax(0,1fr); }.booking-confirmation { gap:12px; }.booking-period-fields { gap:0; }.booking-confirmation-summary { padding:16px 18px; display:flex; align-items:start; gap:16px; }.booking-confirmation-summary .confirmation-place { flex:1; }.booking-confirmation-summary .confirmation-place p { margin-bottom:0; }.booking-confirmation-summary>.text-link { flex:none; font-size:13px; }.booking-confirmation-summary h2 { font-size:18px; }.booking-confirmation .booking-form-card h2 { font-size:21px; }.booking-confirmation .club-form label { margin-top:12px; }.booking-confirmation-summary .text-link { min-height:34px; }.booking-scroll-hint { display:block; margin:6px 0 10px; font-size:11px; color:var(--muted); }.booking-form-card,.login-card { padding:20px; }.booking-admin-tools { grid-template-columns:minmax(0,1fr); gap:12px; }.reservation-card { padding:18px; gap:16px; }.reservation-card form { width:100%; }.reservation-card form .button { width:100%; }.reservation-info h3 { font-size:19px; }
    .empty-state { align-items:start; padding:24px; gap:18px; }.empty-state :is(h2,h3) { font-size:21px; }.empty-icon { width:48px; height:48px; border-radius:13px; }.empty-icon svg { width:26px; height:26px; }.empty-state p { font-size:14px; }.gallery-next { gap:16px; }
    .page-action-card { padding:24px; }.page-intro-grid { gap:24px; }.article-lead { font-size:17px; }.article-cover { max-height:280px; }.login-section { gap:24px; padding-block:28px; }.login-intro h1 { font-size:32px; }
    .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-rows:160px; grid-template-rows:220px; gap:12px; }.gallery-grid figure:first-child { grid-column:span 2; grid-row:span 1; }.event-card { grid-template-columns:60px minmax(0,1fr); gap:14px; padding:20px; }.event-card h3 { font-size:19px; }
    .app-shell { display:block; }.sidebar { display:none; }.app-content { padding:24px 16px; }.dash-header h1 { font-size:29px; }.school-grid { grid-template-columns:minmax(0,1fr); }.school-card { padding:20px; }.stat { padding:16px; }.stat .num { font-size:27px; }
    .footer { margin-top:28px; padding-block:28px 20px; }.footer .grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }.footer-bottom { font-size:11px; margin-top:20px; }.footer-logo { width:132px; height:44px; }
    .mobile-bar { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); position:fixed; bottom:0; left:0; right:0; z-index:120; border-top:1px solid var(--line); background:#fffffffa; padding:5px 4px calc(5px + env(safe-area-inset-bottom)); min-height:70px; }
    .mobile-bar a { display:flex; align-items:center; justify-content:center; flex-direction:column; gap:4px; padding:5px 2px; min-height:58px; font-size:11px; font-weight:500; color:#526d7f; border-radius:9px; }.mobile-bar svg { display:block; width:22px; height:22px; }.mobile-bar a[aria-current=page] { color:var(--club-pink-deep); background:var(--club-pink-soft); }
}
@media (max-width:359px) { .hero-actions { gap:10px; }.hero-actions .primary { padding-inline:14px; }.hero-secondary { font-size:13px; }.empty-state { flex-direction:column; }.community-line>div { flex-basis:170px; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }

/* A grid step is part of one contiguous booking, not a separate reservation. */
.slot>button {position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:40px;padding:8px 4px;border:1px solid #D6E8DD;border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer;}
.slot.selected>button {background:var(--club-pink-deep);border-color:var(--club-pink-deep);color:white;}
.slot.selected:not(:has([aria-current=true])) {box-shadow:inset 3px 0 var(--club-pink);}
.slot.range-preview:not(.selected)>a,.slot.range-preview:not(.selected)>button {background:#d9eafa;border-color:#76a7cc;color:#1f527b;}

.booking-selection-message {font-size:13px;margin:0 0 12px;color:var(--club-blue-deep);}
.booking-selection-message:empty {display:none;}
.booking-selection-message.is-error {color:#a52b39;background:#fff0f2;border-left:3px solid #bb3d4d;padding:10px 12px;border-radius:4px;}
@media(max-width:767px){.booking-workspace .booking-summary {gap:8px;}.booking-summary .button {font-size:12px;padding-inline:10px;}.slot>button {min-height:42px;}}

/* One booking flow: date, table, start and end. No separate duration step. */
.booking-filters {grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);}
.booking-filters>noscript {grid-column:1/-1;}
.booking-filters noscript>.button {margin-top:12px;}
.booking-date-picker {display:flex;align-items:center;gap:8px;}
.booking-date-picker input {flex:1;min-width:0;}
.calendar-trigger {display:inline-flex;align-items:center;gap:6px;flex:none;min-height:46px;border:1px solid #bdcede;border-radius:8px;background:#edf4fb;color:#285c8d;padding:9px 12px;font-size:14px;}
.calendar-trigger svg {width:18px;height:18px;}
.booking-days-nav {display:flex;align-items:stretch;gap:8px;min-width:0;}
.week {display:flex;flex:1;min-width:0;overflow-x:auto;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:none;padding-block:2px;}
.week::-webkit-scrollbar { display:none; }
.week .day {flex:0 0 calc((100% - 48px)/7);min-width:62px;scroll-snap-align:center;}
.day-nav {display:flex;align-items:center;justify-content:center;flex:none;width:36px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--club-blue-deep);margin-block:2px;}
.day-nav svg {width:20px;height:20px;}
.day-nav:hover:not([aria-disabled=true]) { border-color:var(--club-blue); background:var(--club-blue-soft); }
.day-nav[aria-disabled=true] {opacity:.38;cursor:default;background:#F7F9FE;color:var(--muted);}
@media(max-width:767px){.booking-filters {grid-template-columns:minmax(0,1fr);}.booking-filters>div:nth-child(1),.booking-filters>div:nth-child(2) {grid-column:1;grid-row:auto;}.booking-days-nav {gap:5px;}.day-nav {width:28px;}.week .day {flex-basis:58px;min-width:58px;}.calendar-trigger {font-size:13px;padding-inline:10px;}}

/* Show all hours in the page; only table columns scroll on narrow screens. */
.booking-grid-scroll { max-height: none; overflow-x: auto; overflow-y: hidden; overscroll-behavior: auto; }
.availability-grid { min-width: calc(76px + var(--table-count,4) * 144px); }
/* Color, icon and wording agree in the grid and its legend. */
.booking-workspace { --slot-selected: var(--club-pink-deep); }
.booking-legend > span { display: inline-flex; align-items: center; gap: 5px; }
.booking-legend svg { width: 16px; height: 16px; flex: none; }
.legend-busy { color: #963444; }
.legend-selected { padding: 2px 6px; border-radius: 4px; background: var(--slot-selected); color: #fff; }
.slot { position: relative; min-height: 56px; }
.slot > a, .slot > button:not(.slot-remove), .slot > .slot-status { min-height: 56px; }
.slot-busy { color: #963444; background: #fbecef; }
.slot > .slot-status { gap: 6px; }
.slot-status svg { width: 21px; height: 21px; flex: none; }
.slot-selection-state { display: none; align-items: center; justify-content: center; gap: 3px; font-size: 10px; line-height: 1.2; }
.slot-selection-state svg { width: 14px; height: 14px; flex: none; }
.slot.selected .slot-selection-state { display: flex; }
.slot.selected > a, .slot.selected > button:not(.slot-remove) { flex: 1; flex-direction: column; gap: 3px; min-width: 0; width: auto; padding-inline: 2px; border-radius: 6px 0 0 6px; border-color: var(--slot-selected); background: var(--slot-selected); color: #fff; }
.slot.selected:not(:has([aria-current=true])) { box-shadow: none; }
.slot > button.slot-remove { position: relative; flex: 0 0 44px; width: 44px; min-height: 56px; padding: 0; border: 0; border-left: 1px solid #ffffff66; border-radius: 0 6px 6px 0; background: var(--slot-selected); color: #fff; }
.slot > button.slot-remove svg { width: 23px; height: 23px; }
.slot > button.slot-remove:hover { background: #861148; }
.slot > button.slot-remove:focus-visible { outline: 3px solid #fff; outline-offset: -5px; box-shadow: 0 0 0 3px #19334c; z-index: 1; }
.slot.selected a[aria-current=true]::after { display: none; }


/* Switch before the ticket's three tracks and no-wrap CTA become crowded,
   including laptops and future narrower booking containers. */
@media (max-width: 1400px) {
    .booking-workspace .booking-summary {
        grid-template-columns: minmax(0,1fr) auto;
        gap: 12px 18px;
    }
    .booking-summary__identity { grid-column: 1; grid-row: 1; }
    .booking-summary__selection { grid-column: 1; grid-row: 2; }
    .booking-summary__actions { grid-column: 2; grid-row: 1 / 3; }
    .booking-summary__field { padding-inline: 12px; }
}
@media (max-width: 767px) {
    .booking-workspace .booking-summary {
        grid-template-columns: minmax(0,1fr);
        gap: 9px;
        top: 75px;
        margin-block: 8px 16px;
        padding: 12px 13px 13px;
        border-radius: 12px;
    }
    .booking-summary__identity,.booking-summary__selection,.booking-summary__actions {
        grid-column: 1;
        grid-row: auto;
        width: 100%;
    }
    .booking-summary__icon { display: none; }
    .booking-summary__context { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 9px; }
    .booking-summary__meta { font-size: 11px; line-height: 1.3; }
    .booking-summary__selection { min-height: 39px; }
    .booking-summary__field { padding-inline: 9px; }
    .booking-summary__field:first-child { padding-left: 0; border: 0; }
    .booking-summary__label { font-size: 9px; }
    .booking-summary__field strong { font-size: 15px; }
    .booking-summary__field--time strong { font-size: 17px; }
    .booking-summary__duration { font-size: 12px; }
    .booking-summary__actions {
        display: grid;
        grid-template-columns: minmax(0,1fr) 44px;
        justify-self: stretch;
        gap: 8px;
    }
    .booking-summary__actions .button.primary { min-height: 42px; width: 100%; font-size: 13px; padding-block: 9px; }
    .booking-summary__actions .booking-clear { height: 42px; min-height: 42px; }
}

@media (max-width: 400px) {
    .booking-summary__selection { grid-template-columns: minmax(0,.67fr) minmax(0,1.3fr) minmax(0,.75fr); }
    .booking-summary__field { padding-inline: 5px; }
    .booking-summary__field--time strong { font-size: 15px; }
    .booking-summary__duration { white-space: normal; line-height: 1.2; }
}

/* Booking: one useful empty state, not a disabled selection grid plus alerts. */
.booking-empty-state {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 18px;
    margin: 22px 0 24px;
    padding: 24px;
    border: 1px solid #D5E1F5;
    border-left: 4px solid var(--club-blue);
    border-radius: 12px;
    background: var(--club-blue-soft);
}
.booking-empty-state__icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    flex: none;
    border-radius: 12px;
    background: #fff;
    color: var(--club-blue-deep);
}
.booking-empty-state__icon svg { width: 24px; height: 24px; }
.booking-empty-state__body { flex: 1 1 280px; min-width: 0; }
.booking-empty-state__body h3 {
    margin: 0 0 5px;
    color: var(--club-navy);
    font-size: clamp(18px,2vw,23px);
    line-height: 1.3;
}
.booking-empty-state__body p { margin: 0; color: var(--ink2); font-size: 14px; line-height: 1.6; }
.booking-empty-state__next.button.outline {
    flex: none;
    background: #fff;
    border: 1px solid #9AB3E5;
    color: var(--club-blue-deep);
    font-weight: 650;
    /* The foreground switches instantly; prevent a white-on-white transition. */
    transition: none;
}
.booking-empty-state__next.button.outline:hover {
    background: var(--club-blue-deep);
    border-color: var(--club-blue-deep);
    color: #fff;
}
.booking-empty-state__next:focus-visible {
    outline: 3px solid var(--club-pink-deep);
    outline-offset: 3px;
}
@media (max-width: 767px) {
    .booking-empty-state { gap: 12px; margin-block: 16px; padding: 18px; }
    .booking-empty-state__icon { width: 40px; height: 40px; }
    .booking-empty-state__next { width: 100%; justify-content: space-between; }
}

/* Member's personal booking timeline — presentation only. The existing
   server-side cancellation rules and forms remain authoritative. */
.my-bookings { max-width: 1120px; padding-block: 38px 80px; }
.my-bookings .booking-toolbar { align-items: center; margin-bottom: 36px; }
.my-bookings .booking-toolbar h1 { letter-spacing: -.04em; }
.my-bookings .booking-toolbar p:last-child { margin: 8px 0 0; color: var(--muted); }
.my-bookings .booking-toolbar .button { gap: 9px; }
.my-bookings .booking-toolbar .button svg { width: 19px; height: 19px; }
.my-bookings-section-heading { display: flex; align-items: baseline; flex-wrap: wrap; gap: 12px; margin: 0 0 16px; }
.my-bookings-section-heading h2 { margin: 0; font-size: clamp(23px,2.6vw,31px); font-weight: 750; letter-spacing: -.035em; color: var(--club-navy); }
.my-bookings-count { display: inline-flex; min-width: 25px; min-height: 25px; align-items: center; justify-content: center; padding: 2px 8px; border-radius: 30px; background: var(--club-pink-soft); color: var(--club-pink-deep); font-weight: 700; font-size: 12px; font-variant-numeric: tabular-nums; }
.my-bookings .reservation-list { display: grid; gap: 12px; }
.my-bookings .reservation-card {
    display: grid;
    grid-template-columns: 74px minmax(0,1fr) auto;
    align-items: center;
    gap: 18px;
    margin: 0;
    padding: 18px 22px;
    border-radius: 13px;
    border-color: var(--line);
}
.my-bookings .reservation-date {
    min-width: 0;
    background: var(--club-blue-soft);
    color: var(--club-blue-deep);
}
.my-bookings .reservation-date time { display: block; }
.my-bookings .reservation-date strong { font-size: 29px; font-weight: 750; line-height: 1.12; }
.my-bookings .reservation-info { min-width: 0; }
.my-bookings .reservation-info h3 { margin: 7px 0 5px; font-size: 18px; font-weight: 750; }
.my-bookings .reservation-when { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px 14px; }
.my-bookings .reservation-time { color: var(--club-navy); font-size: 17px; font-weight: 750; font-variant-numeric: tabular-nums; white-space: nowrap; }
.my-bookings .reservation-venue { color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.my-bookings .reservation-card form { width: auto; justify-self: end; }
.my-bookings .reservation-card form .button { min-height: 44px; white-space: nowrap; }
.my-bookings .reservation-pending-note { max-width: 55ch; color: #78551c; font-size: 12px; }
.my-bookings .reservation-card--featured {
    gap: 24px;
    padding: 28px;
    border-color: #F4BCD7;
    border-left: 5px solid var(--club-pink);
    background: linear-gradient(105deg,var(--club-pink-soft),#fff 42%,var(--club-blue-soft));
    box-shadow: 0 10px 28px #0B1A3C0B;
}
.my-bookings .reservation-card--featured .reservation-date { padding: 13px 10px; color: var(--club-pink-deep); background: #fff; border: 1px solid #F2B9D6; }
.my-bookings .reservation-card--featured .reservation-date strong { font-size: 34px; }
.my-bookings .reservation-card--featured .reservation-info h3 { font-size: 23px; }
.my-bookings .reservation-card--featured .reservation-time { font-size: clamp(19px,2.2vw,25px); }
.my-bookings .reservation-card--featured .reservation-info .status-badge { border: 1px solid currentColor; }
.my-bookings-upcoming { margin-top: 42px; }
.my-bookings-empty {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 18px;
    padding: 24px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--club-pink);
    border-radius: 13px;
    background: var(--club-blue-soft);
}
.my-bookings-empty-icon { display: grid; place-items: center; width: 50px; height: 50px; flex: none; color: var(--club-pink-deep); background: #fff; border-radius: 12px; }
.my-bookings-empty-icon svg { width: 26px; height: 26px; }
.my-bookings-empty>div { flex: 1 1 240px; }
.my-bookings-empty h2 { margin: 0 0 5px; color: var(--club-navy); font-size: 21px; }
.my-bookings-empty p { margin: 0; color: var(--muted); font-size: 14px; }
.my-bookings-empty .button { flex: none; }
.my-bookings-history { margin-top: 42px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.my-bookings-history>summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 64px;
    padding: 15px 20px;
    list-style: none;
    cursor: pointer;
    color: var(--club-navy);
    font-size: 17px;
    font-weight: 700;
}
.my-bookings-history>summary::-webkit-details-marker { display: none; }
.my-bookings-history>summary>span { display: flex; align-items: center; gap: 10px; min-width: 0; }
.my-bookings-history>summary svg { width: 20px; height: 20px; flex: none; color: var(--club-pink-deep); }
.my-bookings-history>summary:hover { background: var(--club-pink-soft); }
.my-bookings-history>summary:focus-visible { outline: 3px solid var(--club-pink-deep); outline-offset: 2px; border-radius: 13px; }
.my-bookings-history[open]>summary>svg { transform: rotate(180deg); }
.my-bookings-history-content { padding: 20px; border-top: 1px solid var(--line); }
.my-bookings-history-content>.muted { margin: 0 0 15px; }
.my-bookings-history .reservation-card { background: #fff; }
@media (max-width: 767px) {
    .my-bookings { padding-block: 24px 96px; }
    .my-bookings .booking-toolbar { margin-bottom: 25px; gap: 15px; }
    .my-bookings .booking-toolbar .button { width: 100%; justify-content: center; }
    .my-bookings .reservation-card,.my-bookings .reservation-card--featured {
        grid-template-columns: 68px minmax(0,1fr);
        gap: 12px;
        padding: 17px;
    }
    .my-bookings .reservation-card--featured { padding: 20px 17px; }
    .my-bookings .reservation-date strong { font-size: 25px; }
    .my-bookings .reservation-info h3 { font-size: 17px; }
    .my-bookings .reservation-card--featured .reservation-info h3 { font-size: 20px; }
    .my-bookings .reservation-when { gap: 3px 10px; }
    .my-bookings .reservation-time { font-size: 16px; }
    .my-bookings .reservation-card--featured .reservation-time { font-size: 19px; }
    .my-bookings .reservation-card form { grid-column: 1 / -1; width: 100%; justify-self: stretch; }
    .my-bookings .reservation-card form .button { width: 100%; }
    .my-bookings-empty .button { width: 100%; justify-content: center; }
    .my-bookings-history>summary { padding-inline: 14px; gap: 8px; font-size: 15px; }
    .my-bookings-history>summary>span { gap: 7px; white-space: nowrap; }
    .my-bookings-history>summary svg { width: 18px; height: 18px; }
    .my-bookings-history-content { padding: 12px; }
}
@media (prefers-reduced-motion: reduce) {
    .my-bookings-history[open]>summary>svg { transition: none; }
}

.school-pagination { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-block: 20px; }

/* Keep the inbox reachable without opening an account or hamburger menu. */
.notification-shortcut { display:inline-flex; align-items:center; justify-content:center; gap:7px; flex:none; min-height:44px; padding:8px 10px; border:1px solid var(--line); border-radius:10px; color:var(--club-blue-deep); background:white; font-size:13px; font-weight:600; white-space:nowrap; }
.notification-shortcut:hover,.notification-shortcut[aria-current=page] { background:var(--club-pink-soft); border-color:var(--club-pink); color:var(--club-pink-deep); }
.notification-shortcut-icon { display:flex; position:relative; }
.notification-shortcut-icon svg { width:21px; height:21px; }
.notification-unread-dot { position:absolute; top:-3px; right:-3px; width:10px; height:10px; border:2px solid white; border-radius:50%; background:var(--club-pink-deep); }
.native-notification-access { display:flex; justify-content:flex-end; padding:8px 16px; border-bottom:1px solid var(--line); background:white; }
@media (max-width:1100px) {
    .site-header>.notification-shortcut { order:1; margin-left:auto; }
    .site-header>.mobile-toggle { order:2; margin-left:0; flex:none; }
}
@media (min-width:1101px) and (max-width:1450px) {
    .site-header .header-actions { display:none; }
    .site-header .mobile-account { display:none; }
}
@media (max-width:359px) {
    .site-header:has(>.notification-shortcut) { gap:8px; padding-inline:12px; }
}

.analytics-choice { position:fixed; z-index:110; inset:auto 24px 24px auto; width:min(460px,calc(100vw - 32px)); max-height:calc(100dvh - 120px); overflow-y:auto; padding:20px; border:1px solid var(--line); border-top:3px solid var(--club-pink); border-radius:16px; background:#fff; color:var(--ink); box-shadow:0 12px 44px #0b1a3c26; text-align:left; }
.analytics-choice[hidden] { display:none; }
.analytics-choice strong { display:block; font-size:16px; line-height:1.4; }
.analytics-choice p,.footer .analytics-choice p { font-size:13px; line-height:1.6; margin:8px 0 12px; color:#526779; }
.analytics-choice-actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:14px; }
.analytics-choice-actions .button { min-height:44px; margin:0; padding:10px 12px; font-size:14px; }
.analytics-details summary { width:fit-content; cursor:pointer; color:var(--club-blue); font-size:13px; padding:4px 0; }
.analytics-settings .text-link { min-height:44px; font:inherit; color:inherit; background:none; border:0; padding:8px 0; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
.analytics-settings .text-link:focus-visible,.analytics-details summary:focus-visible { outline:2px solid var(--club-pink); outline-offset:4px; }
@media (max-width:767px) { .analytics-choice { right:16px; bottom:calc(76px + env(safe-area-inset-bottom)); padding:16px; } }


.reservation-card--pending { cursor:progress; border-color:var(--club-pink); }
.reservation-card--pending button { opacity:.65; }
@media (prefers-reduced-motion:no-preference) {
    .reservation-card { transition:border-color .15s ease; }
}
