/* 融担数智系统 Web 版 · 统一视觉（国有金融企业风格：深蓝 + 金色点缀） */
:root{
  --blue-900:#07204a; --blue-800:#0a2a5e; --blue-700:#123a7a; --blue-600:#1857b8;
  --blue-100:#e8f0fb; --blue-50:#f4f8fe;
  --gold:#c9a45c; --gold-light:#e3cd9b;
  --red:#b32020; --green:#1a7a45;
  --ink:#1b2330; --ink-2:#4a5567; --ink-3:#7b8698;
  --line:#dce3ec; --line-2:#eef2f7;
  --bg:#f2f5f9; --card:#ffffff;
  --radius:8px; --radius-lg:12px;
  --shadow:0 1px 3px rgba(10,42,94,.06), 0 6px 18px rgba(10,42,94,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:14px; line-height:1.6; color:var(--ink); background:var(--bg);
  display:flex; flex-direction:column; min-height:100dvh;
}

/* ---------------- 顶栏 ---------------- */
.topbar{background:linear-gradient(180deg,var(--blue-800),var(--blue-900));color:#fff;position:sticky;top:0;z-index:60;border-bottom:3px solid var(--gold)}
.topbar-inner{max-width:1560px;margin:0 auto;padding:0 18px;display:flex;align-items:center;gap:18px;min-height:60px}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;flex:none}
.brand-badge{width:34px;height:34px;border-radius:50%;background:rgba(201,164,92,.18);border:1px solid var(--gold);display:grid;place-items:center;color:var(--gold-light)}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-text strong{font-size:16px;letter-spacing:.5px}
.brand-text small{font-size:11px;color:#a9c0e0}
.nav{display:flex;gap:2px;flex:1;flex-wrap:wrap}
.nav a{color:#cddcf0;text-decoration:none;padding:8px 12px;border-radius:6px;font-size:13.5px;white-space:nowrap}
.nav a:hover{background:rgba(255,255,255,.1);color:#fff}
.nav a.on{background:rgba(201,164,92,.2);color:#fff;box-shadow:inset 0 -2px 0 var(--gold)}
.topbar-user{display:flex;align-items:center;gap:8px;flex:none}
.who{font-size:13px;color:#cddcf0;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-toggle{display:none;background:none;border:1px solid rgba(255,255,255,.35);border-radius:6px;padding:7px 8px;cursor:pointer}
.nav-toggle span{display:block;width:18px;height:2px;background:#fff;margin:3px 0}

/* ---------------- 布局 ---------------- */
.wrap{max-width:1560px;margin:0 auto;padding:22px 18px 40px;width:100%;flex:1}
.foot{border-top:1px solid var(--line);background:#fff;color:var(--ink-3);font-size:12.5px;text-align:center;padding:14px}

.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.page-head h1{font-size:20px;margin:0;font-weight:600;color:var(--blue-800)}
.page-head p{margin:4px 0 0;color:var(--ink-3);font-size:13px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.card > h2{font-size:15.5px;margin:0 0 14px;font-weight:600;color:var(--blue-800);padding-left:10px;border-left:3px solid var(--gold);line-height:1.2}
.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.span-full{grid-column:1/-1}

/* ---------------- 表单 ---------------- */
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.field{display:flex;flex-direction:column;gap:5px;min-width:150px}
.field.grow{flex:1}
label{font-size:13px;color:var(--ink-2)}
input[type=text],input[type=password],input[type=number],input[type=date],select,textarea{
  border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;font:inherit;background:#fff;color:var(--ink);width:100%
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue-600);box-shadow:0 0 0 3px rgba(24,87,184,.12)}
textarea{resize:vertical;min-height:70px}
.hint{font-size:12px;color:var(--ink-3)}
.checks{display:flex;gap:14px;flex-wrap:wrap}
.checks label{display:flex;align-items:center;gap:6px;color:var(--ink)}

/* ---------------- 按钮 ---------------- */
.btn{border:1px solid transparent;border-radius:var(--radius);padding:9px 18px;font:inherit;font-size:13.5px;cursor:pointer;transition:.15s;background:#fff}
.btn-primary{background:var(--blue-700);border-color:var(--blue-700);color:#fff}
.btn-primary:hover{background:var(--blue-600)}
.btn-outline{border-color:var(--line);color:var(--ink-2)}
.btn-outline:hover{border-color:var(--blue-600);color:var(--blue-700)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.4);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.14)}
.btn-danger{background:#fff;border-color:#e6b8b8;color:var(--red)}
.btn-danger:hover{background:#fdf3f3}
.btn-sm{padding:6px 12px;font-size:12.5px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}

/* ---------------- 表格 ---------------- */
.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);max-height:560px}
table.tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;background:#fff}
table.tbl th,table.tbl td{padding:8px 10px;border-bottom:1px solid var(--line-2);text-align:left;white-space:nowrap}
table.tbl thead th{position:sticky;top:0;background:var(--blue-50);color:var(--blue-800);font-weight:600;border-bottom:1px solid var(--line);z-index:1}
table.tbl tbody tr:nth-child(even){background:#fafcff}
table.tbl tbody tr:hover{background:var(--blue-50)}
table.tbl td.wrap-cell{white-space:normal;max-width:420px}
table.tbl input[type=text]{padding:5px 7px;font-size:13px;min-width:110px}
table.tbl input[type=checkbox]{margin:0}

/* ---------------- 日志 ---------------- */
.log{background:#0f1a2b;color:#c9d6e8;border-radius:var(--radius);padding:12px 14px;font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.7;height:260px;overflow:auto;white-space:pre-wrap;word-break:break-all}
.log .ok{color:#7ee2a8}
.log .warn{color:#ffd479}
.log .err{color:#ff9a9a}

/* ---------------- 进度 ---------------- */
.progress{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden;margin:10px 0}
.progress > i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue-600),var(--gold));transition:width .3s}
.progress.idle{opacity:.45}

/* ---------------- 标签 / 状态 ---------------- */
.tag{display:inline-block;padding:2px 8px;border-radius:99px;font-size:12px;background:var(--blue-100);color:var(--blue-700)}
.tag.gold{background:#faf1dd;color:#8a6a1f}
.tag.red{background:#fdecec;color:var(--red)}
.tag.green{background:#e9f6ee;color:var(--green)}
.notice{border-left:3px solid var(--gold);background:#fffbf2;padding:12px 14px;border-radius:0 var(--radius) var(--radius) 0;font-size:13px;color:#6b5a2c;margin-bottom:16px}
.notice.blue{border-left-color:var(--blue-600);background:var(--blue-50);color:var(--blue-800)}
.notice.red{border-left-color:var(--red);background:#fdf4f4;color:#7d2626}

/* ---------------- 入口卡 ---------------- */
.entries{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.entry{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;text-decoration:none;color:inherit;transition:.15s;box-shadow:var(--shadow)}
.entry:hover{border-color:var(--blue-600);transform:translateY(-2px)}
.entry .ico{width:38px;height:38px;border-radius:9px;background:var(--blue-100);color:var(--blue-700);display:grid;place-items:center;font-size:18px;margin-bottom:10px}
.entry h3{margin:0 0 4px;font-size:15px;font-weight:600;color:var(--blue-800)}
.entry p{margin:0;font-size:12.5px;color:var(--ink-3);line-height:1.5}

/* ---------------- 模态框 / 消息 ---------------- */
.modal-mask{position:fixed;inset:0;background:rgba(9,22,44,.5);display:grid;place-items:center;z-index:200;padding:18px}
.modal-mask[hidden]{display:none}
.modal{background:#fff;border-radius:var(--radius-lg);width:min(720px,100%);max-height:86dvh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(9,22,44,.3)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-size:15.5px;color:var(--blue-800)}
.modal-x{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--ink-3)}
.modal-body{padding:18px;overflow:auto}
.modal-foot{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.toast-wrap{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:300;align-items:flex-end}
.toast{background:#fff;border-left:3px solid var(--blue-600);border-radius:var(--radius);box-shadow:0 8px 26px rgba(9,22,44,.16);padding:11px 15px;font-size:13px;max-width:360px}
.toast.err{border-left-color:var(--red)}
.toast.ok{border-left-color:var(--green)}
.toast .t-close{float:right;margin-left:10px;color:var(--ink-3);cursor:pointer;border:0;background:none}

/* ---------------- 登录页 ---------------- */
.login-page{min-height:100dvh;display:grid;grid-template-columns:1.05fr .95fr;background:var(--bg)}
.login-left{background:linear-gradient(150deg,var(--blue-800),var(--blue-900));color:#fff;padding:52px 46px;display:flex;flex-direction:column;justify-content:center}
.login-left h1{font-size:26px;margin:0 0 8px;font-weight:600}
.login-left h1 em{font-style:normal;color:var(--gold-light)}
.login-left p{color:#a9c0e0;font-size:13.5px;margin:0 0 26px}
.login-left ul{list-style:none;padding:0;margin:0;color:#cddcf0;font-size:13.5px}
.login-left li{padding:5px 0 5px 18px;position:relative}
.login-left li::before{content:"";position:absolute;left:0;top:13px;width:6px;height:6px;border-radius:50%;background:var(--gold)}
.login-org{margin-top:30px;padding-top:18px;border-top:1px solid rgba(255,255,255,.16);font-size:13px;color:var(--gold-light)}
.login-right{display:grid;place-items:center;padding:40px 28px}
.login-box{width:min(380px,100%)}
.login-box h2{font-size:19px;margin:0 0 4px;color:var(--blue-800)}
.login-box .sub{color:var(--ink-3);font-size:13px;margin:0 0 22px}
.login-box .field{margin-bottom:14px}
.login-box .btn{width:100%;padding:11px}
.alert{border-radius:var(--radius);padding:10px 12px;font-size:13px;margin-bottom:14px}
.alert.err{background:#fdf4f4;color:#7d2626;border:1px solid #f0cccc}
.alert.ok{background:#eefaf3;color:#1a5c38;border:1px solid #c8e8d6}

/* ---------------- 响应式 ---------------- */
@media (max-width:1180px){
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .nav-toggle{display:block}
  .nav{display:none;order:5;width:100%;flex-direction:column;padding-bottom:10px}
  .nav.open{display:flex}
  .topbar-inner{flex-wrap:wrap;padding:10px 14px;gap:10px}
  .grid-2,.grid-3,.grid-4,.grid-2-1,.split{grid-template-columns:1fr}
  .login-page{grid-template-columns:1fr}
  .login-left{padding:32px 24px}
  .wrap{padding:16px 12px 30px}
}
