/* ============ 幻绘 · 蓝白科技风 公共样式 ============ */
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{
  --blue:#2E8FFF;--deep:#1677FF;--deep2:#0b5cd6;
  --grad:linear-gradient(135deg,#2E8FFF,#1677FF);
  --bg:linear-gradient(180deg,#eef5ff 0%,#f7fbff 45%,#ffffff 100%);
  --card:#ffffff;--line:rgba(46,143,255,.16);--line2:rgba(22,119,255,.35);
  --ink:#123a6b;--sub:#5b7ba6;--mute:#94aec9;
  --shadow:0 10px 34px rgba(22,119,255,.10);
  --r:16px;--r2:12px;
  --radius:16px;
}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);min-height:100vh;font-size:15px;line-height:1.6;
}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,textarea{font-family:inherit;outline:none}
.wrap{min-height:100vh;display:flex}

/* ============ 左侧导航（PC） ============ */
.sidebar{
  width:220px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:20px 14px;position:sticky;top:0;height:100vh;
}
.logo{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}
.logo-ic{width:38px;height:38px;border-radius:12px;background:var(--grad);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(22,119,255,.35)}
.logo-ic svg{width:22px;height:22px}
.logo-tx{font-size:20px;font-weight:800;color:var(--ink)}
.nav{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.nav a{
  display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:12px;
  color:var(--sub);font-weight:600;font-size:15px;transition:all .18s;
}
.nav a svg{width:20px;height:20px;flex-shrink:0}
.nav a:hover{background:#f0f6ff;color:var(--ink)}
.nav a.on{background:var(--grad);color:#fff;box-shadow:0 6px 16px rgba(22,119,255,.3)}
.side-foot{margin-top:auto;background:#f2f8ff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;align-items:center;gap:10px}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0}
.side-foot .nm{font-size:13.5px;font-weight:700;color:var(--ink);max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-foot .sd{font-size:11.5px;color:var(--mute)}

/* ============ 主区域 ============ */
.main{flex:1;min-width:0;padding:26px 34px 60px}
.page-title{font-size:26px;font-weight:800;color:var(--ink)}
.page-sub{font-size:14px;color:var(--sub);margin-top:2px}

/* ============ 组件 ============ */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.btn-primary{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--grad);color:#fff;font-weight:700;border-radius:12px;padding:12px 26px;
  font-size:15px;box-shadow:0 8px 20px rgba(22,119,255,.3);transition:all .18s;border:none;
}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(22,119,255,.4)}
.btn-primary:active{transform:scale(.98)}
.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}
.btn-outline{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:#fff;color:var(--blue);font-weight:700;border-radius:12px;padding:12px 26px;
  font-size:15px;border:1.5px solid var(--blue);transition:all .18s;
}
.btn-outline:hover{background:#f0f7ff}
.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#f2f6fb;color:var(--sub);font-weight:600;border-radius:11px;padding:10px 18px;font-size:14px;transition:all .15s}
.btn-ghost:hover{background:#e6eef9;color:var(--ink)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{
  font-size:13px;padding:7px 16px;border-radius:20px;cursor:pointer;user-select:none;
  background:#f2f7ff;color:var(--sub);border:1px solid transparent;transition:all .15s;font-weight:600;
}
.chip:hover{color:var(--blue)}
.chip.on{background:var(--grad);color:#fff;box-shadow:0 4px 12px rgba(22,119,255,.3)}
.input{
  width:100%;background:#f4f8ff;border:1.5px solid transparent;border-radius:12px;
  padding:13px 16px;font-size:15px;color:var(--ink);transition:all .18s;
}
.input:focus{background:#fff;border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,143,255,.15)}
.input::placeholder{color:var(--mute)}
.tag{font-size:12px;color:var(--mute);font-weight:600;letter-spacing:.3px}
.sechd{display:flex;align-items:center;justify-content:space-between;margin:26px 0 14px}
.sechd h2{font-size:19px;font-weight:800;color:var(--ink)}
.sechd .more{font-size:13px;color:var(--blue);font-weight:600;cursor:pointer}

/* toast */
.toast{
  position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(18px);z-index:999;
  background:#123a6b;color:#fff;padding:12px 24px;border-radius:12px;font-size:14px;
  opacity:0;pointer-events:none;transition:all .25s;box-shadow:0 12px 30px rgba(0,0,0,.25);max-width:86%;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 移动端顶部 + 底部tab */
.m-top{display:none;position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:12px 16px;align-items:center;justify-content:space-between}
.m-top .logo-tx{font-size:18px}
.m-tab{display:none;position:fixed;left:0;right:0;bottom:0;z-index:100;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:8px 6px calc(8px + env(safe-area-inset-bottom));justify-content:space-around}
.m-tab a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--mute);font-weight:600;padding:4px 10px;border-radius:10px}
.m-tab a svg{width:22px;height:22px}
.m-tab a.on{color:var(--blue)}

/* ============ 响应式（全端统一 PC 布局） ============ */

/* 页面淡入 */
.fade{animation:fadeIn .45s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* 空状态 */
.empty{text-align:center;padding:70px 20px;color:var(--mute)}
.empty .ei{width:70px;height:70px;margin:0 auto 16px;border-radius:24px;background:#f0f7ff;display:flex;align-items:center;justify-content:center;font-size:34px}
.empty p{font-size:14.5px}
