.ni-account { max-width: 40rem; margin-inline: auto; }
.ni-account form { margin-block: 1.5rem; }
.ni-account label { font-weight: 600; }
.ni-account input:not([type="checkbox"]):not([type="hidden"]), .ni-account select { width: 100%; box-sizing: border-box; min-height: 2.75rem; padding: .5rem .75rem; }
.ni-account button { min-height: 2.75rem; padding: .65rem 1.25rem; cursor: pointer; }
.ni-account [role="alert"] { border-inline-start: .25rem solid #a32424; padding: .75rem 1rem; }
.ni-account [role="status"] { border-inline-start: .25rem solid #287044; padding: .75rem 1rem; }
.ni-account input:focus-visible, .ni-account select:focus-visible, .ni-account button:focus-visible, .ni-account a:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.ni-account fieldset { min-width: 0; border: 0; padding: 0; margin: 0 0 1.75rem; }
.ni-account legend { padding: 0; font-size: 1.15rem; font-weight: 700; }
.ni-account .ni-required { font-size: .875em; font-weight: 400; color: #626262; }
.ni-account .ni-field-help, .ni-account .ni-required-note, .ni-account .ni-privacy-notice { font-size: .875em; line-height: 1.45; font-weight: 400; color: #626262; }
.ni-account .ni-required-note { margin-block: 0 1rem; }

.ni-account fieldset > p { margin-block: 0 1rem; }
.ni-account fieldset > .ni-field-help { margin-block: -.625rem 1rem; }
.ni-account legend + .ni-field-help { margin-block: .35rem 1rem; }
.ni-account fieldset .ni-field-help { border: 0; padding: 0; }

/* Visual UX enhancements only; no authentication or validation changes. */
.ni-account .ni-field { margin-block: 0 1rem; }
.ni-account .ni-field > label { display: block; margin-bottom: .35rem; line-height: 1.4; }
/* Password visibility remains a semantic button for keyboard/screen-reader access,
   but is presented as a compact text link underneath the password field. */
.ni-account .ni-input-wrap, .ni-account .ni-password-wrap { display: block; }
.ni-account .ni-password-wrap input { display: block; width: 100%; }
.ni-account .ni-password-wrap .ni-password-toggle {
    display: inline-block;
    position: static;
    transform: none;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    max-width: 100%;
    margin: .5rem 0 0;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: inherit;
    font: inherit;
    font-size: .875rem;
    font-weight: 400;
    line-height: 1.5;
    text-align: start;
    text-decoration: underline;
    text-underline-offset: .12em;
    cursor: pointer;
}
.ni-account .ni-password-wrap .ni-password-toggle:hover,
.ni-account .ni-password-wrap .ni-password-toggle:focus-visible {
    background: transparent;
    box-shadow: none;
}
.ni-account .ni-field-help { margin-top: -.65rem; margin-bottom: 1rem; }
.ni-account input:not([type="checkbox"]):not([type="hidden"]), .ni-account select { border-radius: .35rem; }
.ni-account button[type="submit"] { min-height: 2.75rem; }
.ni-account [role="alert"], .ni-account [role="status"] { margin-block: 1rem; border-radius: .25rem; }
@media (max-width: 480px) { .ni-account { width: 100%; } }

/* Non-authoritative inline completion and email-format feedback. */
.ni-account input.ni-field-valid:not([type="checkbox"]),
.ni-account select.ni-field-valid { border: 2px solid #247347; }
.ni-account input.ni-field-invalid:not([type="checkbox"]) { border: 2px solid #b42318; }
.ni-account .ni-inline-error:not([hidden]) { display: block; margin-top: .4rem; color: #a61b1b; font-size: .875rem; line-height: 1.4; }
.ni-account .ni-inline-error[hidden] { display: none; }
.ni-account input.ni-field-valid:focus-visible, .ni-account select.ni-field-valid:focus-visible { outline-offset: 3px; }

/* Completion icon lives inside the input, preserving its accessible label. */
.ni-account input.ni-field-valid:not([type="checkbox"]),
.ni-account select.ni-field-valid {
    padding-inline-end: 2.5rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23247347'/%3E%3Cpath d='m7 12 3.3 3.3L17 8.7' stroke='white' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .75rem center;
    background-size: 1.2rem 1.2rem;
}
.ni-account input.ni-field-invalid:not([type="checkbox"]) { background-image: none; }

/* v1.8.7: Explicit spacing independent of BuddyBoss paragraph/button margins. */
.ni-account form .ni-field .ni-password-wrap {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr);
    row-gap: .75rem !important;
    align-items: start;
}
.ni-account form .ni-field .ni-password-wrap > input {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
}
.ni-account form .ni-field .ni-password-wrap > button.ni-password-toggle {
    display: inline-block !important;
    justify-self: start;
    position: static !important;
    margin: 0 !important;
    padding: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    width: auto !important;
    line-height: 1.5 !important;
    font-size: .875rem !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    text-decoration: underline;
    color: inherit;
}
/* Ensure the validity icon cannot be displaced by global theme input background rules. */
.ni-account form input.ni-field-valid:not([type="checkbox"]),
.ni-account form select.ni-field-valid {
    border: 2px solid #247347 !important;
    padding-inline-end: 2.5rem !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23247347'/%3E%3Cpath d='m7 12 3.3 3.3L17 8.7' stroke='white' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right .75rem center !important;
    background-size: 1.2rem 1.2rem !important;
}
.ni-account form input.ni-field-invalid:not([type="checkbox"]) {
    border: 2px solid #b42318 !important;
    background-image: none !important;
}
.ni-account form .ni-inline-error:not([hidden]) {
    display: block !important;
    margin-top: .4rem !important;
    color: #a61b1b;
}

/* v1.8.8: Inline validation for all required form fields including selects. */
.ni-account form select.ni-field-invalid { border: 2px solid #b42318 !important; background-image: none !important; }
.ni-account form .ni-inline-error:not([hidden]) { display: block !important; margin-block: .4rem 0 !important; color: #a61b1b; font-size: .875rem; line-height: 1.4; }

/* v1.9.0: Match the invalid style on every required select and text field. */
.ni-account form input.ni-field-invalid:not([type="checkbox"]),
.ni-account form select.ni-field-invalid,
.ni-account form textarea.ni-field-invalid {
  border: 2px solid #b42318 !important;
  background-image: none !important;
}
.ni-account form .ni-inline-error:not([hidden]) {
  display: block !important;
  margin-top: .4rem !important;
}

/* Account page: responsive, scoped, no theme-dependent components. */
.ni-account .ni-account-panel { margin-block:1.5rem; padding-block:1rem; border-top:1px solid #d6d6d6; }
.ni-account .ni-account-panel h3 { margin-block:0 1rem; }
.ni-account .ni-account-panel .ni-field { margin-bottom:1rem; }
.ni-account .ni-account-courses { padding-inline-start:1.25rem; }
.ni-account .ni-account-courses li { margin-bottom:.75rem; overflow-wrap:anywhere; }
.ni-account .ni-course-status { display:block; font-size:.875rem; opacity:.8; }
@media (max-width:480px) { .ni-account .ni-account-panel { padding-inline:0; } .ni-account .ni-account-edit-form button[type=submit] { width:100%; } }


/* v1.9.6: Single searchable nationality combobox. No duplicate form controls. */
.ni-account .ni-country-combobox { position:relative; display:block; }
.ni-account .ni-country-options:not([hidden]) { display:block; position:absolute; inset-inline:0; top:100%; z-index:30; max-height:15rem; overflow-y:auto; background:#fff; color:#222; border:1px solid #777; border-radius:.35rem; box-shadow:0 8px 20px rgba(0,0,0,.12); }
.ni-account .ni-country-options[hidden], .ni-account .ni-country-option[hidden] { display:none; }
.ni-account .ni-country-option { display:block; padding:.65rem .8rem; cursor:pointer; line-height:1.4; }
.ni-account .ni-country-option:hover, .ni-account .ni-country-active { background:#e7f1ea; color:#153925; }
.ni-account .ni-country-search { width:100%; }
