body[data-public-page="open-play"] #queue{display:block}
.openPlayPage{background:#f3f6fb;color:var(--ink)}
.serviceHero{min-height:390px;padding:58px max(7vw,45px);display:grid;grid-template-columns:1.05fr .95fr;align-items:center;color:#fff;position:relative;overflow:hidden;background:linear-gradient(125deg,#101638 0%,#292d78 58%,#104a70 100%)}
.serviceHero:before{content:"";position:absolute;width:420px;height:420px;border:65px solid #44b0e512;border-radius:50%;right:-150px;top:-220px;animation:serviceRing 12s ease-in-out infinite}
.serviceHeroCopy{position:relative;z-index:2;max-width:700px}.serviceHeroCopy>span{color:var(--sky);font-size:9px;letter-spacing:.18em;font-weight:800}.serviceHero h1{font-size:52px;line-height:.98;margin:14px 0 16px;letter-spacing:-.035em}.serviceHero h1 em{font-style:normal;color:var(--sky)}.serviceHeroCopy>p{max-width:650px;color:#d2d9eb;font-size:14px;line-height:1.65}
.openPlayServiceHero{background:linear-gradient(125deg,#0c1532 0%,#17265a 52%,#145675 100%)}
.queueHeroMotion{height:290px;position:relative;z-index:2}.queueCourtGlow{position:absolute;right:9%;top:50%;transform:translateY(-50%);width:190px;height:190px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,#343a90 0 48%,#44b0e522 49% 63%,transparent 64%);box-shadow:0 0 45px #44b0e530;animation:queueCourtPulse 3s ease-in-out infinite}.queueCourtGlow small{font-size:9px;color:var(--orange);letter-spacing:.14em}.queueCourtGlow b{font-size:38px}.queueCourtGlow span{color:var(--sky);font-size:10px}.queuePlayer{position:absolute;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:9px;font-weight:bold;border:3px solid #ffffff;background:var(--sky);box-shadow:0 9px 20px #05092255;animation:queuePlayerMove 5s ease-in-out infinite}.qp1{left:7%;top:25%;animation-delay:0s}.qp2{left:20%;top:59%;background:var(--orange);animation-delay:.45s}.qp3{left:34%;top:19%;background:#4ebd7b;animation-delay:.9s}.qp4{left:42%;top:65%;background:#7579d1;animation-delay:1.35s}.queueRoute{position:absolute;left:10%;right:25%;top:50%;border-top:2px dashed #ffffff35;transform:rotate(4deg)}.queuePulse{position:absolute;right:29%;top:45%;width:11px;height:11px;border-radius:50%;background:var(--orange);animation:routePulse 2.4s linear infinite}.queuePulse.p2{animation-delay:1.2s}
.openPlayWrap{padding:48px 7vw 80px}.openPlayIntro{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:24px}.openPlayIntro>div:first-child>span{color:var(--sky);font-size:9px;letter-spacing:.16em;font-weight:800}.openPlayIntro h2{font-size:40px;line-height:1.05;margin:9px 0 10px;letter-spacing:-.03em}.openPlayIntro p{color:var(--muted);max-width:720px;line-height:1.65}.openPlayFlow{border:1px solid #dbe1eb;border-radius:12px;background:#fff;padding:15px 18px;color:#65708a;white-space:nowrap}
.queuegrid{display:grid;grid-template-columns:minmax(360px,470px) minmax(0,1fr);gap:20px;align-items:stretch}.panel.join,.queueboard{background:#fff;border:1px solid #dde3ed;border-radius:20px;box-shadow:0 18px 42px #17204b0d}.panel.join{padding:26px}.openPlayEyebrow{font-size:9px;color:var(--orange);font-weight:800;letter-spacing:.13em}.panel.join h3{font-size:16px;margin:22px 0 12px;color:var(--navy)}
.openPlaySchedule{display:grid;grid-template-columns:1fr 1fr;gap:10px}.openPlaySchedule label,.twocol>div>label{display:grid;gap:6px;color:#626982;font-size:9px;font-weight:800;letter-spacing:.05em}.openPlaySchedule input,.openPlaySchedule select{width:100%;box-sizing:border-box;height:44px;padding:0 11px;border-radius:9px;border:1px solid #d8deea;background:#fff;color:var(--navy);font-weight:700}.priorityWindow{display:grid;background:#eaf7fd;border-left:5px solid var(--sky);border-radius:10px;padding:12px 13px;margin:13px 0 4px}.priorityWindow b{color:var(--navy);font-size:10px}.priorityWindow span{font-size:9px;color:var(--muted);line-height:1.55;margin-top:3px}.choices{display:grid;gap:8px}.party.choices{grid-template-columns:repeat(4,1fr)}.choices button{min-height:50px;border:1px solid #d4daea;background:#fff;border-radius:10px;color:#626982;display:grid;place-content:center;font-weight:700;transition:.2s ease}.choices button small{font-size:9px;font-weight:500;margin-top:2px}.choices button:hover{border-color:#aeb9d0;transform:translateY(-1px)}.choices button.chosen{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:0 8px 18px #27297022}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:12px}.twocol .choices{grid-template-columns:1fr 1fr;margin-top:7px}.adjacentBracket{display:flex;gap:10px;background:#fff8f2;border:1px solid #ffd9c2;border-radius:10px;padding:12px;margin:16px 0}.adjacentBracket input{width:18px;height:18px;margin-top:1px}.adjacentBracket span{display:grid}.adjacentBracket b{font-size:10px;color:var(--navy)}.adjacentBracket small{color:var(--muted);line-height:1.5;margin-top:3px}.reserveOpenPlay{width:100%;min-height:48px;border:0;border-radius:10px;background:var(--orange);color:#fff;font-weight:800;cursor:pointer}
.queueboard{padding:30px;position:relative;overflow:hidden;background:linear-gradient(145deg,#11183a 0%,#242a6e 58%,#174f70 100%);color:#fff}.queueboard:before{content:"";position:absolute;width:340px;height:340px;border-radius:50%;border:55px solid #44b0e50d;right:-130px;bottom:-150px}.queueboard>*{position:relative;z-index:1}.queueboard>small{color:var(--sky);font-weight:800;letter-spacing:.15em}.queueboard>h3{font-size:31px;margin:7px 0 18px}.dailyOpenPlayExplainer,.advanceHow,.advanceNotice{border-radius:14px;padding:18px;margin-top:14px}.dailyOpenPlayExplainer{background:#ffffff0e;border:1px solid #ffffff19}.dailyOpenPlayExplainer b{color:var(--orange)}.dailyOpenPlayExplainer p,.advanceHow p{color:#d1d8e9;line-height:1.7;margin:8px 0 0}.advanceHow{background:#ffffff0b;border-left:5px solid var(--sky)}.advanceHow>b{color:#fff}.advanceHow strong{color:var(--sky)}.advanceNotice{display:grid;background:linear-gradient(90deg,#ed6d2624,#ffffff08);border:1px solid #ed6d2640}.advanceNotice b{color:#fff}.advanceNotice span{color:#cbd3e5;font-size:9px;line-height:1.55;margin-top:4px}
@keyframes serviceRing{0%,100%{transform:translate(0,0)}50%{transform:translate(-25px,20px)}}@keyframes queueCourtPulse{0%,100%{transform:translateY(-50%) scale(1)}50%{transform:translateY(-50%) scale(1.04)}}@keyframes queuePlayerMove{0%,100%{transform:translate(0,0)}50%{transform:translate(18px,-7px)}}@keyframes routePulse{0%{transform:translate(-190px,-10px);opacity:0}20%,80%{opacity:1}100%{transform:translate(15px,5px);opacity:0}}
@media(max-width:1000px){.queuegrid{grid-template-columns:1fr}.openPlayIntro{align-items:flex-start;flex-direction:column}.queueboard{min-height:420px}}
@media(max-width:900px){.serviceHero{grid-template-columns:1fr;min-height:650px;padding-top:48px}.queueHeroMotion{height:280px}.serviceHero h1{font-size:47px}}
@media(max-width:650px){.serviceHero{padding:42px 24px;min-height:610px}.serviceHero h1{font-size:39px}.queueHeroMotion{height:250px}.queueCourtGlow{right:0;width:155px;height:155px}.queuePlayer{width:40px;height:40px}.qp1{left:0}.qp2{left:12%}.qp3{left:25%}.qp4{left:34%}.openPlayWrap{padding:34px 20px 60px}.openPlayIntro h2{font-size:32px}.party.choices{grid-template-columns:1fr 1fr}.twocol,.openPlaySchedule{grid-template-columns:1fr}.queueboard{padding:22px}}
@media(prefers-reduced-motion:reduce){.serviceHero:before,.queueCourtGlow,.queuePlayer,.queuePulse{animation:none!important}}

/* V43: keep Open Play columns aligned with the public page content edge.
   approved-v36.css gives .queuegrid a centered max-width/margin; reset it here. */
body[data-public-page="open-play"] .openPlayWrap .queuegrid{
  width:100%;
  max-width:none;
  margin:30px 0 0;
  grid-template-columns:minmax(430px,500px) minmax(0,1fr);
  gap:22px;
  align-items:start;
}
body[data-public-page="open-play"] .panel.join,
body[data-public-page="open-play"] .queueboard{min-width:0}
body[data-public-page="open-play"] .queueboard{align-self:start}
@media(max-width:1000px){
  body[data-public-page="open-play"] .openPlayWrap .queuegrid{grid-template-columns:1fr;margin-top:24px}
}


/* V44: restore the approved demo proportions for the Open Play content area. */
body[data-public-page="open-play"] .openPlayWrap{
  width:100%;
  max-width:1260px;
  margin:0 auto;
  padding:76px 0 80px;
}
body[data-public-page="open-play"] .openPlayIntro{
  display:block;
  margin:0 0 38px;
}
body[data-public-page="open-play"] .openPlayIntro>div:first-child>span{
  color:var(--orange);
}
body[data-public-page="open-play"] .openPlayIntro h2{
  margin:12px 0 10px;
}
body[data-public-page="open-play"] .openPlayWrap .queuegrid{
  width:100%;
  max-width:none;
  margin:0;
  grid-template-columns:minmax(0,1.2fr) minmax(0,.98fr);
  gap:18px;
  align-items:start;
}
body[data-public-page="open-play"] .panel.join{padding:26px}
body[data-public-page="open-play"] .queueboard{padding:26px;align-self:start}
body[data-public-page="open-play"] .queueboard>h3{font-size:18px;margin:14px 0 14px}
body[data-public-page="open-play"] .dailyOpenPlayExplainer,
body[data-public-page="open-play"] .advanceHow,
body[data-public-page="open-play"] .advanceNotice{padding:15px;margin-top:12px}
@media(max-width:1320px){
  body[data-public-page="open-play"] .openPlayWrap{max-width:none;padding-left:7vw;padding-right:7vw}
}
@media(max-width:1000px){
  body[data-public-page="open-play"] .openPlayWrap{padding-top:48px}
  body[data-public-page="open-play"] .openPlayWrap .queuegrid{grid-template-columns:1fr}
}
@media(max-width:650px){
  body[data-public-page="open-play"] .openPlayWrap{padding-left:20px;padding-right:20px}
}


/* V46: exact Booking account-required modal treatment reused for Open Play. */
.bookingSigninModal{position:fixed;inset:0;z-index:80;display:none;place-items:center;padding:20px}.bookingSigninModal.open{display:grid}.bookingSigninBackdrop{position:absolute;inset:0;background:#090e21cc;backdrop-filter:blur(4px)}.bookingSigninCard{position:relative;z-index:1;width:min(470px,100%);background:#fff;border-radius:20px;padding:30px;box-shadow:0 25px 80px #0005}.bookingSigninCard h3{font-size:28px;margin:12px 0}.bookingSigninCard p{color:var(--muted);line-height:1.6}.bookingSigninClose{position:absolute;right:14px;top:12px;border:0;background:#f3f5f9;width:34px;height:34px;border-radius:50%;font-size:21px}.bookingSigninActions{display:flex;gap:10px;margin-top:22px}.bookingSigninActions button{flex:1}
@media(max-width:600px){.bookingSigninActions{flex-direction:column}}

/* Database-driven Open Play controls and estimated-capacity guidance. */
.capacitySelectWrap{display:block;position:relative;padding-bottom:4px;border-radius:9px;overflow:hidden}.capacitySelectWrap:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:#2ca46f}.capacitySelectWrap[data-level="orange"]:after{background:#ed8b2f}.capacitySelectWrap[data-level="red"]:after{background:#d94a4a}.capacitySelectWrap select{display:block}
.capacityEstimate{margin-top:10px;padding:10px 12px;border:1px solid #dfe4ee;border-radius:10px;background:#fff}.capacityEstimate>div{display:flex;align-items:center;gap:7px}.capacityEstimate b{font-size:10px;color:var(--navy)}.capacityEstimate small{display:block;margin-top:4px;color:var(--muted);font-size:9px;line-height:1.5}.capacityDot{width:8px;height:8px;border-radius:50%;background:#2ca46f;box-shadow:0 0 0 4px #2ca46f18}.capacityEstimate[data-level="orange"] .capacityDot{background:#ed8b2f;box-shadow:0 0 0 4px #ed8b2f18}.capacityEstimate[data-level="red"] .capacityDot{background:#d94a4a;box-shadow:0 0 0 4px #d94a4a18}.capacityEstimateNote{font-size:9px;line-height:1.55;color:#7a8296;margin:7px 2px 0}
.choices button:disabled{cursor:not-allowed;opacity:.5;transform:none!important}.choices button:disabled.chosen{background:#eceff5;border-color:#d4daea;color:#7a8296;box-shadow:none}.adjacentBracket.is-disabled{opacity:.62;background:#f6f7fa;border-color:#e1e5ec}.adjacentBracket.is-disabled input{cursor:not-allowed}
.openPlayFeedback{margin:12px 0 0;padding:11px 12px;border-radius:10px;background:#eef4ff;border:1px solid #d8e4f7;color:var(--navy);font-size:9px;line-height:1.55}.openPlayFeedback[data-type="success"]{background:#edf9f2;border-color:#cdebd9;color:#206a44}.openPlayFeedback[data-type="error"]{background:#fff1f1;border-color:#f2cccc;color:#9a3434}

/* Future Open Play controls must remain visibly unavailable in the current release. */
.choices button:disabled,
.choices button[aria-disabled="true"]{
  cursor:not-allowed!important;
  pointer-events:none!important;
  opacity:.5!important;
  filter:saturate(.45)!important;
  box-shadow:none!important;
}
.choices button:disabled.chosen,
.choices button[aria-disabled="true"].chosen{
  background:#fff!important;
  color:#68738c!important;
  border-color:#d9deea!important;
}
.adjacentBracket.is-disabled{
  cursor:not-allowed!important;
  opacity:.58!important;
}
.adjacentBracket.is-disabled input{pointer-events:none!important;}
/* v125 guided Open Play registration */
.opWizard{background:#fff;border:1px solid #e3e9f0;border-radius:18px;box-shadow:0 18px 45px #102a4314;overflow:hidden}.opWizardSteps{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid #e8edf3}.opWizardSteps button{border:0;background:#f8fafc;padding:13px 8px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:9px;font-weight:800;color:#7b8797}.opWizardSteps b{width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#e8edf4}.opWizardSteps button.active{background:#eef7ff;color:#245fbe}.opWizardSteps button.active b{background:#2468c9;color:#fff}.opStep{display:none;padding:22px}.opStep.active{display:block}.opStep h3{margin:4px 0 18px;color:#202761}.opWizardNav{display:flex;justify-content:space-between;padding:0 22px 22px}.opWizardNav button{min-width:120px}.opHint{display:block;margin-top:7px;color:#7b8797}.opPartyCompanions{display:grid;gap:8px;margin-top:12px}.opReview{display:grid;gap:0;border:1px solid #e2e7ee;border-radius:12px;overflow:hidden}.opReview p{margin:0;padding:10px 12px;display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #edf1f5}.opReview p:last-child{border:0}.opReview span{color:#748094}.opReview b{color:#202761;text-align:right}.opReview .total{background:#f5f9ff}.opPaymentAmount{text-align:center;padding:12px;border-radius:12px;background:#f5f9ff;margin-bottom:12px}.opPaymentAmount b{display:block;font-size:24px;color:#202761}.opMerchantQr{display:block;width:min(240px,70vw);margin:12px auto;border-radius:12px}.opPaymentFields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.opPaymentFields label{display:grid;gap:5px;font-size:9px;font-weight:800}.opPaymentFields input,.opPaymentFields select{padding:10px;border:1px solid #d9e1ea;border-radius:8px}.opPaymentSubmit{margin-top:12px}.opPaymentSuccess{text-align:center;padding:18px}.opPaymentSuccess b{display:block;font-size:20px;color:#202761}@media(max-width:680px){.opWizardSteps span{display:none}.opPaymentFields{grid-template-columns:1fr}.opStep{padding:16px}.opWizardNav{padding:0 16px 16px}}


/* V126: restore the approved Open Play right-side information panel beside the wizard. */
body[data-public-page="open-play"] .opPublicGrid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.98fr);gap:18px;align-items:start}
body[data-public-page="open-play"] .opPublicGrid>.opWizard,
body[data-public-page="open-play"] .opPublicGrid>.queueboard{min-width:0}
body[data-public-page="open-play"] .opGuidePanel{padding:26px;align-self:start;position:sticky;top:18px}
body[data-public-page="open-play"] .opGuidePanel>h3{font-size:18px;margin:14px 0 14px}
body[data-public-page="open-play"] .opGuidePanel .dailyOpenPlayExplainer,
body[data-public-page="open-play"] .opGuidePanel .advanceHow,
body[data-public-page="open-play"] .opGuidePanel .advanceNotice{padding:15px;margin-top:12px}
body[data-public-page="open-play"] .opGuidePanel .advanceHow strong{display:inline-block;min-width:16px}
@media(max-width:1000px){body[data-public-page="open-play"] .opPublicGrid{grid-template-columns:1fr}body[data-public-page="open-play"] .opGuidePanel{position:relative;top:auto;min-height:0}}

/* v128: Public Open Play Step 2 card choices. Scoped to the wizard only. */
.opWizard .opGameCards,.opWizard .opFormatCards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:7px 0 20px}
.opWizard .opChoiceCard{position:relative;overflow:hidden;min-height:118px;padding:20px 20px 18px;text-align:left;border:1px solid #d8e1ef;border-radius:16px;background:#fff;color:#13255b;box-shadow:0 8px 22px rgba(26,49,88,.055);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}
.opWizard .opChoiceCard:not(:disabled):hover{transform:translateY(-2px);border-color:#9eb9e8;box-shadow:0 12px 26px rgba(26,49,88,.10)}
.opWizard .opChoiceCard.chosen{border:2px solid #2f3284;background:linear-gradient(145deg,#f6f7ff,#eef3ff);box-shadow:0 12px 28px rgba(47,50,132,.12)}
.opWizard .opChoiceCard.chosen:after{content:"✓";position:absolute;right:15px;bottom:13px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#2f3284;color:#fff;font-weight:800;font-size:13px}
.opWizard .opChoiceTitle{display:block;font-size:17px;line-height:1.15;font-weight:800;color:#17245b;margin-bottom:9px}
.opWizard .opChoiceDesc{display:block;max-width:92%;font-size:12px;line-height:1.45;font-weight:500;color:#64708b}
.opWizard .opChoiceDisabled{cursor:not-allowed;opacity:.68;background:#f7f9fc;box-shadow:none}
.opWizard .opChoiceDisabled .opChoiceTitle,.opWizard .opChoiceDisabled .opChoiceDesc{color:#7b8599}
.opWizard .opRibbon{position:absolute;top:13px;right:-34px;width:128px;padding:5px 0;text-align:center;transform:rotate(38deg);background:#ff7b32;color:#fff;font-size:9px;line-height:1;font-weight:900;letter-spacing:.55px;text-transform:uppercase;box-shadow:0 2px 7px rgba(0,0,0,.12)}
@media(max-width:650px){.opWizard .opGameCards,.opWizard .opFormatCards{grid-template-columns:1fr}.opWizard .opChoiceCard{min-height:104px}}

/* v130: Social Party Name field */
#socialPartyFields{margin-top:14px}
#socialPartyFields>label{display:grid;gap:7px;color:#626982;font-size:10px;font-weight:800;letter-spacing:.02em}
#socialPartyFields input{width:100%;box-sizing:border-box;height:46px;padding:0 13px;border:1px solid #d8deea;border-radius:10px;background:#fff;color:var(--navy);font:inherit;font-size:13px;font-weight:650;outline:none;transition:border-color .18s ease,box-shadow .18s ease}
#socialPartyFields input::placeholder{color:#9aa4b5;font-weight:500}
#socialPartyFields input:focus{border-color:#4c79d8;box-shadow:0 0 0 3px rgba(76,121,216,.12)}
/* Wallet payment selector */
.walletPaymentChoices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.walletPayChoice{min-height:42px;border:1px solid #d8e1ea;border-radius:9px;background:#fff;font-size:10px;font-weight:700;cursor:pointer}.walletPayChoice.active{border-color:#174d7c;box-shadow:0 0 0 1px #174d7c inset}.walletPayChoice:disabled{opacity:.48;cursor:not-allowed}.walletCheckoutSummary{display:grid;gap:8px;padding:14px;border:1px solid #dce5ed;border-radius:10px;background:#f8fafc;margin:12px 0}.walletCheckoutSummary span,.walletCheckoutSummary strong{display:flex;justify-content:space-between;gap:12px;font-size:10px}.walletCheckoutSummary strong{padding-top:8px;border-top:1px solid #dce5ed}
/* Scheduled Open Play */
.opScheduledNotice{display:flex;gap:8px;flex-direction:column;padding:14px 16px;margin:14px 0 18px;border:1px solid #f0c36d;border-radius:12px;background:#fffaf0;font-size:9px}.opScheduledNotice b{font-size:11px;color:#6e4a00}.opSportTabs{display:flex;gap:8px;margin:0 0 14px;flex-wrap:wrap}.opSportTabs button{border:1px solid #d8e0ea;background:#fff;border-radius:999px;padding:8px 15px;font-size:9px;font-weight:800;cursor:pointer}.opSportTabs button.active{background:#272970;color:#fff;border-color:#272970}.opSessionGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.opSessionCard{background:#fff;border:1px solid #e0e6ee;border-radius:16px;padding:16px;box-shadow:0 8px 24px rgba(32,44,80,.07);font-size:9px}.opSessionCard .opBadge{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef5ff;color:#272970;font-weight:900;margin-right:5px}.opSessionCard h3{margin:10px 0 5px;font-size:16px;color:#22275d}.opSessionMeta{display:grid;gap:5px;color:#586174}.opSessionCapacity{margin:12px 0;padding:10px;border-radius:10px;background:#f6f8fb}.opSessionCapacity b{font-size:15px;color:#272970}.opSessionCard button{width:100%;border:0;border-radius:9px;background:#272970;color:#fff;padding:10px;font-weight:900;cursor:pointer}.opSessionCard button:disabled{opacity:.45;cursor:not-allowed}.opHow{margin-top:28px}.opHowGrid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.opHowGrid>div{background:#fff;border:1px solid #e2e7ef;border-radius:12px;padding:12px;display:grid;gap:5px;font-size:9px}.opHowGrid b{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#272970;color:#fff}.opJoinCard{max-width:620px}.opJoinForm{display:grid;gap:12px}.opJoinForm label{display:grid;gap:5px;font-size:9px;font-weight:800}.opJoinForm select,.opJoinForm input{padding:9px;border:1px solid #d8e0ea;border-radius:8px}.opPaymentRule{padding:10px;border-radius:9px;background:#fff7e8;border:1px solid #f2cd83;font-size:9px}.opJoinActions{display:flex;gap:8px}.opJoinActions button{flex:1;padding:10px;border-radius:8px;border:1px solid #272970;font-weight:900}.opJoinActions .primary{background:#272970;color:#fff}.opJoinResult{padding:14px;border-radius:10px;background:#f3f8ff;font-size:9px}.opJoinResult b{display:block;font-size:14px;color:#272970;margin-bottom:6px}@media(max-width:900px){.opSessionGrid{grid-template-columns:1fr 1fr}.opHowGrid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.opSessionGrid,.opHowGrid{grid-template-columns:1fr}}

/* Scheduled Open Play session identity cards */
.opSessionCard{position:relative;overflow:hidden;border-top:4px solid #2f3284}
.opSessionCard.isBasketball{border-top-color:#ef7b2d}
.opSessionCard.isPickleball.isRanked{border-top-color:#7a4fb7}
.opSessionCard.isPickleball.isSocial{border-top-color:#2b8b70}
.opSessionVisual{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.opSessionVisual img{width:54px;height:54px;object-fit:cover;border-radius:12px;border:1px solid #e2e7ee;background:#f7f9fc}
.opSessionVisual>div{display:flex;flex-wrap:wrap;gap:6px}
.opSessionCard .opBadge.sport{font-weight:900}
.opSessionCard.isBasketball .opBadge.sport{background:#fff1e8;color:#b64e0b;border-color:#f7c9a8}
.opSessionCard.isPickleball .opBadge.sport{background:#eaf8f3;color:#21745e;border-color:#bde4d8}
.opSessionCard.isRanked .opBadge.play{background:#f2ecfb;color:#68419d;border-color:#d8c6ef}
.opSessionCard.isSocial .opBadge.play{background:#edf6ff;color:#2869a8;border-color:#c8def2}
/* Scheduled Open Play presentation + checkout completion */
.opSessionGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.opSessionCard{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 180px;min-height:260px;background:#fff;border:1px solid #dfe5ee;border-top:4px solid #26956d;border-radius:18px;overflow:hidden;box-shadow:0 14px 34px #1c2c4d0c}.opSessionCard.isBasketball{border-top-color:#ef7b2d}.opSessionCard.isRanked{border-top-color:#5451b9}.opSessionCardMain{padding:22px 12px 76px 22px;min-width:0}.opSessionBadges{display:flex;gap:8px;flex-wrap:wrap}.opBadge{display:inline-flex;align-items:center;min-height:25px;padding:0 10px;border-radius:999px;font-size:9px;font-weight:800}.opBadge.sport{background:#e9f7f1;color:#147052}.isBasketball .opBadge.sport{background:#fff0e6;color:#b75517}.opBadge.play{background:#eaf4ff;color:#2465a6}.isRanked .opBadge.play{background:#eeedff;color:#4945a5}.opSessionCard h3{margin:16px 0 8px;color:var(--navy);font-size:19px}.opSessionMeta{display:grid;gap:5px;color:#64708a;font-size:10px}.opSessionCapacity{margin-top:15px;padding:12px 14px;border-radius:12px;background:#f5f7fb}.opSessionCapacity>b{font-size:18px;color:#252b7d}.opSessionCapacity>span{margin-left:4px;font-size:9px;color:#65708a}.opSessionCapacity>small{display:block;margin-top:3px;color:#64708a}.opSessionSportArt{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;background:linear-gradient(145deg,#effaf6,#dff3eb);overflow:hidden}.isBasketball .opSessionSportArt{background:linear-gradient(145deg,#fff6ee,#ffe3cf)}.isRanked .opSessionSportArt{background:linear-gradient(145deg,#f4f3ff,#e5e3ff)}.opSessionSportArt:before{content:"";position:absolute;width:190px;height:190px;border:28px solid #ffffff55;border-radius:50%;right:-75px;top:-55px}.opSessionSportArt img{position:relative;width:100px;height:100px;object-fit:contain;filter:drop-shadow(0 12px 13px #15284c22)}.opSessionSportArt strong{position:relative;margin-top:10px;color:#15355a;font-size:12px;letter-spacing:.08em}.opSessionSportArt span{position:relative;margin-top:4px;color:#64708a;font-size:9px;font-weight:800}.opSessionCard>button{position:absolute;left:22px;right:202px;bottom:18px;height:42px;border:0;border-radius:9px;background:#2c2d80;color:#fff;font-weight:800;cursor:pointer}.opSessionCard>button:disabled{opacity:.55;cursor:not-allowed}.opSessionEmpty{grid-column:1/-1;padding:28px;background:#fff;border:1px solid #dfe5ee;border-radius:14px;color:#68748b}.opJoinCard{width:min(640px,100%)}.opJoinForm{display:grid;gap:14px}.opJoinForm>label{display:grid;gap:6px;color:#606b83;font-size:9px;font-weight:800}.opJoinForm select,.opJoinForm input{height:44px;border:1px solid #d9e0ea;border-radius:9px;padding:0 11px;background:#fff;color:#17245b}.opJoinSessionSummary{display:grid;gap:4px;padding:14px;border-radius:12px;background:#f4f7fb;color:#667188}.opJoinSessionSummary b{color:#17245b}.opPaymentRule{padding:12px 14px;border-left:4px solid #44aee2;border-radius:9px;background:#eef8fd;color:#64708a;font-size:10px;line-height:1.55}.opPaymentRule b{color:#17245b}.opJoinActions{display:flex;justify-content:flex-end;gap:9px}.opJoinActions button,.opJoinResult button{min-height:42px;padding:0 18px;border:1px solid #d9e0ea;border-radius:9px;font-weight:800}.opJoinActions .primary,.opJoinResult .primary,.opPaymentSubmit{border:0;background:#2c2d80;color:#fff}.opPaymentAmount{text-align:center;padding:14px;border-radius:12px;background:#f5f8fd}.opPaymentAmount span,.opPaymentAmount small{display:block;color:#68748b}.opPaymentAmount b{display:block;margin:3px 0;font-size:25px;color:#202761}.walletPaymentChoices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.walletPayChoice{min-height:42px;border:1px solid #dbe1eb;border-radius:9px;background:#fff;color:#5e6981;font-weight:800}.walletPayChoice.active{background:#2c2d80;border-color:#2c2d80;color:#fff}.walletPayChoice:disabled{opacity:.5}.opMerchantQr{display:block;width:min(230px,65vw);max-height:230px;object-fit:contain;margin:12px auto;border:1px solid #e0e5ed;border-radius:12px}.opPaymentMissing{padding:16px;margin:12px 0;border-radius:10px;background:#fff3eb;color:#985224;text-align:center}.opPaymentFields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.opPaymentFields label,.opPaymentProof{display:grid;gap:6px;font-size:9px;font-weight:800;color:#606b83}.opPaymentFields input,.opPaymentFields select,.opPaymentProof input{min-height:42px;padding:9px;border:1px solid #d9e0ea;border-radius:8px;background:#fff}.opPaymentProof{margin-top:10px}.opPaymentSubmit{width:100%;min-height:44px;margin-top:12px;border-radius:9px;font-weight:800}.walletCheckoutSummary{display:grid;gap:8px;padding:15px;border-radius:12px;background:#f5f8fd}.walletCheckoutSummary span,.walletCheckoutSummary strong{display:flex;justify-content:space-between;gap:12px}.opJoinResult{text-align:center;display:grid;gap:9px;padding:12px}.opJoinResult>b{font-size:21px;color:#202761}.opResultEyebrow{font-size:9px;letter-spacing:.13em;font-weight:800;color:#ed6d26}.opJoinResult p{margin:0}.opJoinResult small{color:#68748b}.full{width:100%}@media(max-width:1050px){.opSessionGrid{grid-template-columns:1fr}}@media(max-width:650px){.opSessionCard{grid-template-columns:1fr}.opSessionSportArt{min-height:155px}.opSessionSportArt img{width:82px;height:82px}.opSessionCardMain{padding-bottom:72px}.opSessionCard>button{right:22px}.opPaymentFields{grid-template-columns:1fr}.walletPaymentChoices{grid-template-columns:1fr}}

/* Scheduled Open Play session cards — compact 4-column layout */
body[data-public-page="open-play"] .opSessionGrid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
body[data-public-page="open-play"] .opSessionCard{
  display:flex;
  flex-direction:column;
  min-height:0;
  border-top-width:4px;
  overflow:hidden;
}
body[data-public-page="open-play"] .opSessionCardMain{
  order:2;
  padding:14px 16px 12px;
}
body[data-public-page="open-play"] .opSessionSportArt{
  order:1;
  min-height:112px;
  padding:14px 16px 8px;
  background:#fff !important;
  flex-direction:row;
  justify-content:flex-start;
  gap:10px;
  text-align:left;
}
body[data-public-page="open-play"] .opSessionSportArt:before{display:none}
body[data-public-page="open-play"] .opSessionSportArt img{
  width:72px;
  height:72px;
  flex:0 0 72px;
}
body[data-public-page="open-play"] .opSessionSportArt strong{
  margin:0;
  font-size:11px;
}
body[data-public-page="open-play"] .opSessionSportArt span{
  margin-top:3px;
}
body[data-public-page="open-play"] .opSessionCard h3{
  margin:10px 0 7px;
  font-size:17px;
}
body[data-public-page="open-play"] .opSessionCapacity{
  margin-top:12px;
}
body[data-public-page="open-play"] .opSessionCard>button{
  order:3;
  position:static;
  width:calc(100% - 32px);
  height:42px;
  margin:0 16px 16px;
  border-radius:9px;
  flex:0 0 auto;
}
@media(max-width:1250px){
  body[data-public-page="open-play"] .opSessionGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:950px){
  body[data-public-page="open-play"] .opSessionGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  body[data-public-page="open-play"] .opSessionGrid{grid-template-columns:1fr}
}


/* Scheduled Open Play card: compact sport artwork at right */
.opSessionCard{
  display:block;
  min-height:0;
  overflow:hidden;
}
.opSessionCardMain{
  position:relative;
  padding:22px 22px 76px;
  min-width:0;
}
.opSessionSportArt{
  position:absolute;
  right:22px;
  top:108px;
  width:58px;
  height:58px;
  min-height:0;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:transparent !important;
  text-align:center;
  overflow:visible;
  pointer-events:none;
}
.opSessionSportArt:before{display:none !important;content:none !important;}
.opSessionSportArt img{
  width:58px;
  height:58px;
  object-fit:contain;
  filter:drop-shadow(0 7px 8px #15284c1f);
}
.opSessionSportArt strong,.opSessionSportArt span{display:none !important;}
.opSessionMeta{padding-right:72px;}
.opSessionCapacity{margin-right:0;}
.opSessionCard>button{
  left:22px;
  right:22px;
  bottom:18px;
  width:auto;
}
@media(max-width:650px){
  .opSessionSportArt{right:18px;top:106px;width:52px;height:52px;}
  .opSessionSportArt img{width:52px;height:52px;}
  .opSessionMeta{padding-right:64px;}
}

/* FINAL: anchor sport artwork in the unused upper-right details area. */
body[data-public-page="open-play"] .opSessionCard{
  position:relative;
}
body[data-public-page="open-play"] .opSessionCard .opSessionSportArt{
  position:absolute !important;
  top:82px !important;
  right:14px !important;
  left:auto !important;
  bottom:auto !important;
  width:62px !important;
  height:62px !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:transparent !important;
  overflow:visible !important;
  z-index:2;
  pointer-events:none;
}
body[data-public-page="open-play"] .opSessionCard .opSessionSportArt img{
  width:62px !important;
  height:62px !important;
  max-width:none !important;
  object-fit:contain;
  margin:0 !important;
}
body[data-public-page="open-play"] .opSessionCard .opSessionSportArt strong,
body[data-public-page="open-play"] .opSessionCard .opSessionSportArt span{
  display:none !important;
}
body[data-public-page="open-play"] .opSessionCard .opSessionMeta{
  padding-right:68px;
}
body[data-public-page="open-play"] .opSessionCard .opSessionCapacity{
  position:relative;
  z-index:3;
}
@media(max-width:600px){
  body[data-public-page="open-play"] .opSessionCard .opSessionSportArt{
    top:82px !important;
    right:14px !important;
    width:58px !important;
    height:58px !important;
  }
  body[data-public-page="open-play"] .opSessionCard .opSessionSportArt img{
    width:58px !important;
    height:58px !important;
  }
}

/* Public Scheduled Open Play polish */
body[data-public-page="open-play"] .opSessionDate{margin:11px 0 3px;padding:9px 10px;border:1px solid #e1e7f0;border-radius:10px;background:#f4f7fb;display:grid;gap:2px}
body[data-public-page="open-play"] .opSessionDate strong{font-size:12px;color:#252b7d}body[data-public-page="open-play"] .opSessionDate span{font-size:9px;font-weight:800;color:#6b7890}
body[data-public-page="open-play"] .opShowMoreWrap{grid-column:1/-1;text-align:center;padding:8px 0}body[data-public-page="open-play"] .opShowMoreWrap button{height:42px;min-width:190px;padding:0 18px;border:1px solid #2c2d80;border-radius:9px;background:#fff;color:#2c2d80;font-weight:900;cursor:pointer}
.opPartnerSearch{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:6px}.opPartnerSearch button{border:0;border-radius:8px;padding:0 15px;background:#2c2d80;color:#fff;font-weight:800}.opPartnerResult{margin-top:7px;padding:10px 12px;border:1px solid #bfe2d5;border-radius:9px;background:#effaf6}.opPartnerResult b,.opPartnerResult span{display:block}.opPartnerResult span{font-size:9px;color:#66738b}.opWalletPreview{display:flex;gap:9px;align-items:center;padding:10px 12px;border:1px solid #d9e1ed;border-radius:9px;background:#f5f8fd;color:#5f6c84;font-size:9px}

/* Public Open Play — sport + date filters */
body[data-public-page="open-play"] .opSessionFilters{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
body[data-public-page="open-play"] .opSessionFilters .opSportTabs{margin-bottom:0}
body[data-public-page="open-play"] .opDateFilter{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
body[data-public-page="open-play"] .opDateFilter label{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#66738b}
body[data-public-page="open-play"] .opDateFilter input{height:40px;min-width:165px;padding:0 11px;border:1px solid #d9e1ed;border-radius:9px;background:#fff;color:#24324a;font:inherit;font-size:10px;font-weight:800}
body[data-public-page="open-play"] .opDateFilter input:focus{outline:2px solid rgba(44,45,128,.14);border-color:#2c2d80}
body[data-public-page="open-play"] .opDateFilter button{height:40px;padding:0 13px;border:1px solid #d9e1ed;border-radius:9px;background:#fff;color:#2c2d80;font-size:9px;font-weight:900;cursor:pointer}
body[data-public-page="open-play"] .opDateFilter button:hover{border-color:#2c2d80;background:#f5f6ff}
@media(max-width:700px){body[data-public-page="open-play"] .opSessionFilters{align-items:stretch}body[data-public-page="open-play"] .opDateFilter{width:100%}body[data-public-page="open-play"] .opDateFilter input{flex:1;min-width:0}}

/* Public Open Play — 8-per-page pagination */
body[data-public-page="open-play"] .opPagination{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:6px;padding:14px 0 2px}
body[data-public-page="open-play"] .opPagination button{min-width:36px;height:36px;padding:0 10px;border:1px solid #d9e1ed;border-radius:8px;background:#fff;color:#2c2d80;font-size:9px;font-weight:900;cursor:pointer}
body[data-public-page="open-play"] .opPagination button:hover:not(:disabled):not(.active){border-color:#2c2d80;background:#f5f6ff}
body[data-public-page="open-play"] .opPagination button.active{border-color:#2c2d80;background:#2c2d80;color:#fff}
body[data-public-page="open-play"] .opPagination button:disabled{opacity:.38;cursor:not-allowed}
