/* Dedicated sign-in page (Final 2.1 / P1 p1-d6c / p1-d2): linen canvas, no room chrome. */
#signin{display:none;width:100%;min-height:100dvh;box-sizing:border-box;align-items:center;justify-content:center;padding:var(--s-8) var(--s-5);background:var(--bg);animation:up .3s both}
body.is-boot #signin{display:none}
body.is-signed-out #signin{display:flex}
html[data-boot="session"] body.is-boot #wsApp{display:flex!important}
/* Portal first paint: session/portal boot never shows chat-era chrome or Ask-as-home. Explicit — do not rely on :has(.ws-app). */
html[data-boot="session"] .ctop,html[data-boot="session"] .cmain,html[data-shell="portal"] .ctop,html[data-shell="portal"] .cmain,body.is-boot .ctop,body.is-boot .cmain{display:none}
html[data-boot="session"] body.is-boot .ws-chat-col,html[data-boot="session"] body.is-boot .ws-tabs,html[data-shell="portal"] body.is-boot .ws-chat-col,html[data-shell="portal"] body.is-boot .ws-tabs{visibility:hidden;overflow:hidden;grid-column:3;grid-row:2}
html[data-boot="session"] body.is-boot .ws-app .ws-main,html[data-shell="portal"] body.is-boot .ws-app .ws-main{grid-template-columns:minmax(0,1fr) minmax(0px,0fr) minmax(0px,0fr)}
body.is-signed-out .cmain{display:none}
body.is-signed-out .ctop{display:none}
.signin-shell{width:100%;max-width:360px;display:flex;flex-direction:column;gap:var(--s-4)}
.signin-title{order:1;margin:0;font-family:var(--f-display);font-size:32px;font-weight:500;line-height:1.2;color:var(--ink)}
.signin-sub{order:2;margin:0;font-size:var(--t-md);color:var(--ink2);line-height:1.5}
.mob-gate-draft{order:3}
.signin-card{order:4}
#signinCard[hidden]{display:none!important}
#signinHint.is-alert{order:5}
.signin-fields{order:6;display:flex;flex-direction:column}
#siBtn{order:7}
#signinHint{order:8}
.signin-form-foot{order:9}
.signin-shell:has(#signinHint:not(:empty):not(.is-alert)) .signin-form-foot{display:none}
.signin-shell:has(#siBtn[aria-busy="true"]) .signin-fields{opacity:.5;pointer-events:none}
#signin label{display:block;font-size:var(--t-micro);letter-spacing:0;text-transform:none;color:var(--muted);margin:0 0 4px}
#signin label[for="siPass"]{margin-top:var(--s-3)}
#signin input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-card);font:inherit;font-size:var(--t-md);background:var(--card);color:var(--ink);box-sizing:border-box}
#signin input:disabled{color:var(--muted);cursor:default;background:var(--bg2)}
#signin button#siBtn{width:100%;height:36px;padding:0 var(--s-4);border:1px solid var(--ember);border-radius:var(--r-card);background:var(--ember);color:var(--card);font-weight:500;font-size:var(--t-md);cursor:pointer}
#signin button#siBtn:disabled:not([aria-busy="true"]){opacity:1;cursor:default;background:transparent;border-color:var(--line);color:var(--muted);box-shadow:none}
/* 2.1d / p1-d2b: busy stays on the ember primary (spinner beside the label). No full-page spinner. */
#signin button#siBtn[aria-busy="true"]{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:progress;opacity:.85}
#signin button#siBtn[aria-busy="true"]::before{content:"";width:12px;height:12px;border-radius:var(--r-chip);border:2px solid var(--card);border-right-color:transparent;animation:signin-spin .8s linear infinite}
@keyframes signin-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){#signin button#siBtn[aria-busy="true"]::before{animation:none}}
#signinHint{margin:0;font-size:var(--t-micro);color:var(--muted);line-height:1.4}
#signinHint.is-alert{color:var(--emberL)}
.signin-form-foot{margin:0;font-size:var(--t-micro);color:var(--muted);line-height:1.4}
.signin-status{display:inline-block;width:8px;height:8px;border-radius:var(--r-chip);background:var(--ember);flex:none}
.signin-card .ws-twin{margin:0}
.signin-card .ws-twin-title{display:flex;align-items:center;gap:var(--s-2)}
