:root{
  --brand:#285eae;--brand-deep:#123f8f;--brand-bright:#4ba0f5;--brand-pale:#eaf3ff;
  --ink:#101828;--muted:#667085;--line:#dce5f1;--surface:#fff;--canvas:#f4f7fb;
  --good:#14866d;--warn:#a76c00;--danger:#c23f38;
  font-family:"Microsoft YaHei UI","Microsoft YaHei","Noto Sans SC",Arial,sans-serif;
  color:var(--ink);background:var(--canvas)
}
#showReset,#backResetLogin,#sendResetCode{background:#fff;color:var(--brand-deep);border:1px solid #aebfd5;border-radius:8px;padding:10px 16px;font-weight:600}.code-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.auth #resetError{color:var(--danger);min-height:20px}
*{box-sizing:border-box}body{margin:0;display:grid;grid-template-columns:264px 1fr;min-height:100vh;background:linear-gradient(135deg,#f7f9fc 0%,#eef4fb 100%)}
aside{background:#fff;color:var(--ink);padding:18px 14px 16px;display:flex;flex-direction:column;max-height:100vh;position:sticky;top:0;border-right:1px solid #dce5f1;box-shadow:8px 0 28px #123f8f0b;z-index:2}
.brand{padding:2px 5px 18px;border-bottom:1px solid #e5ebf3;margin-bottom:10px}.brand-logo{height:64px;overflow:hidden}.brand-logo img{width:100%;height:100%;object-fit:contain;object-position:left center}.brand-system{font-size:13px;font-weight:700;letter-spacing:.2em;margin-top:8px;color:#34445d;padding-left:3px}
nav{display:grid;gap:3px;overflow:auto;padding-right:3px;scrollbar-width:thin;scrollbar-color:#b8c8dd transparent}.navgroup{font-size:10px;font-weight:800;letter-spacing:.18em;color:#8a98aa;padding:17px 12px 5px;border-top:1px solid #edf1f6;margin-top:5px}nav button{border:0;background:transparent;color:#344054;text-align:left;padding:10px 12px;border-radius:7px;font-size:13px;font-weight:600;transition:.16s ease}nav button:hover,nav button:focus{background:#f0f5fc;color:var(--brand-deep);outline:none}.nav-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:5px;color:#183968!important;background:#f6f8fb!important;font-size:12px!important;font-weight:800!important;letter-spacing:.08em}.nav-toggle i{font-style:normal;font-size:16px;transition:transform .2s}.nav-toggle[aria-expanded="false"] i{transform:rotate(-90deg)}.submenu{display:grid;gap:2px}.submenu button{padding-left:25px;font-size:13px}.submenu button:before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:#9db1c9;margin:0 10px 3px 0}.submenu.collapsed{display:none}aside small{margin-top:auto;padding:14px 8px 0;color:#718096;font-size:0;letter-spacing:.12em}aside small:after{content:"JIALIKE TECH · Windows 本机版";font:10px/1.4 Arial,sans-serif}
main{min-width:0}header{height:78px;background:#ffffffed;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:1;backdrop-filter:blur(12px)}header:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--brand-deep),var(--brand),var(--brand-bright))}header b{display:block;font-size:21px;font-weight:800;letter-spacing:.02em}header span{font-size:12px;color:var(--muted)}button{cursor:pointer;font-family:inherit;transition:.18s ease}button:hover{filter:brightness(1.04)}header button,.primary,#save{background:linear-gradient(135deg,var(--brand-deep),var(--brand));color:#fff;border:0;border-radius:8px;padding:10px 17px;box-shadow:0 5px 14px #285eae28;font-weight:600}section{padding:26px 30px 40px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.forecastcards{margin-top:16px}
.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 7px 24px #173a6b0b}.card{position:relative;overflow:hidden}.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--brand-bright),var(--brand-deep))}.card strong{display:block;font-family:"Bahnschrift","DIN Alternate",Arial,sans-serif;font-size:27px;margin-top:11px;color:var(--brand-deep);font-variant-numeric:tabular-nums}.card small{display:block;color:var(--muted);margin-top:7px}.card .smallvalue{font-size:14px;word-break:break-all}.panel{margin-top:18px;overflow:auto}.panel h3{margin:0;color:#17345f;font-size:17px}
.riskbar{display:flex;align-items:center;gap:18px;padding:15px 19px;border-radius:10px;margin-bottom:16px;border:1px solid transparent}.riskbar b{font-size:18px}.riskbar span{flex:1}.riskbar.green{background:#e7f7f2;color:#126b57;border-color:#c5eadf}.riskbar.yellow{background:#fff6db;color:#895e00;border-color:#f2dfa2}.riskbar.red{background:#ffebe9;color:#a73530;border-color:#f0c6c2}.risk{display:inline-block;padding:4px 9px;border-radius:14px;font-size:12px;font-weight:700}.risk.red{background:#ffebe9;color:#a73530}.risk.yellow{background:#fff3ce;color:#8a6200}.risk.normal,.risk.settled{background:#e1f5ef;color:#176a55}
.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}.cashcurve{width:100%;height:280px;background:linear-gradient(180deg,#f7fbff,#fff);border:1px solid #e4edf8;border-radius:9px}.curve{fill:none;stroke:var(--brand);stroke-width:3}.curve.danger{stroke:var(--danger)}.zeroline{stroke:#d77;stroke-width:1;stroke-dasharray:6 5}.cashcurve text{font-size:12px;fill:#61748c}.bankform,.uploadform{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.hint{font-size:12px;color:var(--muted)}#bankMessage,#attMessage{color:var(--brand)}
table{width:100%;border-collapse:separate;border-spacing:0}th,td{padding:12px 10px;border-bottom:1px solid #e8edf4;text-align:left}th{color:#52647c;font-size:12px;font-weight:700;letter-spacing:.04em;background:#f7f9fc;position:sticky;top:0}tbody tr:hover{background:#f6faff}.money{text-align:right;font-family:"Bahnschrift",Arial,sans-serif;font-variant-numeric:tabular-nums;color:#17345f}.permission-list{max-width:360px;font-size:12px;color:#586b83}
dialog{border:1px solid var(--line);border-radius:14px;width:540px;max-height:90vh;overflow:auto;padding:26px;box-shadow:0 24px 90px #0b24543d}dialog::backdrop{background:#0b1d3b66;backdrop-filter:blur(3px)}#fields{display:grid;gap:13px}label{display:grid;gap:6px;font-size:13px;color:#42546b;font-weight:600}input,select{padding:11px 12px;border:1px solid #bdcadb;border-radius:8px;font:inherit;color:var(--ink);background:#fff;outline:none;transition:.18s}input:focus,select:focus{border-color:var(--brand-bright);box-shadow:0 0 0 3px #4ba0f51f}dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.auth{position:fixed;inset:0;background:radial-gradient(circle at 15% 15%,#d9eaff 0,transparent 35%),linear-gradient(135deg,#f4f8fd 0%,#e6eef9 100%);display:grid;place-items:center;z-index:10;padding:24px;overflow:auto}.auth-shell{width:min(980px,94vw);height:auto;min-height:520px;max-height:none;background:#fff;border:1px solid #dce6f3;border-radius:16px;box-shadow:0 30px 90px #123f8f26;display:grid;grid-template-columns:1.12fr .88fr;overflow:hidden}.auth-brand{background:linear-gradient(145deg,#f7faff,#e8f1fc);padding:52px 40px;display:flex;flex-direction:column;justify-content:center;color:#17345f;position:relative;border-right:1px solid #dce7f4}.auth-brand:after{content:"";position:absolute;width:240px;height:240px;border:34px solid #285eae0a;border-radius:50%;right:-100px;bottom:-100px}.auth-brand img{width:100%;height:150px;object-fit:contain;object-position:center;background:transparent;border-radius:0;box-shadow:none;position:relative;z-index:1}.auth-brand span{font-size:21px;font-weight:800;letter-spacing:.12em;margin-top:28px;position:relative;z-index:1;text-align:center}.auth-brand small{font:10px Arial,sans-serif;letter-spacing:.2em;color:#5377a6;margin-top:10px;position:relative;z-index:1}.auth form{width:auto;background:#fff;padding:40px 46px;box-shadow:none;display:grid;align-content:start;gap:14px;overflow-y:visible;min-height:0}.auth h2{font-size:25px;color:#102f64;margin:0}.auth p{margin:0;color:var(--muted);font-size:13px}.auth #authError,.auth #registerError{color:var(--danger);min-height:20px}.auth.hidden,.hidden{display:none!important}#showRegister,#backLogin,#modalCancel{background:#fff;color:var(--brand-deep);border:1px solid #aebfd5;border-radius:8px;padding:10px 16px;font-weight:600}
#logout{background:#fff;color:#294a78;border:1px solid #b8c7da;border-radius:8px;padding:9px 13px;box-shadow:none}#who{margin-right:8px;font-weight:700;color:#294a78}
@media(max-width:1050px){.cards{grid-template-columns:1fr 1fr}.auth{place-items:start center;padding:14px}.auth-shell{grid-template-columns:1fr;max-width:520px;height:auto;max-height:calc(100vh - 28px);min-height:0;overflow-y:auto}.auth-brand{padding:20px 28px;min-height:126px;border-right:0;border-bottom:1px solid #dce7f4}.auth-brand img{height:72px}.auth-brand span,.auth-brand small{display:none}.auth form{padding:28px 34px;overflow:visible}}
@media(max-width:760px){body{grid-template-columns:1fr}aside{display:none}header{padding:0 16px}section{padding:18px 14px}.cards{grid-template-columns:1fr}.auth{padding:8px}.auth-shell{max-height:calc(100vh - 16px);border-radius:12px}.auth-brand{padding:14px 20px;min-height:92px}.auth-brand img{height:58px}.auth form{padding:24px 20px}.toolbar{align-items:flex-start;flex-direction:column}}
