/* Shared progressive signup; route copy follows native radio state without JS. */
.event-signup { --signup-border: var(--color-base-300); }
.event-signup h3,.event-signup legend { font-size:1.2rem; font-weight:700; margin-bottom:.7rem; }
.event-signup .signup-section { display:flex; flex-direction:column; gap:.75rem; min-width:0; border-top:1px solid var(--signup-border); padding-top:1rem; }
.event-signup legend { float:left; width:100%; padding:0; }
.signup-prices { display:flex; gap:.5rem; }
.signup-price { flex:1; min-width:0; padding:.75rem; border:1px solid var(--signup-border); border-radius:.6rem; display:flex; flex-direction:column; gap:.2rem; }
.signup-price strong { font-size:1.7rem; }
.signup-price small { font-size:.75rem; }
.signup-price.is-current { border-color:var(--color-primary); background:var(--color-primary); color:var(--color-primary-content); }
.signup-price.is-ended strong { text-decoration:line-through; opacity:.65; }
.signup-availability { margin-top:.8rem; font-size:.85rem; }
.signup-availability progress { display:block; width:100%; height:.4rem; margin:.5rem 0; accent-color:var(--color-primary); border:0; border-radius:1rem; overflow:hidden; }
.signup-availability progress::-webkit-progress-bar { background:var(--signup-border); }
.signup-availability progress::-webkit-progress-value { background:var(--color-primary); }
.signup-payment-choice { display:flex; align-items:flex-start; gap:.75rem; padding:1rem; border:1px solid var(--signup-border); border-radius:.6rem; cursor:pointer; }
.signup-payment-choice:has(input:checked) { border-color:var(--color-primary); outline:1px solid var(--color-primary); }
.signup-payment-choice input { margin-top:.3rem; accent-color:var(--color-primary); }
.signup-payment-choice small { display:block; margin-top:.3rem; font-size:.85rem; line-height:1.4; }
.signup-option { padding:.65rem 0; }
.signup-option p { font-size:.8rem; line-height:1.4; margin:.3rem 0 0 2.1rem; opacity:.8; }
.signup-check { display:flex; gap:.75rem; align-items:flex-start; cursor:pointer; }
.signup-check input { flex-shrink:0; }
.signup-required,.signup-optional { display:block; font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; margin-bottom:.4rem; }
.signup-total { display:flex; align-items:center; justify-content:space-between; padding:1rem; border-radius:.6rem; background:var(--color-base-200); color:var(--color-base-content); }
.signup-total strong { font-size:1.5rem; }
.event-signup:has(input[name=payment_route][value=online]:checked) .signup-direct-only { display:none; }
.event-signup:not(:has(input[name=payment_route][value=online]:checked)) .signup-online-only { display:none; }
.event-signup summary { cursor:pointer; font-size:.85rem; }
@media(max-width:380px) { .signup-price { padding:.5rem; } .signup-price strong { font-size:1.4rem; } }

/* Native radio selection keeps prices and totals usable without JavaScript. */
.signup-rate-choices { border:0; padding:0; min-width:0; }
.signup-rate-choices .signup-price { cursor:pointer; position:relative; padding-right:2rem; }
.signup-rate-choices input { accent-color:currentColor; position:absolute; right:.75rem; top:.85rem; width:1rem; height:1rem; }
.event-signup .signup-rate-choices .signup-price:has(input:checked) { background:var(--color-primary); color:var(--color-primary-content); border-color:var(--color-primary); }
.signup-rate-choices .signup-price:has(input:focus-visible) { outline:2px solid currentColor; outline-offset:3px; }
.event-signup .signup-total-early,.event-signup .signup-total-pair { display:none; }
.event-signup:has(input[name=ticket_rate][value=early]:checked) .signup-total-standard { display:none; }
.event-signup:has(input[name=ticket_rate][value=early]:checked) .signup-total-early { display:inline; }
.event-signup:has(select[name=registration_type] option[value=pair]:checked) :is(.signup-total-standard,.signup-total-early) { display:none; }
.event-signup:has(select[name=registration_type] option[value=pair]:checked) .signup-total-pair { display:inline; }
.event-signup:has(select[name=registration_type] option[value=pair]:checked) .signup-rate-choices { display:none; }

