
:root{--wal-red:var(--tw-color-destructive,#d4351c);--wal-green:var(--good,#1f8a5b);--wal-c1:#2f9e6f;--wal-c2:#5aa469;--wal-c3:#3b82c4;--wal-c4:#7c5cc4;--wal-c5:#c4783b;--wal-c6:#d24f8a;--wal-c7:#2aa3b4;--wal-c8:#b8a12b;--wal-c9:#e0663d;--wal-c10:#8a8f98;--wal-c11:#a0673d;--wal-c12:#4a63d6}
:root{--wal-amber:#b7791f;--wal-purple:#7c5cc4}
:root[data-theme="dark"]{--wal-purple:#8f74e0}
:root[data-theme="dark"]{--wal-amber:#e3a53c;--wal-c1:#46b887;--wal-c2:#79c288;--wal-c3:#6aa8e0;--wal-c4:#a08ae0;--wal-c5:#e09a5e;--wal-c6:#e77aa9;--wal-c7:#4cc3d3;--wal-c8:#d6c24a;--wal-c9:#f08a62;--wal-c10:#a3a8b0;--wal-c11:#c58d61;--wal-c12:#7f93ef}
.wal-page{display:grid;gap:14px;padding-bottom:96px;font-variant-numeric:tabular-nums}
.wal-page.is-loading .wal-bigs,.wal-page.is-loading .wal-list{opacity:.6;transition:opacity .2s}
.wal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.wal-h{display:flex;align-items:center;gap:8px;margin:0;font-size:22px;font-weight:700}
.wal-tools{position:relative}
.wal-tool{min-height:40px;padding:6px 12px;display:inline-flex;align-items:center;gap:6px;font-size:15px}
.wal-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;display:grid;min-width:260px;padding:6px;border:1px solid var(--line-2);border-radius:14px;background:var(--surface);box-shadow:var(--elevation-float,0 10px 30px rgba(0,0,0,.18))}
.wal-menu button,.wal-menu-item{display:flex;align-items:center;gap:10px;width:100%;min-height:46px;padding:8px 12px;border:0;border-radius:10px;background:none;color:inherit;font:inherit;font-size:15px;text-align:left;cursor:pointer}
.wal-menu button:hover,.wal-menu-item:hover{background:var(--accent-soft)}
.wal-menu-list{display:grid;gap:2px}
.wal-tabs{position:sticky;top:0;z-index:12;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;border-radius:16px;background:var(--line);box-shadow:0 0 0 6px var(--bg)}
.wal-tab{display:flex;align-items:center;justify-content:center;gap:6px;min-height:46px;border:0;border-radius:12px;background:transparent;color:var(--muted);font:inherit;font-size:16px;font-weight:600;cursor:pointer}
.wal-tab.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.wal-tab.t-overview{--wal-tab:var(--wal-purple)}.wal-tab.t-income{--wal-tab:var(--wal-green)}.wal-tab.t-expense{--wal-tab:var(--wal-red)}
.wal-tab .ui-icon{color:var(--wal-tab)}.wal-tab:not(.on):hover{background:color-mix(in srgb,var(--wal-tab) 10%,transparent);color:var(--ink)}
.wal-tab.on{background:var(--wal-tab);color:#fff;box-shadow:0 4px 14px -6px var(--wal-tab)}.wal-tab.on .ui-icon{color:#fff}
.wal-period{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.wal-kinds{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.wal-kinds::-webkit-scrollbar{display:none}
.wal-kind{flex:none;min-height:38px;padding:4px 14px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);color:var(--muted);font:inherit;font-size:14px;cursor:pointer}
.wal-kind.on{border-color:var(--accent);background:var(--accent);color:#fff}
.wal-step{display:flex;align-items:center;gap:2px}
.wal-period-label{min-height:40px;padding:0 8px;border:0;background:none;color:var(--ink);font:inherit;font-size:17px;font-weight:650;cursor:pointer}
.wal-icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;border:0;border-radius:10px;background:transparent;color:inherit;cursor:pointer}
.wal-icon-btn:hover{background:var(--accent-soft)}
.wal-bigs{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.wal-big{display:grid;gap:4px;min-width:0;padding:16px;border:1px solid var(--line-2);border-radius:18px;background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer}
div.wal-big{cursor:default}
.wal-big-label{display:flex;align-items:center;gap:6px;font-size:15px;color:var(--muted);font-weight:500}
.wal-big b{font-size:28px;font-weight:750;letter-spacing:-.01em;overflow-wrap:anywhere}
.wal-big-sub{font-size:14px;color:var(--muted)}
.wal-big.in b,.wal-big.in .ui-icon{color:var(--wal-green)}.wal-big.out b,.wal-big.out .ui-icon{color:var(--wal-red)}
.wal-big.bal{background:var(--accent-soft);border-color:transparent}.wal-big.bal b{color:var(--accent-ink)}.wal-big.bal.neg b{color:var(--wal-red)}
.wal-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;padding:10px 12px;border-radius:12px;background:var(--accent-soft);font-size:14px}
.wal-note>span{flex:1 1 220px}.wal-note.warn{background:var(--warning-soft,#fff4e0)}
.wal-panel{margin:0;padding:14px;border:1px solid var(--line-2);border-radius:18px;background:var(--surface);min-width:0}
.wal-panel figcaption,.wal-panel h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 10px;font-size:16px;font-weight:650}
.wal-panel figcaption span{font-size:13px;font-weight:400;color:var(--muted)}
.wal-chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.wal-chart-bars svg{width:100%;height:auto;max-height:320px;display:block}
.wal-chart-bars text{font-size:10px;fill:var(--muted)}
.wal-chart-bars .tick line{stroke:var(--line);stroke-dasharray:3 3}
.wal-chart-bars .b-in,.wal-legend .b-in,.wal-cbar .b-in{fill:var(--wal-green);background:var(--wal-green)}
.wal-chart-bars .b-out,.wal-legend .b-out,.wal-cbar .b-out{fill:var(--wal-red);background:var(--wal-red)}
.wal-profit{stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round}.wal-profit-dot{fill:var(--surface);stroke:var(--accent);stroke-width:2}
.wal-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:8px 0 0;font-size:13px;color:var(--muted)}
.wal-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin-right:4px}.wal-legend i.l{height:3px;background:var(--accent)}
.wal-pnl{display:flex;flex-direction:column;gap:12px}
.wal-pnl-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px}
.wal-pnl-head h3{margin:0}
.wal-pnl-head p{margin:2px 0 0;color:var(--muted);font-size:13px}
.wal-pnl-year{display:inline-flex;align-items:center;gap:6px;min-height:36px}
.wal-pnl-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.wal-pnl-kpi{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:var(--surface-2)}
.wal-pnl-kpi span{color:var(--muted);font-size:12px;font-weight:600}
.wal-pnl-kpi b{font-size:19px;font-weight:750;line-height:1.2}
.wal-pnl-kpi small{color:var(--muted);font-size:12px}
.wal-pnl-kpi.pos b{color:var(--wal-green)}.wal-pnl-kpi.neg b{color:var(--wal-red)}
.wal-pnl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -14px;padding:0 14px}
.wal-pnl-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.wal-pnl-table th,.wal-pnl-table td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:right}
.wal-pnl-table thead th{position:sticky;top:0;color:var(--muted);font-size:12px;font-weight:650;background:var(--surface)}
.wal-pnl-table th[scope=row],.wal-pnl-table .corner{position:sticky;left:0;z-index:1;text-align:left;background:var(--surface);font-weight:500;min-width:150px;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.wal-pnl-table .corner{z-index:2;font-weight:500;font-size:11.5px}
.wal-pnl-table th[scope=row] i{display:inline-block;width:9px;height:9px;margin-right:7px;border-radius:3px;vertical-align:0}
.wal-pnl-table tr.sub th[scope=row]{padding-left:22px;color:var(--ink)}
.wal-pnl-table tr.sub td{color:var(--ink-2,var(--ink))}
.wal-pnl-table tr.grp th,.wal-pnl-table tr.grp td{font-weight:700;background:var(--surface-2)}
.wal-pnl-table tr.grp th[scope=row]{background:var(--surface-2)}
.wal-pnl-table tr.grp.in th[scope=row]{box-shadow:inset 3px 0 0 var(--wal-green)}
.wal-pnl-table tr.grp.out th[scope=row]{box-shadow:inset 3px 0 0 var(--wal-red)}
.wal-pnl-table tr.grp.bal th,.wal-pnl-table tr.grp.bal td{font-size:14px;border-top:2px solid var(--line-2)}
.wal-pnl-table tr.grp.bal th[scope=row]{box-shadow:inset 3px 0 0 var(--accent)}
.wal-pnl-table td.neg{color:var(--wal-red)}
.wal-pnl-table td.pct.pos{color:var(--wal-green);font-weight:650}.wal-pnl-table td.pct.neg{font-weight:650}
.wal-pnl-table tr.margin th,.wal-pnl-table tr.cum th{color:var(--muted)}
.wal-pnl-table td.tot{font-weight:650;border-left:1px solid var(--line-2)}
.wal-pnl-table td.avg,.wal-pnl-table td.share{color:var(--muted)}
.wal-pnl-table .z{color:var(--line-2)}
.wal-pnl-table tbody tr:not(.grp):hover td,.wal-pnl-table tbody tr:not(.grp):hover th{background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.wal-pnl-rev{stroke:var(--wal-green);stroke-width:2.5;stroke-linejoin:round}.wal-pnl-rev-dot{fill:var(--surface);stroke:var(--wal-green);stroke-width:2}
.wal-pnl-chart .wal-legend i.l{background:var(--wal-green)}
@media (max-width:640px){
  .wal-pnl-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wal-pnl-kpi b{font-size:17px}
  .wal-pnl-table th[scope=row],.wal-pnl-table .corner{min-width:118px;max-width:132px}
  .wal-pnl-table th,.wal-pnl-table td{padding:6px 8px}
}
.wal-compare .wal-cbar{display:grid;grid-template-columns:72px minmax(0,1fr);gap:4px 10px;align-items:center;margin-top:10px;font-size:15px}
.wal-cbar div{height:14px;border-radius:7px;background:var(--line);overflow:hidden}.wal-cbar i{display:block;height:100%;border-radius:7px}
.wal-cbar b{grid-column:2;font-size:17px}
.wal-paid-toggle{display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--line);justify-self:start}
.wal-paid-toggle button{min-height:36px;padding:0 12px;border:0;border-radius:9px;background:none;color:var(--muted);font:inherit;font-size:14px;cursor:pointer}
.wal-paid-toggle button.on{background:var(--surface);color:var(--ink);font-weight:600}
.wal-pies,.wal-tops{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.wal-pies{container:wal-pies/inline-size}
.wal-pie-body{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:12px}
.wal-pie svg{width:170px;height:170px}
.wal-pie-n{font-size:15px;font-weight:700;fill:var(--ink)}.wal-pie-l{font-size:10px;fill:var(--muted)}
.wal-pie ul{display:grid;gap:2px;width:100%;margin:0;padding:0;list-style:none}
.wal-pie li button{display:grid;grid-template-columns:12px minmax(0,1fr) auto 44px;align-items:center;gap:10px;width:100%;min-height:44px;padding:4px 6px;border:0;border-radius:10px;background:none;color:inherit;font:inherit;font-size:15px;text-align:left;cursor:pointer}
.wal-pie li button:hover{background:var(--accent-soft)}
.wal-pie li i{width:12px;height:12px;border-radius:4px}
.wal-pie li span{overflow-wrap:break-word;hyphens:auto}.wal-pie li em{font-style:normal;color:var(--muted);text-align:right}
.wal-empty-note{margin:0;color:var(--muted)}
.wal-top ul{display:grid;gap:2px;margin:0;padding:0;list-style:none}
.wal-top li button{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:52px;padding:4px 6px;border:0;border-radius:10px;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.wal-top li button:hover{background:var(--accent-soft)}
.wal-top li span{display:grid;min-width:0}.wal-top li b{overflow-wrap:anywhere;font-weight:600}.wal-top small{color:var(--muted);font-size:13px}
.wal-top li em{font-style:normal;font-weight:650;white-space:nowrap}
.wal-dot{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;color:#fff;font-style:normal;font-weight:700;font-size:15px;flex:none}
.wal-filters{display:grid;gap:8px}
.wal-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px 0}
.wal-chips::-webkit-scrollbar{display:none}
.wal-chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:4px 14px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
.wal-chip i{width:9px;height:9px;border-radius:50%;background:var(--c,var(--muted))}
.wal-chip.on{border-color:var(--ink);background:var(--ink);color:var(--surface)}
.wal-chip.add{border-style:dashed;color:var(--accent-ink)}
.wal-filter-row{display:flex;flex-wrap:wrap;gap:8px}
.wal-seg{display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--line)}
.wal-seg button{min-height:38px;padding:0 12px;border:0;border-radius:9px;background:none;color:var(--muted);font:inherit;font-size:14px;cursor:pointer;white-space:nowrap}
.wal-seg button.on{background:var(--surface);color:var(--ink);font-weight:600}
.wal-search{display:flex;align-items:center;gap:6px;flex:1 1 220px;min-height:44px;padding:0 12px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface);color:var(--muted)}
.wal-search input{flex:1;min-width:0;border:0;background:none;color:var(--ink);font:inherit;font-size:16px;outline:none}
.wal-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.wal-sum div{display:grid;gap:2px;padding:12px;border-radius:14px;background:var(--surface);border:1px solid var(--line-2);min-width:0}
.wal-sum span{font-size:13px;color:var(--muted)}.wal-sum b{font-size:16px;font-weight:700;overflow-wrap:anywhere}
.wal-sum .ok b{color:var(--wal-green)}.wal-sum .due b{color:var(--wal-red)}
.wal-list{display:grid;gap:14px}
.wal-day h4{position:sticky;top:60px;z-index:4;margin:0 0 6px;padding:4px 0;background:var(--bg);font-size:14px;font-weight:600;color:var(--muted)}
.wal-day ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.wal-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px;border:1px solid var(--line-2);border-radius:18px;background:var(--surface);transition:border-color .2s ease,background-color .2s ease}
.wal-item.st-paid{border-color:color-mix(in srgb,var(--wal-green) 28%,var(--line-2))}
.wal-item.st-void{opacity:.55}.wal-item.st-void .wal-item-sum b{text-decoration:line-through}
.wal-item-main{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:2px;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.wal-item-text{display:grid;min-width:0}.wal-item-text b{font-size:16px;font-weight:600;overflow-wrap:anywhere}.wal-item-text small{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.wal-item-sum{display:grid;justify-items:end;gap:2px}.wal-item-sum b{font-size:16px;font-weight:700;white-space:nowrap}.wal-item-sum small{font-size:12px;color:var(--muted)}
.wal-tag{padding:0 5px;border-radius:6px;background:var(--accent-soft);font-size:12px;font-weight:500}
.wal-status{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:156px;min-height:48px;padding:0 14px;border:1.5px solid transparent;border-radius:14px;font:inherit;font-size:14px;font-weight:700;letter-spacing:.01em;white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .12s ease}
.wal-status-ic{display:inline-flex}.wal-status-ic:empty{display:none}
.wal-status:active{transform:scale(.95)}
.wal-status:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.wal-status.s-paid{background:var(--wal-green);color:#fff;box-shadow:0 4px 14px color-mix(in srgb,var(--wal-green) 32%,transparent)}
:root[data-theme="dark"] .wal-status.s-paid{color:#052e1b}
.wal-status.s-due{background:color-mix(in srgb,var(--wal-red) 8%,var(--surface));color:var(--wal-red);border-color:color-mix(in srgb,var(--wal-red) 45%,transparent)}
.wal-status.s-partial{background:color-mix(in srgb,var(--wal-amber) 12%,var(--surface));color:var(--wal-amber);border-color:color-mix(in srgb,var(--wal-amber) 50%,transparent)}
.wal-status.s-off{background:var(--line);color:var(--muted);font-weight:600}
span.wal-status{cursor:default}span.wal-status:active{transform:none}
@media (hover:hover){button.wal-status.s-due:hover{background:color-mix(in srgb,var(--wal-red) 14%,var(--surface))}button.wal-status.s-paid:hover{filter:brightness(1.06)}button.wal-status.s-partial:hover{background:color-mix(in srgb,var(--wal-amber) 18%,var(--surface))}}
.wal-status.is-saving::after{content:'';position:absolute;inset:-4px;border:2px solid currentColor;border-radius:17px;opacity:.3;animation:wal-saving 1s ease-in-out infinite}
.wal-status.s-paid.is-saving::after{border-color:var(--wal-green)}
@keyframes wal-saving{50%{opacity:.04}}
.wal-status.pop{animation:wal-pop .34s cubic-bezier(.2,.9,.3,1.35)}
@keyframes wal-pop{0%{transform:scale(.88)}60%{transform:scale(1.06)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.wal-status,.wal-item{transition:none}.wal-status.pop,.wal-status.is-saving::after{animation:none}}
.wal-empty{display:grid;justify-items:center;gap:10px;padding:28px 16px;border:1px dashed var(--line-2);border-radius:18px;color:var(--muted);text-align:center}
.wal-empty p{margin:0;font-size:15px}
.wal-addbar{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom));z-index:15;display:flex;justify-content:flex-end;pointer-events:none}
.wal-addbar.two{gap:8px}
.wal-add-btn{flex:none;width:auto;pointer-events:auto;display:inline-flex;align-items:center;gap:8px;min-height:52px;padding:0 20px;border-radius:999px;font-size:16px;font-weight:650;box-shadow:0 6px 20px rgba(0,0,0,.2)}
.wal-add-btn.t-income{background:var(--wal-green);color:#fff;border-color:transparent}.wal-add-btn.t-expense{background:var(--wal-red);color:#fff;border-color:transparent}
.wal-form{display:grid;gap:12px}
.wal-amount label{display:block;margin-bottom:4px;font-size:14px;color:var(--muted)}
.wal-amount div{display:flex;gap:8px}
.wal-amount input{flex:1;min-width:0;min-height:56px;padding:0 14px;border:2px solid var(--line-2);border-radius:14px;background:var(--surface);color:var(--ink);font:inherit;font-size:26px;font-weight:700}
.wal-amount input:focus{border-color:var(--accent);outline:none}
.wal-amount select{min-height:56px;padding:0 10px;border:2px solid var(--line-2);border-radius:14px;background:var(--surface);color:var(--ink);font-size:17px}
.wal-amount small{display:block;min-height:18px;margin-top:4px;color:var(--muted);font-size:13px}
.wal-catpick,.wal-state{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;border:0}
.wal-catpick legend,.wal-state legend{width:100%;margin-bottom:6px;font-size:14px;color:var(--muted)}
.wal-catpick label,.wal-state label{cursor:pointer}
.wal-catpick input,.wal-state input{position:absolute;opacity:0;width:1px;height:1px}
.wal-catpick span,.wal-state span{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:4px 12px;border:1px solid var(--line-2);border-radius:999px;font-size:14px}
.wal-catpick span i{width:10px;height:10px;border-radius:50%;background:var(--c)}
.wal-catpick input:checked+span{border-color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);font-weight:600}
.wal-state input:checked+span{border-color:var(--wal-red);color:var(--wal-red);font-weight:600}
.wal-state input:checked+span.paid{border-color:var(--wal-green);color:var(--wal-green)}
.wal-catpick input:focus-visible+span,.wal-state input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.wal-form-more{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}
.btn.danger.ghost,.wal-form-more .danger{color:var(--wal-red)}
.wal-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:start}
.wal-check{display:flex;align-items:center;gap:8px;min-height:44px;font-size:15px}
.wal-colors{display:flex;flex-wrap:wrap;gap:8px}
.wal-colors label{cursor:pointer}.wal-colors input{position:absolute;opacity:0}
.wal-colors i{display:block;width:32px;height:32px;border-radius:50%;border:3px solid transparent}
.wal-colors input:checked+i{border-color:var(--ink)}
.wal-cats{display:grid;gap:4px;margin:0 0 8px;padding:0;list-style:none}
.wal-catrow{display:flex;align-items:center;justify-content:space-between;min-height:44px}
.wal-catname{display:inline-flex;align-items:center;gap:8px;font-size:15px}.wal-catname i{width:12px;height:12px;border-radius:50%}
.wal-link{border:0;background:none;padding:0;color:var(--accent-ink);font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px;min-height:36px}
.wal-rates{display:grid;gap:6px;margin:0 0 12px;padding:0;list-style:none;font-size:15px}
.wal-rates li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px}.wal-rates em{font-style:normal;color:var(--warning,#b7791f)}
.muted{color:var(--muted)}
.wal-skeleton{display:grid;gap:10px}
.wal-skeleton div{height:72px;border-radius:18px;background:linear-gradient(90deg,var(--line) 0%,var(--accent-soft) 50%,var(--line) 100%);background-size:200% 100%;animation:wal-shine 1.2s infinite}
.wal-skeleton .tall{height:240px}
@keyframes wal-shine{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.wal-skeleton div{animation:none}}
.wal-error,.wal-loading{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:16px;border-radius:14px;background:var(--surface)}
.wal-undo{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:14px;padding:10px 16px;border-radius:14px;background:var(--ink);color:var(--surface);font-size:15px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.wal-undo[hidden]{display:none}
.wal-undo button{border:0;background:none;color:var(--accent-soft);font:inherit;font-weight:700;cursor:pointer;min-height:40px}
.wal-history{display:grid;gap:8px;margin:0;padding:0;list-style:none;font-size:14px}
.wal-history li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding-bottom:8px;border-bottom:1px solid var(--line)}
.wal-history time{font-size:12px;color:var(--muted);min-width:96px}
.wal-history span{flex:1 1 200px}
.wal-file{display:flex;align-items:center;gap:10px;min-height:56px;padding:12px;border:2px dashed var(--line-2);border-radius:12px;cursor:pointer}
.wal-file input{position:absolute;opacity:0;width:1px;height:1px}
.wal-imp-sheet{margin-top:10px;padding:10px;border:1px solid var(--line-2);border-radius:12px}
.wal-imp-sheet.skipped{opacity:.55}
.wal-imp-sheet header{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wal-imp-sheet header select{min-height:36px;font-size:16px}
.wal-imp-table{margin:6px 0;font-size:13px}.wal-imp-table .warn{color:var(--wal-red)}
.wal-imp-table summary{cursor:pointer;padding:4px 0;line-height:1.45}
.wal-imp-table summary .upd{color:var(--wal-amber,#c98a06)}
.wal-imp-table.extra summary{display:flex;align-items:center;gap:6px;color:var(--muted)}
.wal-imp-sum-line{display:flex;align-items:flex-start;gap:6px;margin:4px 0 2px;font-size:13.5px;line-height:1.45}
.wal-imp-sum-line .warn{color:var(--wal-red)}
.wal-imp-rows{list-style:none;margin:4px 0 8px;padding:0;max-height:320px;overflow:auto;border-top:1px solid var(--line)}
.wal-imp-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 2px;border-bottom:1px solid var(--line)}
.wal-imp-tag{min-width:62px;padding:2px 6px;border-radius:6px;background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:700;text-align:center}
.wal-imp-row.is-new .wal-imp-tag{background:color-mix(in srgb,var(--wal-green,#1f9d5c) 16%,transparent);color:var(--wal-green,#1f9d5c)}
.wal-imp-row.is-upd .wal-imp-tag{background:color-mix(in srgb,var(--wal-amber,#c98a06) 18%,transparent);color:var(--wal-amber,#c98a06)}
.wal-imp-row.is-skip{opacity:.7}
.wal-imp-t{display:flex;flex-direction:column;min-width:0}
.wal-imp-t b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wal-imp-t small{color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wal-imp-sum{font-size:12.5px;white-space:nowrap}
@media (min-width:700px){
  .wal-bigs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wal-pies,.wal-tops{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .wal-pie-body{grid-template-columns:170px minmax(0,1fr);align-items:center}
  @container wal-pies (max-width:900px){.wal-pie-body{grid-template-columns:minmax(0,1fr)}}
}
@media (max-width:560px){
  .wal-item{gap:8px;padding:8px 8px 8px 6px}
  .wal-item-main{grid-template-columns:34px minmax(0,1fr);gap:10px}
  .wal-item-main .wal-item-sum{grid-column:2;justify-items:start}
  .wal-status{min-width:112px;min-height:46px;padding:0 12px}
}
@media (max-width:420px){
  .wal-big b{font-size:24px}
  .wal-sum b{font-size:14px}
  .wal-item-main{grid-template-columns:32px minmax(0,1fr)}
  .wal-dot{width:32px;height:32px;font-size:14px}
  .wal-status{min-width:100px;min-height:44px;padding:0 10px;font-size:13px;gap:4px}
  .wal-two{grid-template-columns:minmax(0,1fr)}
  .wal-tab{font-size:15px}
}
@media (max-width:360px){.wal-status{min-width:88px}.wal-status-ic{display:none}}
.veil .wal-projpick .wal-projhint{display:block;min-height:1.2em;margin-top:6px;font-size:12.5px;line-height:1.35;color:var(--muted)}
.veil .wal-projpick .wal-projhint.is-new{color:var(--accent-ink,var(--accent));font-weight:600}
.wal-dot .ui-icon{color:#fff;flex:none}
.wal-item.has-amt{grid-template-columns:minmax(0,1fr) auto auto}
.wal-item.has-amt .wal-item-main{grid-template-columns:36px minmax(0,1fr)}
.wal-amt{display:grid;justify-items:end;gap:2px;padding:6px 8px;border:1px solid transparent;border-radius:12px;background:none;color:inherit;font:inherit;text-align:right}
button.wal-amt{cursor:text;transition:background-color .15s ease,border-color .15s ease}
button.wal-amt:hover{background:var(--accent-soft);border-color:var(--line-2)}
button.wal-amt:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.wal-amt.is-editing{padding:2px}
.wal-amt-input{width:150px;min-height:44px;padding:0 10px;border:2px solid var(--accent);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-size:17px;font-weight:700;text-align:right;outline:0}
.wal-amt.is-editing small{font-size:11.5px;color:var(--muted)}
@media (max-width:560px){
  .wal-item.has-amt{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main status" "amt status";row-gap:2px}
  .wal-item.has-amt .wal-item-main{grid-area:main;grid-template-columns:34px minmax(0,1fr)}
  .wal-item.has-amt .wal-amt{grid-area:amt;justify-self:start;justify-items:start;margin-left:42px;max-width:calc(100% - 42px);padding:4px 8px;text-align:left}
  .wal-item.has-amt .wal-amt.is-editing{justify-self:stretch}
  .wal-item.has-amt .wal-status{grid-area:status}
  .wal-amt-input{width:100%;max-width:200px;text-align:left}
}
body.wal-full-open{overflow:hidden}
.wal-full{position:fixed;inset:0;z-index:35;display:flex;flex-direction:column;background:var(--bg);font-variant-numeric:tabular-nums}
.wal-full-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(env(safe-area-inset-top,0px) + 10px) 16px 10px;border-bottom:1px solid var(--line)}
.wal-full-head h2{display:flex;align-items:center;gap:8px;margin:0;font-size:20px}
.wal-full-head small{color:var(--muted);font-size:13.5px}
.wal-full-acts{display:flex;align-items:center;gap:6px}
.wal-full-acts .btn{min-height:40px;display:inline-flex;align-items:center;gap:6px}
.wal-full-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px}
.wal-seg{display:inline-flex;gap:2px;padding:3px;border-radius:12px;background:var(--line)}
.wal-seg button{min-height:36px;padding:0 12px;border:0;border-radius:9px;background:none;color:var(--muted);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.wal-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.wal-seg button.on.t-income{color:var(--wal-green)}.wal-seg button.on.t-expense{color:var(--wal-red)}
.wal-full-q{flex:1;min-width:200px;display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface);color:var(--muted)}
.wal-full-q input{flex:1;min-width:0;border:0;background:none;color:var(--ink);font:inherit;font-size:15px;outline:0}
.wal-full-scroll{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.wal-grid{width:100%;min-width:1080px;border-collapse:separate;border-spacing:0;font-size:14px}
.wal-grid th{position:sticky;top:0;z-index:3;padding:0;background:var(--surface);border-bottom:1px solid var(--line-2);text-align:left;white-space:nowrap}
.wal-grid th button{display:inline-flex;align-items:center;gap:4px;width:100%;min-height:42px;padding:0 12px;border:0;background:none;color:var(--muted);font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;cursor:pointer}
.wal-grid th[aria-sort="ascending"] button,.wal-grid th[aria-sort="descending"] button{color:var(--ink)}
.wal-grid td{padding:8px 12px;border-bottom:1px solid var(--line);background:var(--bg);vertical-align:middle}
.wal-grid tbody tr[data-wal-full-row]{cursor:pointer}
.wal-grid tbody tr[data-wal-full-row]:hover td{background:color-mix(in srgb,var(--accent-soft) 60%,var(--bg))}
.wal-grid tbody tr:focus-visible td{outline:2px solid var(--accent);outline-offset:-2px}
.wal-grid tr.d-income td:first-child{box-shadow:inset 4px 0 0 var(--wal-green)}
.wal-grid tr.d-expense td:first-child{box-shadow:inset 4px 0 0 var(--wal-red)}
.wal-grid tr.st-void td{opacity:.55}
.wal-grid .c-date{white-space:nowrap;color:var(--muted)}
.wal-grid th.c-title,.wal-grid td.c-title{position:sticky;left:0;z-index:2}
.wal-grid th.c-title{z-index:4}
.wal-grid td.c-title{max-width:300px;box-shadow:1px 0 0 var(--line)}
.wal-full-name{display:flex;align-items:center;gap:10px;min-width:0}
.wal-full-name b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wal-full-name .wal-dot{width:30px;height:30px;border-radius:10px}
.wal-grid td.c-amount{text-align:right;white-space:nowrap}
.wal-grid td.c-amount .wal-amt{display:inline-grid}
.wal-grid td.c-note{max-width:260px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wal-dir{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12.5px;font-weight:700}
.wal-dir.t-income{background:color-mix(in srgb,var(--wal-green) 14%,transparent);color:var(--wal-green)}
.wal-dir.t-expense{background:color-mix(in srgb,var(--wal-red) 12%,transparent);color:var(--wal-red)}
.wal-pill{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--line);font-size:12.5px;font-weight:700;white-space:nowrap}
.wal-pill.st-paid{background:color-mix(in srgb,var(--wal-green) 16%,transparent);color:var(--wal-green)}
.wal-pill.st-planned,.wal-pill.st-partial,.wal-pill.st-nobase{background:color-mix(in srgb,var(--wal-amber) 16%,transparent);color:var(--wal-amber)}
.wal-grid tfoot td{padding:10px 12px;background:var(--surface);border-bottom:1px solid var(--line);white-space:nowrap}
.wal-grid tfoot tr:first-child td{border-top:2px solid var(--line-2)}
.wal-grid tfoot td.c-title b{font-weight:700}
.wal-grid tfoot td.c-title small{display:block;color:var(--muted);font-size:12px;font-weight:500}
.wal-grid tfoot td.c-amount{text-align:right;font-size:15px}
.wal-grid tfoot td.c-state{color:var(--muted);font-size:13.5px}
.wal-grid tfoot .t-income td.c-title b,.wal-grid tfoot .t-income b{color:var(--wal-green)}
.wal-grid tfoot .t-expense td.c-title b,.wal-grid tfoot .t-expense b{color:var(--wal-red)}
.wal-grid tfoot .t-overview td.c-title b,.wal-grid tfoot .t-overview td.c-amount b{color:var(--wal-purple)}
.wal-grid tfoot .t-overview td{border-bottom:0}
.wal-full-count{color:var(--muted);font-size:13px;font-weight:500}
.wal-full-order,.wal-full-addrow{display:none}
.wal-full-order{align-items:center;gap:10px;color:var(--muted);font-size:14px}
.wal-full-order select{flex:1;min-width:0;min-height:40px}
.wal-full-addrow .btn{flex:1;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:700}
.wal-full-addrow .t-income{color:var(--wal-green)}.wal-full-addrow .t-expense{color:var(--wal-red)}
.wal-full-scroll.is-cards{padding:0 12px calc(env(safe-area-inset-bottom,0px) + 16px)}
.wal-full-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.wal-fc{padding:12px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 1px var(--line)}
.wal-fc[data-wal-full-row]{cursor:pointer}
.wal-fc:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wal-fc.st-void{opacity:.55}
.wal-fc-top{display:flex;align-items:flex-start;gap:10px}
.wal-fc-top .wal-dot{flex:none;width:36px;height:36px;border-radius:11px}
.wal-fc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.wal-fc-title{font-weight:700;font-size:15px;line-height:1.3;overflow-wrap:anywhere}
.wal-fc-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:13px}
.wal-fc-right{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:6px;max-width:52%}
.wal-fc-right .wal-amt{text-align:right}
.wal-fc-right .wal-amt b{font-size:15px;white-space:nowrap}
.wal-fc.d-income .wal-fc-right .wal-amt b{color:var(--wal-green)}
.wal-fc.d-expense .wal-fc-right .wal-amt b{color:var(--wal-red)}
.wal-fc-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:10px 0 0;padding:10px 0 0 46px;border-top:1px solid var(--line);font-size:13.5px}
.wal-fc-facts>div{display:contents}
.wal-fc-facts dt{color:var(--muted)}
.wal-fc-facts dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.wal-full-sum{margin-top:12px;padding:14px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 1px var(--line-2)}
.wal-full-sum h3{margin:0 0 8px;font-size:15px}
.wal-fs-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;font-size:15px}
.wal-fs-row b{white-space:nowrap}
.wal-fs-row.is-sub{padding-top:0;font-size:13.5px;color:var(--muted)}
.wal-fs-row.is-sub b{font-weight:600}
.wal-fs-row.t-income b{color:var(--wal-green)}.wal-fs-row.t-expense b{color:var(--wal-red)}
.wal-fs-row.t-overview{margin-top:4px;padding-top:10px;border-top:1px solid var(--line);font-weight:700}
.wal-fs-row.t-overview b{color:var(--wal-purple);font-size:16px}
.wal-full-sum p{margin:6px 0 0;color:var(--muted);font-size:13px}
.wal-full-empty{padding:40px 12px;text-align:center;color:var(--muted)}
.wal-full .wal-note{margin:8px 16px}
@media (max-width:700px){
 .wal-full-acts .btn{display:none}
 .wal-full{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
 .wal-full-head{position:sticky;top:0;z-index:5;background:var(--bg)}
 .wal-full-scroll{flex:none;overflow:visible;min-height:auto}
 .wal-full-tools{padding:10px 12px}
 .wal-full-tools .wal-seg{flex:1}.wal-full-tools .wal-seg button{flex:1;padding:0 8px}
 .wal-full-q{min-width:100%}
 .wal-full-order{display:flex;flex:1 1 100%}
 .wal-full-addrow{display:flex;gap:8px;flex:1 1 100%}
}
@media (prefers-reduced-motion:reduce){button.wal-amt{transition:none}}
.wal-amount>div>.vippi-select-field{flex:none;width:auto;min-width:84px}
.veil .sheet .wal-form .wal-amount>div>input[name=amount][inputmode]{font-size:24px;font-weight:700} 
.wal-detail{display:flex;flex-direction:column;gap:16px}
.wal-detail-top{display:flex;align-items:center;gap:12px;min-width:0}
.wal-detail-top>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.wal-detail-title{font-size:17px;font-weight:600;line-height:1.3;color:var(--ink);overflow-wrap:anywhere}
.wal-detail-top small{color:var(--muted);font-size:13px}
.wal-detail-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.wal-detail-sum>b{font-size:26px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink)}
.wal-detail.d-income .wal-detail-sum>b{color:var(--good)}
.wal-detail-sum small{color:var(--muted);font-size:13px}
.wal-detail-sum .wal-pill{margin-left:auto}
.wal-detail-facts{display:grid;gap:10px;margin:0;padding:14px 16px;border-radius:12px;background:var(--surface-2)}
.wal-detail-facts>div{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:12px;align-items:baseline}
.wal-detail-facts dt{color:var(--muted);font-size:13px}
.wal-detail-facts dd{margin:0;color:var(--ink);font-size:14px;overflow-wrap:anywhere}
.wal-detail-cat{display:inline-flex;align-items:center;gap:8px}
.wal-detail-cat>i{width:10px;height:10px;border-radius:50%;flex:none}
.wal-detail-acts{display:flex;flex-wrap:wrap;gap:8px}
.wal-detail-acts .btn{display:inline-flex;align-items:center;gap:6px;min-height:44px}
.wal-detail-acts .btn.danger{margin-left:auto;color:var(--tw-color-destructive)}
@media (max-width:420px){.wal-detail-acts .btn{flex:1 1 calc(50% - 4px);justify-content:center}.wal-detail-acts .btn.danger{margin-left:0}}
.wal-no{display:inline-block;margin-right:6px;padding:0 6px;border-radius:6px;background:var(--surface-2,rgba(0,0,0,.05));color:var(--muted);font-size:.86em;font-weight:600;line-height:1.5;font-variant-numeric:tabular-nums;vertical-align:1px}
.wal-page.wv-page{--wv-panel:var(--w-panel,var(--surface));--wv-sunk:var(--w-sunk,var(--bg));--wv-line:var(--w-line,var(--line-2));--wv-line2:var(--w-line-2,var(--line-2));
  --wv-text:var(--w-text,var(--ink));--wv-text2:var(--w-text-2,var(--ink));--wv-muted:var(--w-text-3,var(--muted));--wv-accent:var(--k-accent,var(--accent));
  --wv-in:#1f9d63;--wv-out:#d4432c;--wv-amber:var(--wal-amber);--wv-track:var(--ch-track,color-mix(in srgb,var(--wv-muted) 18%,transparent));
  --wv-in-g:linear-gradient(180deg,#2db67a,#1a8a56);--wv-out-g:linear-gradient(180deg,#e8604a,#c2381f);
  gap:16px;padding-bottom:110px;color:var(--wv-text)}
:root[data-theme="dark"] .wal-page.wv-page{--wv-in:#3dd68c;--wv-out:#ff7a66}
.wv-head.wv-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px}
.wv-title{display:flex;align-items:center;gap:14px;min-width:0}
.wv-mark{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:15px;color:#fff;background:linear-gradient(150deg,#1A93B6,#0D7290 55%,#005D77);box-shadow:inset 0 1px 0 rgb(255 255 255 / .25),0 10px 24px -12px rgb(13 114 144 / .9)}
.wv-head .wal-h{gap:0;font-size:26px;font-weight:650;letter-spacing:-.03em;line-height:1.1}
.wv-sub{margin:3px 0 0;font-size:13px;color:var(--wv-muted)}
.wv-pre{color:var(--wv-amber)}
.wv-tools.wv-tools{display:flex;align-items:center;gap:8px}
.wv-add{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px 0 12px;border:0;border-radius:12px;color:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:filter 140ms ease,transform 80ms ease}
.wv-add.t-income{background:var(--wv-in-g);box-shadow:0 8px 18px -10px #1a8a56,inset 0 1px 0 rgb(255 255 255 / .22)}
.wv-add.t-expense{background:var(--wv-out-g);box-shadow:0 8px 18px -10px #c2381f,inset 0 1px 0 rgb(255 255 255 / .22)}
.wv-add:hover{filter:brightness(1.07)}.wv-add:active{transform:scale(.97)}
.wv-tools .wv-more{display:inline-flex;align-items:center;gap:6px;height:40px;min-height:40px;padding:0 12px;border:0;border-radius:12px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line);color:var(--wv-text2);font:inherit;font-size:14px;cursor:pointer}
.wv-tools .wv-more:hover{color:var(--wv-text);box-shadow:inset 0 0 0 1px var(--wv-line2)}
.wv-tools .wal-menu{border:0;border-radius:16px;background:var(--k-glass,var(--surface));-webkit-backdrop-filter:saturate(1.6) blur(18px);backdrop-filter:saturate(1.6) blur(18px);box-shadow:var(--k-pop,0 18px 40px rgba(0,0,0,.25))}
.wv-tools .wal-menu button{min-height:40px;border-radius:10px;font-size:14px}
.wv-bar{position:sticky;top:0;z-index:12;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:6px;border-radius:18px;
  background:color-mix(in srgb,var(--wv-panel) 86%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);box-shadow:inset 0 0 0 1px var(--wv-line),0 10px 30px -24px rgb(0 0 0 / .5)}
.wv-bar .wv-tabs{position:static;display:inline-flex;gap:3px;padding:3px;border-radius:13px;background:var(--wv-sunk);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-bar .wal-tab{min-height:36px;padding:0 16px;border-radius:10px;background:none;color:var(--wv-muted);font-size:14px;font-weight:600;box-shadow:none}
.wv-bar .wal-tab:not(.on):hover{background:none;color:var(--wv-text)}
.wv-bar .wal-tab.on{background:var(--wv-panel);color:var(--wv-text);box-shadow:0 0 0 1px var(--wv-line),0 2px 8px -3px rgb(0 0 0 / .3)}
.wv-bar .wal-tab .ui-icon{color:var(--wv-muted)}
.wv-bar .wal-tab.on.t-overview .ui-icon{color:var(--wv-accent)}.wv-bar .wal-tab.on.t-income .ui-icon{color:var(--wv-in)}.wv-bar .wal-tab.on.t-expense .ui-icon{color:var(--wv-out)}
.wv-period.wv-period{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.wv-kinds .wal-kind{min-height:32px;padding:0 12px;border:0;border-radius:99px;background:none;color:var(--wv-muted);font-size:13.5px;font-weight:500}
.wv-kinds .wal-kind:hover{color:var(--wv-text)}
.wv-kinds .wal-kind.on{background:color-mix(in srgb,var(--wv-accent) 16%,transparent);color:var(--wv-accent);font-weight:600}
.wv-step .wal-icon-btn{min-width:34px;min-height:34px;border-radius:10px;color:var(--wv-muted)}
.wv-step .wal-icon-btn:hover{background:color-mix(in srgb,var(--wv-text) 7%,transparent);color:var(--wv-text)}
.wv-step .wal-period-label{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 10px;border-radius:10px;font-size:14.5px;font-weight:600}
.wv-step .wal-period-label:hover{background:color-mix(in srgb,var(--wv-text) 7%,transparent)}
.wv-step .wal-period-label .ui-icon{color:var(--wv-accent)}
.wv-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr);gap:14px}
.wv-balance{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:8px;min-height:196px;padding:22px 24px;border-radius:24px;overflow:hidden;color:#fff;
  background:radial-gradient(120% 90% at 100% 0%,rgb(79 196 230 / .45),transparent 55%),linear-gradient(135deg,#1590B4 0%,#0D7290 45%,#044C60 100%);box-shadow:inset 0 1px 0 rgb(255 255 255 / .22),0 26px 50px -28px rgb(0 70 92 / .95)}
.wv-balance::after{content:"";position:absolute;right:-60px;top:-70px;z-index:-1;width:240px;height:240px;border-radius:50%;border:34px solid rgb(255 255 255 / .07)}
.wv-balance.neg{background:radial-gradient(120% 90% at 100% 0%,rgb(255 160 140 / .4),transparent 55%),linear-gradient(135deg,#D9573F 0%,#AE3420 50%,#6F1E12 100%);box-shadow:inset 0 1px 0 rgb(255 255 255 / .2),0 26px 50px -28px rgb(120 30 15 / .95)}
.wv-bal-label{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:600;color:rgb(255 255 255 / .85)}
.wv-bal-num{position:relative;font-size:40px;font-weight:650;line-height:1.05;letter-spacing:-.04em;font-variant-numeric:tabular-nums;text-shadow:0 2px 18px rgb(0 0 0 / .18);overflow-wrap:anywhere}
.wv-bal-sub{position:relative;font-size:13px;color:rgb(255 255 255 / .82)}.wv-bal-sub b{color:#fff;font-weight:600}
.wv-spark{position:absolute;left:0;right:0;bottom:0;z-index:-1;width:100%;height:48%;overflow:visible}
.wv-spark polygon{fill:rgb(255 255 255 / .1)}
.wv-spark polyline{fill:none;stroke:rgb(255 255 255 / .9);stroke-width:2.2;vector-effect:non-scaling-stroke;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgb(255 255 255 / .6))}
.wv-flow{display:flex;flex-direction:column;gap:10px;min-width:0;padding:18px 20px;border:0;border-radius:24px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line),var(--w-drop,0 1px 2px rgba(0,0,0,.05));color:var(--wv-text);font:inherit;text-align:left;cursor:pointer;transition:transform 160ms ease,box-shadow 160ms ease}
.wv-flow:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--wv-line2),0 18px 34px -24px rgb(0 0 0 / .5)}
.wv-flow-top{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:500;color:var(--wv-text2)}
.wv-flow-top>.ui-icon:last-child{margin-left:auto;color:var(--wv-muted);opacity:.6}
.wv-flow-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;color:#fff}
.wv-flow.in .wv-flow-ic{background:var(--wv-in-g);box-shadow:0 6px 14px -8px #1a8a56}.wv-flow.out .wv-flow-ic{background:var(--wv-out-g);box-shadow:0 6px 14px -8px #c2381f}
.wv-flow-num{margin-top:auto;font-size:28px;font-weight:650;letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.wv-meter{display:block;height:6px;border-radius:99px;background:var(--wv-track);overflow:hidden}
.wv-meter i{display:block;height:100%;border-radius:99px}
.wv-flow.in .wv-meter i,.wv-sum.income .ok .wv-meter i{background:var(--wv-in);box-shadow:0 0 12px -2px var(--wv-in)}
.wv-flow.out .wv-meter i,.wv-sum.expense .ok .wv-meter i{background:var(--wv-out);box-shadow:0 0 12px -2px var(--wv-out)}
.wv-flow-sub{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--wv-muted)}
.wv-flow-sub em{font-style:normal;font-weight:600;color:var(--wv-text2)}
.wv-page .wal-note{border-radius:14px;background:color-mix(in srgb,var(--wv-accent) 9%,var(--wv-panel));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--wv-accent) 20%,transparent);font-size:13.5px;color:var(--wv-text2)}
.wv-page .wal-note .ui-icon{color:var(--wv-accent)}
.wv-page .wal-panel{padding:20px 22px;border:0;border-radius:22px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line),var(--w-drop,0 1px 2px rgba(0,0,0,.05))}
.wv-page .wal-panel figcaption,.wv-page .wal-panel h3{font-size:15px;font-weight:600;letter-spacing:-.01em}
.wv-page .wal-chart-bars .b-in{fill:var(--wv-in)}.wv-page .wal-chart-bars .b-out{fill:var(--wv-out)}
.wv-page .wal-chart-bars .tick line{stroke:var(--wv-line)}
.wv-page .wal-profit{stroke:var(--wv-accent);stroke-width:2.5;filter:drop-shadow(0 0 5px var(--wv-accent))}
.wv-page .wal-profit-dot{fill:var(--wv-panel);stroke:var(--wv-accent)}
.wv-page .wal-legend .b-in{background:var(--wv-in)}.wv-page .wal-legend .b-out{background:var(--wv-out)}.wv-page .wal-legend i.l{background:var(--wv-accent)}
.wv-page .wal-cbar .b-in{background:var(--wv-in);box-shadow:0 0 12px -2px var(--wv-in)}.wv-page .wal-cbar .b-out{background:var(--wv-out);box-shadow:0 0 12px -2px var(--wv-out)}
.wv-page .wal-cbar div{border-radius:99px;background:var(--wv-track)}.wv-page .wal-cbar i{border-radius:99px}
.wv-page .wal-paid-toggle.wv-seg{display:inline-flex;justify-self:start;gap:3px;padding:3px;border-radius:13px;background:var(--wv-sunk);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-page .wal-paid-toggle button{min-height:34px;padding:0 14px;border-radius:10px;color:var(--wv-muted);font-size:13.5px;font-weight:500}
.wv-page .wal-paid-toggle button.on{background:var(--wv-panel);color:var(--wv-text);font-weight:600;box-shadow:0 0 0 1px var(--wv-line),0 2px 8px -3px rgb(0 0 0 / .3)}
.wv-page .wal-pie li button,.wv-page .wal-top li button{border-radius:12px}
.wv-page .wal-pie li button:hover,.wv-page .wal-top li button:hover{background:color-mix(in srgb,var(--wv-text) 6%,transparent)}
.wv-page .wal-pie-n{fill:var(--wv-text)}.wv-page .wal-pie-l{fill:var(--wv-muted)}
.wv-page .wal-top li em{font-variant-numeric:tabular-nums}
.wv-page .wal-pnl-table{font-variant-numeric:tabular-nums}
.wv-sum.wv-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.wv-sum>div{display:flex;flex-direction:column;gap:6px;min-width:0;padding:16px 18px;border-radius:20px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-sum>div>span:first-child{font-size:13px;font-weight:500;color:var(--wv-muted)}
.wv-sum b{font-size:22px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.wv-sum small{font-size:12px;color:var(--wv-muted)}
.wv-sum.income .ok b{color:var(--wv-in)}.wv-sum.expense .ok b{color:var(--wv-out)}.wv-sum .due b{color:var(--wv-amber)}
.wv-page .wal-chip{min-height:34px;padding:0 13px;border:0;border-radius:99px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line);color:var(--wv-text2);font-size:13.5px}
.wv-page .wal-chip:hover{box-shadow:inset 0 0 0 1px var(--wv-line2);color:var(--wv-text)}
.wv-page .wal-chip.on{background:color-mix(in srgb,var(--c,var(--wv-accent)) 16%,var(--wv-panel));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c,var(--wv-accent)) 60%,transparent);color:var(--wv-text);font-weight:600}
.wv-page .wal-seg{gap:3px;padding:3px;border-radius:13px;background:var(--wv-sunk);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-page .wal-seg button{min-height:34px;border-radius:10px;color:var(--wv-muted)}
.wv-page .wal-seg button.on{background:var(--wv-panel);color:var(--wv-text);box-shadow:0 0 0 1px var(--wv-line),0 2px 8px -3px rgb(0 0 0 / .3)}
.wv-page .wal-search{min-height:40px;border:0;border-radius:12px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-page .wal-search:focus-within{box-shadow:inset 0 0 0 1px var(--wv-accent),0 0 0 3px color-mix(in srgb,var(--wv-accent) 20%,transparent)}
.wv-page .wal-search input{font-size:14px}
.wv-page .wal-list{display:grid;gap:16px}
.wv-page .wal-day h4{position:static;display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 4px 8px;padding:0;background:none;font-size:13px;font-weight:600;color:var(--wv-muted);text-transform:none}
.wv-page .wal-day h4 b{font-size:13px;font-weight:600;color:var(--wv-text2);font-variant-numeric:tabular-nums}
.wv-page .wal-day.is-today h4>span{color:var(--wv-accent)}
.wv-page .wal-day ul{gap:0;padding:4px;border-radius:20px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-page .wal-item{padding:10px 10px 10px 8px;border:0;border-radius:16px;background:none;box-shadow:none}
.wv-page .wal-item+.wal-item{box-shadow:inset 0 1px 0 color-mix(in srgb,var(--wv-line) 70%,transparent)}
.wv-page .wal-item:hover{background:color-mix(in srgb,var(--wv-text) 4%,transparent)}
.wv-page .wal-item.st-paid{border:0}
.wv-page .wal-dot{width:40px;height:40px;border-radius:13px;box-shadow:inset 0 1px 0 rgb(255 255 255 / .25),0 6px 14px -8px rgb(0 0 0 / .5)}
.wv-page .wal-item.has-amt .wal-item-main{grid-template-columns:40px minmax(0,1fr)}
.wv-page .wal-item-main{grid-template-columns:40px minmax(0,1fr) auto}
.wv-page .wal-item-text b{font-size:15px}.wv-page .wal-item-text small{font-size:12.5px;color:var(--wv-muted)}
.wv-page .wal-item-sum b{font-size:15.5px;font-weight:650;font-variant-numeric:tabular-nums}
.tab-income .wal-item.st-paid .wal-item-sum b{color:var(--wv-in)}
.wv-page .wal-amt{border-radius:10px}
.wv-page .wal-amt:hover{background:color-mix(in srgb,var(--wv-text) 6%,transparent)}
.wv-page .wal-status{min-width:148px;min-height:42px;border:0;border-radius:13px;font-size:13.5px;font-weight:600;transition:background 140ms ease,transform 80ms ease}
.wv-page .wal-status:active{transform:scale(.97)}
.wv-page .wal-status.s-paid{background:color-mix(in srgb,var(--wv-in) 15%,transparent);color:var(--wv-in);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--wv-in) 35%,transparent)}
.wv-page .wal-status.s-due{background:color-mix(in srgb,var(--wv-amber) 14%,transparent);color:var(--wv-amber);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--wv-amber) 35%,transparent)}
.wv-page .wal-status.s-partial{background:color-mix(in srgb,var(--wal-purple) 15%,transparent);color:var(--wal-purple);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--wal-purple) 35%,transparent)}
.wv-page .wal-status.s-off{background:color-mix(in srgb,var(--wv-muted) 12%,transparent);color:var(--wv-muted)}
.wv-page .wal-empty{border-radius:22px;background:var(--wv-panel);box-shadow:inset 0 0 0 1px var(--wv-line)}
.wv-page .wal-add-btn{border:0;box-shadow:0 12px 26px -12px rgb(0 0 0 / .55),inset 0 1px 0 rgb(255 255 255 / .22)}
.wv-page .wal-add-btn.t-income{background:var(--wv-in-g)}.wv-page .wal-add-btn.t-expense{background:var(--wv-out-g)}
@media (min-width:701px){
  .wv-page .wal-addbar{display:none}
  .is-web .wv-page .wal-day h4{position:sticky;top:64px;z-index:4;margin:0 0 8px;padding:6px 4px;background:color-mix(in srgb,var(--w-page,var(--bg)) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .wv-page .wal-pies,.wv-page .wal-tops{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1100px) and (min-width:701px){.wv-hero{grid-template-columns:1fr 1fr}.wv-balance{grid-column:1/-1}}
@media (max-width:700px){
  .wal-page.wv-page{gap:12px}
  .wv-head .wal-h{font-size:22px}.wv-mark{width:40px;height:40px;border-radius:13px}
  .wv-tools .wv-add{display:none}
  .wv-tools .wv-more span{display:none}.wv-tools .wv-more{width:40px;justify-content:center;padding:0}
  .wv-bar{flex-direction:column;align-items:stretch;gap:6px;padding:5px;border-radius:16px;margin:0 -2px}
  .wv-bar .wv-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .wv-bar .wal-tab{justify-content:center;min-height:40px;padding:0 6px}
  .wv-period.wv-period{justify-content:space-between}
  .wv-kinds{overflow-x:auto;scrollbar-width:none}
  .wv-step .wal-period-label{font-size:13.5px;padding:0 6px}.wv-step .wal-period-label .ui-icon{display:none}
  .wv-hero{grid-template-columns:1fr 1fr;gap:10px}
  .wv-balance{grid-column:1/-1;min-height:160px;padding:18px;border-radius:22px}
  .wv-bal-num{font-size:32px}
  .wv-flow{padding:14px;border-radius:20px;gap:8px}
  .wv-flow-num{font-size:18px}
  .wv-flow-top{font-size:12.5px}.wv-flow-ic{width:30px;height:30px;border-radius:10px}
  .wv-flow-sub{flex-direction:column;gap:2px;font-size:11.5px}
  .wv-sum.wv-sum{gap:8px}
  .wv-sum>div{padding:12px;border-radius:16px}
  .wv-sum b{font-size:15px}
  .wv-sum small{display:none}
  .wv-page .wal-filter-row{flex-direction:column;align-items:stretch}
  .wv-page .wal-day ul{border-radius:18px}
  .wv-page .wal-item.has-amt{grid-template-columns:minmax(0,1fr) auto;row-gap:8px}
  .wv-page .wal-item.has-amt .wal-status,.wv-page .wal-item .wal-status{grid-column:1/-1;width:100%;min-width:0;min-height:40px}
  .wv-page .wal-dot{width:36px;height:36px;border-radius:12px}
  .wv-page .wal-item.has-amt .wal-item-main,.wv-page .wal-item-main{grid-template-columns:36px minmax(0,1fr)}
  .wv-page .wal-panel{padding:16px;border-radius:20px}
}
.wv-page :is(.wv-bal-num,.wv-flow-num,.wv-sum b) small{margin-left:2px;font-size:.5em;font-weight:500;letter-spacing:0;opacity:.75}
.wv-bal-num{white-space:nowrap}
.wv-balance,.wv-flow,.wv-sum>div{container-type:inline-size}
.wv-bal-num.wv-bal-num{font-size:clamp(24px,10cqi,44px)}
.wv-flow-num.wv-flow-num{font-size:clamp(17px,10cqi,30px);white-space:nowrap}
.wv-sum.wv-sum b{font-size:clamp(15px,9cqi,24px);white-space:nowrap}
.wv-page .wal-status :is(.wal-status-t,.wal-status-ic){color:inherit}
.wv-page .wal-chart-bars .b-in{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--wv-in) 45%,transparent))}
.wv-page .wal-chart-bars .b-out{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--wv-out) 45%,transparent))}
:root[data-theme="dark"] .wv-page .wal-status.s-paid{color:var(--wv-in)}
@media (hover:hover){.wv-page button.wal-status.s-paid:hover{background:color-mix(in srgb,var(--wv-in) 22%,transparent)}.wv-page button.wal-status.s-due:hover{background:color-mix(in srgb,var(--wv-amber) 22%,transparent)}}
.wal-page.wv-page{min-width:0;max-width:100%}
.wv-hero{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr)}
@media (max-width:1100px) and (min-width:701px){.wv-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:700px){
  .wal-page.wv-page{overflow-x:clip}
  .wv-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .wv-bar{min-width:0}
  .wv-period.wv-period{flex-wrap:wrap;gap:4px}
  .wv-kinds{flex:1 1 100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .wv-kinds .wal-kind{padding:0 4px;justify-content:center}
  .wv-step{flex:1 1 100%;justify-content:space-between}
  .wv-step .wal-period-label{flex:1;justify-content:center}
  .wv-page .wal-search{flex:none;min-height:42px}
  .wv-page .wal-filter-row>.wal-seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .wv-page .wal-filter-row>.wal-seg button{padding:0 4px}
  .wv-page .wal-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:2px 16px}
  .wv-sum.wv-sum{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wv-page .wal-note{font-size:13px}
}
@media (max-width:700px){
  .wv-page .wal-item.has-amt{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main amt" "status status";align-items:center;row-gap:10px}
  .wv-page .wal-item.has-amt .wal-item-main{grid-area:main}
  .wv-page .wal-item.has-amt .wal-amt{grid-area:amt;justify-self:end;justify-items:end;margin:0;max-width:none;padding:4px 6px;text-align:right}
  .wv-page .wal-item.has-amt .wal-status{grid-area:status}
  .wv-page .wal-item.salary{grid-template-columns:minmax(0,1fr);row-gap:10px}
  .wv-page .wal-item.salary .wal-item-main{grid-template-columns:36px minmax(0,1fr) auto}
  .wv-page .wal-item.salary .wal-item-main .wal-item-sum{grid-column:auto;justify-items:end}
  .wv-page .wal-item-sum b{font-size:14.5px}
  .wv-page .wal-day h4{margin:0 2px 8px}
}
@media (max-width:700px){
  .wal-page.wv-page{padding-bottom:170px}
  .wv-page .wal-addbar{position:fixed;left:16px;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:30;justify-content:flex-end}
  .wv-page .wal-addbar.two{justify-content:stretch}
  .wv-page .wal-addbar.two .wal-add-btn{flex:1;justify-content:center}
  .wv-page .wal-add-btn{min-height:50px;border-radius:16px}
  .form-open .wv-page .wal-addbar,.keyboard-open .wv-page .wal-addbar{visibility:hidden}
}
.wal-page.wv-page .wal-addbar .wal-add-btn.t-income{background:var(--wv-in-g);color:#fff;box-shadow:0 12px 26px -12px #1a8a56,inset 0 1px 0 rgb(255 255 255 / .22)}
.wal-page.wv-page .wal-addbar .wal-add-btn.t-expense{background:var(--wv-out-g);color:#fff;box-shadow:0 12px 26px -12px #c2381f,inset 0 1px 0 rgb(255 255 255 / .22)}
.is-web .workspace .wal-page.wv-page .wal-addbar .wal-add-btn.wal-add-btn.t-income{border:0;background:var(--wv-in-g);color:#fff;box-shadow:0 12px 26px -12px #1a8a56,inset 0 1px 0 rgb(255 255 255 / .22)}
.is-web .workspace .wal-page.wv-page .wal-addbar .wal-add-btn.wal-add-btn.t-expense{border:0;background:var(--wv-out-g);color:#fff;box-shadow:0 12px 26px -12px #c2381f,inset 0 1px 0 rgb(255 255 255 / .22)}
@media (max-width:700px){.wv-page .wal-addbar.wal-addbar{bottom:calc(104px + env(safe-area-inset-bottom))}.wal-page.wv-page{padding-bottom:190px}}
