/* 应用框架：桌面侧栏与导航、右上角菜单、顶栏、竖屏底栏、主内容区 */
.app{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}
#side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-7) var(--sp-5);background:var(--panel);border-right:1px solid var(--line);overflow-y:auto}
#side .brand{font-weight:var(--fw-heavy);font-size:var(--text-brand);padding:var(--sp-1) var(--sp-5) var(--sp-4);letter-spacing:.3px;display:flex;align-items:center;gap:var(--sp-4)}
#nav{display:flex;flex-direction:column;gap:var(--sp-1)}
#nav button,#bnav button{border:0;background:none;color:var(--muted);padding:var(--sp-4) var(--sp-6);border-radius:var(--r-btn);cursor:pointer;font:inherit;white-space:nowrap;text-align:left;display:flex;align-items:center;gap:var(--sp-4);min-height:40px}
#nav button:hover{background:var(--bg);color:var(--text)}
#nav button.on,#bnav button.on{background:var(--accent-soft);color:var(--accent);font-weight:var(--fw-semibold)}
.badge{border-radius:var(--radius-pill);padding:0 var(--sp-3);font-size:var(--text-micro);margin-left:auto;line-height:18px}
.sidepet{margin-top:auto;border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-6) var(--sp-5);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;background:var(--bg)}
.sidepet .nm{font-weight:var(--fw-semibold)}.sidepet .sub{font-size:var(--text-caption);color:var(--muted);min-height:18px}
.col{min-width:0}
/* 顶栏不常驻：右上角一个菜单按钮，状态、用量、暂停都收在里面 */
#topmenu{position:fixed;top:10px;right:14px;z-index:var(--z-menu)}
#menuBtn{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative}
#menuBtn .i{width:20px;height:20px}
#menuBtn.alert::after{content:"";position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 2px var(--panel)}
.tpanel{display:none;position:absolute;right:0;top:50px;width:280px;max-width:calc(100vw - 28px);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-6);box-shadow:var(--shadow-menu);flex-direction:column;gap:var(--sp-5)}
#topmenu.open .tpanel{display:flex}
.tpanel .trow{display:flex;align-items:center;gap:var(--sp-4)}
.btn.iconly{padding:7px;line-height:0}.btn.iconly .i{width:19px;height:19px;margin:0;vertical-align:0}
.tpanel #st{max-width:100%;overflow:hidden}.tpanel #sttext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#view > :first-child:not(.chatcol){margin-right:52px}
header{position:sticky;top:0;z-index:var(--z-header);background:var(--panel);border-bottom:1px solid var(--line);padding:var(--sp-4) var(--sp-10);display:flex;gap:var(--sp-6);align-items:center;flex-wrap:wrap;min-height:56px}
header h1{font-size:var(--text-heading);margin:0;font-weight:var(--fw-bold);display:none}
.pill{display:inline-flex;align-items:center;gap:var(--sp-4);padding:3px var(--sp-7) 3px var(--sp-3);border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);font-size:var(--text-small);white-space:nowrap;border:0;font-family:inherit;cursor:pointer;min-height:36px}
.pill::after{content:"";width:14px;height:14px;background:currentColor;opacity:.55;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9.5 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9.5 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat}
#nav .i{width:19px;height:19px}
#bnav .ic .i{width:25px;height:25px}
.pill.off{background:var(--warn-soft);color:var(--warn)}
#bnav{display:none}
#bnav .bl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}  /* 底栏只露图标，文字留给读屏 */
main{max-width:var(--content-max);margin:0 auto;padding:var(--sp-10)}
