.lp{--lp-page: #f5f5ee;--lp-rule: #dbe2d6;--lp-ink: var(--ledger-900);--lp-text: #27302b;--lp-muted: #66706a;--lp-tint: var(--ledger-100);--lp-stamp: #cf4426;--lp-tape: rgba(243, 203, 92, .72);--lp-sticky: #fbe8a6;--lp-hand: "LXGW WenKai", var(--font-sans);--lp-gutter: clamp(16px, 6vw, 72px);--lp-max: 1160px;min-height:100vh;background:var(--lp-page);color:var(--lp-text);font-size:16px;line-height:1.6;overflow-x:hidden}.lp h1,.lp h2{text-wrap:balance;color:var(--lp-ink);margin:0;font-family:var(--lp-hand);font-weight:700;letter-spacing:.01em}.lp p{margin:0}.lp h1{text-wrap:wrap}.lp :is(h1,h2):is(:lang(zh),:lang(ja),:lang(ko)){word-break:keep-all;overflow-wrap:break-word}.lp-num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.lp-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:var(--lp-max);margin:0 auto;padding:20px var(--lp-gutter)}.lp-brand{display:inline-flex;align-items:center;gap:10px;font-size:19px;font-weight:800;color:var(--lp-ink);text-decoration:none;letter-spacing:-.01em}.lp-brand img{border-radius:7px}.lp-nav-actions{display:flex;align-items:center;gap:10px}.lp-nav-login{padding:6px 16px;border-radius:999px;background:var(--lp-ink);color:#fff;font-size:14px;font-weight:600;text-decoration:none;transition:background-color .15s ease}.lp-nav-login:hover{background:var(--ledger-700)}.lp a:focus-visible{outline:2px solid var(--ledger-700);outline-offset:3px;border-radius:6px}.lp-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:center;gap:clamp(32px,5vw,72px);max-width:var(--lp-max);margin:0 auto;padding:clamp(40px,9vh,104px) var(--lp-gutter) clamp(64px,12vh,136px)}.lp-hero:before{content:"";position:absolute;inset:0 calc(-1 * var(--lp-gutter)) 0 50%;z-index:0;pointer-events:none;background:repeating-linear-gradient(to bottom,transparent 0 35px,var(--lp-rule) 35px 36px);mask-image:radial-gradient(closest-side,#000 55%,transparent);-webkit-mask-image:radial-gradient(closest-side,#000 55%,transparent)}.lp-hero>*{position:relative;z-index:1}.lp-hero-copy{padding-left:clamp(0px,2vw,28px);border-left:3px double var(--lp-rule)}.lp-hero h1{font-size:clamp(32px,4.3vw,58px);line-height:1.12;margin-bottom:22px}.lp .lp-lede{font-size:clamp(16px,1.5vw,19px);color:var(--lp-muted);max-width:30em;margin-bottom:34px}.lp-cta{display:flex;align-items:center;flex-wrap:wrap;gap:14px 22px}.lp-badge{display:inline-flex}.lp-badge img{display:block;height:48px}.lp-textlink{color:var(--lp-ink);font-size:15px;font-weight:600;text-decoration:underline;text-decoration-color:var(--lp-rule);text-decoration-thickness:2px;text-underline-offset:5px;transition:text-decoration-color .15s ease}.lp-textlink:hover{text-decoration-color:currentColor}.lp-textlink.on-dark{color:#fff;text-decoration-color:#ffffff59}.lp-textlink.on-dark:hover{text-decoration-color:#fff}.lp-receipt-stage{position:relative;margin:0;justify-self:start;transform:rotate(-1.6deg)}.lp-receipt-pin{position:relative}.lp-receipt-pin:before,.lp-receipt-pin:after{content:"";position:absolute;z-index:3;top:-12px;width:78px;height:24px;background:repeating-linear-gradient(90deg,transparent 0 7px,rgba(255,255,255,.28) 7px 10px),var(--lp-tape);clip-path:polygon(3% 0,97% 4%,100% 30%,96% 55%,100% 82%,97% 100%,2% 96%,0 70%,4% 45%,0 18%);animation:lp-tape .35s ease-out both 1.15s}.lp-receipt-pin:before{left:-22px;rotate:-32deg}.lp-receipt-pin:after{right:-22px;rotate:28deg;animation-delay:1.25s}.lp-receipt{--notch: 8px;--scallop: 22px;position:relative;isolation:isolate;width:270px;padding:20px 22px calc(18px + var(--notch));font-family:var(--font-mono);font-size:13px;color:var(--ink);filter:drop-shadow(0 2px 3px rgba(23,61,47,.08)) drop-shadow(0 18px 34px rgba(23,61,47,.16));animation:lp-print 1.1s cubic-bezier(.22,.8,.25,1) both .15s}.lp-receipt:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:#fff;border-radius:6px 6px 0 0;-webkit-mask:linear-gradient(#000 0 0) 0 0 / 100% calc(100% - var(--notch)) no-repeat,radial-gradient(calc(var(--scallop) / 2) var(--notch) at 50% 0,#000 97%,#0000 100%) 50% 100% / var(--scallop) var(--notch) repeat-x;mask:linear-gradient(#000 0 0) 0 0 / 100% calc(100% - var(--notch)) no-repeat,radial-gradient(calc(var(--scallop) / 2) var(--notch) at 50% 0,#000 97%,#0000 100%) 50% 100% / var(--scallop) var(--notch) repeat-x}.lp-receipt-head{text-align:center;padding-bottom:10px;margin-bottom:8px;border-bottom:1px dashed var(--hairline-strong)}.lp-receipt-title{font-weight:700;letter-spacing:.2em}.lp-receipt-meta{color:var(--muted);font-size:12px}.lp-receipt-row{position:relative;display:grid;grid-template-columns:1fr auto;gap:2px 14px;padding:5px 0}.lp-receipt-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lp-receipt-total{display:flex;justify-content:space-between;margin-top:8px;padding-top:10px;border-top:1px dashed var(--hairline-strong);font-weight:700}.lp-note{position:absolute;top:50%;left:calc(100% + 40px);translate:0 -50%;padding:2px 12px 2px 22px;border-radius:999px;background:radial-gradient(circle at 11px 50%,var(--c) 3.5px,transparent 4px),color-mix(in srgb,var(--c) 13%,#fff);color:color-mix(in srgb,var(--c) 72%,#000);font-family:var(--lp-hand);font-size:15px;font-weight:700;white-space:nowrap;border:0;line-height:inherit;cursor:pointer;transition:background-color .15s ease;animation:lp-note .42s cubic-bezier(.3,1.4,.5,1) both;animation-delay:calc(1.25s + var(--i) * .16s)}.lp-note:hover{background:radial-gradient(circle at 11px 50%,var(--c) 3.5px,transparent 4px),color-mix(in srgb,var(--c) 22%,#fff)}.lp-note.is-swapped{animation-delay:0s}.lp button:focus-visible{outline:2px solid var(--ledger-700);outline-offset:2px}.lp-receipt-hint{display:flex;align-items:flex-end;gap:4px;margin-top:52px;font-family:var(--lp-hand);font-size:16px;color:var(--ledger-700);animation:lp-fade .4s ease both 2.6s}.lp-note:before{content:"";position:absolute;top:50%;right:100%;width:34px;border-top:1.5px dotted var(--c);opacity:.6}.lp-stamp{position:absolute;right:-30px;bottom:-40px;z-index:2;padding:6px 14px;border:2.5px solid var(--lp-stamp);border-radius:10px;outline:1px solid var(--lp-stamp);outline-offset:2px;color:var(--lp-stamp);font-size:18px;font-weight:800;letter-spacing:.12em;white-space:nowrap;rotate:-12deg;mix-blend-mode:multiply;opacity:.88;animation:lp-stamp .32s cubic-bezier(.5,0,.75,0) both 2.15s}.lp-stamp.is-again{animation-delay:.05s}@keyframes lp-print{0%{clip-path:inset(0 0 100% 0);translate:0 -24px}to{clip-path:inset(-40% -120% -40% -40%);translate:0 0}}@keyframes lp-note{0%{opacity:0;transform:translate(-10px) scale(.92)}}@keyframes lp-tape{0%{opacity:0;scale:1.15}}@keyframes lp-fade{0%{opacity:0}}@keyframes lp-tick{0%{opacity:0;transform:translateY(6px)}}@keyframes lp-stamp{0%{opacity:0;scale:1.7}}@media (prefers-reduced-motion: reduce){.lp-receipt,.lp-note,.lp-stamp,.lp-receipt-hint,.lp-receipt-pin:before,.lp-receipt-pin:after,.lp-tick,.lp-everyday-value{animation:none}.lp-nav-login,.lp-textlink,.lp-note,.lp-seg button,.lp-ledger-row,.lp-bar-fill,.lp-everyday{transition:none}}.lp-section{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:center;gap:clamp(32px,6vw,88px);max-width:var(--lp-max);margin:0 auto;padding:clamp(48px,9vh,96px) var(--lp-gutter)}.lp-section-flip{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}.lp-section-flip .lp-section-copy{order:2}.lp-section h2,.lp-free h2,.lp-final h2{font-size:clamp(28px,3.4vw,40px);line-height:1.2;margin-bottom:16px}.lp-section-copy p{color:var(--lp-muted);max-width:28em}.lp-section-copy .lp-sticky{position:relative;display:inline-block;margin-top:30px;padding:16px 22px 18px;background:var(--lp-sticky);color:#4b3c10;font-family:var(--lp-hand);font-size:20px;line-height:1.5;rotate:-2deg;box-shadow:0 1px 1px #4b3c1014,0 10px 22px #4b3c101f}.lp-section-copy .lp-sticky:before{content:"";position:absolute;top:-10px;left:50%;width:64px;height:20px;translate:-50% 0;rotate:3deg;background:#ffffff8c;clip-path:polygon(3% 0,97% 6%,100% 50%,97% 100%,2% 94%,0 50%)}.lp-facts{list-style:none;margin:24px 0 0;padding:0;border-top:1px solid var(--lp-rule)}.lp-facts li{padding:10px 0;border-bottom:1px solid var(--lp-rule);font-weight:600;color:var(--lp-ink)}.lp-demo{display:grid;gap:14px;min-width:0}.lp-seg{justify-self:start;display:inline-flex;padding:3px;border:1px solid var(--lp-rule);border-radius:999px;background:#fff}.lp-seg button{padding:5px 14px;border:0;border-radius:999px;background:transparent;color:var(--lp-muted);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .18s ease,color .18s ease}.lp-seg button:hover{color:var(--lp-ink)}.lp-seg button[aria-pressed=true]{background:var(--lp-ink);color:#fff}.lp-ledger{background:#fff;border:1px solid var(--lp-rule);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px #173d2f0d,0 12px 32px #173d2f12;font-size:15px}.lp-ledger-row{display:grid;grid-template-columns:64px minmax(0,1fr) 112px 96px 120px;align-items:center;border-bottom:1px solid var(--lp-rule);transition:opacity .25s ease}.lp-ledger-row:last-child{border-bottom:0}.lp-ledger-row.is-dim{opacity:.3}.lp-ledger-row.lp-ledger-total{display:flex;justify-content:space-between;background:var(--lp-tint);color:var(--lp-ink);font-weight:700}.lp-ledger-row.lp-ledger-total>span+span{border-left:0}.lp-tick{display:inline-block;animation:lp-tick .3s ease both}.lp-ledger-row>span{padding:13px 14px;min-width:0}.lp-ledger-row>span+span{border-left:1px solid var(--lp-rule);align-self:stretch;display:flex;align-items:center;gap:8px}.lp-ledger-row>.lp-num{flex-direction:column;align-items:flex-end;justify-content:center;gap:0}.lp-ledger-head{background:var(--lp-tint);color:var(--lp-ink);font-size:13px;font-weight:700}.lp-ledger-head>span{padding-top:9px;padding-bottom:9px}.lp-ledger-date{color:var(--lp-muted);font-variant-numeric:tabular-nums}.lp-ledger-memo{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.lp-avatar{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:12px;font-weight:700;color:#fff}.lp-avatar{background:var(--c)}.lp-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--c)}.lp-ledger-foreign{font-size:12px;color:var(--lp-muted)}.lp-report{background:#fff;border:1px solid var(--lp-rule);border-radius:14px;padding:24px;box-shadow:0 1px 2px #173d2f0d,0 12px 32px #173d2f12}.lp-report-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:18px}.lp-report-title{font-weight:700;color:var(--lp-ink)}.lp-bars{list-style:none;margin:0;padding:0;display:grid;gap:12px}.lp-bars li{display:grid;grid-template-columns:5.5em minmax(0,1fr) 4.5em;align-items:center;gap:12px;font-size:14px}.lp-bar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lp-bar-track{height:10px;border-radius:999px;background:var(--lp-page)}.lp-bar-fill{display:block;height:100%;border-radius:inherit;background:var(--c, var(--ledger-600));transition:width .5s cubic-bezier(.3,.9,.3,1),background-color .3s ease}.lp-everyday{display:block;width:100%;margin-top:22px;padding:16px 18px;border:0;border-radius:10px;background:var(--lp-tint);color:var(--lp-ink);font:inherit;text-align:left;cursor:pointer;transition:background-color .15s ease}.lp-everyday:hover{background:#d6e8dc}.lp-everyday>span{display:block}.lp-everyday-label{font-size:14px}.lp-everyday-value{font-size:clamp(24px,2.6vw,30px);font-weight:800;line-height:1.3;animation:lp-tick .3s ease both}.lp .lp-everyday-sub{display:flex;justify-content:space-between;flex-wrap:wrap;gap:2px 12px;font-size:13px;color:var(--ledger-700)}.lp-everyday-hint{opacity:.7}.lp-free{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:12px clamp(32px,6vw,88px);align-items:baseline;max-width:var(--lp-max);margin:0 auto;padding:clamp(36px,6vh,64px) var(--lp-gutter);border-top:1px solid var(--lp-rule)}.lp-free h2{margin:0}.lp-free p{font-size:clamp(17px,1.7vw,20px);max-width:32em}.lp-final{display:flex;align-items:center;justify-content:space-between;gap:32px;max-width:calc(var(--lp-max) - 2 * var(--lp-gutter));margin:clamp(24px,4vh,48px) auto 0;padding:clamp(32px,5vw,56px);border-radius:20px;background:linear-gradient(160deg,var(--ledger-800),var(--ledger-950));color:#fff}.lp .lp-final h2{color:#fff;margin-bottom:24px}.lp-qr{flex:none;display:grid;justify-items:center;gap:8px;font-size:13px;color:#e8f0ebb8}.lp-qr img{display:block;width:132px;height:132px;padding:10px;border-radius:12px;background:#fff}.lp-footer{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 24px;padding:32px 16px 40px;font-size:14px;color:var(--lp-muted)}.lp-footer a{color:var(--lp-muted);text-decoration:none}.lp-footer a:hover{color:var(--lp-ink)}@media (max-width: 900px){.lp-hero,.lp-section,.lp-section-flip,.lp-free{grid-template-columns:1fr}.lp-section-flip .lp-section-copy{order:0}.lp-hero:before{inset:42% calc(-1 * var(--lp-gutter)) 0}.lp-receipt-stage{justify-self:center;translate:-56px 0}}@media (max-width: 600px){.lp-nav{padding-top:14px;padding-bottom:14px}.lp-hero-copy{border-left:0;padding-left:0}.lp-receipt-stage{translate:none}.lp-receipt{width:min(300px,calc(100vw - 48px))}.lp-note{position:static;translate:none;grid-column:1 / -1;justify-self:start;padding:0 10px 0 20px;background-position:-1px 50%,0 0;font-size:13px}.lp-note:before{display:none}.lp-ledger{font-size:14px}.lp-ledger-row{grid-template-columns:minmax(0,1fr) 44px 76px 96px}.lp-ledger-row>span{padding:11px 10px}.lp-ledger-row>span:first-child{display:none}.lp-ledger-row>span:nth-child(2){border-left:0}.lp-ledger-row.lp-ledger-total>span:first-child{display:flex}.lp-receipt-hint{margin-top:48px;text-align:center}.lp-ledger-by{display:none}.lp-ledger-head>span:nth-child(3){font-size:0}.lp-final{flex-direction:column;align-items:flex-start;margin-left:16px;margin-right:16px}.lp-qr{display:none}.lp .lp-final h2{font-size:24px}}:root{--paper: #ffffff;--plane: #f4f4f2;--ink: #191c1a;--ink-2: #5b615d;--muted: #979d98;--hairline: #eaeae6;--hairline-strong: #d9d9d3;--ledger-950: #10261d;--ledger-900: #173d2f;--ledger-800: #1d4d3b;--ledger-700: #1d5c45;--ledger-600: #1f7a55;--ledger-100: #e3efe8;--ledger-50: #f0f6f2;--expense: #e05c3a;--expense-deep: #c24427;--income: #1f7a55;--radius: 12px;--radius-sm: 8px;--shadow-card: 0 1px 2px rgba(26, 35, 30, .05), 0 4px 16px rgba(26, 35, 30, .05);--shadow-pop: 0 4px 12px rgba(26, 35, 30, .1), 0 12px 40px rgba(26, 35, 30, .12);--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--plane);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}a{color:var(--ledger-600);text-decoration:none}button{font-family:inherit}:focus-visible{outline:2px solid var(--ledger-600);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:flex;min-height:100vh}.sidebar{width:216px;flex-shrink:0;background:linear-gradient(178deg,var(--ledger-900) 0%,var(--ledger-950) 100%);color:#e8f0eb;display:flex;flex-direction:column;padding:20px 12px;position:sticky;top:0;height:100vh}.sidebar .brand{display:flex;align-items:baseline;gap:8px;padding:4px 12px 20px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:16px}.brand-name{font-size:19px;font-weight:700;letter-spacing:.02em;color:#fff}.brand-sub{font-size:11px;color:#e8f0eb8c;letter-spacing:.14em}.brand-sub:lang(en){font-size:9.5px;letter-spacing:.08em;white-space:nowrap}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:#e8f0ebc7;font-size:14px;margin-bottom:2px;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff12;color:#fff}.nav-item.active{background:#ffffff1f;color:#fff;font-weight:600}.nav-item .nav-icon{width:18px;text-align:center;opacity:.9}.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid rgba(255,255,255,.12);font-size:12px;color:#e8f0eb99}.main{flex:1;min-width:0;padding:24px 36px 48px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.topbar h1{font-size:22px;font-weight:700;margin:0;letter-spacing:.01em}.topbar .sub{color:var(--muted);font-size:13px;margin-top:2px}.card{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:20px}.card h3{margin:0 0 4px;font-size:15px;font-weight:600}.card .card-sub{color:var(--muted);font-size:12px;margin-bottom:14px}.funnel{display:flex;flex-direction:column;gap:12px}.funnel-head{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;margin-bottom:5px}.funnel-pct{color:var(--muted);font-size:12px;margin-left:4px}.funnel-track{height:8px;border-radius:4px;background:var(--plane);overflow:hidden}.funnel-fill{height:100%;border-radius:4px;background:var(--ledger-700);transition:width .4s ease}.funnel-step:nth-child(2) .funnel-fill{background:var(--ledger-600)}.funnel-step:nth-child(3) .funnel-fill{background:#3d9670}.funnel-step:nth-child(4) .funnel-fill{background:#63b192}.funnel-step:nth-child(5) .funnel-fill{background:#8ccbb3}@media (prefers-reduced-motion: reduce){.funnel-fill{transition:none}}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:20px}.tile{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:16px 20px}.tile .tile-label{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.tile .tile-value{font-size:26px;font-weight:600;margin-top:6px;line-height:1.2}.tile .tile-foot{font-size:12px;color:var(--muted);margin-top:4px}.tile-value.expense{color:var(--ink)}.tile-value.income{color:var(--income)}.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:20px}.chip{border:1px solid var(--hairline-strong);background:var(--paper);color:var(--ink-2);border-radius:999px;padding:5px 14px;font-size:13px;cursor:pointer;transition:all .15s}.chip:hover{border-color:var(--ledger-600);color:var(--ledger-700)}.chip.active{background:var(--ledger-700);border-color:var(--ledger-700);color:#fff;font-weight:500}.field{display:block;margin-bottom:14px}.field-label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:5px}.input,.select{width:100%;padding:9px 12px;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);background:#fff;font-size:14px;font-family:inherit;color:var(--ink);transition:border-color .15s}.input:focus,.select:focus{outline:none;border-color:var(--ledger-600);box-shadow:0 0 0 3px var(--ledger-100)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s}.btn-primary{background:var(--ledger-700);color:#fff}.btn-primary:hover{background:var(--ledger-800)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;border-color:var(--hairline-strong);color:var(--ink-2)}.btn-ghost:hover{border-color:var(--ledger-600);color:var(--ledger-700)}.btn-danger{background:transparent;border-color:var(--hairline-strong);color:var(--expense-deep)}.btn-danger:hover{border-color:var(--expense-deep);background:#fdf1ee}.error-banner{background:#fdf1ee;border:1px solid #f3c7ba;color:var(--expense-deep);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;margin-bottom:14px}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:8px 12px;border-bottom:1px solid var(--hairline);white-space:nowrap}.table td{padding:11px 12px;border-bottom:1px solid var(--hairline);vertical-align:middle}.table tbody tr{cursor:pointer;transition:background .1s}.table tbody tr:hover{background:var(--ledger-50)}.table .amount{text-align:right;white-space:nowrap;font-weight:600}.cat-dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:7px;vertical-align:1px}.tag{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;background:var(--ledger-50);color:var(--ledger-700);border:1px solid var(--ledger-100)}.receipt-card{background:#fff;border:1px solid var(--hairline);border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;box-shadow:var(--shadow-card);padding:20px 20px 8px;position:relative;--notch: 8px;--scallop: 24px;-webkit-mask:linear-gradient(#000 0 0) 0 0 / 100% calc(100% - var(--notch)) no-repeat,radial-gradient(calc(var(--scallop) / 2) var(--notch) at 50% 0,#000 97%,#0000 100%) 50% 100% / var(--scallop) var(--notch) repeat-x;mask:linear-gradient(#000 0 0) 0 0 / 100% calc(100% - var(--notch)) no-repeat,radial-gradient(calc(var(--scallop) / 2) var(--notch) at 50% 0,#000 97%,#0000 100%) 50% 100% / var(--scallop) var(--notch) repeat-x;padding-bottom:calc(8px + var(--notch))}.receipt-head{text-align:center;border-bottom:1px dashed var(--hairline-strong);padding-bottom:10px;margin-bottom:10px}.receipt-head .receipt-title{font-size:14px;font-weight:700;letter-spacing:.3em;text-indent:.3em}.receipt-head .receipt-meta{font-size:11px;color:var(--muted);font-family:var(--font-mono);margin-top:2px}.receipt-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:5px 0;font-size:13px}.receipt-line .r-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.receipt-line .r-fill{flex:1;border-bottom:1px dotted var(--hairline-strong);transform:translateY(-3px)}.receipt-line .r-meta{color:var(--muted);font-size:11px;white-space:nowrap}.receipt-line .r-amt{font-weight:600;white-space:nowrap}.receipt-total{border-top:1px dashed var(--hairline-strong);margin-top:8px;padding-top:8px;display:flex;justify-content:space-between;font-weight:700;font-size:14px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#10261d52;z-index:40;animation:fade-in .15s ease-out}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,94vw);background:var(--paper);z-index:50;box-shadow:var(--shadow-pop);padding:24px;overflow-y:auto;animation:slide-in .2s cubic-bezier(.2,.8,.3,1)}@keyframes slide-in{0%{transform:translate(40px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer-close{position:absolute;top:16px;right:16px;border:none;background:none;font-size:20px;color:var(--muted);cursor:pointer;line-height:1;padding:4px}.drawer-close:hover{color:var(--ink)}.receipt-photo{width:100%;border-radius:var(--radius-sm);border:1px solid var(--hairline);margin-top:12px}.auth-page{min-height:100vh;display:grid;grid-template-columns:5fr 4fr}.auth-hero{background:linear-gradient(165deg,var(--ledger-800) 0%,var(--ledger-950) 90%);color:#fff;display:flex;flex-direction:column;justify-content:center;padding:8vh 7vw;position:relative;overflow:hidden}.auth-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(0deg,transparent 0 31px,rgba(255,255,255,.045) 31px 32px);pointer-events:none}.auth-hero h1{font-size:clamp(28px,3.4vw,44px);line-height:1.25;margin:18px 0 12px;font-weight:700;letter-spacing:.01em}.auth-hero p{color:#e8f0ebbf;font-size:15px;max-width:40ch}.auth-hero .hero-brand{font-size:15px;letter-spacing:.24em;color:#e8f0eb99}.hero-receipt{margin-top:40px;background:#fbfbf8f7;color:var(--ink);max-width:300px;border-radius:8px 8px 0 0;padding:16px 18px 20px;font-family:var(--font-mono);font-size:12px;box-shadow:0 24px 60px #00000059;transform:rotate(-1.6deg);clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),95% 100%,90% calc(100% - 8px),85% 100%,80% calc(100% - 8px),75% 100%,70% calc(100% - 8px),65% 100%,60% calc(100% - 8px),55% 100%,50% calc(100% - 8px),45% 100%,40% calc(100% - 8px),35% 100%,30% calc(100% - 8px),25% 100%,20% calc(100% - 8px),15% 100%,10% calc(100% - 8px),5% 100%,0 calc(100% - 8px))}.auth-form-pane{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--plane)}.auth-card{width:min(380px,100%)}.auth-card h2{font-size:22px;margin:0 0 4px}.auth-card .auth-sub{color:var(--muted);font-size:13px;margin-bottom:22px}.auth-switch{margin-top:16px;font-size:13px;color:var(--ink-2);text-align:center}.chart-grid{display:grid;grid-template-columns:3fr 2fr;gap:14px;margin-bottom:14px}.chart-grid-2{display:grid;grid-template-columns:2fr 3fr;gap:14px;margin-bottom:14px}.chart-grid-3{display:grid;grid-template-columns:5fr 7fr 5fr;gap:14px;margin-bottom:14px;align-items:start}.viz-tooltip{background:var(--ink);color:#fff;border-radius:8px;padding:8px 12px;font-size:12px;box-shadow:var(--shadow-pop)}.viz-tooltip .tt-title{color:#ffffffa6;margin-bottom:4px}.viz-tooltip .tt-row{display:flex;align-items:center;gap:6px;padding:1px 0}.legend-row{display:flex;gap:16px;font-size:12px;color:var(--ink-2);margin-bottom:8px}.legend-row .legend-item{display:flex;align-items:center;gap:6px}.legend-swatch{width:10px;height:10px;border-radius:3px}.donut-legend{display:flex;flex-direction:column;gap:7px;font-size:13px}.donut-legend .dl-row{display:flex;align-items:center;gap:8px}.donut-legend .dl-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend .dl-pct{color:var(--muted);font-size:12px;width:44px;text-align:right}.empty-state{text-align:center;color:var(--muted);padding:48px 20px;font-size:13px}.empty-state .empty-icon{font-size:30px;margin-bottom:8px;opacity:.6}.member-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--hairline)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--ledger-100);color:var(--ledger-700);display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0}.invite-code{font-family:var(--font-mono);font-size:20px;letter-spacing:.35em;text-indent:.35em;background:var(--ledger-50);border:1px dashed var(--ledger-600);color:var(--ledger-700);border-radius:var(--radius-sm);padding:12px;text-align:center;margin:12px 0;-webkit-user-select:all;user-select:all}@media (max-width: 960px){.sidebar{display:none}.auth-page{grid-template-columns:1fr}.auth-hero{display:none}.chart-grid,.chart-grid-2,.chart-grid-3{grid-template-columns:1fr}.main{padding:16px}}.lang-toggle{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--hairline-strong);border-radius:999px;color:var(--muted);cursor:pointer;transition:color .15s ease,border-color .15s ease}.lang-toggle:hover{color:var(--ink)}.lang-toggle select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-size:12px;font-weight:600;letter-spacing:.04em;cursor:pointer;padding:0}.lang-toggle select:focus-visible{outline:none}.lang-toggle:has(select:focus-visible){outline:2px solid var(--ledger-700);outline-offset:2px}.lang-toggle-caret{font-size:9px;opacity:.7}.lang-toggle.on-dark{border-color:#ffffff47;color:#e8f0ebb8}.lang-toggle.on-dark:hover{color:#fff}.lang-toggle.on-dark option{color:var(--ink)}.lang-toggle.on-dark button:focus-visible{outline-color:#fff}.auth-card-top{display:flex;justify-content:flex-end;margin-bottom:16px}.getapp-card{display:flex;gap:28px;align-items:stretch;margin-bottom:16px}.getapp-main{flex:1;min-width:0}.getapp-steps{list-style:none;margin:16px 0 4px;padding:0;display:flex;flex-direction:column}.getapp-steps li{display:flex;gap:12px;align-items:flex-start;padding:10px 0}.getapp-steps li+li{border-top:1px dashed var(--hairline)}.getapp-no{flex:none;width:24px;height:24px;border-radius:50%;background:var(--ledger-50);color:var(--ledger-700);border:1px solid var(--ledger-100);font-size:12.5px;font-weight:700;display:grid;place-items:center;margin-top:1px}.getapp-text{display:flex;flex-direction:column;gap:2px;min-width:0}.getapp-text strong{font-size:14px;font-weight:600;color:var(--ink)}.getapp-text span{font-size:12.5px;color:var(--muted)}.getapp-badge{display:inline-block;margin:10px 0 6px}.getapp-badge img{height:42px;display:block}.getapp-qr{flex:none;align-self:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px;border:1px dashed var(--hairline-strong);border-radius:var(--radius-sm);background:var(--ledger-50)}.getapp-qr img{width:128px;height:128px;display:block}.getapp-qr span{font-size:12px;color:var(--ledger-700)}@media (max-width: 700px){.getapp-card{flex-direction:column;gap:8px}.getapp-qr{display:none}}
