html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

a, .btn-link {
    color: #006bb7;
}

.btn-primary {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

/* Show/hide + suggest controls on password fields (works with both the custom login styling and
   bootstrap form-controls; the button overlays the right edge of the wrapped input). */
.pw-wrap { position: relative; }
.pw-wrap input { width: 100%; padding-right: 3.4rem; }
.pw-toggle {
    position: absolute; right: .55rem; top: 50%; transform: translateY(-50%);
    border: 0; background: none; font-size: .78rem; font-weight: 600;
    color: inherit; opacity: .65; cursor: pointer; padding: 0;
}
.pw-toggle:hover { opacity: 1; }
.pw-suggest {
    border: 0; background: none; font-size: .78rem; text-decoration: underline;
    color: inherit; opacity: .75; cursor: pointer; padding: 0; margin-top: .15rem;
}
.pw-suggest:hover { opacity: 1; }

/* Investor portal runs chrome-free (PortalLayout): no app sidebar or "Signed in as" bar, so the
   content owns the full window width — only a small breathing margin at the edges. */
.portal-page {
    width: 100%;
    padding: 1.25rem 1.5rem 3rem;
}

@media (max-width: 640px) {
    .portal-page { padding: 1rem 0.85rem 2rem; }
}

/* The Blazor error bar must be hidden until the framework shows it — GLOBALLY. These rules also
   exist scoped in MainLayout.razor.css, where the scope attribute meant they matched ONLY inside
   MainLayout: PortalLayout's copy of the div matched no hiding rule, so the investor portal showed
   "An unhandled error has occurred" permanently with no error anywhere. Any layout that renders
   the div gets the hiding rule from here. */
#blazor-error-ui {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

/* ---------------------------------------------------------------------------------------------
   Public registration wizard (/Account/Register, /Account/ConfirmEmail). Deliberately plain and
   centred: a prospect meets this before they have any account, so it reads as a form, not an app.
   --------------------------------------------------------------------------------------------- */
.register-page {
    min-height: 100vh;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 3rem 1rem;
    /* Warm paper, matching the authenticated shell (theme.css --nw-paper). */
    background: var(--nw-paper, #f8f6f1);
}

.register-card {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    padding: 2rem;
    width: 100%;
    max-width: 720px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
}

/* The public layout's landing typography paints h1 white at hero size and h2 at display size —
   on a white card that renders the heading as a blank band. Pin the card's headings to card scale
   with .nw-public specificity so these rules beat theme.css regardless of load order. */
.nw-public .register-card h1 {
    font-size: 1.5rem;
    margin-bottom: 1rem;
    color: var(--nw-ink, #071016);
}

.nw-public .register-card h2 {
    font-size: 1.15rem;
    font-family: Inter, system-ui, sans-serif;
    font-weight: 600;
    color: var(--nw-ink, #071016);
    margin-bottom: .75rem;
}

/* The funds' logos across the top of the registration pages. */
.register-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2.25rem;
    flex-wrap: wrap;
    margin-bottom: 1.5rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid #eceff2;
}

.register-brand img {
    max-height: 64px;
    width: auto;
    object-fit: contain;
}

.register-steps {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    counter-reset: step;
    font-size: .85rem;
    color: #6c757d;
}

.register-steps li::before {
    counter-increment: step;
    content: counter(step);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.4rem;
    height: 1.4rem;
    margin-right: .4rem;
    border-radius: 50%;
    border: 1px solid currentColor;
    font-size: .75rem;
}

.register-steps li { display: flex; align-items: center; }
.register-steps li.current { color: var(--nw-accent-dark, #896b3d); font-weight: 600; }
.register-steps li.done { color: #198754; }

.register-emphasis {
    background: #e7f5ec;
    border-left: 4px solid #198754;
    padding: .75rem 1rem;
    border-radius: .25rem;
}

.register-what { padding-left: 1.2rem; }
.register-what li { margin-bottom: .35rem; }

.register-rules { margin-top: 1rem; }
.register-rules ul { list-style: none; padding-left: 0; margin: 0; font-size: .875rem; color: #6c757d; }
.register-rules li.met { color: #198754; }

.register-actions {
    display: flex;
    justify-content: space-between;
    gap: .5rem;
    margin-top: 1.75rem;
}

/* ---- Investor wizards (registration + investment funding) --------------------------------------
   Shared by Subscribe.razor and FundInvestment.razor — global on purpose (moved out of scoped CSS
   2026-08-15 so both wizards read one stylesheet): a sticky step nav on the left (groups with
   progress dots) and the step card on the right. */

/* Every heading the wizards render (step titles and the submitted/fatal screens' h1s) reads dark
   ink on the warm paper, matching the admin view. */
.sub-page h1 {
    color: var(--nw-ink, #071016);
}

/* Small-caps step kicker above the title (replaced the washed-out light badge — Scott 2026-08-16;
   same treatment as the nav group labels so the two read as one system). */
.sub-kicker {
    font-size: 0.66rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #2e3b47;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.sub-wrap {
    max-width: 1080px;
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
    display: grid;
    grid-template-columns: 230px 1fr;
    gap: 2.5rem;
    align-items: start;
}

@media (max-width: 800px) {
    .sub-wrap {
        grid-template-columns: 1fr;
    }

    .sub-nav {
        position: static;
        display: flex;
        flex-wrap: wrap;
        gap: 1rem 1.5rem;
    }
}

.sub-nav {
    position: sticky;
    top: 1.5rem;
}

.sub-nav-fund {
    font-weight: 700;
    font-size: 1.05rem;
    margin-bottom: 1rem;
    /* Pinned dark like the admin view's headings — the wizard sits on warm paper, and an inherited
       or landing-page white here rendered the fund name (and step titles below) nearly invisible. */
    color: var(--nw-ink, #071016);
}

.sub-nav-group {
    margin-bottom: 1.1rem;
}

.sub-nav-group-label {
    font-size: 0.66rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    /* Dark slate, not the design's pale gray — on the warm paper the pale titles read as white
       (user report: "screen titles in white colored font cannot be seen"). */
    color: #2e3b47;
    margin-bottom: 0.45rem;
}

.sub-nav-item {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin-bottom: 0.45rem;
}

.sub-dot {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    flex-shrink: 0;
    font-size: 10px;
    line-height: 16px;
    text-align: center;
    background: #f0f3f4;
    color: #fff;
    border: 1px solid #dde3e7;
}

.sub-dot.done {
    background: var(--nw-accent, #b79358);
    border-color: var(--nw-accent, #b79358);
}

.sub-dot.current {
    background: #fff;
    border-color: var(--nw-accent, #b79358);
}

.sub-nav-label {
    font-size: 0.8rem;
    /* Every step title reads dark (user report: the pale-gray titles were unreadable on paper);
       the current step still stands out through weight, done steps through the gold check dot. */
    color: var(--nw-ink, #071016);
}

.sub-nav-label.current {
    color: #0f1720;
    font-weight: 600;
}

.sub-nav-label.done {
    color: #2e3b47;
}

.sub-title {
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    margin: 0 0 0.4rem;
    color: var(--nw-ink, #071016);
}

.sub-intro {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.55;
    color: #57616c;
    max-width: 62ch;
}

.sub-blurb {
    font-size: 0.9rem;
    line-height: 1.6;
    color: #3f4a55;
}

.sub-consent {
    background: #f5f8f8;
    border: 1px solid #e2e8ec;
    border-radius: 10px;
    padding: 1rem 1.25rem;
    font-size: 0.9rem;
    line-height: 1.65;
    color: #3f4a55;
    margin-bottom: 0.75rem;
}

.sub-doc-row {
    border: 1px solid #e2e8ec;
    border-radius: 10px;
    padding: 0.9rem 1.2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.7rem;
}

.sub-ack-row {
    display: flex;
    gap: 0.7rem;
    align-items: flex-start;
    padding: 0.5rem 0.6rem;
    border-radius: 8px;
    cursor: pointer;
    font-size: 0.9rem;
    line-height: 1.5;
    color: #3f4a55;
}

.sub-ack-row:hover {
    background: #f5f8f8;
}

.sub-ack-row input {
    margin-top: 0.2rem;
    flex-shrink: 0;
}

.sub-check-card {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    padding: 0.75rem 0.9rem;
    border: 1px solid #e2e8ec;
    border-radius: 10px;
    cursor: pointer;
    margin-bottom: 0.45rem;
    font-size: 0.9rem;
    line-height: 1.5;
    color: #3f4a55;
}

.sub-check-card.checked {
    background: #faf6ec;
    border-color: var(--nw-accent-light, #d3ba82);
}

.sub-check-card input {
    margin-top: 0.15rem;
    flex-shrink: 0;
}

.sub-owner-panel {
    border: 1px solid #e2e8ec;
    border-radius: 10px;
    padding: 1.1rem 1.3rem;
    margin-bottom: 1.1rem;
}

.sub-owner-heading {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #57616c;
    margin-bottom: 0.8rem;
}

.sub-sig-card {
    border: 1px dashed #cdd5da;
    border-radius: 10px;
    padding: 0.85rem 1.3rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    background: #fcfdfd;
}

.sub-sig-script {
    font-family: "Segoe Script", "Brush Script MT", cursive;
    font-size: 1.9rem;
    color: #0f1720;
}