/* Show the actual saving independently of which native radio is selected. */
.signup-rate-choices:has(.signup-price-offer) { margin-top:1rem; }
.signup-price-offer { border-color:var(--color-primary); }
.signup-saving { white-space:nowrap; position:absolute; top:-.8rem; left:.75rem; padding:.2rem .6rem; border-radius:1rem; background:var(--color-primary); color:var(--color-primary-content); font-size:.75rem; font-weight:700; line-height:1.4; }
.signup-price-amount { display:flex; flex-wrap:wrap; align-items:baseline; gap:.5rem; }
.signup-price-amount del { font-size:1rem; opacity:.7; }
.signup-price-offer:has(input:checked) .signup-saving { background:var(--color-primary-content); color:var(--color-primary); }

@media(max-width:380px) { .signup-rate-choices:has(.signup-price-offer) { flex-direction:column; gap:1.25rem; } }

/* Confirm the selected discount at the final total as well as the rate card. */
.signup-total { gap:1rem; }
.signup-total-label { display:flex; flex-direction:column; align-items:flex-start; gap:.3rem; }
.signup-total-amount { display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:baseline; gap:.5rem; }
.signup-total-amount del { font-size:1rem; opacity:.65; }
.signup-total-saving { padding:.15rem .5rem; border-radius:1rem; background:var(--color-primary); color:var(--color-primary-content); font-size:.75rem; font-weight:700; white-space:nowrap; }
.event-signup .signup-total-discount { display:none; }
.event-signup:has(input[name=ticket_rate][value=early]:checked):not(:has(select[name=registration_type] option[value=pair]:checked)) .signup-total-discount { display:inline; }

/* docs/200 §5 (ES-81): the discount code row, its Apply button and its line. */
.signup-code-row { display:flex; gap:.5rem; align-items:stretch; }
.signup-code-row input { flex:1; min-width:0; text-transform:uppercase; letter-spacing:.06em; }
.signup-code-row .btn { flex-shrink:0; }
.signup-code-line { font-size:.9rem; font-weight:600; }
.signup-default-submit { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
/* docs/209 §5 (ES-86): the ticket menu, one radio card per choice in the menu's order. */
.signup-ticket-choice { display:flex; align-items:center; gap:.75rem; padding:.85rem 1rem; border:1px solid var(--signup-border); border-radius:.6rem; cursor:pointer; }
.signup-ticket-choice:has(input:checked) { border-color:var(--color-primary); outline:1px solid var(--color-primary); }
.signup-ticket-choice input { flex-shrink:0; accent-color:var(--color-primary); }
.signup-ticket-name { flex:1; min-width:0; font-weight:600; overflow-wrap:anywhere; }
.signup-ticket-amount { display:flex; flex-direction:column; align-items:flex-end; flex-shrink:0; }
.signup-ticket-amount strong { font-size:1.1rem; }
.signup-ticket-amount small { font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.signup-ticket-choice.is-sold-out { cursor:not-allowed; opacity:.6; }
.signup-ticket-choice.is-sold-out strong { text-decoration:line-through; }

/* Opt-in consent presentation: native values and four independent choices. */
.signup-refined .signup-refined-options { display:block; padding-top:0; }
.signup-refined .signup-refined-options > legend { float:none; width:auto; font-size:1rem; font-weight:500; margin:0 0 .75rem; }
.signup-refined .signup-check { min-height:44px; font-size:1rem; line-height:1.5; padding:0; }
.signup-refined .signup-check input { margin-top:.25rem; }
.signup-refined .signup-required-choice { border-bottom:1px solid var(--signup-border); padding-bottom:.5rem; margin-bottom:.5rem; }
.signup-refined .signup-required-marker { font-size:.875rem; color:var(--color-error); white-space:nowrap; margin-inline-start:.35em; }
.signup-refined .signup-optional-heading { font-size:.875rem; margin:0 0 .25rem; }
.signup-wallet-held { overflow-wrap:anywhere; }
.signup-refined .signup-wallet-held { font-size:.875rem; line-height:1.5; margin:0 0 .5rem; }
.signup-option p.signup-wallet-held { margin-left:0; opacity:1; }
.signup-refined .signup-wallet-context { font-size:1rem; line-height:1.5; margin:.25rem 0 .5rem 2rem; padding:.75rem; background:var(--color-base-200); }
.signup-refined .signup-wallet-choice:not(:has(input:checked)) .signup-wallet-context { display:none; }
.signup-refined .signup-choice-details > summary { font-size:1rem; min-height:44px; align-content:center; }
.signup-refined .signup-choice-explanation { font-size:1rem; line-height:1.5; padding:.75rem 0 0 2rem; }
.signup-refined .signup-choice-explanation p { margin:0 0 1rem; }
.signup-refined .signup-payment-action { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.signup-refined .signup-payment-action > .signup-total { flex:1; }
.signup-refined .signup-payment-action > button { min-height:52px; }
