.topbar{padding:max(10px, env(safe-area-inset-top)) var(--sp-4) 4px;align-items:center;gap:12px;display:flex}.topbar__menu{width:38px;height:38px;color:var(--text);border-radius:10px;place-items:center;margin-left:auto;margin-right:-7px;display:grid}.topbar__menu svg{width:24px;height:24px}.topbar__menu:active{background:var(--bg-elev-1)}.topbar__wm{font-family:var(--font-display);color:var(--text);font-size:18px}.topbar__wm span{color:var(--accent);font-style:italic}.drawer__backdrop{z-index:40;background:0 0;position:fixed;inset:0}.drawer{z-index:41;background:var(--surface);border-left:1px solid var(--border-strong);width:78%;max-width:300px;padding:max(22px, env(safe-area-inset-top)) 14px 20px;will-change:transform;flex-direction:column;gap:4px;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-12px 0 28px -16px #163a2e40}.drawer__brand{font-family:var(--font-display);color:var(--text);margin:6px 8px 18px;font-size:26px}.drawer__brand span{color:var(--accent);font-style:italic}.drawer__item{color:var(--text-dim);border-radius:12px;align-items:center;gap:13px;padding:14px 12px;font-size:16px;font-weight:600;display:flex}.drawer__item.active{background:var(--bg-elev-1);color:var(--accent-press)}.drawer__item:active{background:var(--bg-elev-1)}.drawer__item svg{flex-shrink:0;width:22px;height:22px}.drawer__item span{line-height:1}.login{min-height:100dvh;padding:var(--sp-4);place-items:center;display:grid}.login__card{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--r-md);width:100%;max-width:380px;padding:var(--sp-6) var(--sp-4)}.login__brand{font-family:var(--font-display);letter-spacing:-.02em;font-size:48px;font-weight:500;line-height:1}.login__brand b{color:var(--accent);font-style:italic;font-weight:500}.login__sub{color:var(--text-dim);margin:var(--sp-2) 0 var(--sp-5);font-size:14px}.login__input{border-radius:var(--r-sm);background:var(--bg-elev-2);border:1px solid var(--border-strong);width:100%;color:var(--text);outline:none;padding:15px;font-size:17px}.login__input:focus{border-color:var(--accent)}.login__btn{width:100%;margin-top:var(--sp-3);border-radius:var(--r-sm);background:var(--accent);color:var(--accent-ink);padding:15px;font-size:17px;font-weight:600}.login__btn:active{background:var(--accent-press)}.login__err{color:var(--neg);margin-top:var(--sp-3);min-height:18px;font-size:14px}.page{padding:var(--sp-5) var(--sp-4) 0}.page__title{margin-bottom:var(--sp-4);letter-spacing:-.02em;font-size:26px;font-weight:500}.page__title span{color:var(--accent);font-style:italic}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:var(--shadow-card)}.btn{border-radius:var(--r-sm);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:14px 18px;font-size:16px;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn--primary{background:var(--accent);color:var(--accent-ink)}.btn--primary:active{background:var(--accent-press)}.btn--ghost{color:var(--text);border-color:var(--border-strong);background:0 0}.btn--ghost:active{background:var(--bg-elev-1)}.btn--block{width:100%}.btn:disabled{opacity:.45}.label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:600}.field{border-radius:var(--r-sm);background:var(--bg-elev-2);border:1px solid var(--border-strong);width:100%;color:var(--text);outline:none;padding:13px 14px;font-size:17px}.field:focus{border-color:var(--accent)}.field.mono{font-variant-numeric:tabular-nums}.sheet__backdrop{z-index:40;background:#0f141180;position:fixed;inset:0}.sheet{z-index:41;max-width:540px;height:100dvh;margin:0 auto;position:fixed;inset:0}.sheet__panel{background:var(--bg);height:100%;box-shadow:var(--shadow-pop);border-left:1px solid var(--border-strong);border-right:1px solid var(--border-strong);padding:max(var(--sp-3), env(safe-area-inset-top)) var(--sp-4) 0;flex-direction:column;display:flex}.sheet__search{gap:var(--sp-2);margin-bottom:var(--sp-3);padding-top:var(--sp-2);align-items:center;display:flex}.sheet__close{color:var(--accent-press);padding:10px 12px;font-size:15px;font-weight:600}.sheet__list{-webkit-overflow-scrolling:touch;padding-bottom:var(--sp-5);flex:1;overflow-y:auto}.sheet__row{text-align:left;border-bottom:1px solid var(--border);flex-direction:column;gap:2px;width:100%;padding:14px 4px;display:flex}.sheet__row:active{background:var(--bg-elev-1)}.sheet__row b{font-size:15px;font-weight:500}.sheet__row small{color:var(--text-faint);font-size:12px}.sheet__empty{color:var(--text-faint);text-align:center;padding:var(--sp-5)}.hero{background:var(--pine);color:#eef0d8;border:1px solid #244a3c;flex-direction:column;align-items:flex-start;gap:4px;display:flex;position:relative;overflow:hidden}.hero:after{content:"";background:#4caf8a38;border-radius:50%;width:90px;height:90px;position:absolute;top:-30px;right:-30px}.hero__label{color:var(--accent);text-transform:uppercase;letter-spacing:.16em;font-size:11px;font-weight:700;position:relative}.hero__value{font-family:var(--font-display);letter-spacing:-.02em;color:#f1f3dc;margin-top:6px;font-size:44px;font-weight:500;line-height:1;position:relative}.hero__edit{color:#aeb89f;text-align:left;border-top:1px solid #2c4f42;width:100%;margin-top:11px;padding-top:9px;font-size:12px}.section-label{margin:var(--sp-5) 4px var(--sp-2);align-items:baseline;gap:8px;display:flex}.section-label__n{font-family:var(--font-display);color:var(--accent-press);font-size:14px}.section-label__t{letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);font-size:11px;font-weight:700}.rows{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-card);flex-direction:column;padding:2px 14px;display:flex}.row{gap:var(--sp-2);border-bottom:1px solid var(--border);grid-template-columns:1fr auto 30px;align-items:center;padding:10px 0;display:grid}.row:last-child{border-bottom:none}.row__pick{text-align:left;color:var(--text);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;min-width:0;padding:4px 0;font-size:15px;overflow:hidden}.row__pick.empty{color:var(--text-faint)}.row__del{color:var(--text-faint);font-size:20px}.qtybox{align-items:center;gap:7px;display:flex}.qstep{border:1px solid var(--border-strong);background:var(--bg);width:28px;height:28px;color:var(--accent-press);border-radius:9px;place-items:center;font-size:17px;line-height:1;display:grid}.qval{text-align:center;width:36px;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:none;padding:0;font-size:15px}.addbar{gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.add-row{flex:1}.btn--clear{color:var(--text-dim)}.actions{gap:var(--sp-2);margin:var(--sp-4) 0;grid-template-columns:1fr 1.2fr;display:grid}.money-bar{gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.toast{left:50%;top:calc(env(safe-area-inset-top,0px) + 14px);z-index:50;border-radius:var(--r-md);box-shadow:var(--shadow-pop);text-align:center;max-width:calc(100% - 32px);padding:12px 18px;font-weight:600;position:fixed}.toast--ok{background:var(--pine);color:#eef0d8}.toast--error{background:var(--neg);color:#fdeee9}.diffs{margin-top:var(--sp-2);flex-direction:column;display:flex}.diff{padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}.diff:last-child{border-bottom:none;padding-bottom:0}.diff__name{margin-bottom:var(--sp-2);font-size:16px;font-weight:500;line-height:1.3}.diff__warn{color:var(--debt);white-space:nowrap;font-size:13px;font-style:normal}.diff__meta{gap:6px var(--sp-4);color:var(--text-dim);flex-wrap:wrap;font-size:14px;display:flex}.diff__meta b{color:var(--text);margin-left:4px;font-weight:600}.diff__line{margin-top:var(--sp-2);justify-content:space-between;align-items:baseline;display:flex}.diff__line span{color:var(--text-dim);font-size:14px}.diff__line b{font-family:var(--font-body);color:var(--pos);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.totals{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:2px solid var(--pine);justify-content:space-between;align-items:baseline;display:flex}.totals b{font-family:var(--font-body);color:var(--pos);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}.hist{gap:var(--sp-2);flex-direction:column;display:flex}.hist__item{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.hist__head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);text-align:left;width:100%;padding:14px;display:flex}.hist__left{flex-direction:column;gap:3px;display:flex}.hist__type{align-items:center;gap:6px;font-weight:600;display:inline-flex}.hist__type.doc{color:var(--text)}.hist__type.pay{color:var(--accent)}.hist__chev{color:var(--text-faint);font-size:10px}.hist__date{color:var(--text-faint);font-size:12px}.hist__right{text-align:right;flex-direction:column;flex-shrink:0;gap:3px;display:flex}.hist__amt{font-variant-numeric:tabular-nums;font-size:14px}.hist__amt.diff{color:var(--pos)}.hist__amt.add{color:var(--debt)}.hist__amt.pay{color:var(--neg)}.hist__after{color:var(--text-faint);font-size:12px}.hist__details{flex-direction:column;padding:0 14px 14px;display:flex}.hist__pos{padding:var(--sp-3) 0;border-top:1px solid var(--border);flex-direction:column;gap:3px;display:flex}.hist__pos-name{font-size:14px;font-weight:500;line-height:1.3}.hist__warn{color:var(--debt);font-style:normal}.hist__pos-nums{gap:4px var(--sp-3);color:var(--text-dim);flex-wrap:wrap;font-size:13px;display:flex}.hist__pos-nums b{color:var(--text);margin-left:3px;font-weight:600}.hist__pos-diff b{color:var(--pos)}.hist__empty{color:var(--text-faint);text-align:center;padding:var(--sp-6)}.month__picker{gap:var(--sp-2);margin-bottom:var(--sp-4);display:flex}.month__stats{gap:var(--sp-4);flex-direction:column;display:flex}.stat{border-bottom:1px solid var(--border);padding-bottom:var(--sp-3);justify-content:space-between;align-items:baseline;display:flex}.stat:last-child{border-bottom:none;padding-bottom:0}.stat__label{color:var(--text-dim);font-size:14px}.stat__val{font-family:var(--font-body);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat__val.diff{color:var(--pos)}.stat__val.add{color:var(--debt)}.stat__val.paid{color:var(--neg)}.set{gap:var(--sp-4);flex-direction:column;display:flex}.set__group{gap:var(--sp-2);flex-direction:column;display:flex}.set__hint{color:var(--text-faint);font-size:13px}.set__ok{color:var(--pos);min-height:16px;font-size:13px}:root{--bg:#fcfbe3;--bg-elev-1:#efedcb;--bg-elev-2:#f7f5dd;--surface:#f7f5dd;--border:#e6e1bd;--border-strong:#cfca9f;--text:#1f3a30;--text-dim:#71796a;--text-faint:#a9ad95;--pine:#163a2e;--accent:#4caf8a;--accent-press:#3c9576;--accent-ink:#0f2a20;--pos:#2f8a5f;--neg:#c0563f;--debt:#b07d2e;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"Hanken Grotesk", system-ui, sans-serif;--font-mono:"Hanken Grotesk", system-ui, sans-serif;--r-sm:9px;--r-md:14px;--r-lg:18px;--r-pill:999px;--shadow-card:0 1px 2px #163a2e0a, 0 12px 26px -20px #163a2e38;--shadow-pop:0 24px 60px -22px #163a2e59;--sp-1:6px;--sp-2:10px;--sp-3:14px;--sp-4:20px;--sp-5:28px;--sp-6:40px;--nav-h:66px;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}#root{z-index:1;background:var(--bg);max-width:540px;min-height:100%;margin:0 auto;position:relative}@media (width>=560px){#root{border-left:1px solid var(--border);border-right:1px solid var(--border)}}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;font-weight:500;line-height:1.05}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}button{font-family:var(--font-body);cursor:pointer;color:inherit;background:0 0;border:none}input,select{font-family:var(--font-body)}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--accent-ink)}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
