/* Calendar, class schedule, registration, reviews and announcement banner. Built in-house, no outside services. */
:root{--qx-bg:#ffffff;--qx-bg2:#f1f6fb;--qx-line:#cfd8e3;--qx-ink:#1e293b;--qx-dim:#546174;--qx-head:#03045e;--qx-acc:#0077b6;--qx-acc-ink:#ffffff;--qx-star:#d98e04;--qx-ok:#1b7a33;--qx-bad:#b3261e;}
.qx-wrap{max-width:1100px;margin:0 auto;padding:3rem 1.5rem}
.qx-title{font-size:clamp(1.6rem,3.4vw,2.3rem);margin:0 0 .6rem;color:var(--qx-head)}
.qx-lede{color:var(--qx-dim);max-width:46rem;margin:0 0 1.6rem}
.qx-banner{background:var(--qx-acc);color:var(--qx-acc-ink);text-align:center;padding:.65rem 1rem;font-weight:700}
.qx-banner p{margin:0}.qx-banner a{color:inherit;text-decoration:underline}
.qx-more{margin-top:1.4rem;text-align:center}.qx-link{color:var(--qx-acc)}
/* class schedule */
.qx-sched{background:var(--qx-bg2);border-top:1px solid var(--qx-line);border-bottom:1px solid var(--qx-line)}
.qx-filter{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.2rem}
.qx-filter button{font:inherit;font-weight:700;padding:.55rem 1rem;min-height:44px;border-radius:999px;border:1px solid var(--qx-line);background:var(--qx-bg);color:var(--qx-ink);cursor:pointer}
.qx-filter button.on,.qx-filter button:hover{background:var(--qx-acc);border-color:var(--qx-acc);color:var(--qx-acc-ink)}
.qx-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:1.2rem}
.qx-class{background:var(--qx-bg);border:1px solid var(--qx-line);border-top:5px solid var(--qx-acc);border-radius:6px;padding:1.3rem;display:flex;flex-direction:column;gap:.45rem}
.qx-class[hidden]{display:none}
.qx-class h3{margin:.2rem 0;font-size:1.25rem;color:var(--qx-head);line-height:1.2}
.qx-class p{margin:0;color:var(--qx-ink)}.qx-where,.qx-desc{color:var(--qx-dim)!important;font-size:.95rem}
.qx-badge{align-self:flex-start;font-size:.75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:.2rem .6rem;border-radius:4px;background:var(--qx-acc);color:var(--qx-acc-ink)}
.qx-badge.qx-nra-instructor{background:#2f6fed;color:#fff}.qx-badge.qx-nra{background:#5b6678;color:#fff}.qx-badge.qx-other{background:#5b6678;color:#fff}
.qx-meta{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-top:auto;padding-top:.6rem;flex-wrap:wrap}
.qx-price{font-size:1.4rem;font-weight:800;color:var(--qx-head)}.qx-seats{font-size:.9rem;color:var(--qx-ok);font-weight:700}
.qx-reg{text-align:center;margin-top:.5rem}
.qx-empty{border:1px dashed var(--qx-line);padding:1.2rem;border-radius:6px;background:var(--qx-bg);color:var(--qx-ink)}
.qx-mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:1rem}
.qx-mini{display:flex;flex-direction:column;gap:.35rem;background:var(--qx-bg);border:1px solid var(--qx-line);border-radius:6px;padding:1rem;text-decoration:none;color:var(--qx-ink)}
.qx-mini strong{color:var(--qx-head)}.qx-mini em{color:var(--qx-acc);font-style:normal;font-weight:700}.qx-mini:hover{border-color:var(--qx-acc)}
/* reviews */
.qx-reviews{background:var(--qx-bg2);border-top:1px solid var(--qx-line);border-bottom:1px solid var(--qx-line)}
.qx-summary{margin:0 0 1.5rem;color:var(--qx-ink);font-size:1.1rem}
.qx-stars{color:var(--qx-star);letter-spacing:.1em;font-size:1.15em;white-space:nowrap}.qx-stars i{font-style:normal;opacity:.28}
.qx-review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:1.1rem}
.qx-review{margin:0;background:var(--qx-bg);border:1px solid var(--qx-line);border-radius:8px;padding:1.2rem;display:flex;flex-direction:column;gap:.6rem}
.qx-review blockquote{margin:0;color:var(--qx-ink);line-height:1.55}
.qx-review figcaption{margin-top:auto;color:var(--qx-dim);font-size:.92rem}.qx-review figcaption strong{color:var(--qx-head)}.qx-review figcaption span{margin-left:.4rem}
/* forms (calendar booking, registration, review) */
.qx-form{max-width:820px;background:var(--qx-bg2);border:1px solid var(--qx-line);border-radius:8px;padding:1.5rem}
.qx-form h3{margin:0 0 .5rem;color:var(--qx-head)}
.qx-form label,.qx-form legend{display:block;font-weight:700;margin:1rem 0 .3rem;color:var(--qx-head);font-size:.95rem}
.qx-form input[type=text],.qx-form input[type=email],.qx-form input[type=tel],.qx-form input[type=number],.qx-form select,.qx-form textarea{width:100%;font:inherit;padding:.75rem;border:1px solid var(--qx-line);border-radius:6px;background:var(--qx-bg);color:var(--qx-ink);min-height:46px}
.qx-form textarea{min-height:90px;resize:vertical}
.qx-form input:focus,.qx-form select:focus,.qx-form textarea:focus{outline:3px solid var(--qx-acc);outline-offset:1px}
.qx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:0 1rem}
.qx-form fieldset{border:0;padding:0;margin:0}.qx-choice{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem}
.qx-choice label{font-weight:400;display:flex;gap:.5rem;align-items:center;margin:.3rem 0;color:var(--qx-ink)}
.qx-form input[type=radio],.qx-form input[type=checkbox]{width:1.15rem;height:1.15rem;accent-color:var(--qx-acc)}
.qx-note{background:var(--qx-bg);border:2px solid var(--qx-acc);border-radius:6px;padding:.9rem 1rem;margin:1.1rem 0;color:var(--qx-head);font-size:1.05rem}
.qx-btn{display:block;width:100%;font:inherit;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:.95rem 1rem;min-height:50px;border:2px solid var(--qx-acc);background:var(--qx-acc);color:var(--qx-acc-ink);border-radius:6px;cursor:pointer;margin-top:1rem}
.qx-btn:hover{filter:brightness(1.08)}.qx-btn:disabled{opacity:.6;cursor:wait}
.qx-form .form-error{color:var(--qx-bad)}
.qx-done{max-width:820px;border:2px solid var(--qx-ok);border-radius:8px;padding:1.4rem;background:var(--qx-bg2);color:var(--qx-ink)}.qx-done h3{margin:0 0 .5rem;color:var(--qx-head)}
.qx-done[hidden],.qx-form[hidden]{display:none}
/* calendar */
.qx-calbox{background:var(--qx-bg);border:1px solid var(--qx-line);border-radius:8px;padding:1rem;margin:.5rem 0 1rem}
.qx-calhead{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}
.qx-calhead strong{color:var(--qx-head);font-size:1.15rem}
.qx-calhead button{font:inherit;font-weight:700;min-height:44px;min-width:44px;padding:.4rem .9rem;border:1px solid var(--qx-line);border-radius:6px;background:var(--qx-bg2);color:var(--qx-ink);cursor:pointer}
.qx-calhead button:hover{border-color:var(--qx-acc)}
#qx-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.qx-dow{text-align:center;font-size:.78rem;font-weight:700;color:var(--qx-dim);padding:.2rem 0}
.qx-day{min-height:54px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--qx-dim);font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:.2rem}
.qx-day.open{border-color:var(--qx-line);background:var(--qx-bg2);color:var(--qx-head);cursor:pointer;font-weight:700}
.qx-day.open small{font-size:.68rem;font-weight:600;color:var(--qx-acc)}
.qx-day.open:hover{border-color:var(--qx-acc)}.qx-day.sel{background:var(--qx-acc);border-color:var(--qx-acc);color:var(--qx-acc-ink)}.qx-day.sel small{color:var(--qx-acc-ink)}
.qx-none,.qx-hint,.qx-loading{grid-column:1/-1;color:var(--qx-dim);margin:.4rem 0}
.qx-sess{border:1px solid var(--qx-line)!important;border-radius:6px;padding:.4rem .9rem .7rem!important;margin:.8rem 0!important}
.qx-sess legend{padding:0 .4rem;margin:0}
.qx-form label.qx-opt{font-weight:400;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;padding:.5rem .6rem;border-radius:6px;border:1px solid var(--qx-line);margin:.4rem 0;cursor:pointer;color:var(--qx-ink);min-height:46px}
.qx-opt:hover{border-color:var(--qx-acc)}.qx-opt.full{opacity:.5;cursor:not-allowed}.qx-opt small{color:var(--qx-dim);margin-left:auto}.qx-opt.ccw span{color:var(--qx-head)}
.qx-optwrap h4{margin:.8rem 0 0;color:var(--qx-head)}
.qx-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.qx-starpick{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:.2rem}
.qx-starpick input{position:absolute;opacity:0;width:1px;height:1px}
.qx-starpick label{font-size:2.2rem;line-height:1;cursor:pointer;color:var(--qx-line);margin:0;padding:0 .1rem;min-height:44px;display:inline-flex;align-items:center}
.qx-starpick input:checked~label,.qx-starpick label:hover,.qx-starpick label:hover~label{color:var(--qx-star)}
.qx-starpick input:focus-visible+label{outline:3px solid var(--qx-acc)}
.qx-store{display:inline-flex;align-items:center;gap:.5rem;margin:.9rem 0 0;padding:.45rem .85rem;border:1px solid var(--qx-line);border-left:4px solid var(--qx-acc);border-radius:4px;background:var(--qx-bg2);color:var(--qx-ink);font-size:.95rem}
.qx-store strong{color:var(--qx-head)}
@media (max-width:560px){.qx-wrap{padding:2.2rem 1.1rem}.qx-day{min-height:46px}.qx-day.open small{display:none}.qx-opt small{margin-left:0;width:100%}}
@media (max-width:560px){.qx-wrap{padding:2.2rem 1.1rem}.qx-day{min-height:46px}.qx-day.open small{display:none}.qx-opt small{margin-left:0;width:100%}}

