/* Account pages reuse the portal palette and controls without an auth runtime. */
.portal-register-link{font-size:var(--text-sm);padding:0.5625rem 1.125rem;border:0.0625rem solid #e7e7ef;border-radius:1.5rem;color:#393943}
.portal-auth-back{display:none}
body.portal-auth-active{background:#f7f8fc}
body.portal-auth-active .q-header{background:#f7f8fc;box-shadow:none;border-bottom-color:transparent}
body.portal-auth-active .q-header-actions>:not(.portal-auth-back){display:none}
body.portal-auth-active .portal-auth-back{display:inline-flex;align-items:center;gap:0.5625rem;color:var(--ui-muted);font-size:var(--text-sm)}
body.portal-auth-active .portal-attribution{background:#f7f8fc;padding-top:0}
.portal-auth{padding:1.875rem 2.5rem 2.75rem}
.auth-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);max-width:73.75rem;margin:auto;overflow:hidden;border:0.0625rem solid #e9eaf2;border-radius:1.875rem;background:white;box-shadow:0 1.25rem 4.375rem #272a4a06}
.auth-story{position:relative;display:flex;flex-direction:column;overflow:hidden;padding:3.375rem 2.875rem 2.25rem;min-height:47.5rem;background:linear-gradient(150deg,#f0f3ff,#f5f2ff 57%,#f0f8fb);border-right:0.0625rem solid #ececf5}
.auth-eyebrow{display:flex;align-items:center;gap:0.625rem;margin:0 0 1.5625rem;color:var(--ui-muted);font-size:var(--text-xs);letter-spacing:.14em}
.auth-eyebrow:before{content:"";width:1.3125rem;height:0.0625rem;background:#9390cb}
.auth-story h1{position:relative;margin:0;color:#24252d;font-weight:550;font-size:var(--text-metric);line-height:1.5;letter-spacing:-0.09375rem;z-index:1}
.auth-story h1 span{color:var(--ui-accent)}
.auth-description{position:relative;margin:1.125rem 0 0;max-width:21.25rem;color:var(--ui-muted);font-size:var(--text-base);line-height:1.95;z-index:1}
.auth-visual{position:relative;isolation:isolate;flex:1;min-height:20.3125rem;margin:1.625rem -0.875rem 0.25rem;display:grid;place-items:center}
.auth-visual:before{content:"";position:absolute;inset:1.125rem;background:url('/portal-assets/hero-ribbon.png') center/cover;border-radius:50%;opacity:.17;filter:blur(0.8125rem);z-index:-1}
.auth-orbit{position:absolute;width:16.25rem;height:16.25rem;border-radius:50%;border:0.0625rem solid #c4c5e733;transform:rotate(-25deg)}
.auth-orbit:before{content:"";position:absolute;inset:2rem;border-radius:50%;border:0.0625rem dashed #b4b4df55}
.auth-core{width:6.875rem;height:6.875rem;display:grid;place-items:center;border-radius:2rem;border:0.0625rem solid #ffffffee;background:linear-gradient(130deg,#ffffffd9,#f9f8ffc9);box-shadow:0 1.25rem 2.8125rem #7270ad15,inset 0 0.0625rem 0 #fff;backdrop-filter:blur(1.375rem);rotate:-8deg}
.auth-core svg{width:4rem;height:4rem;rotate:8deg}
.auth-node{position:absolute;display:flex;align-items:center;gap:0.75rem;padding:0.875rem 1.125rem;border:0.0625rem solid #ffffffeb;border-radius:1.125rem;background:#ffffffc9;box-shadow:0 0.75rem 1.875rem #6f739510,inset 0 0.0625rem 0 #fff;backdrop-filter:blur(1.125rem);font-size:var(--text-xs);color:#535469}
.auth-node svg{width:1.25rem;height:1.25rem;stroke:#8982d9;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.auth-node-a{top:2.375rem;left:0.375rem;rotate:-5deg}
.auth-node-b{top:4.3125rem;right:0;rotate:5deg}
.auth-node-c{bottom:2.25rem;left:2rem;rotate:3deg}
.auth-node-d{bottom:1.125rem;right:1.0625rem;rotate:-5deg}
.auth-story-foot{display:flex;gap:1.5rem;padding-top:1.5625rem;border-top:0.0625rem solid #dcddef88;font-size:var(--text-xs);color:var(--ui-muted)}
.auth-story-foot a{display:flex;align-items:center;gap:0.5rem}
.auth-story-foot a:hover{color:var(--ui-accent)}
.auth-panel{padding:2.5rem 2.875rem 2.125rem;min-width:0}
.auth-panel-header{margin-bottom:1.625rem}
.auth-panel-header .auth-eyebrow{font-size:var(--text-xs);margin-bottom:0.75rem;letter-spacing:.12em}
.auth-panel-header .auth-eyebrow:before{display:none}
.auth-panel-header h2{font-size:var(--text-heading);font-weight:550;line-height:1.4;letter-spacing:-0.05rem;margin:0;color:#25262e}
.auth-panel-header p:last-child{font-size:var(--text-xs);line-height:1.8;color:var(--ui-muted);margin:0.5625rem 0 0}
.auth-fields{display:grid;gap:1.0625rem}
.auth-panel fieldset{border:0;padding:0;margin:0;min-width:0}
.auth-field{min-width:0}
.auth-field>label{display:block;font-size:var(--text-xs);color:#51535e;line-height:1.125rem;margin-bottom:0.5rem}
.auth-field input{width:100%;height:2.875rem;padding:0 0.9375rem;border:0.0625rem solid #e6e7ef;border-radius:0.75rem;background:#fcfcfe;outline:0;color:#343641;font-family:inherit;font-size:var(--text-sm);transition:border-color .2s,box-shadow .2s,background .2s}
.auth-field input::placeholder{color:var(--ui-muted)}
.auth-field input:hover{border-color:#d3d4e3}
.auth-field input:focus{border-color:#a19ae7;background:white;box-shadow:0 0 0 0.1875rem #7670d50b}
.auth-field input[aria-invalid=true]{border-color:#d9a7aa;background:#fffcfc}
.auth-field input[aria-invalid=true]:focus{box-shadow:0 0 0 0.1875rem #d98a8a0c}
.auth-field-error,.auth-field-hint{font-size:var(--text-xs);line-height:1.6;margin:0.4375rem 0 0}
.auth-field-error{color:var(--ui-danger)}
.auth-field-hint{color:var(--ui-muted)}
.auth-field-error:empty{display:none}
.auth-password{position:relative}
.auth-password input{padding-right:3rem}
.auth-password button{position:absolute;right:0.4375rem;top:0.3125rem;display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:0.5625rem;color:var(--ui-muted)}
.auth-password button:hover{background:#f2f1f9;color:var(--ui-accent)}
.auth-password button svg{width:1.125rem;height:1.125rem;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.auth-password button[aria-pressed=true] .auth-eye-slash{display:block}
.auth-eye-slash{display:none}
.auth-code-row{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem;gap:0.625rem}
.auth-code-row button{font-size:var(--text-xs);border:0.0625rem solid #e1dff0;background:#f7f5ff;color:var(--ui-accent);border-radius:0.75rem}
.auth-code-row button:hover{background:#eeebfc}
.auth-legal{display:flex;align-items:flex-start;gap:0.5rem;margin:1.375rem 0 1.125rem;color:var(--ui-muted);font-size:var(--text-xs);line-height:1.8}
.auth-legal input{width:0.875rem;height:0.875rem;margin:0.1875rem 0 0;flex:none;accent-color:#7770d2}
.auth-legal button{font-size:inherit;color:var(--ui-accent);text-decoration:underline;text-decoration-color:#d9d6e4;text-underline-offset:0.1875rem}
.auth-primary{display:flex;width:100%;height:2.875rem;justify-content:center;align-items:center;gap:0.625rem;font-size:var(--text-sm)}
.auth-primary svg{width:1rem;height:1rem;stroke:currentColor;stroke-width:1.5;fill:none}
.auth-status{margin:0.75rem 0 0;color:var(--ui-muted);font-size:var(--text-xs);line-height:1.7;text-align:center;min-height:1.1875rem}
.auth-status[data-error=true]{color:var(--ui-danger)}
.auth-methods{display:grid;gap:0.5625rem;margin-top:1.25rem}.auth-methods button{border:0.0625rem solid #e8e5f0;border-radius:0.75rem;padding:0.75rem;color:var(--ui-muted);font-size:var(--text-xs);background:#faf9fd}
.auth-switch{padding-top:1.375rem;margin:1.375rem 0 0;border-top:0.0625rem solid #f0f0f5;text-align:center;font-size:var(--text-xs);color:var(--ui-muted)}
.auth-switch a{margin-left:0.375rem;color:var(--ui-accent)}
.auth-login-extras{display:flex;justify-content:flex-end;margin:0.875rem 0 1.5625rem;font-size:var(--text-xs);color:var(--ui-muted)}
.auth-login-panel{padding-top:5.6875rem}
.auth-login-panel .auth-panel-header{margin-bottom:2.25rem}
.auth-login-panel .auth-fields{gap:1.4375rem}
.auth-panel :is(button,a):focus-visible{outline:0.125rem solid #9690db;outline-offset:0.1875rem}
.auth-panel button:disabled{cursor:not-allowed;opacity:.58}
@media(min-width:56.3125rem) and (prefers-reduced-motion:no-preference){.portal-auth:not([hidden]) .auth-panel,.portal-auth:not([hidden]) .auth-story{animation:auth-enter .5s var(--motion-ease) both}.portal-auth:not([hidden]) .auth-panel{animation-delay:70ms}}
@keyframes auth-enter{from{opacity:0;transform:translateY(0.75rem)}to{opacity:1;transform:translateY(0)}}
@media(max-width:68.75rem){.portal-auth{padding:1.5rem 1.75rem 2.25rem}.auth-story{padding:2.8125rem 1.875rem 1.875rem}.auth-panel{padding:2.25rem 2rem 1.875rem}.auth-story h1{font-size:var(--text-metric)}.auth-description{font-size:var(--text-sm)}.auth-node{padding:0.75rem;font-size:var(--text-xs);gap:0.5rem}.auth-node-a{left:0}.auth-node-c{left:0.1875rem}.auth-node-d{right:0}.auth-story-foot{gap:1.0625rem;font-size:var(--text-xs)}.auth-login-panel{padding-top:4.875rem}}
@media(max-width:56.25rem){.portal-auth{padding:1.375rem 1.5rem 2rem}.auth-shell{grid-template-columns:1fr;max-width:35rem;border-radius:1.5rem}.auth-story{min-height:0;padding:1.75rem 2rem;border-right:0;border-bottom:0.0625rem solid #eeeef6}.auth-story .auth-eyebrow,.auth-visual,.auth-story-foot{display:none}.auth-story h1{font-size:var(--text-title);line-height:1.5;letter-spacing:-0.0375rem}.auth-story h1 br{display:none}.auth-description{margin-top:0.625rem;max-width:none;font-size:var(--text-xs)}.auth-panel{padding:2rem}.auth-panel-header h2{font-size:var(--text-heading)}.portal-register-link{padding:0.5rem 0.875rem;font-size:var(--text-xs)}.auth-login-panel{padding-top:2.25rem}}
@media(max-width:37.5rem){.portal-auth{padding:0.75rem 0.875rem 1.75rem}.auth-shell{border-radius:1.375rem}.auth-story{padding:1.5rem}.auth-story h1{font-size:var(--text-title)}.auth-description{font-size:var(--text-xs);line-height:1.85}.auth-panel{padding:1.75rem 1.5rem}.auth-panel-header{margin-bottom:1.5rem}.auth-panel-header h2{font-size:var(--text-heading)}.auth-panel-header .auth-eyebrow{font-size:var(--text-xs)}.auth-panel-header p:last-child{font-size:var(--text-xs)}.auth-field input{font-size:var(--text-base);height:3rem}.auth-password button{top:0.375rem}.auth-code-row{grid-template-columns:minmax(0,1fr) 6.625rem;gap:0.5rem}.auth-code-row button{font-size:var(--text-xs)}.auth-primary{height:3rem}.auth-fields{gap:1.125rem}.auth-legal{font-size:var(--text-xs)}.auth-story h1 span{white-space:nowrap}.portal-auth-active .q-header .q-nav{display:none}.portal-auth-active .q-header{gap:0.75rem}.portal-auth-active .portal-auth-back{font-size:var(--text-xs)}.portal-register-link{font-size:var(--text-xs);padding:0.4375rem 0.75rem}.q-header-actions{gap:0.75rem}.auth-status{font-size:var(--text-xs)}}
@media(prefers-reduced-motion:reduce){.auth-panel,.auth-story{animation:none}.auth-field input{transition:none}}
@media(prefers-reduced-transparency:reduce){.auth-node,.auth-core{background:#fff;backdrop-filter:none}}
