/* ============================================================
   创作者后台专用样式：紧凑 / 高信息密度 / 编辑器感
   与访客前台的"档案馆"风区分
   ============================================================ */

/* ---------- 布局：侧边栏 + 主区 ---------- */
.admin-shell{display:flex;gap:0;min-height:calc(100vh - 108px);margin:0 -20px;}
.admin-side{
  width:200px;flex-shrink:0;border-right:1px solid var(--line);
  padding:18px 0;position:sticky;top:108px;align-self:flex-start;max-height:calc(100vh - 108px);overflow-y:auto;
}
.admin-side-head{display:flex;align-items:center;justify-content:space-between;padding:0 16px 12px;}
.admin-side-title{font-size:13px;font-weight:800;letter-spacing:.1em;}
.admin-side-close{display:none;border:0;background:none;font-size:20px;cursor:pointer;color:var(--muted);}
.admin-side-group{margin-bottom:14px;}
.admin-side-label{
  font-size:10px;letter-spacing:.16em;color:var(--muted);
  padding:6px 16px 4px;font-weight:700;
}
.admin-side-item{
  display:block;padding:7px 16px;font-size:13px;color:var(--text-sec);
  border-left:2px solid transparent;
}
.admin-side-item:hover{color:var(--text);background:#FBFAF7;}
.admin-side-item.active{color:var(--text);font-weight:700;border-left-color:var(--theme);background:#F6F5F0;}
.admin-side-out{margin-top:8px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);}
.admin-side-mask{display:none;}

.admin-main{flex:1;min-width:0;padding:20px 26px 60px;max-width:1100px;}
.admin-topbar{display:flex;align-items:center;gap:14px;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--line);}
.admin-burger{display:none;border:1px solid var(--line);background:#fff;border-radius:var(--radius-sm);width:38px;height:34px;font-size:16px;cursor:pointer;}
.admin-title{font-size:17px;font-weight:800;margin:0;}
.admin-top-meta{margin-left:auto;font-size:11px;color:var(--muted);}

/* ---------- 通用后台块 ---------- */
.admin-block{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;}
.admin-block-title{font-size:13px;letter-spacing:.1em;font-weight:800;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line);}
.admin-block-sub{font-size:12px;color:var(--muted);margin:6px 0 10px;line-height:1.7;}
.admin-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px;}
.admin-count{font-size:12px;color:var(--muted);}
.admin-filter-label{font-size:11px;color:var(--muted);margin-right:6px;}
.admin-select{padding:6px 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font-size:13px;background:#fff;}
.admin-kv{font-size:12px;color:var(--text-sec);}
.admin-kv td{padding:5px 0;}
.admin-kv td:first-child{color:var(--muted);padding-right:16px;white-space:nowrap;}
.admin-kv code,.meta code{background:#F4F2EC;border:1px solid var(--line);border-radius:3px;padding:1px 5px;font-size:11px;}
.admin-kv span{display:inline-block;margin-right:18px;font-size:12px;color:var(--text-sec);}
.admin-kv b{font-size:15px;margin-right:4px;}
.admin-tips{margin:0;padding-left:18px;font-size:12px;color:var(--text-sec);line-height:2;}
.ok{color:#2E7D32;font-size:11px;font-weight:600;margin-left:6px;}

/* 紧凑行列表 */
.admin-list{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.admin-list-tight{gap:0;}
.admin-row-item{
  display:flex;align-items:center;gap:10px;background:#fff;padding:10px 12px;
}
.admin-row-item + .admin-row-item{border-top:1px solid var(--line);}
.admin-row-item:hover{background:#FBFAF7;}
.admin-row-item .grow{flex:1;min-width:0;}
.admin-row-item .meta{font-size:11px;color:var(--muted);margin-top:2px;}
.drag-handle{cursor:grab;color:#B9B4A6;font-size:15px;padding:6px 4px;user-select:none;touch-action:none;flex-shrink:0;}
.drag-handle:active{cursor:grabbing;}
.admin-row-item.dragging{opacity:.6;position:relative;z-index:5;background:#F0EEE8;}
.sort-btn{min-width:30px;padding:4px 6px;}
.sort-btn:disabled{opacity:.35;cursor:not-allowed;}
.pa-au-tag{background:#F2EFE7;border:1px solid var(--line);border-radius:3px;padding:1px 6px;font-size:10px;letter-spacing:.08em;}
.world-row-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.color-dot{display:inline-block;width:9px;height:9px;border-radius:2px;border:1px solid rgba(0,0,0,.12);}
.avatar-sm{
  width:34px;height:34px;border-radius:50%;overflow:hidden;flex-shrink:0;
  background:var(--theme);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;
}
.avatar-sm img{width:100%;height:100%;object-fit:cover;}

/* 按钮 */
.admin-btn{
  padding:7px 14px;background:var(--theme);color:#fff;border:0;border-radius:var(--radius-sm);
  font-size:12px;cursor:pointer;letter-spacing:.03em;white-space:nowrap;
}
.admin-btn:hover{opacity:.88;}
.admin-btn-sm{padding:4px 9px;font-size:11px;}
.admin-btn-ghost{background:#fff;color:var(--text-sec);border:1px solid var(--line-strong);}
.admin-btn-ghost:hover{color:var(--text);border-color:var(--text);opacity:1;}
.admin-btn-danger{background:#C0392B;}
.admin-btn-danger:hover{opacity:.85;}

/* ⋯ 更多菜单 */
.more-wrap{position:relative;flex-shrink:0;}
.more-btn{padding:4px 10px;}
.more-menu{
  position:absolute;right:0;top:calc(100% + 4px);z-index:30;
  background:#fff;border:1px solid var(--line-strong);border-radius:var(--radius);
  box-shadow:0 4px 14px rgba(0,0,0,.08);min-width:110px;padding:4px;display:flex;flex-direction:column;
}
.more-item{
  display:block;width:100%;text-align:left;padding:8px 10px;font-size:12px;
  border:0;background:none;cursor:pointer;border-radius:var(--radius-sm);color:var(--text);
}
.more-item:hover{background:#F4F2EC;}
.more-item.danger{color:#C0392B;}

/* 表单（后台） */
.admin-form-inline{display:flex;flex-direction:column;gap:10px;}
.admin-fields{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.admin-fields>div{flex:1;min-width:140px;}
.admin-fields label{display:block;font-size:11px;color:var(--muted);margin:8px 0 3px;}
.admin-block input[type=text],.admin-block input[type=password],.admin-block input[type=number],
.admin-block select,.admin-block textarea{
  width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-size:13px;box-sizing:border-box;font-family:inherit;background:#fff;
}
.admin-block input:focus,.admin-block select:focus,.admin-block textarea:focus{border-color:var(--text);outline:none;}
.admin-block textarea{min-height:80px;}
.admin-block label{display:block;font-size:11px;color:var(--muted);margin:8px 0 3px;}
.admin-form-actions{display:flex;gap:10px;margin-top:12px;align-items:center;}
.admin-check{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-sec);margin:10px 0;cursor:pointer;}
.admin-check input{width:auto !important;}
.pf-row{background:#FBF9F4;border:1px dashed var(--line);border-radius:var(--radius-sm);padding:6px;margin-bottom:4px;}
.admin-panel-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 2px;}
.inline-upload{display:inline-flex;align-items:center;gap:6px;margin-right:4px;}
.inline-upload input[type=file]{font-size:11px;max-width:130px;}
.admin-edit-panel{border-left:3px solid var(--theme);}

/* 树状角色列表 */
.admin-tree{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.admin-tree-row{
  display:flex;align-items:center;gap:10px;background:#fff;padding:8px 12px;
}
.admin-tree-row + .admin-tree-row{border-top:1px solid var(--line);}
.admin-tree-row:hover{background:#FBFAF7;}
.admin-tree-row .tree-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;}
.admin-tree-row .meta{font-size:11px;color:var(--muted);}

/* 语录后台 */
.admin-quote-text{font-size:13px;line-height:1.6;max-width:720px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin-quote-text b.ok{color:#2E7D32;}

/* 媒体库 */
.admin-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;}
.admin-media-item{border:1px solid var(--line);border-radius:var(--radius);padding:6px;background:#fff;}
.admin-media-thumb{aspect-ratio:1/1;background:#F4F2EC;overflow:hidden;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;}
.admin-media-thumb img{width:100%;height:100%;object-fit:cover;}
.admin-media-name{font-size:10px;color:var(--text-sec);margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin-media-meta{font-size:10px;color:var(--muted);}
.admin-media-item form{margin-top:5px;}

/* Modal */
.admin-modal{position:fixed;inset:0;background:rgba(15,15,15,.5);z-index:90;display:flex;align-items:center;justify-content:center;padding:16px;}
.admin-modal[hidden]{display:none;}
.admin-modal-panel{background:#fff;border-radius:var(--radius);max-width:560px;width:100%;max-height:90vh;overflow-y:auto;padding:20px 22px;}
.admin-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.admin-modal-head h3{font-size:15px;font-weight:800;margin:0;}
.admin-modal-close{border:0;background:none;font-size:22px;cursor:pointer;color:var(--muted);line-height:1;}

/* 今日角色 */
.admin-today{border-left:3px solid var(--theme);}
.today-date{font-size:11px;color:var(--muted);font-weight:400;margin-left:8px;letter-spacing:.05em;}
.admin-today-list{display:flex;flex-direction:column;gap:1px;}
.admin-today-item{
  display:flex;align-items:center;gap:12px;padding:10px 4px;text-decoration:none;color:var(--text);
  border-bottom:1px solid var(--line);
}
.admin-today-item:last-child{border-bottom:0;}
.admin-today-item:hover{background:#FBFAF7;}
.admin-today-item .meta{font-size:12px;}

/* 快速统计 */
.admin-quickstats{margin-top:20px;}

/* ---------- 移动端 ---------- */
@media (max-width:860px){
  .admin-shell{margin:0 -14px;}
  .admin-side{
    position:fixed;left:0;top:0;bottom:0;z-index:120;width:230px;max-height:none;
    background:#fff;border-right:1px solid var(--line);padding:18px 0;
    transform:translateX(-105%);transition:transform .2s ease;
  }
  .admin-side.open{transform:translateX(0);}
  .admin-side-close{display:block;}
  .admin-side-mask{display:block;position:fixed;inset:0;background:rgba(15,15,15,.4);z-index:110;opacity:0;pointer-events:none;transition:opacity .2s;}
  .admin-side-mask.show{opacity:1;pointer-events:auto;}
  .admin-burger{display:block;}
  .admin-main{padding:14px 14px 40px;}
  .admin-topbar{margin-bottom:14px;}
  .admin-top-meta{display:none;}
  .admin-row-item{flex-wrap:wrap;gap:8px;}
  .admin-row-item .grow{flex:1 1 100%;order:-1;}
  .admin-toolbar{flex-direction:column;align-items:stretch;gap:10px;}
  .admin-toolbar .admin-btn{width:100%;padding:10px;}
  .admin-btn{padding:8px 12px;}
  .admin-block{padding:14px;}
  .more-menu{right:auto;left:0;}
  .inline-upload{width:100%;}
  .inline-upload input[type=file]{flex:1;max-width:none;}
}