/* Legal links in footer and legal pages */
.qx-legal{margin:.75rem 0 0;font-size:.875rem;text-align:center}
.qx-legal a{color:inherit;text-decoration:underline;padding:.5rem .25rem;display:inline-block}
.fineprint{font-size:.875rem;opacity:.8}
.prose h2,.legal h2{margin-top:1.75rem}
.legal{max-width:46rem;margin:0 auto}

/* Checkbox rows */
.qx-check{display:flex;gap:.6rem;align-items:flex-start;margin:1rem 0;font-weight:400;line-height:1.45;cursor:pointer}
.qx-check input{flex:0 0 auto;width:1.35rem;height:1.35rem;margin:.1rem 0 0}

/* Review landing page */
.qx-review-choices{display:flex;flex-wrap:wrap;gap:1rem;margin:1.5rem 0}
.qx-review-choices .qx-btn{display:inline-block;text-decoration:none;text-align:center;flex:1 1 14rem}
.qx-btn-alt{background:transparent!important;border:2px solid currentColor}
.lead{font-size:1.15rem}

/* FAQ accordions and wide class pages */
.qx-faq details{border:1px solid currentColor;border-radius:8px;margin:0 0 .75rem;padding:0 1rem;background:transparent}
.qx-faq summary{cursor:pointer;font-weight:700;padding:.9rem 0;min-height:44px}
.qx-faq details[open] summary{margin-bottom:.25rem}
.qx-faq p{margin:.25rem 0 1rem}
.qx-fullwide{max-width:72rem;margin:0 auto}

/* contrast fixes */
.qx-starpick label{color:var(--qx-dimstar,#7a8696)}
.qx-starpick input:checked~label,.qx-starpick label:hover,.qx-starpick label:hover~label{color:var(--qx-star)}
.qx-btn-alt{color:inherit!important}
