/* BITNFO 3.1 auth presentation only. Existing routes, CSRF and validation remain authoritative. */
.b3-shell .b31-auth {
    --b31-auth-text: #eff6ff; --b31-auth-muted: #adc4d7; --b31-auth-line: #29465e;
    display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    width: 100%; max-width: 1360px; min-height: min(850px, calc(100dvh - 190px));
    margin: 12px auto; padding: 32px 0 50px; gap: clamp(40px, 6vw, 110px); align-items: center;
    color: var(--b31-auth-text);
}
.b3-shell .b31-auth .b3-auth-brand { padding: 12px 0; min-width: 0; }
.b31-auth .b3-auth-brand .b31-auth-edition { display: flex; align-items: center; gap: 10px; margin: 0 0 21px; color: #a8dbe9; font-size: 10px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.b31-auth-edition > span { height: 7px; width: 7px; border-radius: 2px; background: #00e6c4; box-shadow: 0 0 10px #00e6c438; transform: rotate(45deg); }
.b3-shell .b31-auth .b31-auth-wordmark { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 26px; color: #f2f5ff; font-size: 25px; font-weight: 750; letter-spacing: .06em; text-decoration: none; }
.b31-auth-wordmark em { color: #00ffb1; font-style: normal; }
.b31-auth .b31-auth-brandmark { display: grid; place-items: center; width: 43px; height: 43px; border: 1px solid #00d39a; border-radius: 12px; background: linear-gradient(140deg, #064034, #031e25); color: #00ffb4; font-size: 35px; font-weight: 700; letter-spacing: -.08em; padding-right: 5px; }
.b3-shell .b31-auth .b3-auth-brand h2 { margin: 0 0 18px; color: #f2f5ff; font-size: clamp(35px, 3.2vw, 51px); font-weight: 650; line-height: 1.13; letter-spacing: -.045em; }
.b31-auth .b3-auth-brand h2 em { color: #58ecdf; font-style: normal; }
.b31-auth .b3-auth-brand .b3-tagline { color: #00f0ac; font-size: 16px; font-weight: 600; margin: 0 0 14px; }
.b3-shell .b31-auth .b3-auth-brand .b31-auth-brand-description { color: var(--b31-auth-muted); max-width: 440px; margin: 0; font-size: 14px; line-height: 1.8; }
.b31-auth-network { position: relative; height: 275px; margin: 10px 0 8px; overflow: hidden; pointer-events: none; }
.b31-auth-network::before { content: ''; position: absolute; inset: 30% 12% 0; background: radial-gradient(ellipse, #233acb1c, transparent 68%); }
.b31-auth-network img { position: absolute; top: 48%; left: 46%; transform: translate(-50%, -50%); width: min(480px, 110%); max-width: none; height: auto; opacity: .8; mask-image: linear-gradient(transparent, #000 17%, #000 80%, transparent); }
.b31-auth-network-caption { position: absolute; bottom: 11px; left: 0; color: #87afc7; font-size: 9px; text-transform: uppercase; letter-spacing: .24em; }
.b31-auth .b3-auth-brand > .b3-text-link { color: #b9e8ed; display: inline-flex; align-items: center; gap: 14px; font-size: 12px; min-height: 36px; margin-top: 2px; }
.b31-auth .b3-auth-brand > .b3-text-link:hover { color: #00f5c8; }
.b3-shell .b31-auth .b3-auth-card { position: relative; isolation: isolate; justify-self: end; width: 100%; max-width: 560px; padding: clamp(28px, 3vw, 45px); border: 1px solid #32516e; border-radius: 22px; background: radial-gradient(ellipse at 100% 0, #492c762b, transparent 65%), linear-gradient(135deg, #0a2030, #071320 72%); box-shadow: 0 28px 90px #0005, inset 0 1px #a6e4ff10; }
.b31-auth .b3-auth-card::before { content: ''; position: absolute; inset: 0 26px auto; height: 1px; background: linear-gradient(90deg, transparent, #00d8da, #9177d8, transparent); pointer-events: none; }
.b31-auth-card-symbol { display: grid; place-items: center; color: #00f7bc; background: linear-gradient(135deg, #064a3b, #07333e); height: 47px; width: 47px; border: 1px solid #248479; border-radius: 13px; margin-bottom: 24px; box-shadow: 0 0 23px #00ff880b; }
.b31-auth-card-symbol svg { width: 25px; height: 25px; }
.b3-shell .b31-auth .b3-auth-card .b3-eyebrow { color: #7ce8ed; font-size: 10px; line-height: 1.6; letter-spacing: .15em; margin: 0 0 10px; }
.b3-shell .b31-auth .b3-auth-card h1 { color: var(--b31-auth-text); font-size: clamp(30px, 2.5vw, 39px); font-weight: 650; letter-spacing: -.035em; line-height: 1.15; margin: 0 0 12px; }
.b31-auth .b3-auth-description { color: var(--b31-auth-muted); font-size: 14px; line-height: 1.75; margin: 0 0 29px; }
.b3-shell .b31-auth .b3-auth-card .auth-form, .b3-shell .b31-auth .b3-auth-card .nfo-form { gap: 22px; }
.b3-shell .b31-auth .b3-auth-card .nfo-label { color: #e0ecf8; font-size: 13px; font-weight: 550; line-height: 1.5; }
.b3-shell .b31-auth .b3-auth-card .nfo-field { gap: 8px; min-width: 0; }
.b3-shell .b31-auth .b3-auth-card .nfo-input { min-height: 50px; padding: 12px 14px; background: #06131f; border: 1px solid #3b5b74; border-radius: 10px; color: #f0f6ff; font: 400 16px/1.5 var(--b3-sans, system-ui, sans-serif); box-shadow: inset 0 2px 6px #0001; }
.b31-auth .nfo-input::placeholder { color: #8daabd; }
.b3-shell .b31-auth .b3-auth-card .nfo-input:focus { border-color: #00cbd5; outline: 2px solid #00e5ff; outline-offset: 3px; }
.b31-auth .b3-field-heading { gap: 12px; align-items: baseline; }
.b31-auth .b3-field-heading a { color: #84dbe9; font-size: 12px; min-height: 26px; display: inline-flex; align-items: center; text-decoration: underline; text-underline-offset: 3px; }
.b3-shell .b31-auth .btn-primary { background: #00eeb0; border-color: #00eeb0; color: #002b24; min-height: 49px; border-radius: 10px; padding: 13px 18px; font-size: 14px; font-weight: 700; box-shadow: 0 0 20px #00eeb00d; }
.b3-shell .b31-auth .btn-primary:hover { background: #5dffd1; border-color: #5dffd1; }
.b31-auth .b3-auth-switch { margin-top: 27px; padding-top: 23px; border-color: #29465b; color: #b3c7d8; font-size: 13px; line-height: 1.7; }
.b31-auth .b3-auth-switch a { color: #70f3cc; font-weight: 550; }
.b31-auth .b31-auth-access-note { color: #9db7c9; font-size: 11px; line-height: 1.8; margin-top: 19px; margin-bottom: 0; }
.b31-auth .b31-auth-access-note a { color: #a4dbe7; text-decoration: underline; text-underline-offset: 3px; }
.b3-shell .b31-auth .b31-auth-errors { padding: 15px 17px; border: 1px solid #845569; border-radius: 10px; background: #382230; color: #ffd5df; margin: 0 0 24px; }
.b3-shell .b31-auth .b31-auth-errors h2 { color: #ffe3eb; font-size: 15px; line-height: 1.4; margin: 0 0 8px; letter-spacing: 0; }
.b31-auth .b31-auth-errors .nfo-error { background: none; border: 0; box-shadow: none; color: #ffd5df; padding: 0 0 0 18px; margin: 0; font-size: 12px; line-height: 1.7; overflow-wrap: anywhere; }
.b31-auth-errors a { color: #ffd5df; text-decoration: underline; text-underline-offset: 3px; }
.b3-shell .b31-auth .b3-auth-card .nfo-input[aria-invalid="true"] { border-color: #c67e9b; }
.b31-auth .b31-field-error { color: #ffc3da; font-size: 12px; line-height: 1.65; margin: 0; }
.b31-auth .b31-field-optional { font-size: 10px; font-weight: 400; color: #93b1c8; padding-left: 5px; }
.b3-shell .b31-auth .nfo-banner.warning { background: #332b21; color: #f8d9a8; border-color: #796241; line-height: 1.7; font-size: 12px; padding: 14px 16px; }

/* Registration stays a single existing POST; fieldsets communicate grouping without hiding errors. */
.b3-shell .b31-auth-register { grid-template-columns: minmax(0, .9fr) minmax(0, 1.2fr); align-items: start; gap: clamp(34px, 5vw, 85px); max-width: 1420px; }
.b3-shell .b31-auth-register .b3-auth-brand { position: sticky; top: 110px; padding-top: 35px; }
.b3-shell .b31-auth-register .b3-auth-card { max-width: 700px; }
.b31-auth .b31-form-section { min-width: 0; margin: 0; padding: 23px 0 0; border: 0; border-top: 1px solid #29445a; }
.b31-form-section legend { padding: 0 10px 0 0; color: #e8f4ff; font-size: 14px; font-weight: 600; letter-spacing: 0; }
.b31-auth .b31-form-section-note { color: #a9c1d3; font-size: 11px; line-height: 1.7; margin: -10px 0 17px; }
.b31-form-section-note a { color: #77e4df; text-decoration: underline; text-underline-offset: 3px; }
.b31-auth .b31-form-section .nfo-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 16px; }
.b31-auth .b31-registration-consents { padding-top: 20px; }
.b31-registration-consents > div { margin-top: 12px; }
.b3-shell .b31-auth .b31-registration-consents .nfo-checkbox { align-items: flex-start; color: #bfd0df; font-size: 12px; line-height: 1.65; gap: 11px; }
.b31-registration-consents .nfo-checkbox input { margin: 2px 0 0; flex: 0 0 18px; accent-color: #00eeb0; }
.b31-registration-consents .b31-field-error { padding-left: 29px; margin-top: 4px; }
.b31-auth .b3-auth-card .b3-caption { color: #a9bfd0; }

@media (max-width: 1000px) {
    .b3-shell .b31-auth { gap: 34px; padding: 22px 0 35px; }
    .b3-shell .b31-auth .b3-auth-brand h2 { font-size: 35px; }
    .b31-auth .b3-auth-brand .b3-tagline { font-size: 14px; }
    .b31-auth-network { height: 250px; }
    .b3-shell .b31-auth-register { grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: 28px; }
    .b3-shell .b31-auth-register .b3-auth-card { padding: 26px; }
    .b3-shell .b31-auth-register .b3-auth-brand h2 { font-size: 28px; }
}
@media (max-width: 800px) {
    .b3-shell .b31-auth, .b3-shell .b31-auth-register { grid-template-columns: minmax(0, 1fr); gap: 25px; max-width: 620px; min-height: 0; margin: 0 auto; padding: 18px 0 35px; }
    .b3-shell .b31-auth .b3-auth-brand, .b3-shell .b31-auth-register .b3-auth-brand { position: static; padding: 0 8px; }
    .b31-auth .b3-auth-brand .b31-auth-edition { margin-bottom: 13px; font-size: 9px; }
    .b3-shell .b31-auth .b31-auth-wordmark, .b31-auth-network, .b31-auth .b3-auth-brand > .b3-text-link, .b3-shell .b31-auth .b3-auth-brand .b31-auth-brand-description { display: none; }
    .b3-shell .b31-auth .b3-auth-brand h2 { font-size: 29px; margin: 0 0 10px; }
    .b31-auth .b3-auth-brand .b3-tagline { margin: 0; font-size: 13px; }
    .b3-shell .b31-auth .b3-auth-card { max-width: none; padding: 30px; }
    .b31-auth-card-symbol { display: none; }
}
@media (max-width: 540px) {
    .b3-shell .b31-auth { gap: 22px; padding: 4px 0 24px; }
    .b3-shell .b31-auth .b3-auth-brand { padding: 0 5px; }
    .b3-shell .b31-auth .b3-auth-brand h2 { font-size: 25px; }
    .b3-shell .b31-auth .b3-auth-card { padding: 25px 20px; border-radius: 16px; }
    .b3-shell .b31-auth .b3-auth-card h1 { font-size: 29px; }
    .b31-auth .b3-auth-description { font-size: 13px; margin-bottom: 24px; }
    .b3-shell .b31-auth .b3-auth-card .b3-eyebrow { font-size: 9px; letter-spacing: .1em; }
    .b31-auth .b31-form-section .nfo-form-grid { grid-template-columns: minmax(0, 1fr); gap: 17px; }
    .b31-auth .b3-auth-switch { font-size: 12px; }
    .b31-auth .b31-auth-access-note { font-size: 10px; }
    .b31-auth .b31-auth-errors .nfo-error { font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
    .b31-auth *, .b31-auth *::before, .b31-auth *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
