:root{--bg:#fff8e8;--bg-soft:#fffdf6;--surface:#fff;--ink:#2a2a2a;--muted:#7a6f5f;--line:#2a2a2a;--line-soft:#eadfca;--accent:#ffd54a;--accent-deep:#f0b429;--accent-soft:#fff3bf;--blush:#ffb7c5;--sky:#b8e3f0;--danger:#e45d5d;--income:#3aa76d;--expense:#e45d5d;--warn:#c9892d;--shadow:4px 4px 0 #2a2a2a;--radius:22px;--font-display:"ZCOOL KuaiLe", "Nunito", "Microsoft YaHei", sans-serif;--font-body:"Nunito", "Microsoft YaHei", "PingFang SC", sans-serif;font-family:var(--font-body);color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background-color:var(--bg);background-image:radial-gradient(circle at 12% 18%,#ffb7c559,#0000 28%),radial-gradient(circle at 88% 12%,#b8e3f073,#0000 26%),radial-gradient(circle at 78% 78%,#ffd54a47,#0000 30%),radial-gradient(#2a2a2a0f 1.2px,#0000 1.2px);background-size:auto,auto,auto,22px 22px;background-attachment:fixed}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{max-width:1280px;margin:0 auto;padding:28px 20px 72px;position:relative}.app.wide{max-width:1680px}.topbar{z-index:40;justify-content:space-between;align-items:end;gap:16px;margin-bottom:22px;display:flex;position:relative}.brand{gap:6px;display:grid}.brand-row{align-items:center;gap:12px;display:flex}.brand-puppy{flex:none;width:64px;height:58px;animation:2.8s ease-in-out infinite puppy-bounce}.brand h1{font-family:var(--font-display);letter-spacing:.04em;margin:0;font-size:34px;font-weight:400}.brand-tag{border:2px solid var(--ink);background:var(--accent);box-shadow:2px 2px 0 var(--ink);border-radius:999px;align-items:center;gap:6px;margin-top:2px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.brand p,.brand-sub{color:var(--muted);margin:0;font-size:14px}.top-actions{flex-wrap:wrap;align-items:start;gap:10px;display:flex;position:relative}.menu-toggle,.batch-toggle{display:none}.top-actions-panel{flex-wrap:wrap;gap:10px;display:flex}.tab-short{display:none}.tab-long{display:inline}.desktop-only{display:block}.mobile-list,.mobile-manual{display:none}.mobile-form{grid-template-columns:1fr 1fr;gap:10px;margin:10px 0;display:grid}.mobile-form .field{margin:0}.mobile-form .field>span{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:700;display:block}.mobile-form .span-2{grid-column:span 2}.mobile-form .cell-input,.mobile-form textarea.cell-input{width:100%;min-width:0;min-height:42px}.mobile-form textarea.cell-input{resize:vertical;min-height:64px}.record-card{border:2.5px solid var(--ink);box-shadow:2px 2px 0 var(--ink);background:#fff;border-radius:16px;margin-bottom:12px;padding:14px}.record-card.selected{background:#fff8dc}.record-card-head{justify-content:space-between;align-items:start;gap:10px;margin-bottom:8px;display:flex}.record-title{word-break:break-word;font-size:15px;line-height:1.35}.check-line{flex:1;align-items:start;gap:8px;min-width:0;display:flex}.check-line input{flex:none;margin-top:3px}.record-meta{color:var(--muted);flex-wrap:wrap;gap:6px 10px;margin-bottom:10px;font-size:12px;display:flex}.batch-fields,.batch-actions{display:contents}.batch-label{display:inline}.filters .search-input{flex:1;min-width:200px}.tabs{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.tab,.btn{border:2.5px solid var(--ink);background:var(--surface);color:var(--ink);box-shadow:3px 3px 0 var(--ink);border-radius:999px;justify-content:center;align-items:center;padding:10px 16px;font-weight:700;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.tab.active,.btn.primary{background:var(--accent);border-color:var(--ink);color:var(--ink)}.btn.ghost{box-shadow:none;background:0 0}.btn.danger{color:var(--danger);background:#fff5f5}.tab:hover,.btn:hover{box-shadow:4px 4px 0 var(--ink);transform:translate(-1px,-1px)}.tab:active,.btn:active{box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}.panel{background:var(--surface);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;position:relative}.panel:before{content:"";border:2.5px solid var(--ink);background:var(--blush);width:18px;height:18px;box-shadow:16px 4px 0 -2px var(--sky), 16px 4px 0 var(--ink);border-radius:50%;position:absolute;top:-10px;right:28px}.grid-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.stat{background:var(--bg-soft);border:2.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink);border-radius:18px;padding:16px}.stat:first-child{background:#eaf8ef}.stat:nth-child(2){background:#fff0f0}.stat:nth-child(3){background:var(--accent-soft)}.stat:nth-child(4){background:#eaf6fb}.stat .label{color:var(--muted);font-size:13px;font-weight:700}.stat .value{font-family:var(--font-display);margin-top:8px;font-size:26px;font-weight:400}.stat .value.expense{color:var(--expense)}.stat .value.income{color:var(--income)}.section-title{font-family:var(--font-display);justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;font-size:20px;font-weight:400;display:flex}.charts{grid-template-columns:1.2fr 1fr;gap:16px;display:grid}.bars{gap:10px;display:grid}.bar-row{grid-template-columns:48px 1fr 88px;align-items:center;gap:10px;display:grid}.bar-track{border:2px solid var(--ink);background:#fff6d6;border-radius:999px;height:12px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--accent), var(--blush));height:100%}.pill-list{flex-wrap:wrap;gap:8px;display:flex}.pill{background:var(--accent-soft);border:2px solid var(--ink);color:var(--ink);border-radius:999px;padding:8px 12px;font-size:13px;font-weight:700}.toolbar{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.field,.select,.input{border:2.5px solid var(--ink);min-width:0;box-shadow:2px 2px 0 var(--ink);background:#fff;border-radius:14px;padding:10px 12px}.field{gap:6px;display:grid}.field label{color:var(--muted);font-size:12px;font-weight:700}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:span 3}.table-wrap{border:2.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;border-radius:16px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border-bottom:1.5px solid var(--line-soft);text-align:left;vertical-align:top;white-space:nowrap;padding:8px 10px}.col-title{white-space:normal;word-break:break-word;overflow-wrap:anywhere;width:220px;min-width:220px;max-width:220px;line-height:1.4}.col-check{text-align:center;width:36px}.cell-input{border:2px solid var(--ink);width:100%;min-width:72px;font:inherit;background:#fff;border-radius:10px;padding:6px 8px}.cell-title{resize:vertical;white-space:pre-wrap;word-break:break-word;width:220px;min-width:220px;max-width:220px;min-height:52px;line-height:1.4}tr.selected td,tr.editing td,tr.add-row td{background:#fff8dc}.batch-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.batch-bar .cell-input{width:auto;min-width:110px}.data-table{min-width:1180px}th{background:var(--accent-soft);z-index:1;font-weight:800;position:sticky;top:0}tr:hover td{background:#fffdf2}.amount.expense{color:var(--expense);font-weight:800}.amount.income{color:var(--income);font-weight:800}.badge{background:var(--accent-soft);border:1.5px solid var(--ink);border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;display:inline-flex}.badge.warn{color:var(--warn);background:#fff4d6}.badge.ok{color:var(--income);background:#eaf8ef}.dropzone{border:2.5px dashed var(--ink);text-align:center;color:var(--muted);background:radial-gradient(circle at 20% 30%,#ffb7c540,#0000 40%),radial-gradient(circle at 80% 70%,#ffd54a40,#0000 42%),#fffdf8;border-radius:18px;padding:28px 18px}.dropzone strong{color:var(--ink);font-family:var(--font-display);font-size:22px;font-weight:400}.import-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0;display:grid}.bank-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.import-card{border:2.5px solid var(--ink);background:var(--bg-soft);box-shadow:3px 3px 0 var(--ink);border-radius:18px;padding:16px}.import-card:nth-child(3n+1){background:#fff8dc}.import-card:nth-child(3n+2){background:#eaf6fb}.import-card:nth-child(3n){background:#ffe9f0}.import-card h3{font-family:var(--font-display);margin:0 0 8px;font-size:18px;font-weight:400}.import-card p{color:var(--muted);margin:0 0 12px;font-size:13px}.review-item{border:2.5px solid var(--ink);box-shadow:2px 2px 0 var(--ink);background:#fff;border-radius:16px;margin-bottom:12px;padding:14px}.review-head{justify-content:space-between;gap:12px;margin-bottom:10px;display:flex}.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);font-family:var(--font-display);padding:48px 12px;font-size:18px}.row-actions{gap:6px;display:flex}.row-actions .btn{white-space:nowrap;box-shadow:2px 2px 0 var(--ink);border-radius:10px;padding:6px 10px}.inline-edit{width:100%;min-width:90px}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid;position:relative;overflow:hidden}.login-page .login-deco{opacity:.9;pointer-events:none;position:absolute}.login-page .login-deco.left{width:min(180px,28vw);animation:2.6s ease-in-out infinite puppy-bounce;bottom:8vh;left:max(4vw,16px)}.login-page .login-deco.right{width:min(150px,24vw);animation:3.1s ease-in-out infinite reverse puppy-bounce;top:10vh;right:max(4vw,16px)}.login-page .paw{color:#2a2a2a14;pointer-events:none;width:42px;position:absolute}.login-card{background:var(--surface);border:3px solid var(--ink);width:min(560px,100%);box-shadow:6px 6px 0 var(--ink);text-align:center;z-index:1;border-radius:28px;padding:36px 28px;position:relative}.login-card .login-hero{width:110px;margin:0 auto 8px;animation:2.4s ease-in-out infinite puppy-bounce}.login-card h1{font-family:var(--font-display);margin:0 0 8px;font-size:34px;font-weight:400}.login-card p{color:var(--muted);margin:0 0 24px}.login-accounts{grid-template-columns:1fr 1fr;gap:12px;display:grid}.login-account{border:2.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:linear-gradient(#fff8dc,#fff);border-radius:20px;gap:8px;padding:28px 16px;transition:transform .15s,box-shadow .15s;display:grid}.login-account:nth-child(2){background:linear-gradient(#eaf6fb,#fff)}.login-account strong{font-family:var(--font-display);font-size:32px;font-weight:400}.login-account span{color:var(--muted);font-size:13px}.login-account:hover{box-shadow:5px 5px 0 var(--ink);background:var(--accent-soft);transform:translate(-2px,-2px)}.flow-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:20px;display:grid}.flow-step{border:2.5px solid var(--ink);color:var(--muted);text-align:left;font-family:var(--font-display);box-shadow:3px 3px 0 var(--ink);background:#fff;border-radius:16px;padding:14px 12px;font-size:16px;font-weight:400;transition:all .15s}.flow-step.ready{color:var(--ink);background:#eaf6fb}.flow-step.active{background:var(--accent);color:var(--ink)}.summary-table{min-width:520px}.summary-table td:nth-child(n+2),.summary-table th:nth-child(n+2){text-align:right}.float-paws{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.float-paws .paw{color:#2a2a2a0f;width:36px;position:absolute}.app>:not(.float-paws){z-index:1;position:relative}@keyframes puppy-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media (width<=960px){.app{padding:16px 12px 40px}.grid-stats,.charts,.import-cards,.bank-cards,.form-grid,.flow-steps{grid-template-columns:1fr}.form-grid .span-2,.form-grid .span-3{grid-column:span 1}.login-accounts{grid-template-columns:1fr}.topbar{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.brand{flex:1;min-width:0}.brand-puppy{width:48px;height:44px}.brand h1{font-size:24px}.brand-tag{padding:3px 8px;font-size:11px}.brand-sub{margin-top:4px;font-size:12px}.menu-toggle{flex:none;padding:8px 14px;display:inline-flex}.top-actions{flex:none}.top-actions-panel{z-index:50;background:var(--surface);border:2.5px solid var(--ink);width:min(240px,100vw - 24px);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:8px;padding:10px;display:none;position:absolute;top:calc(100% + 8px);right:0}.top-actions.open .top-actions-panel{display:flex}.top-actions-panel .btn,.top-actions-panel label.btn{text-align:center;justify-content:center;width:100%}.tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;gap:8px;margin:0 -12px 14px;padding:0 12px 4px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;flex:none;padding:8px 14px}.tab-long{display:none}.tab-short{display:inline}.panel{border-radius:18px;padding:16px 14px}.panel:before{right:16px}.section-title{flex-wrap:wrap;align-items:center;font-size:18px}.section-title .btn{justify-content:center;width:100%}.toolbar{grid-template-columns:1fr 1fr;gap:8px;display:grid}.toolbar .btn{grid-column:1/-1}.filters{grid-template-columns:1fr 1fr}.filters .search-input{grid-column:1/-1;width:100%;min-width:0}.select,.input,.field{width:100%}.flow-step{text-align:center;padding:12px 10px;font-size:15px}.import-card .btn,.import-card label.btn{justify-content:center;width:100%;display:inline-flex}.batch-bar{margin-bottom:14px;display:block}.batch-toggle{justify-content:center;width:100%;margin-bottom:0;display:inline-flex}.batch-fields{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:none}.batch-bar.open .batch-fields{display:grid}.batch-label{display:none}.batch-fields .cell-input{width:100%;min-width:0}.batch-actions{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:8px;display:grid}.batch-actions .btn{justify-content:center;width:100%}.desktop-only{display:none!important}.mobile-list,.mobile-manual{display:block}.row-actions{flex-wrap:wrap}.row-actions .btn{text-align:center;flex:auto;justify-content:center;min-width:calc(33% - 6px)}.summary-table{min-width:0}.table-wrap{border-radius:14px}.login-page{padding:16px}.login-card{padding:28px 18px}.login-page .login-deco{opacity:.28}.float-paws .paw{opacity:.7;width:28px}.dropzone{padding:20px 14px}.dropzone strong{font-size:18px}.stat .value{font-size:22px}}@media (width<=420px){.mobile-form{grid-template-columns:1fr}.mobile-form .span-2{grid-column:span 1}.batch-fields,.batch-actions{grid-template-columns:1fr}}
