/* 管理后台专用样式 */
.hidden{display:none !important}
body{background:var(--paper);min-height:100vh}
.adm-head{position:sticky;top:0;z-index:40;display:flex;justify-content:space-between;align-items:center;
  padding:16px clamp(18px,3vw,40px);background:rgba(7,12,21,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(255,255,255,.08);flex-wrap:wrap;gap:12px}
.adm-tools{display:flex;gap:10px;flex-wrap:wrap}
.adm-body{max-width:1080px;margin:0 auto;padding:26px clamp(18px,3vw,40px) 80px}
.adm-bar{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.adm-bar h1{font-size:22px;letter-spacing:.05em}
.adm-bar .dim{font-size:12px}
.adm-actions{margin-left:auto}

.list{display:flex;flex-direction:column;gap:12px}
.card{display:flex;align-items:center;gap:16px;background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px 14px;transition:.2s}
.card:hover{border-color:rgba(255,255,255,.2)}
.card .thumb{width:96px;height:120px;border-radius:6px;overflow:hidden;flex:0 0 auto;
  background-size:cover;background-position:center;position:relative}
.card .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.card .thumb.noimg{background:linear-gradient(135deg,#14324f,#0c1a2c);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.4);font-size:11px}
.card .info{flex:1;min-width:0}
.card .info h3{font-size:15.5px;line-height:1.45;margin-bottom:6px}
.card .info .tags{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);letter-spacing:.06em}
.card .info .tags b{color:#ffb3b8;font-weight:600}
.card .ops{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.card .ops .btn{padding:7px 12px;font-size:12px}
.ghost-danger{color:#ff8a8a !important}
.ghost-danger:hover{border-color:var(--red) !important;color:#ff8a8a !important}
.drag{font-size:18px;color:var(--muted);cursor:grab;padding:0 4px;user-select:none}
/* 拖拽排序：整行可拖，拖动中高亮 */
.card[draggable=true]{cursor:grab}
.card[draggable=true].dragging{opacity:.45;border-color:var(--red);box-shadow:0 12px 32px rgba(0,0,0,.45)}

/* 弹框 */
.modal{position:fixed;inset:0;z-index:60;display:none}
.modal.show{display:block}
.modal .backdrop{position:absolute;inset:0;background:rgba(3,6,12,.7);backdrop-filter:blur(4px)}
.modal .box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.96);
  width:min(680px,94vw);max-height:90vh;overflow-y:auto;background:#0d1526;border:1px solid rgba(255,255,255,.12);
  border-radius:12px;box-shadow:0 40px 80px rgba(0,0,0,.5);transition:.25s;padding:0}
.modal.show .box{transform:translate(-50%,-50%) scale(1)}
.m-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid rgba(255,255,255,.08)}
.m-head h2{font-size:17px;letter-spacing:.05em}
.m-close{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:transparent;color:#fff;font-size:20px;cursor:pointer}
.m-close:hover{background:var(--red);border-color:var(--red)}
.m-body{padding:20px 22px 6px}
.m-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px 22px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
@media (max-width:560px){.row{grid-template-columns:1fr}.card{flex-wrap:wrap}.card .ops{margin-left:auto}}

/* 登录遮罩 */
.login-veil{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;
  background:rgba(4,8,15,.96);backdrop-filter:blur(8px)}
.login-veil.hidden{display:none}
.login-box{width:min(340px,90vw);background:#0d1526;border:1px solid rgba(255,255,255,.12);
  border-radius:14px;padding:32px 30px 26px;box-shadow:0 40px 90px rgba(0,0,0,.55);text-align:center}
.login-box h2{font-size:19px;letter-spacing:.06em;margin-bottom:6px}
.login-box p{font-size:12px;margin-bottom:22px}
.login-box input{width:100%;box-sizing:border-box;padding:12px 14px;border-radius:8px;margin-bottom:16px;
  border:1px solid var(--line);background:rgba(255,255,255,.04);color:#fff;font-size:14px;outline:none}
.login-box input:focus{border-color:var(--red)}
.login-box .btn{width:100%;justify-content:center}
.login-box .err{color:#ff8a8a;font-size:12px;min-height:16px;margin-top:12px}

/* 图片管理 */
.imgman{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 10px}
.imgman:empty{margin:0}
.im-card{position:relative;width:118px;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.14);
  background:#0a1120;cursor:pointer;transition:.2s}
.im-card:hover{border-color:rgba(255,255,255,.4)}
.im-card img{width:100%;height:76px;object-fit:cover;display:block}
.im-card .im-cap{font-size:15px;color:#fff;background:rgba(10,17,32,.9);text-align:center;padding:3px;text-decoration:none}
.im-card .im-x{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;
  background:rgba(0,0,0,.6);color:#fff;font-size:14px;line-height:1;border:none;cursor:pointer}
.im-card .im-x:hover{background:#c83349}
.im-card.is-cover{border-color:#c83349}
.im-card.is-cover .im-cap{color:#ffb3b8}
.btn-addimg{margin-top:2px}

/* 上传进度面板 */
.up-panel{position:fixed;right:18px;bottom:18px;z-index:110;width:min(360px,92vw);
  max-height:64vh;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.16);
  border-radius:12px;background:#0d1526;box-shadow:0 30px 70px rgba(0,0,0,.6);
  font-size:12px;overflow:hidden}
.up-panel.hidden{display:none}
.up-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:9px 14px;background:rgba(255,255,255,.05);border-bottom:1px solid rgba(255,255,255,.08);
  color:#fff;letter-spacing:.1em;font-size:12px}
.up-panel-close{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);
  background:transparent;color:#fff;font-size:15px;line-height:1;cursor:pointer}
.up-panel-close:hover{background:var(--red);border-color:var(--red)}
.uplist{display:flex;flex-direction:column;gap:8px;padding:12px 12px;overflow-y:auto}
.uplist:empty{display:none}
.up-item{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);border-radius:8px;
  padding:8px 10px;font-size:12px}
.up-item.up-ok{border-color:rgba(52,199,123,.5)}
.up-item.up-err{border-color:rgba(230,0,18,.55)}
.up-info{display:flex;justify-content:space-between;gap:10px;margin-bottom:6px}
.up-name{color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}
.up-size{color:var(--muted);font-variant-numeric:tabular-nums}
.up-bar{height:6px;border-radius:4px;background:rgba(255,255,255,.1);overflow:hidden}
.up-bar i{display:block;height:100%;width:0;border-radius:4px;background:var(--red);
  background:linear-gradient(90deg,#c83349,var(--red));transition:width .15s linear}
.up-item.up-ok .up-bar i{background:#34c77b}
.up-item.up-err .up-bar i{background:#e60012}
.up-state{margin-top:5px;color:var(--muted)}
.up-item.up-ok .up-state{color:#34c77b}
.up-item.up-err .up-state{color:#ff8a8a}

/* 正文编辑区：放大 / 全屏 */
.f-lab{display:flex;justify-content:space-between;align-items:center;gap:10px}
.btn-expand{padding:4px 10px;font-size:11.5px;border-radius:5px}
.editor{border-radius:6px;overflow:hidden;display:flex;flex-direction:column}
.editor textarea{resize:vertical;min-height:170px;line-height:1.85}
.editor-toolbar{display:none}
.editor.full{position:fixed;inset:0;z-index:80;background:#080e1a;
  display:flex;flex-direction:column;border-radius:0;padding:0;box-sizing:border-box;
  max-height:100vh}
.editor.full .editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;
  flex:0 0 auto;padding:12px 18px;background:#0d1526;border-bottom:1px solid rgba(255,255,255,.08)}
.editor.full .editor-toolbar-title{font-size:13px;letter-spacing:.05em;color:#fff}
.editor.full textarea{flex:1;width:100%;resize:none;min-height:0;font-size:15px;line-height:1.95;border-radius:0;border:none;padding:22px}
@media (max-width:560px){.btn-expand{font-size:10px}}