body { font-family: -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif; margin: 0; background: #f5f6f8; color: #222; }
nav { background: #2b2b2b; color: #fff; padding: 12px 20px; display: flex; gap: 18px; align-items: center; }
nav a { color: #fff; text-decoration: none; opacity: .85; }
nav a:hover { opacity: 1; }
nav .right { margin-left: auto; }
main { max-width: 1080px; margin: 24px auto; padding: 0 16px; }
.layout { display: flex; align-items: stretch; min-height: calc(100vh - 49px); }
.layout .sidebar { flex: 0 0 340px; width: 340px; position: sticky; top: 0; align-self: flex-start;
  height: calc(100vh - 49px); display: flex; align-items: center; justify-content: center;
  padding: 16px; box-sizing: border-box; background: #fff; border-right: 1px solid #e8e8e8; }
.layout .sidebar img { width: 100%; max-width: 310px; height: auto; display: block; margin: 0 auto; }
.layout main { flex: 1; max-width: none; margin: 0; padding: 24px; min-width: 0; }
h1 { font-size: 22px; margin: 0 0 16px; }
.card { background: #fff; border-radius: 10px; padding: 18px; box-shadow: 0 1px 3px rgba(0,0,0,.06); margin-bottom: 18px; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #eee; vertical-align: top; }
th { background: #fafafa; color: #666; font-weight: 600; }
label { display: block; font-size: 13px; margin: 12px 0 6px; color: #444; }
input[type=text], input[type=password], select, textarea { width: 100%; padding: 8px 10px; border: 1px solid #d8d8d8; border-radius: 6px; font-size: 14px; box-sizing: border-box; }
textarea { min-height: 80px; }
button { padding: 8px 14px; border: 0; border-radius: 6px; background: #2f6bff; color: #fff; font-size: 13px; cursor: pointer; }
button.gray { background: #666; }
button.red { background: #d93a3a; }
button.green { background: #1f9d55; }
.row { display: flex; gap: 12px; }
.row > div { flex: 1; }
.error { color: #d93a3a; font-size: 13px; margin-bottom: 8px; }
.muted { color: #888; font-size: 12px; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; }
.tag.test { background: #fff3cd; color: #8a6d3b; }
.tag.formal { background: #e6f4ea; color: #1f7a3f; }
.tag.published { background: #e6f4ea; color: #1f7a3f; }
.tag.draft { background: #eee; color: #666; }
.tag.offlined { background: #fde2e1; color: #a33; }
.actions { display: flex; gap: 6px; flex-wrap: wrap; }
.actions-row { flex-wrap: nowrap; }
.actions-row form { margin: 0; }

.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-scroll table { min-width: 900px; }
.table-scroll th, .table-scroll td { padding: 6px 8px; font-size: 12px; white-space: nowrap; }

/* 左侧栏：LOGO + 磁盘容量卡片 */
.sidebar-inner { display: flex; flex-direction: column; align-items: center; gap: 22px; width: 100%; }
.sidebar-inner img { width: 100%; max-width: 310px; height: auto; display: block; margin: 0 auto; }
.disk-panel { display: block; width: 100%; max-width: 310px; box-sizing: border-box; background: #fafbfc;
  border: 1px solid #e6e8eb; border-left: 4px solid #1f9d55; border-radius: 10px; padding: 12px 14px;
  text-decoration: none; color: inherit; cursor: pointer; transition: box-shadow .15s ease, transform .15s ease; }
.disk-panel:hover { box-shadow: 0 3px 12px rgba(0,0,0,.10); transform: translateY(-1px); }
.disk-title { font-size: 12px; color: #777; margin-bottom: 2px; }
.disk-value { font-size: 26px; font-weight: 700; line-height: 1.15; color: #1f7a3f; }
.disk-value small { font-size: 12px; font-weight: 500; color: #888; }
.disk-bar { height: 6px; border-radius: 3px; background: #e9ecef; overflow: hidden; margin: 8px 0 6px; }
.disk-bar i { display: block; height: 100%; background: #1f9d55; border-radius: 3px; transition: width .4s ease; }
.disk-sub { font-size: 11px; color: #888; }
.disk-sub + .disk-sub { margin-top: 2px; }
.disk-go { color: #2f6bff; font-weight: 600; }
.disk-hint { margin-top: 8px; font-size: 12px; font-weight: 600; }
.disk-panel.warn { border-left-color: #d9822b; background: #fff8ef; }
.disk-panel.warn .disk-value { color: #a35c00; }
.disk-panel.warn .disk-bar i { background: #d9822b; }
.disk-panel.warn .disk-hint { color: #a35c00; }
.disk-panel.danger { border-left-color: #d93a3a; background: #fdf1f1; }
.disk-panel.danger .disk-value { color: #b32020; }
.disk-panel.danger .disk-bar i { background: #d93a3a; }
.disk-panel.danger .disk-hint { color: #b32020; }
