:root{--gold:#b8924a;--gold2:#cda85f;--ink:#1d2230;--muted:#8b93a4;--bg:#f5f6f8;--line:#e8ebf0}
*{box-sizing:border-box}
body{margin:0;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg)}

/* 登录 —— 高端深墨 + 鎏金光晕 */
.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
  background:radial-gradient(1200px 600px at 70% -10%,#3a3326 0%,#23262f 45%,#191b22 100%)}
.login-bg::before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(184,146,74,.28),transparent 62%);top:-120px;right:-80px;filter:blur(6px)}
.login-card{position:relative;width:360px;background:rgba(255,255,255,.98);border-radius:18px;padding:42px 34px;
  box-shadow:0 30px 80px rgba(0,0,0,.45);display:flex;flex-direction:column;gap:14px;border:1px solid rgba(255,255,255,.6)}
.brand{font-size:26px;font-weight:800;text-align:center;color:var(--ink);letter-spacing:1px}
.brand::after{content:"";display:block;width:44px;height:3px;border-radius:3px;margin:12px auto 2px;
  background:linear-gradient(90deg,var(--gold),var(--gold2))}
.sub{font-size:13px;color:var(--muted);text-align:center;margin-bottom:10px;letter-spacing:.5px}
.login-card input{padding:13px 15px;border:1px solid var(--line);border-radius:10px;font-size:15px;outline:none;background:#fcfcfd}
.login-card input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,146,74,.15)}
.login-card button{margin-top:8px;padding:13px;border:0;border-radius:10px;
  background:linear-gradient(135deg,var(--gold),var(--gold2));
  color:#fff;font-size:16px;font-weight:700;cursor:pointer;letter-spacing:3px;
  box-shadow:0 8px 20px rgba(184,146,74,.35);transition:.15s}
.login-card button:hover{filter:brightness(1.05);box-shadow:0 10px 26px rgba(184,146,74,.45)}
.err{color:#c0392b;font-size:13px;min-height:16px;text-align:center}
.tip{font-size:12px;color:#aab1bd;text-align:center}

/* 工作台 */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:0 26px;height:58px;
  background:linear-gradient(180deg,#23262f,#1d2230);border-bottom:1px solid #2c2f3a;
  box-shadow:0 2px 12px rgba(0,0,0,.12)}
.logo{font-weight:800;color:#fff;font-size:18px;letter-spacing:1px;cursor:pointer;display:flex;align-items:center;gap:9px}
.logo::before{content:"";width:8px;height:18px;border-radius:3px;background:linear-gradient(180deg,var(--gold),var(--gold2))}
.who{font-size:13.5px;color:#c9cdd6;display:flex;align-items:center;gap:14px}
.who button{padding:6px 15px;border:1px solid #3a3e49;border-radius:8px;background:rgba(255,255,255,.06);color:#e7e9ee;cursor:pointer;transition:.15s}
.who button:hover{background:rgba(184,146,74,.2);border-color:var(--gold)}
.wrap{max-width:1000px;margin:0 auto;padding:30px 24px}
h1{margin:6px 0}
.muted{color:var(--muted)}.small{font-size:13px}
.banner{background:#fff7e6;border:1px solid #ffd591;color:#ad6800;padding:10px 14px;border-radius:9px;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px;margin-top:20px}
.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  height:130px;background:#fff;border:1px solid #eee;border-radius:14px;text-decoration:none;color:var(--ink);
  transition:.15s;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.tile:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(184,146,74,.18);border-color:var(--gold2)}
.tile .ic{font-size:38px}
.tile .nm{font-size:15px;font-weight:600}
.tile .newtab{position:absolute;top:8px;right:10px;color:#bbb;font-size:14px}
.tile .newtab:hover{color:var(--gold)}
.tile{position:relative}

/* 统一外壳：顶栏 + 左侧栏 + 内嵌窗口 */
body.shell{height:100vh;display:flex;flex-direction:column;overflow:hidden}
.shell .topbar{flex:0 0 auto}
.shell .logo{cursor:pointer}
.body{flex:1 1 auto;display:flex;min-height:0}
.side{flex:0 0 210px;background:#fff;border-right:1px solid #eee;padding:14px 10px;overflow-y:auto}
.navsep{font-size:12px;color:#aaa;margin:14px 8px 6px}
.navlink{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;cursor:pointer;
  color:#444;font-size:14.5px;text-decoration:none;margin-bottom:3px}
.navlink:hover{background:#f5f1e8}
.navlink.active{background:var(--gold);color:#fff;font-weight:600}
.navlink .ic{font-size:18px}
/* 手风琴 */
.navgroup{margin-bottom:2px}
.navlink.parent{justify-content:flex-start}
.navlink.parent .lbl{flex:1 1 auto}
.navlink.parent .caret{font-size:11px;color:#bbb;transition:transform .15s}
.navgroup.open .navlink.parent .caret{transform:rotate(90deg)}
.navgroup.open .navlink.parent{background:#f5f1e8;color:var(--ink)}
.subwrap{max-height:0;overflow:hidden;transition:max-height .2s ease}
.navgroup.open .subwrap{max-height:500px}
.subitem{display:block;padding:8px 12px 8px 40px;font-size:13.5px;color:#666;text-decoration:none;cursor:pointer;border-radius:8px;margin:2px 0}
.subitem:hover{background:#f5f1e8;color:#333}
.subitem.active{background:var(--gold);color:#fff;font-weight:600}
.subitem.subgroup{font-weight:600;color:#444}
.subitem.subchild{padding-left:60px;font-size:13px;color:#777}
.stage{flex:1 1 auto;position:relative;min-width:0;overflow:auto;background:var(--bg)}
.home-view{max-width:1000px;margin:0 auto;padding:30px 24px}
.frame{width:100%;height:100%;border:0;background:#fff}

/* 修改密码弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(20,23,30,.5);backdrop-filter:blur(2px);z-index:1000;
  display:flex;align-items:center;justify-content:center}
.modal{width:360px;background:#fff;border-radius:16px;padding:28px 26px;box-shadow:0 30px 80px rgba(0,0,0,.4);
  display:flex;flex-direction:column;gap:12px}
.modal h3{margin:0;color:var(--ink);font-size:19px}
.modal .small{margin:0 0 4px}
.modal input{padding:12px 14px;border:1px solid var(--line);border-radius:10px;font-size:15px;outline:none;background:#fcfcfd}
.modal input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,146,74,.15)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.modal-actions button{padding:10px 20px;border:0;border-radius:9px;background:linear-gradient(135deg,var(--gold),var(--gold2));
  color:#fff;font-weight:700;cursor:pointer}
.modal-actions button.ghost{background:#f2f3f5;color:#555}
#chpw{padding:6px 15px;border:1px solid #3a3e49;border-radius:8px;background:rgba(255,255,255,.06);color:#e7e9ee;cursor:pointer;transition:.15s}
#chpw:hover{background:rgba(184,146,74,.2);border-color:var(--gold)}
