:root{--bg: #f7f5f3;--surface: #ffffff;--surface-2: #fbf8f7;--text: #262120;--muted: #8b817c;--line: rgba(38, 33, 32, .09);--brand: #a4546f;--brand-dark: #7d3e55;--brand-soft: #f7e9ee;--ok: #2f8f6b;--ok-soft: #e8f5ef;--warn: #bb762c;--warn-soft: #fdf1e1;--danger: #bf4740;--danger-soft: #fbeae8;--radius: 14px;--font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;color:inherit}button{cursor:pointer}a{color:var(--brand);text-decoration:none}h1,h2,h3,h4{margin:0;font-weight:500}.shell{display:flex;min-height:100vh}.sidebar{display:none}.frame{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;height:52px;display:flex;align-items:center;gap:10px;padding:0 16px;background:#fffffff0;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar .tb-title{font-size:16px;font-weight:500}.topbar .tb-sub{font-size:11px;color:var(--muted);margin-left:auto;text-align:right;line-height:1.25}.content{flex:1;width:100%;max-width:560px;margin:0 auto;padding:14px 14px calc(150px + env(safe-area-inset-bottom))}.content--bare{max-width:none;padding:0}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:#fffffff7;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tabbar a{flex:1;min-height:60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:11px}.tabbar a.active{color:var(--brand)}.tabbar svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:15px;margin-bottom:12px}.card.tight{padding:12px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.card-title{font-size:14px;font-weight:500}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.between{display:flex;align-items:center;justify-content:space-between;gap:10px}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.strong{font-weight:500}.grow{flex:1;min-width:0}.right{text-align:right}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.divider{height:1px;background:var(--line);margin:12px 0}.hero{background:var(--brand);color:#fff;border-radius:16px;padding:18px;margin-bottom:12px}.hero .hero-label{font-size:12px;opacity:.82}.hero .hero-num{font-size:34px;font-weight:600;letter-spacing:-1px;line-height:1.2;margin-top:2px}.hero .hero-foot{font-size:12px;opacity:.85;margin-top:6px}.kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 10px}.kpi .k-label{font-size:11px;color:var(--muted)}.kpi .k-num{font-size:18px;font-weight:600;margin-top:2px;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:15px;font-weight:500;white-space:nowrap}.btn:active{transform:scale(.985)}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn-soft{background:var(--brand-soft);border-color:transparent;color:var(--brand-dark)}.btn-danger{color:var(--danger);border-color:#bf474040}.btn-plain{border-color:transparent;background:transparent}.btn-sm{min-height:36px;padding:0 12px;font-size:13px;border-radius:9px}.btn-xs{min-height:30px;padding:0 9px;font-size:12px;border-radius:8px}.btn-block{width:100%}.btn:disabled{opacity:.45;pointer-events:none}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.field{display:block;margin-bottom:12px}.label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.input,select.input,textarea.input{width:100%;min-height:46px;font-size:16px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);outline:none}textarea.input{min-height:70px;resize:vertical}.input:focus{border-color:var(--brand)}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#9b8f89 50%),linear-gradient(135deg,#9b8f89 50%,transparent 50%);background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px}.input-num{font-variant-numeric:tabular-nums}.chip-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;min-height:36px;display:inline-flex;align-items:center;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;color:var(--muted)}.chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.list{display:flex;flex-direction:column;gap:10px}.item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 14px}.item.clickable{cursor:pointer}.item-title{font-size:15px;font-weight:500}.item-sub{font-size:12px;color:var(--muted);margin-top:3px}.item-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.money{font-variant-numeric:tabular-nums;font-weight:600}.seg{display:flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);padding:4px;border-radius:12px;margin-bottom:14px;overflow-x:auto}.seg-item{flex:1 0 auto;min-height:36px;display:flex;align-items:center;justify-content:center;padding:0 12px;border-radius:9px;font-size:13px;color:var(--muted);white-space:nowrap}.seg-item.active{background:var(--surface);color:var(--text);font-weight:500;box-shadow:0 1px 3px #0000000f}.bar-track{height:7px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin-top:6px}.bar-fill{height:100%;border-radius:99px;background:var(--brand)}.stat-line{display:flex;justify-content:space-between;font-size:13px;padding:7px 0;border-bottom:1px solid var(--line)}.stat-line:last-child{border-bottom:0}.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#1c141473;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:92vh;overflow-y:auto;background:var(--bg);border-radius:18px 18px 0 0;padding:16px 16px calc(84px + env(safe-area-inset-bottom))}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.sheet-head h3{font-size:16px}.sheet-actions{position:sticky;bottom:0;background:var(--bg);padding-top:12px;margin-top:4px}.sheet .card{background:var(--surface)}.floating-cta{position:fixed;z-index:26;left:50%;transform:translate(-50%);bottom:calc(70px + env(safe-area-inset-bottom));width:min(532px,calc(100% - 28px))}.floating-cta .btn{width:100%;box-shadow:0 4px 14px #a4546f47}.empty{text-align:center;color:var(--muted);font-size:13px;padding:30px 12px}.toast{position:fixed;z-index:90;left:50%;transform:translate(-50%);bottom:calc(86px + env(safe-area-inset-bottom));background:#231c1ceb;color:#fff;padding:10px 18px;border-radius:999px;font-size:13px;max-width:86vw;text-align:center}.loading{text-align:center;color:var(--muted);padding:32px;font-size:13px}.hint{font-size:12px;color:var(--muted);background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:10px 12px}.login-wrap{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:28px 22px calc(28px + env(safe-area-inset-bottom));max-width:460px;margin:0 auto}.login-brand{margin-bottom:30px}.login-logo{width:46px;height:46px;border-radius:14px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:600;margin-bottom:14px}.login-brand h1{font-size:23px}.login-brand p{font-size:13px;color:var(--muted);margin:6px 0 0}@media(min-width:900px){.sidebar{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:226px;background:var(--surface);border-right:1px solid var(--line);padding:22px 14px;z-index:20}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:0 8px 22px}.sidebar .brand-mark{width:34px;height:34px;border-radius:10px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600}.sidebar .brand-name{font-size:14px;font-weight:500}.sidebar .brand-sub{font-size:11px;color:var(--muted)}.nav-item{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 12px;border-radius:10px;color:var(--muted);font-size:14px;margin-bottom:3px}.nav-item.active{background:var(--brand-soft);color:var(--brand-dark);font-weight:500}.nav-item svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7}.frame{margin-left:226px}.topbar{height:58px;padding:0 26px}.content{max-width:1060px;padding:22px 26px 80px}.tabbar{display:none}.floating-cta{left:auto;right:30px;transform:none;bottom:26px;width:220px}.floating-cta .btn{box-shadow:0 4px 14px #a4546f38}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.grid-2 .card{margin-bottom:0}.sheet-mask{align-items:center}.sheet{border-radius:18px;max-height:86vh}.toast{bottom:30px}.login-wrap{border:1px solid var(--line);border-radius:18px;min-height:auto;margin:8vh auto;background:var(--surface);box-shadow:0 10px 40px #0000000f}}
