*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f4f1ea;--card: #ffffff;--border: rgba(61, 58, 54, .16);--thread: rgba(61, 58, 54, .3);--text: #3d3a36;--muted: #6e6b66;--primary: #5f7186;--primary-weak: #eef1f5;--danger: #bf5f4c;--danger-weak: #f8edea;--ok: #6f8f6f;--ok-weak: #edf3ed;--warn: #c19a4f;--warn-weak: #f9f3e6;--clay: #b87e6b;--sage: #8fa08e;--sage-weak: #eef2ee;--radius: 3px;--shadow: 0 1px 3px rgba(61, 58, 54, .08);--serif: Georgia, "Songti SC", "SimSun", "Times New Roman", serif}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E"),repeating-linear-gradient(90deg,transparent 0 2px,rgba(0,0,0,.02) 2px 4px),repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.02) 2px 4px);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}#app{min-height:100vh}button{font-family:inherit;position:relative;border:1px solid rgba(61,58,54,.28);background:linear-gradient(135deg,#fdfcfa,#f2efe8);color:var(--text);padding:6px 14px;border-radius:var(--radius);cursor:pointer;font-size:13px;transition:transform .2s cubic-bezier(.4,0,.2,1),filter .2s}button:before{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px dashed rgba(61,58,54,.26);border-radius:2px;pointer-events:none}button:hover{transform:scale(1.02);filter:brightness(1.08)}button:active{transform:scale(.98)}button.primary{background:linear-gradient(135deg,#6b7d92,#5f7186);border-color:var(--primary);color:#fff}button.primary:before{border-color:#ffffff6b}button.primary:hover{background:linear-gradient(135deg,#72859b,#66798f);filter:none}button.danger{color:var(--danger);border-color:#bf5f4c73}button.danger:before{border-color:#bf5f4c52}button.danger:hover{background:var(--danger-weak);border-color:var(--danger);filter:none}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:13px;border:1px solid rgba(61,58,54,.22);border-radius:var(--radius);padding:7px 10px;outline:none;background:#fffdfa;color:var(--text);width:100%;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary)}.card{position:relative;background:var(--card);border:1px solid rgba(61,58,54,.16);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);outline:1px dashed var(--thread);outline-offset:4px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head h2{font-size:20px;font-weight:800;letter-spacing:.5px;color:var(--text)}.page-head .head-ops{display:flex;align-items:center;gap:10px}.badge{display:inline-block;padding:2px 8px;border-radius:2px;font-size:12px;font-weight:600}.badge.expense{background:var(--danger-weak);color:var(--danger)}.badge.income{background:var(--ok-weak);color:var(--ok)}.badge.transfer{background:var(--warn-weak);color:var(--warn)}.badge.gray{background:#f3f0ea;color:var(--muted)}.badge.pending{background:var(--warn-weak);color:var(--warn)}.muted{color:var(--muted)}.right{float:right}.row{display:flex;gap:10px;align-items:center}.grow{flex:1}.mt8{margin-top:8px}.mt16{margin-top:16px}.empty{color:var(--muted);text-align:center;padding:32px 0}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px dashed rgba(61,58,54,.18);font-size:13px}th{color:var(--muted);font-weight:600;background:var(--primary-weak)}tr:hover td{background:#faf7f0}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d3a3673;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{position:relative;width:380px;max-width:100%;background:#fff;border-radius:var(--radius);padding:20px;border:1px solid rgba(61,58,54,.2);box-shadow:0 12px 40px #3d3a3633}.modal:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px dashed rgba(61,58,54,.25);border-radius:2px;pointer-events:none}.modal h3{font-size:16px;font-weight:700;color:var(--clay)}.modal-actions{display:flex;align-items:center;gap:10px;margin-top:18px}@media(max-width:768px){*{-webkit-tap-highlight-color:transparent}body{font-size:15px}button{min-height:40px;padding:8px 14px;font-size:14px}input,select,textarea{font-size:16px;padding:9px 10px}th,td{padding:8px}.card{padding:14px}.page-head h2{font-size:18px}}
