/* App shell: collapsible sidebar (rail on desktop, drawer on phones), recent conversations. Tokens only. */
.app{grid-template-columns:var(--side-w) minmax(0,1fr);transition:grid-template-columns var(--d3) var(--ease)}
.side{padding:var(--s3) var(--s3) var(--s3);gap:2px;overflow:hidden}
.side-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:var(--s1) 0 var(--s3)}.side-top .brand{padding:0 calc(6px*var(--fz))}
.side a.nav{white-space:nowrap}.side a.nav:first-of-type{background:var(--bg3);color:var(--tx);border:1px solid var(--bd)}.side a.nav:first-of-type.on,.side a.nav:first-of-type:hover{background:var(--acc-soft);color:var(--acc-ink);border-color:var(--acc-bd)}
.recents{flex:1;min-height:0;display:flex;flex-direction:column;margin-top:var(--s3)}.rh{margin:0 calc(10px*var(--fz)) calc(6px*var(--fz));font-size:calc(11.5px*var(--fz));font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}
#rlist{overflow:auto;display:grid;gap:1px;align-content:start;padding-bottom:var(--s2)}
#rlist a{display:flex;align-items:center;gap:var(--s2);min-height:calc(34px*var(--fz));padding:0 calc(10px*var(--fz));border-radius:var(--r2);color:var(--tx2);text-decoration:none;font-size:calc(13.5px*var(--fz));transition:background-color var(--t) var(--ease)}
#rlist a:hover{background:var(--bg3);color:var(--tx)}#rlist a.on{background:var(--acc-soft);color:var(--acc-ink);font-weight:550}
#rlist .tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dot{width:calc(8px*var(--fz));height:calc(8px*var(--fz));border-radius:50%;flex:none}.dot.run{border:2px solid var(--acc-bd);border-top-color:var(--acc);width:calc(12px*var(--fz));height:calc(12px*var(--fz));animation:spin .8s linear infinite}.dot.new{background:var(--acc)}.dot.bad{background:var(--bad)}
.rempty{margin:0 calc(10px*var(--fz));font-size:calc(12.5px*var(--fz));color:var(--tx3)}
.scrim{position:fixed;inset:0;background:var(--overlay);z-index:calc(var(--z-side) + 1);animation:fade var(--d3) var(--ease)}
/* desktop rail */
body.side-collapsed .app{grid-template-columns:calc(64px*var(--fz)) minmax(0,1fr)}
body.side-collapsed .side{padding-inline:calc(10px*var(--fz));align-items:center}body.side-collapsed .side-top{flex-direction:column;gap:var(--s2)}
body.side-collapsed .side .brand-full,body.side-collapsed .side a.nav span,body.side-collapsed .recents,body.side-collapsed .who span:not(.av){display:none}
body.side-collapsed .side .brand-sym{display:block}body.side-collapsed .side a.nav{width:calc(42px*var(--fz));justify-content:center;padding:0}body.side-collapsed .who{border:0;padding:var(--s2) 0}
body.side-collapsed #sidetoggle .ico{transform:scaleX(-1)}
[dir=rtl] .side{border-right:0;border-left:1px solid var(--bd)}[dir=rtl] #sidetoggle .ico{transform:scaleX(-1)}[dir=rtl] body.side-collapsed #sidetoggle .ico{transform:none}
.side .sp{display:none}
@media(max-width:800px){
.app{grid-template-columns:1fr}
.side{position:fixed;top:0;bottom:0;left:0;width:min(calc(300px*var(--fz)),86vw);height:auto;z-index:calc(var(--z-side) + 2);transform:translateX(-102%);transition:transform var(--d3) var(--ease);box-shadow:var(--sh2)}
[dir=rtl] .side{left:auto;right:0;transform:translateX(102%)}
body.drawer .side{transform:none}
body.side-collapsed .app{grid-template-columns:1fr}body.side-collapsed .side{align-items:stretch;padding-inline:var(--s3)}body.side-collapsed .side .brand-full,body.side-collapsed .side a.nav span,body.side-collapsed .recents{display:revert}
body.side-collapsed .side a.nav{width:auto;justify-content:flex-start;padding:0 calc(10px*var(--fz))}body.side-collapsed .who span:not(.av){display:revert}body.side-collapsed .side-top{flex-direction:row}
#sidetoggle{display:none}
.mbar{display:flex;align-items:center;gap:var(--s2);padding:calc(8px*var(--fz)) var(--s3) 0;position:sticky;top:0;background:var(--bg);z-index:var(--z-bar)}.mbar .brand{padding:0}.mbar .brand img{height:calc(30px*var(--fz))}
body.ws .mbar{border-bottom:1px solid var(--bd);padding-bottom:calc(8px*var(--fz))}
.main{padding-top:var(--s5);padding-bottom:var(--s7)}#toasts{bottom:calc(var(--s5) + env(safe-area-inset-bottom))}}
