:root{
  --bg:#0b0f1a; --panel:#121829; --panel2:#192241; --panel3:#212c4d;
  --line:#2a3759; --line2:#36456e;
  --txt:#eaf0fb; --sub:#94a2c4; --muted:#67739a;
  --accent:#5b9dff; --accent2:#37e0a6; --accent3:#b78bff;
  --danger:#ff6285; --gold:#ffce6b;
  --radius:14px; --shadow:0 18px 50px rgba(0,0,0,.45);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Microsoft YaHei","Segoe UI",sans-serif;
  color:var(--txt);overflow:hidden;
  background:
    radial-gradient(1200px 600px at 85% -10%, rgba(91,157,255,.10), transparent 60%),
    radial-gradient(900px 500px at -5% 110%, rgba(183,139,255,.10), transparent 55%),
    var(--bg);
}
.app{display:flex;height:100vh}

/* 滚动条 */
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:var(--line2);border-radius:9px}
*::-webkit-scrollbar-thumb:hover{background:var(--accent)}
*::-webkit-scrollbar-track{background:transparent}

/* 侧边栏 */
.sidebar{
  width:256px;flex:0 0 256px;background:linear-gradient(180deg,var(--panel),#0f1424);
  border-right:1px solid var(--line);display:flex;flex-direction:column;
  transition:margin-left .28s cubic-bezier(.4,0,.2,1);position:relative;z-index:5;
}
.sidebar.collapsed{margin-left:-256px}
.brand{display:flex;align-items:center;gap:12px;padding:20px 18px 16px}
.logo{
  width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-size:21px;background:linear-gradient(135deg,var(--accent),var(--accent3));
  box-shadow:0 8px 22px rgba(91,157,255,.35);
}
.brand-title{font-weight:800;font-size:15.5px;letter-spacing:.3px}
.brand-sub{font-size:10.5px;color:var(--muted);letter-spacing:2px;text-transform:uppercase;margin-top:2px}
.nav-search{padding:0 16px 12px}
.nav-search input{
  width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:10px;padding:9px 12px;font-size:13px;outline:none;transition:border-color .2s,box-shadow .2s;
}
.nav-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.nav{flex:1;overflow-y:auto;padding:4px 12px}
.nav-item{
  position:relative;display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:11px;
  cursor:pointer;color:var(--sub);font-size:14px;margin-bottom:4px;border:1px solid transparent;
  transition:background .18s,color .18s,transform .12s;
}
.nav-item:hover{background:var(--panel2);color:var(--txt)}
.nav-item:active{transform:scale(.985)}
.nav-item.active{background:linear-gradient(90deg,rgba(91,157,255,.20),rgba(91,157,255,.04));color:#fff;border-color:rgba(91,157,255,.4)}
.nav-item.active::before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:4px;height:22px;border-radius:0 4px 4px 0;background:linear-gradient(180deg,var(--accent),var(--accent3))}
.nav-item .ni-icon{font-size:18px;width:24px;text-align:center;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.nav-item .ni-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
/* ---- 管理员·左侧用户切换器（常用网站）---- */
.nav-usersub{position:relative;padding:2px 12px 10px 30px}
.nav-user-btn{
  width:100%;display:flex;align-items:center;gap:8px;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:10px;padding:7px 10px;font-size:12.5px;font-weight:600;cursor:pointer;
  transition:border-color .18s,background .18s,box-shadow .18s;text-align:left;font-family:inherit;
}
.nav-user-btn:hover{border-color:rgba(91,157,255,.55);background:rgba(91,157,255,.08)}
.nav-user-btn.open{border-color:var(--accent);background:rgba(91,157,255,.08);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.nav-user-ava{
  width:20px;height:20px;flex:0 0 20px;border-radius:7px;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent3));
  box-shadow:0 3px 8px rgba(91,157,255,.35);overflow:hidden;
}
.nav-user-ava.is-all{background:linear-gradient(135deg,#7a5cff,#4d9fff);font-size:11px}
.nav-user-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-user-caret{font-size:10px;color:var(--muted);transition:transform .2s ease}
.nav-user-btn.open .nav-user-caret{transform:rotate(180deg);color:var(--accent)}
.nav-user-menu{
  position:absolute;left:12px;right:12px;top:calc(100% - 3px);z-index:60;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 42px rgba(0,0,0,.55);padding:6px;
  animation:navMenuIn .16s cubic-bezier(.2,.9,.3,1.15);transform-origin:top center;
}
@keyframes navMenuIn{from{opacity:0;transform:translateY(-5px) scale(.97)}to{opacity:1;transform:none}}
.nav-user-opt{
  width:100%;display:flex;align-items:center;gap:8px;padding:7px 8px;border:none;background:none;
  color:var(--sub);font-size:12.5px;font-weight:600;border-radius:8px;cursor:pointer;text-align:left;
  transition:background .15s,color .15s;font-family:inherit;
}
.nav-user-opt:hover{background:var(--panel2);color:var(--txt)}
.nav-user-opt.active{background:rgba(91,157,255,.14);color:#fff}
.nav-user-opt .nu-ava{
  width:20px;height:20px;flex:0 0 20px;border-radius:7px;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:800;color:#fff;background:linear-gradient(135deg,#5b6b8c,#3d4a66);
}
.nav-user-opt .nu-ava.is-all{background:linear-gradient(135deg,#7a5cff,#4d9fff);font-size:11px}
.nav-user-opt.active .nu-ava{background:linear-gradient(135deg,var(--accent),var(--accent3))}
.nav-user-opt .nu-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-user-opt .nu-check{font-size:12px;color:var(--accent);opacity:0;transition:opacity .15s}
.nav-user-opt.active .nu-check{opacity:1}
.nav-user-sep{height:1px;background:var(--line);margin:5px 6px}
::root[data-theme="light"] .nav-user-menu{box-shadow:0 18px 42px rgba(30,50,90,.18)}
.nav-empty{color:var(--muted);font-size:13px;text-align:center;padding:34px 12px;line-height:1.8}
.sidebar-foot{padding:14px 16px;border-top:1px solid var(--line)}
.btn-manage{
  width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:11px;border-radius:11px;cursor:pointer;font-size:13px;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:7px;transition:.18s;
}
.btn-manage:hover{border-color:var(--accent);color:var(--accent);background:rgba(91,157,255,.08);box-shadow:0 6px 18px rgba(91,157,255,.18)}

/* 主区 */
.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{
  position:relative;z-index:20; /* 抬到内容层之上：backdrop-filter 会让顶栏自成层叠上下文，若不加 z-index，下拉菜单会被后面的内容区(.home/#frame)盖住 */
  height:58px;flex:0 0 58px;display:flex;align-items:center;gap:14px;padding:0 20px;
  border-bottom:1px solid var(--line);background:rgba(18,24,41,.7);backdrop-filter:blur(10px);
}
.crumb{font-size:16px;font-weight:700;flex:1;letter-spacing:.3px}
.icon-btn{background:transparent;border:1px solid var(--line);color:var(--sub);width:36px;height:36px;border-radius:10px;cursor:pointer;font-size:16px;transition:.18s}
.icon-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(91,157,255,.08)}
.ghost-btn{background:transparent;border:1px solid var(--line);color:var(--sub);width:36px;height:36px;border-radius:10px;cursor:pointer;font-size:16px;transition:.18s}
.ghost-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(91,157,255,.08)}
.top-actions{display:flex;gap:8px}
.frame-wrap{position:relative;flex:1;min-height:0;background:#0a0e18}
#frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff}

/* 首页卡片墙 */
.home{position:absolute;inset:0;overflow-y:auto;padding:36px 44px}
.home.hidden{display:none}
.home-head{margin-bottom:26px}
.home-title{font-size:25px;font-weight:800;letter-spacing:.5px;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.home-sub{color:var(--sub);font-size:13.5px;margin-top:8px}
.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.home-card{
  position:relative;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);
  border-radius:16px;padding:20px;cursor:pointer;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s;
}
.home-card::after{content:"";position:absolute;inset:0;background:radial-gradient(400px 160px at 110% -20%,rgba(91,157,255,.18),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none}
.home-card:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:var(--shadow)}
.home-card:hover::after{opacity:1}
.hc-icon{
  width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:25px;
  background:linear-gradient(135deg,rgba(91,157,255,.22),rgba(183,139,255,.22));border:1px solid var(--line2);margin-bottom:14px;
}
.hc-name{font-size:16px;font-weight:700;margin-bottom:6px}
.hc-desc{font-size:12.5px;color:var(--sub);line-height:1.6;min-height:38px}
.hc-url{font-size:11px;color:var(--muted);margin-top:12px;word-break:break-all;font-family:ui-monospace,monospace}
.hc-go{position:absolute;right:16px;bottom:16px;font-size:18px;color:var(--accent);opacity:0;transform:translateX(-6px);transition:.2s}
.home-card:hover .hc-go{opacity:1;transform:translateX(0)}
.home-empty{grid-column:1/-1;color:var(--muted);text-align:center;padding:60px 0;font-size:14px}

/* 公共库 / 共享标识 */
.home-card.shared{border-color:rgba(55,224,166,.35)}
.home-card .hc-badge{position:absolute;left:14px;top:14px;font-size:10.5px;font-weight:700;color:var(--accent2);background:rgba(55,224,166,.14);border:1px solid rgba(55,224,166,.35);border-radius:999px;padding:1px 8px}
.hc-cat-act{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap;position:relative;z-index:1}
.hc-cat-act .mini-btn{font-size:12px}
.cat-section{margin-top:6px}
.wl-entry-owner{font-size:12px;color:var(--sub);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:1px 9px;white-space:nowrap}
.lk-item-owner{font-size:10.5px;font-weight:700;color:var(--sub);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:1px 8px;white-space:nowrap}
.mini-btn.on{border-color:var(--accent2);color:var(--accent2);background:rgba(55,224,166,.12)}

/* 管理面板 */
.mask{position:fixed;inset:0;background:rgba(5,8,15,.55);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .25s;z-index:20}
.mask.show{opacity:1;pointer-events:auto}
.manage{
  position:fixed;top:0;right:0;height:100vh;width:392px;max-width:94vw;
  background:linear-gradient(180deg,var(--panel),#0f1424);border-left:1px solid var(--line2);
  transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:21;
  display:flex;flex-direction:column;box-shadow:-18px 0 60px rgba(0,0,0,.5);
}
.manage.show{transform:translateX(0)}
.manage-head{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 10px}
.manage-head h2{font-size:17px;font-weight:800}
.add-form{padding:10px 20px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.add-form .row{display:flex;gap:10px}
.add-form input{
  flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:10px;padding:10px 12px;font-size:13px;outline:none;transition:.18s;
}
.add-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.icon-in{flex:0 0 60px !important;text-align:center;font-size:16px}
.primary-btn{background:linear-gradient(135deg,var(--accent),#3f7fe8);border:0;color:#fff;padding:11px;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:800;transition:.18s;box-shadow:0 8px 20px rgba(91,157,255,.3)}
.primary-btn:hover{filter:brightness(1.08);box-shadow:0 10px 26px rgba(91,157,255,.42)}
.list-head{padding:16px 20px 8px;font-size:11.5px;color:var(--muted);letter-spacing:1px;text-transform:uppercase}
.feat-list{flex:1;overflow-y:auto;padding:0 16px 22px;list-style:none}
.feat-item{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:9px;transition:.18s}
.feat-item:hover{border-color:var(--line2)}
.fi-top{display:flex;align-items:center;gap:10px}
.fi-icon{font-size:19px;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:rgba(91,157,255,.12);border:1px solid var(--line)}
.fi-name{flex:1;font-size:14.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fi-url{font-size:11px;color:var(--muted);margin:7px 0 10px;word-break:break-all;font-family:ui-monospace,monospace}
.fi-actions{display:flex;gap:7px;flex-wrap:wrap}
.mini-btn{background:transparent;border:1px solid var(--line);color:var(--sub);border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer;transition:.15s;white-space:nowrap}
.mini-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(91,157,255,.08)}
.mini-btn:disabled{opacity:.35;cursor:not-allowed}
.mini-btn.del:hover{border-color:var(--danger);color:var(--danger);background:rgba(255,98,133,.08)}

/* 编辑弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(5,8,15,.6);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:30}
.modal-mask.show{display:flex}
.modal{width:430px;max-width:94vw;background:linear-gradient(180deg,var(--panel),#0f1424);border:1px solid var(--line2);border-radius:16px;padding:24px;box-shadow:var(--shadow)}
.modal h3{margin-bottom:18px;font-size:17px;font-weight:800}
.modal form{display:flex;flex-direction:column;gap:11px}
.modal input{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font-size:13px;outline:none;transition:.18s}
.modal input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.modal .row{display:flex;gap:10px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}
.confirm-body{font-size:14px;line-height:1.7;color:var(--sub);margin:4px 0 14px}
.confirm-modal{max-width:360px}
.modal-tip{font-size:12.5px;line-height:1.7;color:var(--sub);margin:-6px 0 6px}
.token-input{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:12px 14px;font-size:14px;outline:none;transition:.18s;letter-spacing:1px}
.token-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}

/* 访问口令按钮提示态 */
.ghost-btn.need{border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 3px rgba(255,206,107,.18);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(255,206,107,.18)}50%{box-shadow:0 0 0 6px rgba(255,206,107,.30)}}

/* toast */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--panel3);border:1px solid var(--accent);color:var(--txt);padding:12px 20px;border-radius:11px;font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:all .28s;z-index:40;box-shadow:0 12px 34px rgba(0,0,0,.5)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{border-color:var(--danger)}

@media (max-width:640px){
  .sidebar{position:absolute;z-index:15;height:100%}
  .home{padding:24px 18px}
}

/* 分组标题 */
.nav-group{font-size:10.5px;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;padding:15px 13px 5px;font-weight:800}
.home-group{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--sub);font-weight:800;margin:20px 2px 12px;letter-spacing:.4px}
.home-group::after{content:"";flex:1;height:1px;background:var(--line)}
.home-group .hg-count{font-size:11px;color:var(--muted);font-weight:600;background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:1px 9px}

/* 拖拽排序 */
.feat-item{cursor:grab}
.feat-item:active{cursor:grabbing}
.feat-item.dragging{opacity:.4}
.feat-item.drag-over{border-color:var(--accent);box-shadow:0 0 0 2px rgba(91,157,255,.3)}
.fi-group{display:inline-block;font-size:10.5px;color:var(--sub);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:2px 9px;margin:7px 0 9px}
.drag-hint{font-size:11px;color:var(--muted);padding:0 16px 8px}

/* ===== 浅色主题 ===== */
:root[data-theme="light"]{
  --bg:#eaeef6; --panel:#ffffff; --panel2:#f3f6fc; --panel3:#e6ecf7;
  --line:#dbe2f0; --line2:#c7d1e6;
  --txt:#1a2236; --sub:#5a678a; --muted:#93a0bf;
  --accent:#3b7dff; --accent2:#12b886; --accent3:#8b5cf6;
  --danger:#e23a5e; --gold:#c98a12; --shadow:0 18px 50px rgba(40,60,110,.18);
}
:root[data-theme="light"] body{
  background:
    radial-gradient(1200px 600px at 85% -10%, rgba(59,125,255,.10), transparent 60%),
    radial-gradient(900px 500px at -5% 110%, rgba(139,92,246,.10), transparent 55%),
    var(--bg);
}
:root[data-theme="light"] .sidebar{background:linear-gradient(180deg,var(--panel),var(--panel2));border-right-color:var(--line)}
:root[data-theme="light"] .manage{background:linear-gradient(180deg,var(--panel),var(--panel2));border-left-color:var(--line2)}
:root[data-theme="light"] .modal{background:linear-gradient(180deg,var(--panel),var(--panel2))}
:root[data-theme="light"] .topbar{background:rgba(255,255,255,.72)}
:root[data-theme="light"] .home-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .frame-wrap{background:#f6f8fc}
:root[data-theme="light"] #frame{background:#fff}
:root[data-theme="light"] .home-card{background:linear-gradient(160deg,#fff,var(--panel2))}
:root[data-theme="light"] .feat-item{background:var(--panel2)}
:root[data-theme="light"] .nav-item.active{background:linear-gradient(90deg,rgba(59,125,255,.16),rgba(59,125,255,.03))}

/* 多级分层：首页分组可点击 */
.nav-group{cursor:pointer;transition:color .15s}
.nav-group:hover{color:var(--accent)}

/* 首页双卡（多级入口） */
.ov-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:6px}
.ov-card{position:relative;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:18px;padding:28px;cursor:pointer;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}
.ov-card::after{content:"";position:absolute;inset:0;background:radial-gradient(420px 180px at 115% -20%,rgba(91,157,255,.18),transparent 60%);opacity:0;transition:opacity .25s}
.ov-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:var(--shadow)}
.ov-card:hover::after{opacity:1}
.ov-icon{width:56px;height:56px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:30px;background:linear-gradient(135deg,rgba(91,157,255,.22),rgba(183,139,255,.22));border:1px solid var(--line2);margin-bottom:18px}
.ov-name{font-size:20px;font-weight:800;margin-bottom:8px}
.ov-desc{font-size:13px;color:var(--sub);line-height:1.7}
.ov-go{position:absolute;right:22px;top:24px;font-size:22px;color:var(--accent);opacity:.5}

/* 日常工作记录模块 */
.worklog{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.worklog.hidden{display:none}
.wl-head{margin-bottom:20px}
.wl-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.wl-sub{color:var(--sub);font-size:13px;margin-top:6px}
.wl-editor{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:24px}
.wl-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.wl-date{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:9px 12px;font-size:13px;outline:none;color-scheme:dark}
.wl-date:focus{border-color:var(--accent)}
.wl-tools{display:flex;gap:8px;margin-left:auto}
.wl-text{width:100%;min-height:120px;resize:vertical;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:12px;font-size:14px;line-height:1.7;outline:none;font-family:inherit}
.wl-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.wl-previews{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.wl-thumb{position:relative;width:84px;height:84px;border-radius:10px;overflow:hidden;border:1px solid var(--line2)}
.wl-thumb img{width:100%;height:100%;object-fit:cover}
.wl-thumb .x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:0;cursor:pointer;font-size:12px;line-height:18px;text-align:center}
.wl-actions{display:flex;gap:10px;margin-top:14px;align-items:center;flex-wrap:wrap}
.wl-actions .ghost-btn{width:auto;height:auto;padding:0 16px;font-size:13px;font-weight:700;white-space:nowrap}
.wl-toolbar{display:flex;align-items:center;gap:14px;margin:2px 0 14px;flex-wrap:wrap}
.wl-selall{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--sub);cursor:pointer;user-select:none}
.wl-selall input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.wl-selcount{font-size:13px;color:var(--sub)}
.wl-toolbar .ghost-btn{width:auto;height:auto;padding:0 14px;font-size:13px;font-weight:700;white-space:nowrap}
.wl-check{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;flex:0 0 auto}
.wl-entry-head .wl-check{margin-right:2px}
.wl-list{display:flex;flex-direction:column;gap:14px}
.wl-entry{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.wl-entry-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wl-entry-date{font-size:13px;font-weight:700;color:var(--accent)}
.wl-entry-acts{display:flex;gap:6px}
.wl-entry-text{font-size:14px;line-height:1.75;white-space:pre-wrap;word-break:break-word}
.wl-entry-imgs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.wl-entry-imgs img{width:90px;height:90px;object-fit:cover;border-radius:9px;border:1px solid var(--line2);cursor:pointer}
.wl-entry-media{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.wl-entry-media audio{width:240px}
.wl-entry-media video{width:240px;max-height:160px;border-radius:9px;border:1px solid var(--line2)}
.wl-mprev{position:relative;border:1px solid var(--line2);border-radius:10px;padding:6px;background:var(--panel)}
.wl-mprev .x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:0;cursor:pointer;font-size:12px;line-height:18px;text-align:center;z-index:2}
.wl-mprev audio,.wl-mprev video{display:block;border-radius:6px}
.wl-empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px}

:root[data-theme="light"] .wl-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .wl-date{color-scheme:light}
:root[data-theme="light"] .worklog{background:#f6f8fc}

/* ===== 学习计划模块 ===== */
.studyplan{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.studyplan.hidden{display:none}
.sp-head{margin-bottom:18px}
.sp-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.sp-sub{color:var(--sub);font-size:13px;margin-top:6px}
.sp-import{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:22px}
.sp-import-row{display:flex;gap:10px;margin-bottom:12px;align-items:center}
.sp-name{flex:1;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font-size:13px;outline:none}
.sp-name:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.sp-text{width:100%;min-height:150px;resize:vertical;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:12px;font-size:13.5px;line-height:1.7;outline:none;font-family:ui-monospace,monospace}
.sp-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.sp-import-actions{display:flex;align-items:center;gap:14px;margin-top:14px;flex-wrap:wrap}
.sp-hint{font-size:12px;color:var(--muted)}
.sp-toolbar{margin:2px 0 14px}
.sp-stat{font-size:13px;color:var(--sub)}
.sp-list{display:flex;flex-direction:column;gap:14px}
.sp-empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px}
.sp-card{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:16px 18px;transition:.18s}
.sp-card:hover{border-color:var(--line2)}
.sp-card.done{border-color:rgba(55,224,166,.4);background:linear-gradient(160deg,rgba(55,224,166,.08),var(--panel2))}
.sp-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sp-card-name{font-size:16px;font-weight:800}
.sp-badge{font-size:11.5px;color:var(--accent2);background:rgba(55,224,166,.14);border:1px solid rgba(55,224,166,.35);border-radius:999px;padding:2px 10px;font-weight:700;white-space:nowrap}
.sp-card-meta{font-size:12.5px;color:var(--sub);margin:8px 0 12px}
.sp-card-acts{display:flex;gap:7px;flex-wrap:wrap}
.sp-detail-head{display:flex;align-items:center;gap:14px;margin-bottom:8px}
.sp-detail-title{font-size:20px;font-weight:800;flex:1}
.sp-detail-sub{font-size:13px;color:var(--sub);margin-bottom:14px}
.sp-progress{height:8px;background:var(--panel);border-radius:999px;overflow:hidden;margin-bottom:18px;border:1px solid var(--line)}
.sp-progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;transition:width .3s}
.sp-section-title{font-size:14px;font-weight:800;color:var(--sub);margin:18px 0 10px;letter-spacing:.4px}
.sp-items{display:flex;flex-direction:column;gap:8px}
.sp-item{display:flex;align-items:flex-start;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:12px 14px;cursor:pointer;transition:.15s}
.sp-item:hover{border-color:var(--line2)}
.sp-item.done{background:rgba(55,224,166,.07);border-color:rgba(55,224,166,.3)}
.sp-item.done .sp-item-text{color:var(--sub);text-decoration:line-through}
.sp-item-cb{width:18px;height:18px;accent-color:var(--accent2);cursor:pointer;margin-top:2px;flex:0 0 auto}
.sp-item-text{font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.sp-detail-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.sp-detail-actions .primary-btn,.sp-detail-actions .ghost-btn{width:auto;height:auto;padding:0 18px;font-size:13px;font-weight:700;white-space:nowrap}
.sp-qbank{display:flex;flex-direction:column;gap:10px}
.sp-qa{background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:12px 14px}
.sp-qa.known{border-color:rgba(55,224,166,.3)}
.sp-q{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}
.sp-qi{font-size:12px;font-weight:800;color:var(--accent);background:rgba(91,157,255,.14);border-radius:7px;padding:2px 8px;flex:0 0 auto}
.sp-qt{font-size:14px;line-height:1.6;font-weight:600;white-space:pre-wrap;word-break:break-word}
.sp-a{display:flex;gap:10px;align-items:flex-start}
.sp-ai{font-size:12px;font-weight:800;color:var(--accent2);background:rgba(55,224,166,.14);border-radius:7px;padding:2px 8px;flex:0 0 auto}
.sp-at{font-size:13.5px;line-height:1.6;color:var(--sub);white-space:pre-wrap;word-break:break-word}
/* 考试 */
.sp-exam-progress{font-size:13px;color:var(--sub);margin-bottom:8px;font-weight:600}
.sp-exam-q{display:flex;gap:14px;align-items:flex-start;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:14px}
.sp-exam-qi{font-size:14px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent3));border-radius:10px;padding:6px 12px;flex:0 0 auto}
.sp-exam-qt{font-size:16px;line-height:1.7;font-weight:700;white-space:pre-wrap;word-break:break-word}
.sp-exam-ans-box{display:flex;gap:14px;align-items:flex-start;background:rgba(55,224,166,.08);border:1px solid rgba(55,224,166,.35);border-radius:14px;padding:16px;margin-bottom:14px}
.sp-exam-ai{font-size:14px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent2),#0fae7e);border-radius:10px;padding:6px 12px;flex:0 0 auto}
.sp-exam-at{font-size:15px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.sp-exam-ans{width:100%;min-height:110px;resize:vertical;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:11px;padding:12px;font-size:14px;line-height:1.7;outline:none;font-family:inherit}
.sp-exam-ans:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.sp-exam-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.sp-exam-actions .primary-btn,.sp-exam-actions .ghost-btn{width:auto;height:auto;padding:0 20px;font-size:14px;font-weight:800;white-space:nowrap}
.primary-btn.ok{background:linear-gradient(135deg,var(--accent2),#0fae7e)}
.primary-btn.ok:hover{filter:brightness(1.08)}
.ghost-btn.bad{border-color:var(--danger);color:var(--danger)}
.ghost-btn.bad:hover{border-color:var(--danger);color:var(--danger);background:rgba(255,98,133,.1)}
.sp-result{text-align:center;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:18px;padding:36px;margin:20px 0}
.sp-result-pct{font-size:54px;font-weight:900;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.sp-result-line{font-size:15px;color:var(--sub);margin-top:8px}

:root[data-theme="light"] .sp-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .studyplan{background:#f6f8fc}

/* ===== 常用网站跳转模块 ===== */
.links{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.links.hidden{display:none}
.lk-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.lk-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.lk-sub{color:var(--sub);font-size:13px;margin-top:6px}
.lk-edit{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:22px}
.lk-edit.hidden{display:none}
.lk-add{display:flex;flex-direction:column;gap:10px}
.lk-add .row{display:flex;gap:10px}
.lk-add input,.lk-add select{
  flex:1;background:var(--panel);border:1px solid var(--line);color:var(--txt);
  border-radius:10px;padding:10px 12px;font-size:13px;outline:none;transition:.18s;
}
.lk-add input:focus,.lk-add select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.lk-add .icon-in{flex:0 0 60px !important;text-align:center;font-size:16px}
.lk-add .primary-btn{width:auto;align-self:flex-start;padding:10px 22px}
.lk-body{display:flex;flex-direction:column;gap:10px}
.lk-group{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--txt);font-weight:800;margin:18px 2px 12px;letter-spacing:.4px}
.lk-group::after{content:"";flex:1;height:1px;background:var(--line)}
.lk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.lk-card{
  position:relative;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);
  border-radius:16px;padding:18px;cursor:pointer;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s;
}
.lk-card::after{content:"";position:absolute;inset:0;background:radial-gradient(400px 160px at 110% -20%,rgba(91,157,255,.18),transparent 60%);opacity:0;transition:opacity .25s}
.lk-card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:var(--shadow)}
.lk-card:hover::after{opacity:1}
.lk-icon{
  width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:23px;
  background:linear-gradient(135deg,rgba(91,157,255,.22),rgba(183,139,255,.22));border:1px solid var(--line2);margin-bottom:12px;
}
.lk-name{font-size:15.5px;font-weight:700;margin-bottom:6px;padding-right:22px}
.lk-desc{font-size:12.5px;color:var(--sub);line-height:1.6;min-height:36px;word-break:break-word}
.lk-go{position:absolute;right:14px;top:14px;font-size:18px;color:var(--accent);opacity:0;transform:translateX(-6px);transition:.2s}
.lk-card:hover .lk-go{opacity:1;transform:translateX(0)}
.lk-list{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.lk-item{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:10px 12px;flex-wrap:wrap}
.lk-item-cat{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.cat-内网{background:rgba(91,157,255,.16);color:var(--accent);border:1px solid rgba(91,157,255,.35)}
.cat-外网{background:rgba(55,224,166,.14);color:var(--accent2);border:1px solid rgba(55,224,166,.35)}
.lk-item-name{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk-item-url{font-size:11px;color:var(--muted);flex:1;min-width:120px;word-break:break-all;font-family:ui-monospace,monospace}
.lk-item-acts{display:flex;gap:6px}
.lk-empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px}

:root[data-theme="light"] .lk-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .links{background:#f6f8fc}

/* ===== 功能使用情况（仅开发者可见）===== */
.usage{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.usage.hidden{display:none}
.us-head{margin-bottom:20px}
.us-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.us-sub{color:var(--sub);font-size:13px;margin-top:6px}
.us-table-wrap{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:8px;overflow-x:auto}
.us-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}
.us-table thead th{
  text-align:left;padding:13px 14px;font-size:12.5px;color:var(--sub);font-weight:700;
  border-bottom:1px solid var(--line2);white-space:nowrap;letter-spacing:.3px;
}
.us-table tbody td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--txt);white-space:nowrap}
.us-table tbody tr:last-child td{border-bottom:0}
.us-table tbody tr:hover{background:rgba(91,157,255,.06)}
.us-name{font-weight:700}
.us-type{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:rgba(91,157,255,.14);color:var(--accent);border:1px solid rgba(91,157,255,.3)}
.us-count{font-weight:800;color:var(--accent2);font-variant-numeric:tabular-nums}
.us-visitors{color:var(--sub);font-variant-numeric:tabular-nums}
.us-empty{text-align:center;color:var(--muted);padding:30px 0 !important}

:root[data-theme="light"] .us-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .usage{background:#f6f8fc}

/* ===== 登录页 ===== */
.login-screen{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 85% -10%,rgba(91,157,255,.12),transparent 60%),radial-gradient(900px 500px at -5% 110%,rgba(183,139,255,.12),transparent 55%),var(--bg)}
.login-screen.show{display:flex}
.login-card{width:340px;max-width:92vw;background:linear-gradient(180deg,var(--panel),#0f1424);border:1px solid var(--line2);border-radius:20px;padding:34px 30px;box-shadow:var(--shadow);text-align:center}
.login-logo{font-size:46px}
.login-card h1{font-size:21px;font-weight:800;margin:14px 0 6px;letter-spacing:.5px}
.login-sub{color:var(--sub);font-size:13px;margin-bottom:22px}
.login-card form{display:flex;flex-direction:column;gap:12px}
.login-card input{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:11px;padding:12px 14px;font-size:14px;outline:none;transition:.18s}
.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.login-card .primary-btn{padding:12px}
.login-err{color:var(--danger);font-size:13px;margin-top:14px;min-height:18px}
.hidden{display:none!important}
.login-switch{margin-top:16px;font-size:12.5px;text-align:center;display:flex;flex-direction:column;gap:9px}
.login-switch a{color:var(--accent);text-decoration:none;cursor:pointer;transition:.15s}
.login-switch a:hover{text-decoration:underline}

/* 用户标识 + 退出 */
.user-chip{display:inline-flex;align-items:center;gap:7px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12.5px;color:var(--sub);white-space:nowrap}
.user-chip .uc-name{font-weight:700;color:var(--txt)}
.user-chip .uc-role{font-size:10.5px;color:var(--accent);background:rgba(91,157,255,.14);border:1px solid rgba(91,157,255,.3);border-radius:999px;padding:1px 8px}

/* ===== 用户管理模块 ===== */
.users{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.users.hidden{display:none}
.us-head{margin-bottom:18px}
.us-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.us-sub{color:var(--sub);font-size:13px;margin-top:6px}
.us-toolbar{margin-bottom:14px}
.us-table-wrap{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:8px;overflow-x:auto}
.us-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:680px}
.us-table thead th{text-align:left;padding:13px 14px;font-size:12.5px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line2);white-space:nowrap}
.us-table tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.us-table tbody tr:last-child td{border-bottom:0}
.us-table tbody tr:hover{background:rgba(91,157,255,.06)}
.us-name{font-weight:700}
.us-type{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:rgba(91,157,255,.14);color:var(--accent);border:1px solid rgba(91,157,255,.3)}
.us-mods{color:var(--sub);font-size:12.5px}
.us-acts{display:flex;gap:6px;flex-wrap:wrap}
.us-empty{text-align:center;color:var(--muted);padding:30px 0 !important}

/* ===== 操作日志模块 ===== */
.oplog{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.oplog.hidden{display:none}
.op-head{margin-bottom:18px}
.op-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.op-sub{color:var(--sub);font-size:13px;margin-top:6px}
.op-toolbar{display:flex;align-items:center;gap:10px;margin:14px 0;flex-wrap:wrap}
.op-toolbar .ghost-btn{width:auto;height:auto;padding:6px 12px;font-size:12.5px;font-weight:700;white-space:nowrap}
.op-table-wrap{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:8px;overflow-x:auto}
.op-table{width:100%;border-collapse:collapse;font-size:13px;min-width:1040px}
.op-table thead th{text-align:left;padding:13px 14px;font-size:12px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line2);white-space:nowrap;letter-spacing:.3px}
.op-table tbody td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--txt);white-space:nowrap}
.op-table tbody tr:last-child td{border-bottom:0}
.op-table tbody tr:hover{background:rgba(91,157,255,.06)}
.op-table td:nth-child(7){white-space:normal;color:var(--sub);max-width:340px}
.op-badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 10px;border-radius:999px}
.op-badge.ok{color:var(--accent2);background:rgba(55,224,166,.14);border:1px solid rgba(55,224,166,.35)}
.op-badge.fail{color:var(--danger);background:rgba(255,98,133,.14);border:1px solid rgba(255,98,133,.35)}
.op-badge.info{color:var(--accent);background:rgba(91,157,255,.14);border:1px solid rgba(91,157,255,.35)}
.op-count{font-size:13px;color:var(--sub);font-weight:600}
.op-empty{text-align:center;color:var(--muted);padding:30px 0 !important}
:root[data-theme="light"] .op-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .oplog{background:#f6f8fc}

/* ===== 功能需求模块 ===== */
.requests{position:absolute;inset:0;overflow-y:auto;padding:30px 40px}
.requests.hidden{display:none}
.rq-head{margin-bottom:18px}
.rq-title{font-size:23px;font-weight:800;background:linear-gradient(90deg,#fff,var(--accent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.rq-sub{color:var(--sub);font-size:13px;margin-top:6px}
.rq-submit{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:24px}
.rq-row{display:flex;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.rq-input{flex:1;min-width:180px;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font-size:13.5px;outline:none}
.rq-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.rq-sel{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:10px 12px;font-size:13.5px;outline:none;cursor:pointer}
.rq-sel:focus{border-color:var(--accent)}
.rq-text{width:100%;min-height:110px;resize:vertical;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:12px;font-size:14px;line-height:1.7;outline:none;font-family:inherit;margin-bottom:14px}
.rq-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.15)}
.rq-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.rq-toolbar{display:flex;align-items:center;gap:14px;margin:2px 0 14px;flex-wrap:wrap}
.rq-stat{font-size:13px;color:var(--sub);font-weight:600}
.rq-toolbar .ghost-btn{width:auto;height:auto;padding:6px 12px;font-size:12.5px;font-weight:700;white-space:nowrap}
.rq-table-wrap{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:8px;overflow-x:auto}
.rq-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:840px}
.rq-table thead th{text-align:left;padding:13px 14px;font-size:12.5px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line2);white-space:nowrap;letter-spacing:.3px}
.rq-table tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--txt);white-space:nowrap}
.rq-table tbody tr:last-child td{border-bottom:0}
.rq-table tbody tr:hover{background:rgba(91,157,255,.06)}
.rq-title-cell{font-weight:700;white-space:normal !important;max-width:280px}
.rq-time{color:var(--sub);font-variant-numeric:tabular-nums}
.rq-acts{display:flex;gap:6px;flex-wrap:wrap}
/* 状态 / 优先级徽章 */
.rq-badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 10px;border-radius:999px;white-space:nowrap}
.rq-badge.pending{color:var(--gold);background:rgba(255,206,107,.14);border:1px solid rgba(255,206,107,.35)}
.rq-badge.approved{color:var(--accent2);background:rgba(55,224,166,.14);border:1px solid rgba(55,224,166,.35)}
.rq-badge.rejected{color:var(--danger);background:rgba(255,98,133,.14);border:1px solid rgba(255,98,133,.35)}
.rq-badge.done{color:var(--accent);background:rgba(91,157,255,.14);border:1px solid rgba(91,157,255,.35)}
.rq-badge.pri-low{color:var(--muted);background:rgba(103,115,154,.16);border:1px solid var(--line2)}
.rq-badge.pri-normal{color:var(--sub);background:rgba(91,157,255,.12);border:1px solid rgba(91,157,255,.3)}
.rq-badge.pri-high{color:var(--danger);background:rgba(255,98,133,.12);border:1px solid rgba(255,98,133,.3)}
/* 普通用户列表 */
.rq-section-title{font-size:14px;font-weight:800;color:var(--sub);margin:18px 0 12px;letter-spacing:.4px}
.rq-list{display:flex;flex-direction:column;gap:14px}
.rq-card{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:16px 18px;transition:.18s}
.rq-card:hover{border-color:var(--line2)}
.rq-card.done{border-color:rgba(91,157,255,.4)}
.rq-card.approved{border-color:rgba(55,224,166,.4)}
.rq-card.rejected{border-color:rgba(255,98,133,.4)}
.rq-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rq-card-title{font-size:16px;font-weight:800}
.rq-card-meta{font-size:12.5px;color:var(--sub);margin:8px 0 10px}
.rq-card-desc{font-size:13.5px;line-height:1.7;color:var(--txt);white-space:pre-wrap;word-break:break-word}
.rq-card-acts{display:flex;gap:7px;flex-wrap:wrap;margin-top:6px}
.rq-card-note{margin-top:10px;font-size:12.5px;color:var(--accent2);background:rgba(55,224,166,.08);border:1px solid rgba(55,224,166,.3);border-radius:10px;padding:8px 12px;white-space:pre-wrap;word-break:break-word}
/* 处理弹窗内描述 */
.rq-edit-desc{font-size:13.5px;line-height:1.7;color:var(--sub);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}

:root[data-theme="light"] .rq-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .requests{background:#f6f8fc}

/* 模块勾选网格 */
.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px 12px;margin:4px 0 2px}
.chk-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--sub);cursor:pointer;user-select:none}
.chk-item input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}

:root[data-theme="light"] .us-title{background:none;-webkit-text-fill-color:var(--txt);color:var(--txt)}
:root[data-theme="light"] .users{background:#f6f8fc}
:root[data-theme="light"] .login-screen{background:radial-gradient(1200px 600px at 85% -10%,rgba(59,125,255,.12),transparent 60%),radial-gradient(900px 500px at -5% 110%,rgba(139,92,246,.12),transparent 55%),var(--bg)}
:root[data-theme="light"] .login-card{background:linear-gradient(180deg,var(--panel),var(--panel2))}

/* 备案号页脚 */
.portal-foot{height:34px;flex:0 0 34px;display:flex;align-items:center;justify-content:center;font-size:11.5px;color:var(--muted);border-top:1px solid var(--line);background:rgba(18,24,41,.6)}
.portal-foot a{color:var(--sub);text-decoration:none;transition:color .15s}
.portal-foot a:hover{color:var(--accent)}
:root[data-theme="light"] .portal-foot{background:rgba(255,255,255,.6)}
/* 登录页备案号：登录层是全屏覆盖，备案信息必须挂在层内，未登录（备案核查）时可见 */
.login-icp{position:absolute;left:0;right:0;bottom:14px;text-align:center;font-size:11.5px;color:var(--muted);text-decoration:none;transition:color .15s}
.login-icp:hover{color:var(--accent)}

/* ===== 休闲游戏排行 ===== */
.rank-wrap{margin-top:4px;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:8px;overflow-x:auto}
.rank-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
.rank-table thead th{text-align:left;padding:12px 14px;font-size:12.5px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line2);white-space:nowrap;letter-spacing:.3px}
.rank-table tbody td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--txt);white-space:nowrap}
.rank-table tbody tr:last-child td{border-bottom:0}
.rank-table tbody tr:hover{background:rgba(91,157,255,.06)}
.rank-table .rk{font-weight:800;width:76px;color:var(--sub);font-variant-numeric:tabular-nums}
.rank-table .sc{font-weight:800;color:var(--accent2);font-variant-numeric:tabular-nums}
.rank-table tbody tr:nth-child(1) .rk{color:var(--gold)}
.rank-wrap .empty{padding:30px;text-align:center;color:var(--muted);font-size:14px}
/* 排行榜分页标签：总榜 + 各游戏独立榜 */
.rk-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.rk-tab{background:var(--panel2);border:1px solid var(--line);color:var(--sub);border-radius:999px;padding:7px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:.15s}
.rk-tab:hover{border-color:var(--accent);color:var(--txt)}
.rk-tab.on{background:linear-gradient(135deg,var(--accent),#3f7fe8);border-color:var(--accent);color:#fff;box-shadow:0 4px 14px rgba(91,157,255,.3)}
.rank-table .ts{color:var(--sub);font-variant-numeric:tabular-nums;font-size:12.5px}
/* 顶栏用户区下拉菜单 + 修改密码弹窗 */
.top-actions{position:relative}
.user-menu{position:absolute;top:46px;right:0;min-width:168px;background:linear-gradient(180deg,var(--panel),#0f1424);border:1px solid var(--line2);border-radius:12px;padding:6px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow);z-index:25}
.user-menu.hidden{display:none}
.um-item{background:transparent;border:0;color:var(--txt);text-align:left;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;transition:.15s}
.um-item:hover{background:var(--panel2);color:var(--accent)}
#pwForm input{width:100%;box-sizing:border-box;margin-bottom:10px}
#pwForm .pw-err{color:var(--danger,#ff6285);font-size:12.5px;min-height:16px;margin-bottom:6px}
