/* 高海拔内容管理系统 后台样式 — 白面板（Element Plus 风格） */
:root{
  --bg:#f5f7fa;
  --paper:#ffffff;
  --ink:#1d2129;
  --ink-2:#4e5969;
  --ink-3:#86909c;
  --line:#e9ebf0;
  --line-2:#f2f3f5;
  --accent:#3b82f6;
  --accent-hover:#2563eb;
  --accent-soft:#eef6ff;
  --ok:#00a870;
  --ok-soft:#e8f8f1;
  --warn:#d97706;
  --warn-soft:#fff7e8;
  --danger:#f53f3f;
  --danger-soft:#fff1f0;
  --shadow-sm:0 1px 2px rgba(29,33,41,.04);
  --shadow:0 2px 10px rgba(29,33,41,.05);
  --shadow-lg:0 12px 48px rgba(29,33,41,.10);
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.hide{display:none!important}
button{font-family:inherit;cursor:pointer}
::selection{background:rgba(59,130,246,.16)}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#d9dde5;border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:#c4c9d4}
::-webkit-scrollbar-track{background:transparent}

/* ---------------- 登录 ---------------- */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px;
  background:
    radial-gradient(680px 380px at 18% 12%, #e8f0ff 0%, rgba(232,240,255,0) 70%),
    radial-gradient(560px 320px at 82% 88%, #eef4ff 0%, rgba(238,244,255,0) 70%),
    var(--bg);
}
.login-card{
  width:100%;max-width:392px;background:var(--paper);border:1px solid rgba(29,33,41,.05);
  border-radius:16px;padding:36px 34px 26px;box-shadow:var(--shadow-lg);
}
.login-brand{display:flex;align-items:center;gap:9px;justify-content:center;margin-bottom:24px}
.brand-mark{
  width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(135deg,#60a5fa,#3b82f6);box-shadow:0 4px 12px rgba(59,130,246,.28);
}
.brand-text{font-size:16px;font-weight:600;letter-spacing:.01em}
.brand-ver{font-size:11px;color:var(--ink-3);border:1px solid var(--line);border-radius:20px;padding:0 6px;line-height:16px}
.login-card h1{font-size:21px;font-weight:600;margin:0 0 6px;text-align:center;letter-spacing:-.01em}
.login-card .hint{color:var(--ink-3);font-size:13px;margin:0 0 26px;text-align:center}
.login-card .field{margin-bottom:16px}
.login-card label{display:block;font-size:13px;color:var(--ink-2);margin:0 0 7px}
.login-card input{
  width:100%;height:40px;border:1px solid #dcdfe6;border-radius:8px;padding:0 12px;
  font-size:14px;font-family:inherit;outline:none;background:#fff;color:var(--ink);
  transition:border-color .18s,box-shadow .18s;
}
.login-card input::placeholder{color:#c0c5cf}
.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,.16)}
.login-card button{
  width:100%;height:40px;margin-top:8px;background:var(--accent);color:#fff;border:none;border-radius:8px;
  font-size:14.5px;letter-spacing:.12em;transition:background .18s,transform .18s;
}
.login-card button:hover{background:var(--accent-hover)}
.login-card button:active{transform:translateY(1px)}
.login-card button:disabled{opacity:.6;cursor:not-allowed}
.login-card .foot{margin:22px 0 0;font-size:12.5px;color:var(--ink-3);text-align:center}
.login-card .foot a:hover{color:var(--accent)}

/* ---------------- 布局 ---------------- */
.app{display:flex;min-height:100vh}
.side{
  width:224px;flex:0 0 224px;background:var(--paper);border-right:1px solid var(--line);
  padding:0 12px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
}
.side-brand{display:flex;align-items:center;gap:9px;height:60px;padding:0 8px;border-bottom:1px solid var(--line-2);margin-bottom:12px}
#menu{display:flex;flex-direction:column;gap:2px}
#menu a{
  display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:8px;
  color:var(--ink-2);font-size:13.5px;white-space:nowrap;transition:background .16s,color .16s;
}
#menu a svg{flex:none;opacity:.78;transition:opacity .16s}
#menu a:hover{background:#f5f7fa;color:var(--ink)}
#menu a:hover svg{opacity:1}
#menu a.on{background:var(--accent-soft);color:var(--accent);font-weight:500}
#menu a.on svg{opacity:1}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-top:12px;border-top:1px solid var(--line-2)}
.side-foot a{
  display:flex;align-items:center;gap:9px;height:36px;padding:0 12px;border-radius:8px;
  font-size:12.8px;color:var(--ink-3);transition:background .16s,color .16s;
}
.side-foot a svg{opacity:.8}
.side-foot a:hover{color:var(--accent);background:var(--accent-soft)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 28px;
  background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(10px);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;
}
.crumb{display:flex;align-items:center;gap:8px;min-width:0}
.crumb-root{font-size:13px;color:var(--ink-3)}
.crumb svg{color:#c4c9d4;flex:none}
.crumb h1{font-size:15px;font-weight:600;margin:0;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-right{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--ink-3)}
.top-link{color:var(--ink-2);font-size:13px;padding:4px 8px;border-radius:6px;transition:.16s}
.top-link:hover{background:#f5f7fa;color:var(--accent)}
.theme-toggle{border:none;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);cursor:pointer}
.theme-toggle:hover{background:#f5f7fa;color:var(--accent)}
html.dark .theme-toggle:hover{background:#1d222c}
.divider{width:1px;height:16px;background:var(--line)}
.avatar{
  width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--accent-soft);color:var(--accent);font-size:12.5px;font-weight:600;text-transform:uppercase;
}
.who{font-size:12.8px;color:var(--ink-2);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.view{width:100%;max-width:1160px;padding:24px 28px 64px}

/* ---------------- 卡片 / 统计 ---------------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.stat{
  position:relative;background:var(--paper);border:1px solid var(--line);border-radius:12px;
  padding:18px 20px;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s;overflow:hidden;
}
.stat:hover{box-shadow:var(--shadow);transform:translateY(-1px)}
.stat .ico{
  position:absolute;right:16px;top:16px;width:34px;height:34px;border-radius:10px;
  display:grid;place-items:center;color:var(--accent);background:var(--accent-soft);
}
.stat:nth-child(2) .ico{color:#7c5cff;background:#f2eeff}
.stat:nth-child(3) .ico{color:#00a870;background:var(--ok-soft)}
.stat:nth-child(4) .ico{color:#f5a524;background:var(--warn-soft)}
.stat .k{font-size:12.8px;color:var(--ink-3);margin:0 0 6px}
.stat .v{font-size:27px;font-weight:600;line-height:1.2;margin:0;letter-spacing:-.02em;font-variant-numeric:tabular-nums}

.panel{
  background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:20px 22px;
  margin-bottom:18px;box-shadow:var(--shadow-sm);
}
.panel h2{font-size:14px;margin:0 0 16px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}
.panel h2::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--accent);display:inline-block}
.panel > p.s{margin:0;color:var(--ink-3);font-size:12.8px}
.panel.flush{padding:0;overflow:hidden}
.panel.flush h2{padding:18px 20px 0;margin-bottom:14px}
.panel.flush thead th{border-radius:0}
.panel.flush thead th:first-child,.panel.flush td:first-child{padding-left:20px}
.panel.flush thead th:last-child,.panel.flush td:last-child{padding-right:20px}
.panel.flush .pager{margin:0;padding:12px 20px 14px}
.panel.flush > .bar{padding:16px 20px 0;margin-bottom:14px}
.panel.flush > .bar + table thead th{border-top:1px solid var(--line-2)}

/* ---------------- 表单 ---------------- */
.bar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.bar .spacer{flex:1}
input.txt,select.txt{
  height:34px;border:1px solid #dcdfe6;border-radius:8px;padding:0 11px;font-size:13.5px;
  font-family:inherit;outline:none;background:#fff;color:var(--ink);transition:border-color .18s,box-shadow .18s;
}
select.txt{padding-right:26px;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2386909c' stroke-width='2.4' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 9px center;background-size:12px;
}
/* 被自绘下拉接管的原生 select：保留在 DOM 里但不可见 */
.sr-select{position:absolute!important;width:1px!important;height:1px!important;opacity:0;pointer-events:none;margin:0!important;padding:0!important;border:0!important}

/* ---------------- 自绘下拉 ---------------- */
.pselect{position:relative;display:inline-block}
.pselect-btn{
  width:100%;height:34px;border:1px solid #dcdfe6;border-radius:8px;padding:0 30px 0 11px;font-size:13.5px;
  font-family:inherit;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:8px;
  cursor:pointer;text-align:left;outline:none;transition:border-color .18s,box-shadow .18s;
}
.pselect-btn .pselect-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pselect-btn svg{flex:none;color:#86909c;transition:transform .18s}
.pselect:hover .pselect-btn{border-color:#c6cbd4}
.pselect.open .pselect-btn{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,.16)}
.pselect.open .pselect-btn svg{transform:rotate(180deg)}
.pselect-menu{
  position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:80;display:none;
  background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);
  padding:5px;max-height:240px;overflow:auto;
}
.pselect.open .pselect-menu{display:block;animation:pdrop .16s ease}
@keyframes pdrop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pselect-item{padding:8px 10px;border-radius:7px;font-size:13.5px;color:var(--ink-2);cursor:pointer;transition:background .14s,color .14s}
.pselect-item:hover{background:var(--accent-soft);color:var(--accent)}
.pselect-item.on{background:var(--accent-soft);color:var(--accent);font-weight:500}

/* ---------------- 开关 ---------------- */
.switch-row{display:flex;align-items:center;gap:10px}
.switch{
  width:44px;height:24px;border-radius:12px;border:none;background:#d5dae2;position:relative;
  cursor:pointer;padding:0;flex:none;transition:background .2s;
}
.switch .knob{
  position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s;
}
.switch:hover{background:#c8ced8}
.switch.on,.switch.on:hover{background:var(--accent)}
.switch.on .knob{transform:translateX(20px)}
.switch-state{font-size:13px;color:var(--ink-2)}
input.txt::placeholder,textarea.txt::placeholder{color:#c0c5cf}
input.txt:focus,select.txt:focus,textarea.txt:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,.16)}
input.txt.wide{width:100%}
textarea.txt{
  width:100%;border:1px solid #dcdfe6;border-radius:8px;padding:10px 12px;font-size:13.5px;
  font-family:inherit;outline:none;background:#fff;resize:vertical;line-height:1.75;color:var(--ink);
  transition:border-color .18s,box-shadow .18s;
}
textarea.txt#f-content{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"PingFang SC",monospace;font-size:13px}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:34px;padding:0 15px;background:var(--accent);color:#fff;border:1px solid transparent;
  border-radius:8px;font-size:13.5px;white-space:nowrap;transition:background .18s,border-color .18s,color .18s,box-shadow .18s;
}
.btn:hover{background:var(--accent-hover)}
.btn:active{box-shadow:inset 0 1px 3px rgba(0,0,0,.12)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--ink-2);border-color:#dcdfe6}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:#fff}
.btn.danger{background:#fff;color:var(--danger);border-color:#f7cccb}
.btn.danger:hover{background:var(--danger-soft);border-color:#f7cccb}
.btn.sm{height:28px;padding:0 11px;font-size:12.5px;border-radius:6px}

.field{margin-bottom:16px}
.field label{display:block;font-size:12.8px;color:var(--ink-2);margin:0 0 7px}
.field:last-child{margin-bottom:0}
.imgfield{display:flex;gap:8px;align-items:center}
.imgfield .txt{flex:1;min-width:0}
.imgprev{margin-top:10px;width:120px;height:80px;border-radius:8px;border:1px dashed var(--line);background:var(--line-2);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--ink-3);font-size:12px}
.imgprev:empty::after{content:"暂无图片"}
.imgprev img{width:100%;height:100%;object-fit:cover;display:block}
.field > p.s{margin:7px 0 0;color:var(--ink-3);font-size:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.6px;color:var(--ink-3)}
.chip{
  display:inline-flex;align-items:center;gap:7px;background:#f5f7fa;border:1px solid var(--line);
  border-radius:20px;padding:3px 10px;font-size:12.5px;margin:0 7px 7px 0;color:var(--ink-2);
}
.chip b{font-weight:500}
.chip button{background:none;border:none;color:#b6bcc8;padding:0;font-size:14px;line-height:1;transition:color .16s}
.chip button:hover{color:var(--danger)}
.empty{color:var(--ink-3);text-align:center;padding:40px 0;font-size:13px;margin:0}

/* ---------------- 表格 ---------------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
.tscroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tscroll table{min-width:100%}
thead th{
  text-align:left;font-weight:500;color:var(--ink-3);font-size:12.5px;
  padding:11px 12px;background:#fafbfc;border-bottom:1px solid var(--line);white-space:nowrap;
}
thead th:first-child{border-top-left-radius:8px}
thead th:last-child{border-top-right-radius:8px}
td{padding:12px;border-bottom:1px solid var(--line-2);vertical-align:middle;color:var(--ink-2)}
tbody tr{transition:background .16s}
tbody tr:hover td{background:#fafbfc}
tbody tr:last-child td{border-bottom:none}
td .t{font-weight:500;color:var(--ink);font-size:13.5px;line-height:1.5}
td .s{color:var(--ink-3);font-size:12.3px;margin-top:2px}
.badge{
  display:inline-block;font-size:12px;line-height:20px;padding:0 8px;border-radius:6px;
  border:1px solid var(--line);color:var(--ink-3);background:#fafbfc;white-space:nowrap;
}
.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:#c9eddc}
.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:#f6e3c2}
.acts{display:flex;gap:6px;justify-content:flex-end}
.pager{
  display:flex;justify-content:space-between;align-items:center;padding:14px 4px 6px;
  font-size:12.8px;color:var(--ink-3);border-top:1px solid var(--line-2);margin-top:2px;
}

/* ---------------- 提示 ---------------- */
.toast{
  position:fixed;left:50%;top:76px;transform:translateX(-50%) translateY(-8px);
  background:#fff;color:var(--ink);font-size:13.5px;padding:9px 18px;border-radius:9px;
  border:1px solid var(--line);box-shadow:0 8px 28px rgba(29,33,41,.12);
  opacity:0;transition:all .22s ease;pointer-events:none;z-index:99;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{color:var(--danger);background:var(--danger-soft);border-color:#f7cccb}

/* ---------------- 杂项 ---------------- */
.hidden-file{display:none}
.up{display:flex;align-items:center;gap:10px}
.up .s{font-size:12px;color:var(--ink-3)}
.field label.check{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2);margin:0;cursor:pointer}
.field label.check input{margin:0;width:15px;height:15px;accent-color:var(--accent)}
.field label.check span{line-height:1}

/* ---------------- 响应式 ---------------- */
@media (max-width:980px){
  .app{flex-direction:column}
  .side{
    width:100%;flex:none;height:auto;position:sticky;top:0;z-index:30;
    flex-direction:row;align-items:center;gap:10px;overflow-x:auto;padding:8px 12px;
    border-right:none;border-bottom:1px solid var(--line);
  }
  .side-brand{height:auto;padding:0 6px 0 0;border:none;margin:0;flex:none}
  .side-brand .brand-text,.side-brand .brand-ver{display:none}
  #menu{flex-direction:row;gap:2px}
  #menu a{height:34px;padding:0 10px;font-size:13px}
  #menu a span{display:none}
  #menu a svg{width:17px;height:17px}
  #menu a.on span{display:inline}
  .side-foot{flex-direction:row;margin:0 0 0 auto;padding:0;border:none;flex:none}
  .side-foot a{height:34px;padding:0 8px}
  .side-foot a span{display:none}
  .topbar{padding:0 16px;top:51px}
  .view{padding:16px 16px 48px}
  .stats{grid-template-columns:1fr 1fr;gap:12px}
  .split{grid-template-columns:1fr}
  .grid3{grid-template-columns:1fr}
}
@media (max-width:760px){
  .tscroll table{min-width:620px}
  .tscroll td:not(:first-child){white-space:nowrap}
  .tscroll::-webkit-scrollbar{height:6px}
}
@media (max-width:560px){
  /* 手机上菜单只留图标，并让出「查看站点」（顶栏已有入口），否则 9 个入口会横向溢出被裁 */
  #menu a{padding:0 6px}
  #menu a.on span{display:none}
  .side-foot a:first-child{display:none}
  .side{gap:6px}
  .stats{grid-template-columns:1fr}
  .who,.divider{display:none}
  .grid2{grid-template-columns:1fr}
  .view{padding:12px 12px 40px}
  .panel{padding:16px}
}

/* ---------------- 账户设置 ---------------- */

.avatar{transition:background .16s}
.avatar:hover{background:#dfe9ff}
.who:hover{color:var(--accent)}
.acc-card{text-align:center}
.acc-av{
  width:64px;height:64px;border-radius:50%;margin:2px auto 12px;display:grid;place-items:center;
  background:linear-gradient(135deg,#eaf1ff,#dbe7ff);color:var(--accent);
  font-size:24px;font-weight:600;text-transform:uppercase;letter-spacing:-.01em;
}
.acc-name{font-size:15.5px;font-weight:600;color:var(--ink);margin:0 0 3px}
.acc-sub{font-size:12.6px;color:var(--ink-3);margin:0 0 12px}
.acc-meta{margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line-2);text-align:left}
.acc-meta div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:12.6px}
.acc-meta span{color:var(--ink-3)}
.acc-meta b{color:var(--ink-2);font-weight:500;font-variant-numeric:tabular-nums}
.acc-link{display:block;width:100%;text-align:center;line-height:32px;margin-top:16px}

/* ---------------- Markdown 编辑器 ---------------- */
.ed{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper)}
.ed-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 9px;background:var(--bg);border-bottom:1px solid var(--line)}
.ed-grp{display:flex;align-items:center;gap:2px;padding-right:6px;margin-right:2px;border-right:1px solid var(--line)}
.ed-grp:last-child{border-right:0;margin-left:auto}
.ed-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ink-2);border-radius:7px;font-size:14px;line-height:1;transition:background .15s,color .15s}
.ed-btn:hover{background:var(--accent-soft);color:var(--accent)}
.ed-btn b,.ed-btn i,.ed-btn s{font-style:normal;font-weight:700}
.ed-body{display:flex;min-height:420px}
.ed-input{flex:1 1 50%;border:0;outline:0;resize:vertical;padding:16px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:13.5px;line-height:1.7;color:var(--ink);background:var(--paper);min-height:420px}
.ed-prev{flex:1 1 50%;border-left:1px solid var(--line);padding:16px 20px;overflow:auto;background:#fcfdff}
.ed-prev.rendered{font-size:14px;line-height:1.8;color:var(--ink)}
.ed-prev .ed-ph{color:var(--ink-3);text-align:center;margin-top:40px}
.ed-body.ed-show-prev .ed-input{display:none}
.ed-body.ed-show-prev .ed-prev{flex:1 1 100%;border-left:0}
.ed-body.ed-show-prev .ed-prev{display:block}
.ed-status{display:flex;align-items:center;gap:14px;padding:6px 12px;font-size:12px;color:var(--ink-3);background:var(--bg);border-top:1px solid var(--line)}
.ed-status .ed-save.on{color:var(--ok)}
.ed-drag{outline:2px dashed var(--accent);outline-offset:-6px;background:var(--accent-soft)}
.ed-restore{display:none;align-items:center;gap:10px;padding:8px 12px;font-size:12.5px;background:var(--warn-soft);color:var(--warn);border-top:1px solid var(--line)}
.ed-restore.show{display:flex}
.ed-rs{border:1px solid currentColor;background:transparent;color:inherit;border-radius:6px;padding:2px 10px;font-size:12px}
.ed-rs:hover{background:rgba(0,0,0,.04)}
.emoji-pop{position:absolute;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);right:12px;top:46px}
.emoji-it{width:34px;height:34px;border:0;background:transparent;border-radius:8px;font-size:18px}
.emoji-it:hover{background:var(--accent-soft)}
/* 全屏模式 */
.ed.ed-full{position:fixed;inset:0;z-index:200;border-radius:0;display:flex;flex-direction:column}
.ed.ed-full .ed-body{flex:1 1 auto;min-height:0}
.ed.ed-full .ed-input,.ed.ed-full .ed-prev{min-height:0;flex:1 1 50%}
.ed.ed-full .ed-prev{overflow:auto}
@media (max-width:760px){
  .ed-body{flex-direction:column}
  .ed-prev{border-left:0;border-top:1px solid var(--line)}
  .ed-input,.ed-prev{flex:1 1 auto;min-height:220px}
  .ed-body.ed-show-prev .ed-input{display:none}
  .ed-grp{border-right:1px solid var(--line)}
}

/* ---------------- 夜间模式（html.dark，随 18:00/6:00 自动切换，也可手动） ---------------- */
html.dark{
  --bg:#0f1115;
  --paper:#171a21;
  --ink:#e6e8ec;
  --ink-2:#b8bfc9;
  --ink-3:#838c99;
  --line:#2a2f3a;
  --line-2:#20242d;
  --accent:#5b9dff;
  --accent-hover:#3b82f6;
  --accent-soft:#1d2a44;
  --ok:#34c08b;
  --ok-soft:#122a22;
  --warn:#e6a23c;
  --warn-soft:#2b2313;
  --danger:#f76560;
  --danger-soft:#2c1a1a;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 2px 10px rgba(0,0,0,.4);
  --shadow-lg:0 12px 48px rgba(0,0,0,.5);
}
html.dark body{background:var(--bg);color:var(--ink)}
html.dark .login-wrap{background:
  radial-gradient(680px 380px at 18% 12%, #131b2e 0%, rgba(19,27,46,0) 70%),
  radial-gradient(560px 320px at 82% 88%, #142033 0%, rgba(20,32,51,0) 70%),
  var(--bg);}
html.dark .login-card{background:var(--paper);border-color:var(--line)}
html.dark .login-card input,
html.dark input.txt,
html.dark select.txt,
html.dark .pselect-btn,
html.dark textarea.txt{background:#11141a;border-color:#343b48;color:var(--ink)}
html.dark .login-card input::placeholder,
html.dark input.txt::placeholder,
html.dark textarea.txt::placeholder{color:#5b6472}
html.dark .pselect-menu{background:#11141a;border-color:var(--line)}
html.dark .topbar{background:rgba(23,26,33,.82);border-color:var(--line)}
html.dark #menu a:hover,
html.dark .top-link:hover,
html.dark .chip{background:#1d222c}
html.dark thead th,
html.dark tbody tr:hover td,
html.dark .badge{background:#1a1f28}
html.dark .toast{background:#1c2028;color:var(--ink);border-color:var(--line);box-shadow:0 8px 28px rgba(0,0,0,.5)}
html.dark .btn.ghost{background:#171a21;color:var(--ink-2);border-color:#343b48}
html.dark .btn.ghost:hover{background:#171a21;color:var(--accent)}
html.dark .btn.danger{background:#171a21;color:var(--danger);border-color:#5a2b2b}
html.dark .btn.danger:hover{background:var(--danger-soft)}
html.dark .avatar:hover{background:#24304a}
html.dark .acc-av{background:linear-gradient(135deg,#1c2940,#1d2a44)}
html.dark .ed-prev{background:#131720}
html.dark .switch{background:#3a4250}
html.dark .switch:hover{background:#454f60}
html.dark .pselect-btn svg{color:var(--ink-3)}
html.dark .badge.ok{border-color:#1e4a39}
html.dark .badge.warn{border-color:#4a3a1e}
html.dark .toast.err{border-color:#5a2b2b}
