/* Compact, accessible mobile registration. Shared by all Open House concepts. */
.oh-register-dialog { --form-blue: #214586; --form-orange: #ed6225; }
.oh-form-header { padding-bottom: 12px; }
.oh-form-header .oh-close { width: 44px; height: 44px; flex: 0 0 44px; }
.oh-form-step-label { margin: 0 0 10px; color: var(--oh-muted); font-size: 11px; }
.oh-form-progress { margin-bottom: 24px; }
.oh-form-intro { margin-bottom: 24px; }
.oh-form-intro .oh-form-free { display: inline-flex; align-items: center; margin: 0 0 16px !important; padding: 8px 12px; border: 1px solid #ced9eb; border-radius: 100px; color: var(--form-blue); background: #eaf0f9; font-size: 11px !important; font-weight: 650; line-height: 1.3 !important; }
.oh-form-intro h2 { max-width: 16ch; }
.oh-form-intro #form-description { margin-top: 12px; }
.oh-form-units { margin-bottom: 20px; }
.oh-form-units label > span { min-height: 88px; gap: 8px; padding: 11px 7px; }
.oh-form-units input:checked + span { padding: 10px 6px; }
.oh-form-units img { width: 65px; height: 33px; }
.oh-form-choice { min-width: 0; border: 0; margin: 0 0 20px; padding: 0; }
.oh-form-choice legend { width: 100%; padding: 0 0 9px; font-size: 12px; font-weight: 650; }
.oh-form-choice-row { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; }
.oh-form-choice-row--two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.oh-form-choice-row label { min-width: 0; position: relative; cursor: pointer; }
.oh-form-choice-row input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.oh-form-choice-row span { display: flex; align-items: center; justify-content: center; min-height: 46px; padding: 9px 5px; background: var(--oh-white); border: 1px solid var(--oh-line); border-radius: 7px; font-size: 12px; font-weight: 550; }
.oh-form-choice-row input:checked + span { color: var(--form-blue); background: #eaf0f9; border: 2px solid var(--form-blue); padding: 8px 4px; }
.oh-form-choice-row input:focus-visible + span { outline: 3px solid var(--form-orange); outline-offset: 3px; }
.oh-form-choice-row input[aria-invalid="true"] + span { border-color: #a4402e; }
.oh-form-help { display: block; margin-top: 9px; color: var(--oh-muted); font-size: 11px; line-height: 1.6; }
.oh-field > .oh-form-help { font-size: 11px; }
.oh-form-trial { padding-top: 4px; }
.oh-form-trial select { min-height: 54px; }
.oh-form-preview-path { padding: 20px; margin-top: 22px; background: #eaf0f9; border-radius: 10px; }
.oh-form-preview-path h3 { font-size: 17px; letter-spacing: -.02em; }
.oh-form-preview-path ol { list-style: none; counter-reset: next; display: grid; gap: 18px; padding: 0; margin: 20px 0 0; }
.oh-form-preview-path li { counter-increment: next; display: grid; grid-template-columns: 25px 1fr; gap: 10px; font-size: 12px; line-height: 1.6; }
.oh-form-preview-path li::before { content: counter(next); display: grid; place-items: center; align-self: start; width: 25px; height: 25px; border-radius: 50%; color: white; background: var(--form-blue); font-size: 11px; font-weight: 650; }
.oh-form-preview-path li strong { display: block; color: var(--form-blue); }
.oh-form-preview-path li p { margin-top: 3px; color: #536278; }
.oh-form-review-note { margin: 14px 0 0; font-size: 12px; line-height: 1.6; color: var(--oh-muted); }
.oh-form-nav { position: sticky; bottom: calc(-28px - env(safe-area-inset-bottom)); padding: 14px 0; background: var(--oh-paper); border-top: 1px solid var(--oh-line); z-index: 2; }
body[data-design="direct"] .oh-form-nav { background: #fafaf8; }
.oh-form-nav .oh-back { min-height: 48px; }
.oh-form-success { padding-top: 8px; }
.oh-form-success .oh-primary { margin-top: 24px; }
.oh-form-success > h2 { max-width: 16ch; }
#registration-closed-message { padding: 12px; background: #fbe5d8; border-radius: 6px; color: #773312; font-size: 12px; }
@media (min-width: 700px) { .oh-form-nav { bottom: -35px; } }
@media (max-width: 359px) {
  .oh-form-intro h2 { font-size: 30px; }
  .oh-form-choice-row { gap: 5px; }
  .oh-form-choice-row span { font-size: 11px; }
  .oh-form-preview-path { padding: 16px; }
  .oh-review-card { padding-inline: 14px; }
  .oh-review-card dl > div { grid-template-columns: 78px 1fr; gap: 10px; }
}

/* Five-step form: optional fields and grouped review stay easy to scan on phones. */
.oh-optional { display: inline-block; margin-left: 5px; color: var(--oh-muted); font-size: 10px; font-weight: 400; }
.oh-form-choice-row--checks span { position: relative; padding-left: 26px; justify-content: flex-start; }
.oh-form-choice-row--checks span::before { content: ''; position: absolute; left: 9px; top: 50%; width: 10px; height: 10px; border: 1px solid currentColor; border-radius: 2px; transform: translateY(-50%); opacity: .55; }
.oh-form-choice-row--checks input:checked + span { padding-left: 25px; }
.oh-form-choice-row--checks input:checked + span::before { content: '✓'; width: 12px; height: 12px; line-height: 10px; text-align: center; background: var(--form-blue); color: #fff; opacity: 1; }
.oh-form-agenda { padding: 17px 18px; margin: 25px 0 15px; background: #eaf0f9; color: var(--form-blue); border-radius: 8px; }
.oh-form-agenda > strong { font-size: 12px; }
.oh-form-agenda > p { font-size: 12px; line-height: 1.85; margin-top: 9px; color: #536278; }
.oh-review-groups { display: grid; gap: 16px; }
.oh-review-groups > .oh-review-card { margin: 0; }
.oh-review-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--oh-line); padding-block: 2px; }
.oh-review-heading h3 { font-size: 14px; letter-spacing: -.015em; }
.oh-review-heading button { display: inline-flex; gap: 7px; align-items: center; justify-content: center; min-width: 54px; min-height: 44px; padding: 8px 0; background: transparent; color: var(--form-blue); border: 0; font-size: 12px; font-weight: 600; cursor: pointer; }
.oh-review-card dd { white-space: pre-line; }
.oh-field textarea { resize: vertical; min-height: 92px; }

/* Headings receive programmatic focus for step announcements, without a control outline. */
#form-title:focus, #preview-complete-title:focus { outline: none; }

/* Origin-school suggestions: one search field, clear canonical names and regions. */
.oh-origin-level input[readonly] { min-height: 44px; background: #eaf0f9; color: var(--form-blue); border-color: #d5deed; font-size: 13px; font-weight: 600; }
.oh-school-options { list-style: none; max-height: 255px; overflow-y: auto; overscroll-behavior: contain; margin: 6px 0 0; padding: 4px; border: 1px solid #b4c5df; border-radius: 8px; background: var(--oh-white); box-shadow: 0 8px 24px #17355d0c; }
.oh-school-options li { display: grid; gap: 3px; min-height: 52px; padding: 10px 11px; border-radius: 5px; cursor: pointer; }
.oh-school-options li + li { border-top: 1px solid #e7ebf1; }
.oh-school-options li[aria-selected="true"], .oh-school-options li:hover { background: #eaf0f9; color: var(--form-blue); }
.oh-school-options strong { font-size: 12px; font-weight: 600; line-height: 1.45; }
.oh-school-options span { color: #64748b; font-size: 10px; line-height: 1.4; }
.oh-school-manual { min-height: 46px; margin-top: 9px; padding: 10px 13px; text-align: left; border: 1px solid #b4c5df; border-radius: 6px; background: #eaf0f9; color: var(--form-blue); font-size: 12px; font-weight: 600; }
.oh-school-search input[aria-expanded="true"] { border-color: var(--form-blue); }

/* Optional CRM-style address hierarchy. Native selects preserve mobile keyboard and picker behavior. */
.oh-address-group { min-width: 0; padding: 0; margin: 8px 0 25px; border: 0; background: transparent; }
.oh-address-group > legend { padding: 0; font-size: 14px; font-weight: 650; }
.oh-address-group > .oh-form-help { margin: 6px 0 17px; }
.oh-address-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 14px; }
.oh-address-grid .oh-field { min-width: 0; margin: 0; }
.oh-address-group .oh-field :is(select,input,textarea) { min-height: 48px; border: 1px solid transparent; border-radius: 12px; background-color: #edf1f8; font-size: 16px; }
.oh-address-grid select { overflow: hidden; text-overflow: ellipsis; }
.oh-address-grid select:disabled { background-color: #e8edf3; color: #6c7788; cursor: default; opacity: 1; }
.oh-address-group .oh-address-status { margin: 12px 0 0; }
.oh-address-status:empty { display: none; }
.oh-address-mode { display: block; min-height: 44px; margin: 6px 0 12px; padding: 10px 0; border: 0; background: transparent; color: var(--form-blue); text-align: left; font-size: 11px; line-height: 1.5; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.oh-address-retry { min-height: 44px; margin-top: 5px; padding: 8px 0; border: 0; background: transparent; color: var(--form-blue); font-size: 11px; text-align: left; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.oh-address-detail { margin-top: 6px; }
@media (min-width: 560px) { .oh-address-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px 14px; } }
/* Named attendance: only selected adults consume quota. */
.oh-register-dialog [data-conditional="parents"],.oh-register-dialog [data-conditional="guardians"]{display:grid;gap:20px}
.oh-register-dialog [data-conditional][hidden]{display:none}
.oh-register-dialog #family-status{padding:14px 16px;border-radius:12px;background:#edf3fc;color:#244782}
.oh-register-dialog #form-submit-error{padding:14px 16px;border-radius:12px;background:#fff0e8;color:#993d18}
.oh-register-dialog [readonly]{background:#f0f3f7;color:#596575}
.oh-register-dialog [aria-busy="true"]{pointer-events:none;opacity:.75}

/* Parent information follows the registration reference. */
.oh-parent-info-heading{margin:12px 0 4px;padding-top:12px}
.oh-parent-info-heading h3{font-size:13px;line-height:1.6;letter-spacing:.07em;color:#244782;margin:0 0 12px}
.oh-parent-info-heading p{font-size:13px;line-height:1.7;color:#647184;margin:0}
.oh-register-dialog input[type="text"],.oh-register-dialog textarea{text-transform:uppercase}
.oh-register-dialog input[type="email"]{text-transform:none}
.oh-register-dialog .oh-form-choice-row--three{grid-template-columns:repeat(3,minmax(0,1fr))}
.oh-register-dialog [name="sources"]+span{min-height:58px;text-align:left;line-height:1.5}
@media(max-width:480px){.oh-register-dialog [name="sources"]+span{font-size:12px}.oh-register-dialog .oh-form-choice:has([name="sources"]) .oh-form-choice-row{grid-template-columns:1fr}}
