/* Onboarding compartido: /unirse (onb-grid, onb-card, onb-toolbar…) y el fallback de
   dirección escrita de Perfil del negocio. El alta de negocio, el cuestionario y
   «Primeros pasos» viven en alta.css desde 2026-09; el tour guiado, en tour.css.
   Sin hex ni rgba() crudos: esta hoja está en el barrido de SustratoVisualTests. */

.onb-grid {
    width: 100%;
    max-width: 920px;
    margin: 0 auto;
    padding: 24px 16px 40px;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    align-items: stretch;
}

@media (min-width: 880px) {
    .onb-grid {
        flex-direction: row;
        align-items: flex-start;
        gap: 2rem;
        padding-top: 32px;
    }

    .onb-main {
        flex: 1;
        min-width: 0;
        max-width: 520px;
    }
}

.onb-main .auth-card,
.onb-card {
    width: 100%;
    max-width: none;
}

.onb-card {
    background: var(--ic-surface);
    border: 1px solid var(--ic-border);
    border-radius: 20px;
    padding: 1.75rem 1.75rem 1.5rem;
}

/* En móvil el marco (fondo + borde) se come el ancho útil: lo quitamos y dejamos
   el formulario a todo lo ancho contra el fondo de la pantalla. El único margen
   lateral queda el de .auth-bg (16px). */
@media (max-width: 600px) {
    .onb-grid {
        padding: 16px 0 32px;
    }

    .onb-card {
        background: transparent;
        border: none;
        border-radius: 0;
        padding: 0.25rem 0 1rem;
    }
}

.onb-step-desc {
    margin: 0 0 1.25rem;
    font-size: 1rem;
    color: var(--ic-muted);
    line-height: 1.45;
}

.onb-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--ic-border);
    align-items: center;
}

.onb-toolbar--end {
    justify-content: flex-end;
}

.onb-btn-next,
.onb-btn-submit {
    min-height: 48px;
    padding: 0 22px;
    border-radius: 12px;
    border: none;
    background: var(--ic-primary);
    color: var(--ic-on-primary);
    font-family: inherit;
    font-size: 1.0625rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 8px 24px var(--ic-brand-ring);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: transform 0.15s, box-shadow 0.15s;
}

.onb-btn-next:hover:not(:disabled),
.onb-btn-submit:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 12px 28px var(--ic-brand-ring);
}

.onb-btn-next:disabled,
.onb-btn-submit:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
}

.onb-foot-links {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--ic-border);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Registro esencial senior-friendly: inputs ≥16px (evita zoom iOS), targets ≥48px */
.onb-card .mud-input > input.mud-input-slot,
.onb-card .mud-input > textarea.mud-input-slot,
.onb-card .mud-input .mud-select-input {
    font-size: 1.0625rem;
}

.onb-card .mud-input-label {
    font-size: 1.0625rem;
}

.onb-card .mud-input-helper-text,
.onb-card .mud-input-helper-text .mud-input-helper-text-inner {
    font-size: 0.875rem;
}

/* Enlace-botón del fallback de dirección escrita */
.onb-fallback-toggle {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    background: none;
    border: none;
    padding: 0;
    margin: 0.25rem 0 0;
    font-family: inherit;
    font-size: 1rem;
    color: var(--ic-primary);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

/* Tarjeta del código de invitación en /unirse. Vivía en un <style> dentro del .razor con el
   prefijo cmz-, que el rediseño del alta reservó para /comenzar en alta.css: dos pantallas
   distintas compartiendo prefijo es cómo empiezan los restilados accidentales. */
.onb-invite-card {
    text-align: center;
    padding: 18px;
    border-radius: 14px;
    margin-top: 0.5rem;
    border: 1px solid var(--ic-border);
    background: color-mix(in srgb, var(--ic-primary) 6%, transparent);
}
