.app{height:100%;display:flex;flex-direction:column;min-width: 980px}
.topbar{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px;background:var(--surface);
  border-bottom:1px solid var(--border);
}
.brand{
  display:flex;align-items:center;gap:10px;
  font-weight:800;font-size:18px;margin-right:auto;
}
.brandmark{
  width:32px;height:32px;border-radius:10px;
  background: var(--primary);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:900;
}
.search{
  width: 360px;
  max-width: 40vw;
}
.layout{display:flex;flex:1;min-height:0}
.sidebar{
  width: 290px;
  background: var(--surface);
  border-right:1px solid var(--border);
  padding:14px;
  overflow:auto;
}
.sidehead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.sidehead .title{font-weight:700}
.tree{display:flex;flex-direction:column;gap:4px}
.tnode{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;
  border-radius:10px;
  cursor:pointer;
  border: 1px solid transparent;
}
.tnode:hover{background:#f0f2f5}
.tnode.active{background: rgba(37,99,235,.10); border-color: rgba(37,99,235,.22)}
.tmeta{display:flex;flex-direction:column;min-width:0}
.ttitle{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsub{font-size:12px;color:var(--muted)}
.tactions{margin-left:auto;display:flex;gap:6px}
.iconbtn{
  width:32px;height:32px;border-radius:10px;
  padding:0;display:flex;align-items:center;justify-content:center;
}
.content{
  flex:1;
  padding: 22px 24px;
  overflow:auto;
  min-height:0;
}
.card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow);
}
.pagehead{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--border);
}
.pagetitle{
  font-size: 22px;
  font-weight: 800;
  margin:0;
}
.pagedesc{font-size:12px;color:var(--muted);margin-top:6px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.body{padding: 18px}
.notice{
  border:1px solid rgba(217,106,0,.25);
  background: rgba(217,106,0,.08);
  color:#7a3d00;
  padding:10px 12px;
  border-radius: 12px;
}
.errorbar{
  background: rgba(180,35,24,.08);
  border-bottom: 1px solid rgba(180,35,24,.18);
  padding: 10px 16px;
  color: #7a1c12;
}
.foot{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  color: var(--muted);
  font-size: 12px;
}
