/* App shell: left menu, mobile top bar, page container, login box, theme-icon switching. */
/* ---- app shell: left menu ---- */
body.app{display:grid;grid-template-columns:var(--sw,252px) minmax(0,1fr);min-height:100vh}
html.side-c{--sw:72px}
.side{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--side);border-right:1px solid var(--line);padding:14px 12px;display:flex;flex-direction:column;gap:2px;z-index:20}
.side .logo{display:flex;align-items:center;gap:10px;padding:6px 8px 14px;color:var(--text);font-weight:800;font-size:18px;letter-spacing:.2px;white-space:nowrap}
.side .logo svg{width:30px;height:30px;flex:none}.side .logo b{color:var(--accent)}
.side .grp{font-size:11px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--mute);padding:14px 10px 6px;white-space:nowrap}
.side a.it,.side button.it{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:10px;color:var(--mute);font:inherit;font-weight:500;white-space:nowrap;background:none;border:0;cursor:pointer;width:100%;text-align:left}
.side .sub-h{display:flex;align-items:center;gap:8px;padding:9px 10px 3px;color:var(--text);font-weight:600;white-space:nowrap}
.side a.it.sub{padding-left:40px;font-size:14px}
.side a.it:hover,.side button.it:hover{background:var(--chip);color:var(--text)}
.side a.it.on{background:var(--chip);color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}
.side .ic{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.side .sp{flex:1}
.side .me{display:flex;align-items:center;gap:10px;padding:10px;border-top:1px solid var(--line);margin-top:8px;white-space:nowrap}
.side .av{width:32px;height:32px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-weight:800;flex:none}
.side .me small{display:block;color:var(--mute);font-size:12px}
.side .me a{color:var(--text);font-weight:600}
html.side-c .side .sub-h{display:none}
html.side-c .side a.it.sub{padding-left:10px}
html.side-c .side .lb,html.side-c .side .grp,html.side-c .side .logo span,html.side-c .side .me>div{display:none}
html.side-c .side{padding-inline:10px}
html.side-c .side a.it,html.side-c .side button.it{justify-content:center}
.main{padding:22px 28px 60px;min-width:0;max-width:1320px;width:100%}
.mtop{display:none}
.burger{background:none;border:0;color:var(--text);padding:6px;cursor:pointer}.burger svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.scrim{display:none}
@media (max-width:900px){
 body.app{grid-template-columns:minmax(0,1fr)}
 .side{position:fixed;inset:0 auto 0 0;width:270px;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.4)}
 html.menu-o .side{transform:none}html.menu-o .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:15}
 html.side-c .side .lb,html.side-c .side .grp,html.side-c .side .logo span,html.side-c .side .me>div{display:revert}
 .mtop{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--side);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;font-weight:800}
 .main{padding:16px 14px 50px}
}
.side-toggle{margin-top:auto}
@media (max-width:900px){.side button.side-toggle{display:none}}
body.auth{display:block}
.login{max-width:380px;margin:12vh auto}.login .btn{width:100%;margin-top:8px}
.theme-i{display:none}
html[data-theme="dark"] .theme-i.d,html[data-theme="light"] .theme-i.l,html:not([data-theme]) .theme-i.a{display:block}
