/* app shell: sidebar + topbar */
.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:#0f1630;color:#cdd5f1;display:flex;flex-direction:column;padding:16px 12px}
.side .brand{color:#fff;padding:4px 8px 18px;font-size:16px}.side .brand img{width:34px;height:34px}
.side .school{font-size:11.5px;color:#8f9bc4;font-weight:500;display:block}
.nav{display:flex;flex-direction:column;gap:2px;overflow:auto}
.nav a{display:flex;align-items:center;gap:11px;color:#c3cbe8;padding:9px 11px;border-radius:10px;font-weight:500}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}.nav a.on{background:linear-gradient(90deg,#3b6cf6,#5a5ff0);color:#fff}
.nav .ni{width:20px;text-align:center}
.side .me{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding:14px 8px 4px;display:flex;align-items:center;gap:10px}
.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#fff;flex:none;
  background:linear-gradient(135deg,#60a5fa,#8b5cf6)}
.me .who{font-size:12.5px;line-height:1.35;min-width:0;flex:1}
.me .who b{display:block;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.me button{border:0;background:rgba(255,255,255,.08);color:#dbe2ff;border-radius:8px;padding:6px 9px;cursor:pointer;font-size:12px}
.main{min-width:0}
.top{height:var(--top);display:flex;align-items:center;gap:12px;padding:0 26px;background:rgba(244,246,251,.9);
  backdrop-filter:blur(8px);position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line2)}
.top h1{font-size:18px;margin:0}.burger{display:none;border:0;background:none;font-size:22px;cursor:pointer;padding:4px 6px}
.term{font-size:12.5px;color:var(--mute);background:#fff;border:1px solid var(--line);border-radius:99px;padding:4px 11px}
.content{padding:22px 26px 40px;max-width:1360px}
.scrim{display:none}
@media(max-width:960px){.shell{grid-template-columns:1fr}
  .side{position:fixed;z-index:30;left:0;width:var(--side);transform:translateX(-100%);transition:.2s}
  .side.open{transform:none}.scrim.on{display:block;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:25}
  .burger{display:block}.content{padding:16px}.top{padding:0 14px}.term{display:none}}
