/* Four-step registration with embedded card and studio payment options. */
.registration-page [hidden] { display: none !important; }
.registration-page .site-nav { --color-primary-light:var(--color-copy-light); }
.registration-page button, .registration-page input, .registration-page select, .registration-page textarea { font: inherit; }
.registration-page button { cursor:pointer; }
.registration-page button:disabled { cursor:not-allowed; }
.registration-main { position:relative; isolation:isolate; min-height:100svh; padding:calc(var(--nav-height) + 56px) 0 112px; background:linear-gradient(180deg,var(--color-primary),var(--color-brand-mid) 60%,var(--color-brand-deep)); }
.registration-main::before { content:''; position:absolute; z-index:-1; inset:0 0 auto; height:580px; background:var(--hero-photo-overlay),url('../images/home/dance-community.webp') center 42%/cover; -webkit-mask-image:linear-gradient(180deg,#000 25%,rgba(0,0,0,.94) 42%,rgba(0,0,0,.65) 62%,rgba(0,0,0,.24) 82%,transparent 100%); mask-image:linear-gradient(180deg,#000 25%,rgba(0,0,0,.94) 42%,rgba(0,0,0,.65) 62%,rgba(0,0,0,.24) 82%,transparent 100%); pointer-events:none; }
.registration-container { width:calc(100% - 112px); max-width:1200px; margin-inline:auto; }
.registration-heading { position:relative; margin-bottom:40px; text-align:center; }
.registration-heading h1 { color:#fff; font-size:clamp(3.6rem,6vw,5.7rem); line-height:1; margin-bottom:20px; }
.registration-heading p { margin:0 0 20px; color:var(--color-copy-light); }
.registration-preview-tag { display:inline-block; padding:4px 16px; border:1px solid #ffd18d80; border-radius:30px; font-size:1rem; color:#fff; }
.registration-form { color:var(--color-text-dark); background:var(--color-surface-light); border-radius:32px; overflow:hidden; box-shadow:0 24px 80px #26000026; }
.registration-progress { padding:28px 40px; border-bottom:1px solid var(--interior-line); }
.registration-progress ol { display:flex; justify-content:space-between; gap:16px; list-style:none; }
.registration-progress li { min-width:0; }
.registration-progress button { display:flex; align-items:center; gap:12px; min-height:44px; border:0; background:none; color:var(--color-ink-muted); font-size:1rem; font-weight:600; }
.registration-progress button > span { display:grid; place-items:center; flex:0 0 36px; width:36px; height:36px; border-radius:50%; background:#f2e3d8; color:#65463b; }
.registration-progress button[aria-current] { color:var(--color-text-dark); }
.registration-progress button[aria-current] > span { background:var(--color-primary); color:#fff; }
.registration-progress .is-complete > span { background:#f8e5d5; color:var(--color-primary-dark); }
.registration-stage { padding:40px; min-height:480px; }
.registration-step-heading { margin-bottom:32px; }
.registration-step-heading h2 { font-size:clamp(2.5rem,4vw,3.4rem); line-height:1.05; margin-bottom:16px; }
.registration-step-heading h2:focus { outline:none; }
.registration-step-heading p, .registration-package-info p { color:var(--interior-muted); margin:0; }
.registration-page fieldset { padding:0; margin:0; border:0; min-width:0; }
.registration-page legend { font-weight:600; margin-bottom:18px; }
.registration-package-label, .registration-fields label { display:block; font-size:1.125rem; font-weight:600; }
.registration-page input:not([type='checkbox']):not([type='radio']), .registration-page select, .registration-page textarea { display:block; width:100%; min-width:0; min-height:54px; margin-top:10px; padding:13px 15px; color:var(--color-text-dark); background:#fff; border:1px solid var(--color-control-border); border-radius:10px; font-size:1.125rem; line-height:1.5; }
.registration-page textarea { resize:vertical; }
.registration-package-info { margin-block:18px 28px; }
.registration-package-info p + p { margin-top:6px; }
.registration-dance-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.registration-dance-card { position:relative; display:block; border:2px solid var(--color-line); border-radius:20px; overflow:hidden; cursor:pointer; background:#fff; }
.registration-dance-card:has(input:checked) { border-color:var(--color-primary); box-shadow:0 0 0 1px var(--color-primary); background:#fff1e5; }
.registration-dance-card:has(input:focus-visible) { outline:3px solid var(--color-primary-dark); outline-offset:4px; }
.registration-dance-card > input, .registration-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.registration-dance-photo { position:relative; display:block; height:190px; }
.registration-dance-photo img { width:100%; height:100%; object-fit:cover; }
.registration-dance-check { position:absolute; top:16px; right:16px; display:grid; place-items:center; width:34px; height:34px; border:2px solid #fff; border-radius:50%; background:#fff; color:transparent; font-size:1.125rem; font-weight:700; box-shadow:0 2px 12px #26000040; }
.registration-dance-card:has(input:checked) .registration-dance-check { background:var(--color-primary); color:#fff; }
.registration-dance-copy { display:block; padding:22px; }
.registration-dance-name { display:block; font-family:var(--interior-display); font-size:2.4rem; line-height:1.1; margin-bottom:14px; }
.registration-dance-price { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; color:var(--color-ink-muted); font-size:1rem; }
.registration-dance-price strong { color:var(--color-primary-dark); font-size:1.125rem; }
.registration-package-preview { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:32px; border:1px solid var(--interior-line); border-radius:20px; overflow:hidden; background:#fff; }
.registration-package-preview img { width:100%; height:270px; object-fit:cover; }
.registration-package-preview > div { padding:28px 28px 28px 0; }
.registration-package-preview h3 { font-family:var(--interior-display); font-size:2.5rem; margin-bottom:18px; }
.registration-package-preview strong { color:var(--color-primary-dark); font-size:2.5rem; }
.registration-package-preview p { color:var(--interior-muted); margin:8px 0 0; }
.registration-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.registration-optional { color:var(--color-ink-muted); font-size:1rem; font-weight:400; }
.registration-note { grid-column:1/-1; }
.registration-partner { padding:28px; margin-top:32px; border-radius:18px; background:var(--color-surface-tint); border:1px solid var(--color-line); }
.registration-check { display:flex; align-items:center; gap:14px; font-weight:600; cursor:pointer; }
.registration-check input { flex:0 0 22px; width:22px; height:22px; accent-color:var(--color-primary); }
.registration-check strong { margin-left:14px; color:var(--color-primary-dark); white-space:nowrap; }
.registration-partner > p { margin:12px 0 0; color:var(--interior-muted); }
.registration-partner .registration-fields { margin-top:28px; }
.registration-waiver { margin-top:32px; padding:28px; border:1px solid var(--color-line); border-radius:18px; background:var(--color-surface-tint); }
.registration-waiver h3 { margin:0 0 20px; font-size:1.5rem; }
.registration-waiver-copy { color:var(--color-ink-muted); font-size:1.125rem; line-height:1.7; }
.registration-waiver-copy p { margin:0 0 16px; }
.registration-waiver > p:not(.registration-error) { margin:24px 0 16px; }
.registration-waiver .registration-check { align-items:flex-start; min-height:44px; font-size:1.125rem; }
.registration-waiver .registration-check input { margin-top:4px; }
.registration-review-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px; align-items:start; }
.registration-summary { background:var(--color-surface-tint); border-radius:20px; padding:28px; }
.registration-summary-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:24px; }
.registration-summary-heading h3 { font-size:1.25rem; }
.registration-summary-heading button { min-height:44px; border:0; background:none; color:var(--color-primary-dark); font-size:1rem; text-decoration:underline; text-underline-offset:4px; }
.registration-order-item { display:flex; gap:20px; justify-content:space-between; padding-block:18px; border-bottom:1px solid var(--color-line); }
.registration-order-item:first-child { padding-top:0; }
.registration-order-item > div { min-width:0; }
.registration-order-item > strong { white-space:nowrap; }
.registration-order-item span { display:block; font-size:1rem; color:var(--color-ink-muted); margin-top:6px; }
.registration-review-total { display:flex; justify-content:space-between; gap:20px; margin-top:22px; font-weight:700; font-size:1.25rem; }
.registration-review-total strong { color:var(--color-primary-dark); font-size:1.6rem; }
.registration-summary-section { border-top:1px solid var(--color-line); margin-top:28px; padding-top:24px; }
.registration-person + .registration-person { margin-top:20px; }
.registration-person p { margin:4px 0 0; color:var(--color-ink-muted); overflow-wrap:anywhere; }
.registration-extra > div + div { margin-top:16px; }
.registration-extra dt { color:var(--color-ink-muted); font-size:1rem; margin-bottom:4px; }
.registration-extra dd { white-space:pre-wrap; overflow-wrap:anywhere; }
.registration-payment { padding:28px; border:1px solid var(--color-line); background:#fff; border-radius:20px; }
.registration-stripe { font-weight:700; color:#5143b7; font-size:1.25rem; }
.registration-payment-choices { display:grid; gap:14px; }
.registration-payment-choices legend { font-size:1.25rem; line-height:1.4; }
.registration-payment-choice { display:flex; gap:14px; align-items:flex-start; padding:18px; border:1px solid var(--color-control-border); border-radius:14px; cursor:pointer; }
.registration-payment-choice:has(input:checked) { border-color:var(--color-primary); box-shadow:0 0 0 1px var(--color-primary); background:#fff1e5; }
.registration-payment-choice:has(input:focus-visible) { outline:3px solid var(--color-primary); outline-offset:3px; }
.registration-payment-choice input { accent-color:var(--color-primary); width:20px; height:20px; flex:0 0 20px; margin-top:4px; }
.registration-payment-choice strong { display:block; font-size:1.125rem; }
.registration-payment-choice span span { display:block; margin-top:4px; color:var(--color-ink-muted); font-size:1rem; }
.registration-card-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:30px 0 20px; }
.registration-card-heading h3 { font-size:1.125rem; }
.registration-card-preview, .registration-billing-preview { display:grid; gap:20px; }
.registration-card-preview label, .registration-billing-preview label { font-weight:600; }
.registration-card-preview > div, .registration-billing-preview > div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.registration-page .registration-card-preview input:disabled, .registration-page .registration-billing-preview input:disabled, .registration-page .registration-billing-preview select:disabled { background:#f6f1ec; opacity:1; color:var(--color-ink-muted); }
.registration-billing { margin-top:28px; border:1px solid var(--color-line); border-radius:14px; background:#fff; }
.registration-billing h3 { margin:0; font-size:1.125rem; }
.registration-billing-toggle { display:flex; align-items:center; justify-content:space-between; gap:16px; width:100%; min-height:64px; padding:18px 20px; border:0; border-radius:14px; background:#fff1e5; color:var(--color-text-dark); text-align:left; font-weight:600; }
.registration-billing-toggle:hover { background:#f8e5d5; }
.registration-billing-toggle svg { flex:0 0 20px; transition:transform .2s ease; }
.registration-billing-toggle[aria-expanded='true'] { border-radius:14px 14px 0 0; }
.registration-billing-toggle[aria-expanded='true'] svg { transform:rotate(180deg); }
.registration-billing-content { padding:20px; border-top:1px solid var(--color-line); }
.registration-payment-retry { display:block; margin:16px 0; padding:10px 0; border:0; background:none; color:var(--color-primary-dark); text-decoration:underline; }
#studio-payment-panel { margin-top:28px; padding:24px; border-radius:16px; background:#fff1e5; }
#studio-payment-panel p { margin-top:18px; color:var(--color-ink-muted); }
.registration-studio-total { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; align-items:center; }
.registration-studio-total strong { color:var(--color-primary-dark); font-size:1.6rem; }
.registration-result-mark { display:grid; place-items:center; width:72px; height:72px; border-radius:50%; background:#f8e5d5; color:var(--color-primary-dark); font-size:2.2rem; margin:0 auto 28px; }
.registration-receipt { max-width:480px; margin:28px auto; padding:24px; border:1px solid #e5cfc1; border-radius:16px; background:var(--color-surface-tint); }
.registration-receipt > div { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; }
.registration-receipt > div + div { margin-top:16px; }
.registration-receipt dt { color:var(--color-ink-muted); }
.registration-receipt dd { font-weight:700; }
.registration-result { padding:clamp(28px,5vw,64px); background:var(--color-surface-light); color:var(--color-text-dark); border-radius:32px; text-align:center; }
.registration-result h2 { font-size:clamp(2.5rem,5vw,3.6rem); }
.registration-result p { margin:24px auto; max-width:44ch; }
.registration-result .interior-action { margin:8px; }
.registration-result .interior-action-light { border:1px solid var(--color-control-border); }
.registration-payment-status { font-size:1rem; color:var(--color-ink-muted); margin:24px 0; }
.registration-payment-status:empty { display:none; }
.registration-terms-link { display:block; min-height:44px; margin:20px 0 14px; padding:8px 0; border:0; background:none; color:var(--color-primary-dark); font-size:1.125rem; text-align:left; text-decoration:underline; text-underline-offset:4px; }
.registration-terms-link:hover { color:var(--color-brand-deep); }
.registration-terms-dialog { width:min(640px,calc(100% - 32px)); max-height:calc(100svh - 32px); margin:auto; padding:clamp(24px,4vw,40px); border:1px solid var(--color-line); border-radius:24px; background:var(--color-surface-light); color:var(--color-text-dark); box-shadow:0 24px 80px #26000040; overflow:auto; }
.registration-terms-dialog::backdrop { background:#260000b3; backdrop-filter:blur(4px); }
.registration-terms-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:24px; }
.registration-terms-heading h2 { font-size:clamp(2rem,4vw,3rem); line-height:1.1; margin:0; }
.registration-terms-close { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; border:1px solid #e5cfc1; border-radius:50%; background:var(--color-surface-tint); color:var(--color-text-dark); }
.registration-terms-close span { font-size:1.75rem; line-height:1; }
.registration-terms-close:hover { background:#f8e5d5; }
.registration-terms-dialog p { margin:0; font-size:1.125rem; line-height:1.7; color:var(--color-ink-muted); }
.registration-terms-dialog strong { color:var(--color-text-dark); }
html:has(#registration-terms-dialog[open]) { overflow:hidden; }
.registration-pay { width:100%; justify-content:center; }
.registration-page .registration-pay:disabled { opacity:.7; transform:none; }
.registration-actions { display:flex; align-items:center; gap:28px; padding:28px 40px; border-top:1px solid var(--interior-line); }
.registration-back { display:flex; align-items:center; gap:12px; min-height:48px; color:#65463b; background:none; border:0; font-size:1rem; font-weight:600; }
.registration-running-total { margin-right:auto; }
.registration-running-total > span { display:block; font-size:1rem; color:var(--color-ink-muted); }
.registration-running-total strong { color:var(--color-text-dark); font-size:1.7rem; line-height:1.2; }
.registration-next { justify-content:center; }
.registration-preview-note, .registration-no-script { color:var(--color-copy-light); font-size:1rem; text-align:center; max-width:66ch; margin:28px auto 0; }
.registration-error { margin:24px 0 0; color:#ab1730; font-size:1.125rem; }
.registration-load-error { margin-bottom:24px; padding:28px; border-radius:20px; background:#fff; color:var(--color-text-dark); }
.registration-load-error button { padding:12px 24px; border-radius:8px; border:0; background: var(--color-action-warm); color: var(--color-action-text); }
.registration-page [aria-invalid='true'] { outline:2px solid #ab1730; outline-offset:2px; }
@media(max-width:1000px){
  .registration-container { width:calc(100% - 64px); }
  .registration-progress, .registration-stage, .registration-actions { padding:28px; }
  .registration-progress button { gap:8px; }
  .registration-dance-grid { gap:14px; }
  .registration-dance-copy { padding:18px; }
  .registration-dance-photo { height:150px; }
  .registration-review-grid { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:700px){
  .registration-container { width:calc(100% - 32px); }
  .registration-main { padding-top:calc(var(--nav-height) + 40px); padding-bottom:72px; }
  .registration-heading h1 { font-size:3.5rem; }
  .registration-heading p { max-width:26ch; margin-inline:auto; }
  .registration-form { border-radius:24px; }
  .registration-progress { padding:20px 16px; }
  .registration-progress ol { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
  .registration-progress button { font-size:1rem; text-align:left; gap:8px; }
  .registration-progress button > span { width:30px; height:30px; flex-basis:30px; }
  .registration-stage { padding:28px 24px; }
  .registration-step-heading h2 { font-size:2.6rem; }
  .registration-dance-grid { grid-template-columns:minmax(0,1fr); }
  .registration-dance-card { display:grid; grid-template-columns:104px minmax(0,1fr); border-radius:14px; }
  .registration-dance-photo { height:100%; min-height:138px; }
  .registration-dance-check { width:28px; height:28px; top:10px; right:10px; }
  .registration-dance-copy { align-self:center; padding:18px 14px; }
  .registration-dance-name { font-size:2rem; }
  .registration-package-preview { grid-template-columns:minmax(0,1fr); gap:0; }
  .registration-package-preview img { height:180px; }
  .registration-package-preview > div { padding:24px; }
  .registration-fields { grid-template-columns:minmax(0,1fr); }
  .registration-partner, .registration-waiver { padding:22px 18px; }
  .registration-check { align-items:flex-start; }
  .registration-check input { margin-top:4px; }
  .registration-check strong { display:block; margin:6px 0 0; }
  .registration-summary, .registration-payment { padding:24px 18px; }
  .registration-card-preview > div, .registration-billing-preview > div { grid-template-columns:minmax(0,1fr); }
  .registration-billing-toggle { padding-inline:16px; }
  .registration-billing-content { padding:20px 16px; }
  .registration-payment-choice { padding:16px 12px; gap:10px; }
  #studio-payment-panel { padding:20px 16px; }
  .registration-actions { flex-wrap:wrap; padding:24px; gap:20px; }
  .registration-running-total { margin-left:auto; margin-right:0; text-align:right; }
  .registration-next { width:100%; }
  .registration-actions:has(.registration-back[hidden]) .registration-running-total { margin-left:0; text-align:left; }
}
@media(prefers-reduced-motion:reduce){.registration-page *, .registration-page *::before, .registration-page *::after { scroll-behavior:auto; transition:none; }}

.registration-waiver a { color: var(--color-primary-dark); text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.registration-waiver a:hover { color: var(--color-primary); }
